ประเภทของข้อมูล (Data Type) หรือที่เรียกกันภาษาโปรแกรมมิ่งว่า ประเภทของตัวแปร (Type of Variable) ในภาษา MQL4
หมายถึงการจัดการประเภทของข้อมูลออกเป็นกลุ่ม ๆ ตามลักษณะจำเพาะของมัน เช่น ตัวเลข, ข้อความ, จริงเท็จ ฯลฯ ซึ่งหลัก ๆ แล้วในแต่ละภาษาคอมพิวเตอร์ก็จะแบ่งออกได้ง่าย ๆ ดังนี้
int (integers) ตัวเลขจำนวนเต็ม
double (real numbers) ตัวเลขจำนวนจริง หรือตัวเลขรวมทศนิยม
bool (Boolean values, that is logical values) สถานะจริงหรือเท็จ
string (values of string type) ข้อความ
color (values of color type) สี
datetime (values of date and time) วันที่่และเวลา
เรามาทำความเข้าใจเจ้าประเภทของข้อมูลในภาษา MQL4 แต่ละตัวที่กล่าวมาข้างต้นให้มากขึ้นกันดีกว่า
สารบัญบทความ
int (ตัวเลขจำนวนเต็ม)
อะไรก็ตามที่นับได้ เช่น 1, 2, 3, 4, … แอปเปิ้ล 1 ลูก, หนังสือ 3 เล่ม หรือแม้กระทั่งอายุ 30 ปี แบบนี้ก็ถือว่าเป็นตัวเลขจำนวนเต็มทั้งหมด คำว่าจำนวนเต็มคือไม่มีเศษ ไม่มีทศนิยม ไม่แบ่งครึ่งใด ๆ
ในภาษา MQL4 เรามีจำนวนเต็มอยู่ด้วยกัน 2 แบบ คือ
เลขฐานสิบ (Decimal) โดยตัวเลขจะเริ่มต้นจาก 0 จนถึง 9 และจะเป็นบวกหรือลบก็ได้ เช่น 10, 11, 12, 1, 5, -379, 25, -12345, -1, 2.
เลขฐานสิบหก (Hexadecimal) โดยจะประกอบไปด้วยตัวอักษร Latin จาก A ถึง F (หรือ a ถึง f) และตัวเลขจาก 0 ถึง 9. โดยปกติเลขจะขึ้นต้นด้วย 0x หรือ 0X เป็นได้ทั้งค่าบวกและลบ เช่น 0x1a7b, 0xff340, 0xAC3 0X2DF23, 0X13AAB, 0X1.
ในตัวแปร 1 ตัวที่ใช้ประเภทข้อมูล int จะมีการจองหน่วยความจำเท่ากับ 4 bytes
ค่าน้อยสุดที่เก็บได้คือ -2,147,483,648
ค่ามากสุดที่เก็บได้คือ 2,147,483,647
เรามาดูตัวอย่างในการประกาศตัวแปรประเภท int ในภาษา MQL4 กันดีกว่า
int Art = 10;
int B_27 = -1;
int Num = 21;
int Max = 2147483647;
int Min = -2147483648;
double (ตัวเลขจำนวนจริง, ทศนิยม)
หากต้องการเก็บตัวเลขที่มีทศนิยม เราก็ใช้ประเภทของข้อมูล double เก็บ เช่น ตัวเลขผลลัพธ์จากการหาร, เศษส่วน, ค่าเฉลี่ยที่ได้จากราคาในตลาด Forex, จำนวนเงินที่มีเศษทศนิยม
ในบางครั้งเราอาจจะยังสับสนว่า สถานการณ์แบบไหนเราจะใช้ double แบบไหนจะใช้ int ในเมื่อมันเก็บตัวเลขเหมือนกัน เรามาดูตัวอย่างสถาการณ์นี้กันครับ
ต้องการเขียน EA คำนวณค่าเฉลี่ยจำนวนออเดอร์ที่ถูกเปิดใน 1 วันตลอดทั้งสัปดาห์ สมมติว่าเปิดมา 12 ออเดอร์ ถ้านำมาเขียนตามสูตรก็คือ 12/5 = 2.4 ออเดอร์ต่อวัน เมื่อสร้างตัวแปรชื่อว่า order_mean มาเพื่อรับค่าดังกล่าว จะต้องใช้ตัวแปรประเภท double นั่นเอง แต่ถ้าเกิดเป็นกรณีหารแล้วไม่ได้เศษส่วน เช่น 10/5 = 2 แบบนี้ก็ไม่ควรเก็บเป็นประเภท int นะครับ ยังคงต้องเก็บแบบ double อยู่ เนื่องจากสามารถเก็บตัวเลขได้ครบทุกรณีนั่นเอง
ประเภทข้อมูล double นั่นสามารถใช้ตัวเลขได้ตั้งแต่ 0 ถีง 9 จะบวกหรือลบก็ได้ และรองรับทศนิยมได้ถึง 15 หลัก เช่น 27.12, -1.0 2.5001, -765456.0, 198732.07 และ 0.123456789012345ง
ในตัวแปร 1 ตัวที่ใช้ประเภทข้อมูล double จะมีการจองหน่วยความจำเท่ากับ 8 bytes
ค่าน้อยสุดที่เก็บได้คือ -1.7 * e-308
ค่ามากสุดที่เก็บได้คือ 1.7 * e308
เรามาดูตัวอย่างในการประกาศตัวแปรประเภท double ในภาษา MQL4 กันดีกว่า
double Art = 10.123;
double B_27 = -1.0;
double Num = 0.5;
double MMM = -12.07;
double Price_1 = 1.2756;
bool (สถานะจริงหรือเท็จ)
ประเภทข้อมูลที่เก็บได้แค่ 2 สถานะทางตรรกะศาสตร์เท่านั้น คือ จริง (True) และ เท็จ (False) ไม่สามารถเก็บได้มากกว่าสองค่านี้ได้ เช่น สอบผ่านหรือไม่ผ่าน, มีแฟนหรือไม่มีแฟน, ไฟเปิดหรือปิด
ในตัวแปร 1 ตัวที่ใช้ประเภทข้อมูล bool จะมีการจองหน่วยความจำเท่ากับ 4 bytes เก็บค่าได้แค่อย่างใดอย่างหนึ่งเท่านั้น คือ
true (True, TRUE, 1)
false (False, FALSE, 0)
เรามาดูตัวอย่างในการประกาศตัวแปรประเภท bool ในภาษา MQL4 กันดีกว่า
bool aa = True;
bool B17 = TRUE;
bool Hamma = 1;
bool Asd = False;
bool Nol = FALSE;
bool Prim = 0;
string (ข้อความ)
เป็นการเก็บข้อมูลที่เป็นข้อความ เช่น ประโยค, วลี, ชื่อคน สัตว์ สิ่งของ ฯลฯ โดยเก็บในรูปของรหัสทางคอมพิวเตอร์ ASCII
การเก็บข้อความจำเป็นต้องอยู่ภายใต้เครื่องหมาย Double Quotes เปิดและปิด (” “) ภายใน string จะประกอบไปด้วยเป็นตัวอักษรหรือตัวเลขก็ได้ที่มีอยู่ในรหัส ASCII (ตาราง ASCII) โดยถ้าต้องการจะใช้เครื่องหมาย Double Quotes (“) ร่วมด้วย จะต้องใช้เครื่องหมายทับกลับหลัง \ (Back Slash) ก่อนการใช้เครื่องหมาย Double Quotes (“) เช่น “This is a \”book\”. “
และหากต้องการขึ้นบรรทัดใหม่ภายในข้อความ สามารถที่จะใส่สัญลักษณ์พิเศษ \n ได้ เช่น “Hello\nI’m SumoFx”
ในตัวแปร 1 ตัวที่ใช้ประเภทข้อมูล string จะมีการจองหน่วยความจำเท่ากับ 8 bytes เก็บค่าได้ตั้งแต่ 0 ถึง 255 ตัวอักษร โดยหากมีความยาวเกินกว่านี้ ตัวอักษรตัวที่ 266 ขึ้นไปจะถูกตัดทิ้งออก เช่น “MetaTrader 4″, ” Stop Loss”, “Ssssstop_Loss”, “stoploss”, และ “10 pips”
เรามาดูตัวอย่างในการประกาศตัวแปรประเภท string ในภาษา MQL4 กันดีกว่า
string Prefix = "MetaTrader 4";
string Postfix = "_of_my_progr. OK";
string Name_Mass = "History";
string text = "Upper Line\nLower Line";
color (สี)
การเก็บค่าของสีแต่ละสี ให้อยู่ในรูปรหัสทางคอมพิวเตอร์ แดงเขียวและน้ำเงิน (RGB) โดยเป็นการประสมกันของ 3 สีดังกล่าว จากมืดสุดไปสว่างสุด ถูกแทนที่ด้วยตัวเลข 0 ถึง 255 โดย 0 หมายถึงมืดที่สุด และ 255 หมายถึงสว่างที่สุด จะเป็นเลขฐาน 10 หรือเลขฐาน 16 ก็ได้
ยกตัวอย่างเช่น หากต้องการให้แสดงสีแดงบริสุทธิ์ สามารถแทนด้วยตัวเลข R=255, G=0, B=0 หรือต้องการให้ได้สีขาว ซึ่งก็คือทุกสีสว่างทั้งหมด สามารถแทนด้วยตัวเลข R=255, G=255, B=255
การประกาศรูปแบบของสีในภาษา MQL4 จะต้องขึ้นต้นด้วยตัวอักษรซี (C) และสัญลักษณ์ Single Quote (‘) ดังต่อไปนี้
C’128,128,128‘ (gray)
C’0x00,0x00,0xFF‘ (blue)
C’0xFF,0x33,0x00‘ (red)
หรือจะประกาศรูปแบบของสีในภาษา MQL4 ให้อยู่ในรูปของเลขฐาน 16 เรียงติดกันแยกเป็น RRGGBB ได้ดังนี้
0xFFFFFF (white)
0x008000 (green)
0x000000 (black)
หรือง่ายที่สุดในภาษา MQL4 สามารถที่จะอ้างชื่อสีได้เลย ดังนี้
เรามาดูตัวอย่างในการประกาศตัวแปรประเภท color ในภาษา MQL4 กันดีกว่า
color Paint_1 = C'128,128,128'; // The value of gray
color Colo = C'0x00,0x00,0xFF'; // The value of blue
color BMP_4 = C'0xFF,0x33,0x00' // The value of red
color K_12 = 0xFF3300; // The value of red
color N_3 = 0x008000; // The value of green
color Color = 16777215; // The value of white
color Alfa = 32768; // The value of green
color A = Red; // The value of red
color B = Yellow; // The value of yellow
color Colorit = Black; // The value of black
color B_21 = White; // The value of white
datetime (วันที่และเวลา)
เป็นการเก็บข้อมูลประเภทวันที่และเวลา อย่างเช่น วันเดือนปีและเวลาเกิด, เวลาประกาศข่าวสำคัญ, เวลาเปิดและเวลาปิดตลาด ฯลฯ โดยสามารถเก็บได้ 6 ส่วนย่อยแบ่งเป็น
ปี (year)
เดือน (month)
วัน (day)
ชั่วโมง (hour)
นาที (minute)
วินาที (second)
เขียนอ้างอิงได้ดังนี้ D’YYYY.MM.DD HH:mm:ss โดยสังเกตุได้ว่าในภาษา MQL4 จะต้องเริ่มต้นด้วยตัวอักษรดี (D) และสัญลักษณ์ Single Quote (‘) ก่อนที่จะอ้างอิงวันที่และเวลา
ในตัวแปร 1 ตัวที่ใช้ประเภทข้อมูล datetime จะมีการจองหน่วยความจำเท่ากับ 4 bytes โดยจะเก็บเป็นหน่วยวินาที นับตั้งแต่วันที่ January 1, 1970 เวลา 00:00:00 ไปจนถึง December 31, 2037
เรามาดูตัวอย่างในการประกาศตัวแปรประเภท color ในภาษา MQL4 กันดีกว่า
datetime Alfa = D'2004.01.01 00:00'; // New Year
datetime Tim = D'01.01.2004'; // New Year
datetime Tims = D'2005.05.12 16:30:45'; // May 12, 2005 4:30:45 p.m.
datetime N_3 = D'12.05.2005 16:30:45'; // May 12, 2005 4:30:45 p.m.