Magic Number คือ
ตัวเลขที่เรากำหนดขึ้นมา จะเป็นเลขอะไรก็ได้เช่น 1111 หรือ 2222 เพื่อใช้เป็นตัวกำหนดค่าของ EA เวลาที่เราใช้คำสั่งในการเปิดออร์เดอร์ เพื่อให้รู้ว่าออร์ที่เปิดนั้นเปิดมาจากคู่เงินไหนหรือไทม์เฟรมไหน ทำให้ง่ายเวลาในการตรวจเช็คเพื่อปิดออร์เดอร์การเขียน EA ต้องมี Magic Number ไหม
จริงๆแล้วควรมีฟังก์ชั่น Magic Number เพราะในการเทรดเรามีโอกาสที่จะเทรดหลายคู่เงิน หรือหลายไทม์เฟรม ยิ่งคนมีเทคนิคเยอะก็อยากจะเทรดหลายคู่เงินพร้อมกัน ถ้าหากไม่มีฟังก์ชั่นกำหนด Magic Number คงยุ่งน่าดูในการตรวจเช็คเงื่อนไขการปิดออร์เดอร์ แต่สำหรับมือใหม่หัดเขียนอีเออาจจะไม่ต้องกำหนด Magic Number ก็ได้เพื่อลดขั้นตอนการเขียน ซึ่งจะค่อยเพิ่มทีหลังเอาก็ได้วิธีการกำหนดค่า Magic Number
เราสามารถกำหนดได้จากการใส่ตัวเลขทุกครั้งที่เราเพิ่มอีเอลงในชาร์ท โดยการเขียนโค๊ดตามตัวอย่าง
extern int MagicNumber = 1234;
แต่ถ้าไม่ต้องการกำหนดตัวเลขเองทุกครั้งที่มีการเพิ่มอีเอลงไปในชาร์ทใหม่ ก็ใช้วิธีการเขียนฟังก์ให้อีเอสร้างค่า Magic Number ให้อัตโนมัติก็ถือสะดวกดี
ตัวอย่างโค๊ดการใช้งาน Magic Number แบบอัตโนมัติ
extern int MagicNumber = 1234;
int OnInit()
{
MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), TimeFrame);
return(INIT_SUCCEEDED);
}
int start()
{
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,
StopLoss, // Stop loss price.
TP, // Take profit price.
TicketComment,MagicNumber,0,Green);
}
int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)
{
int isymbol = 0;
if (symbol == "EURUSD") isymbol = 1;
else if (symbol == "GBPUSD") isymbol = 2;
else if (symbol == "USDJPY") isymbol = 3;
else if (symbol == "USDCHF") isymbol = 4;
else if (symbol == "AUDUSD") isymbol = 5;
else if (symbol == "USDCAD") isymbol = 6;
else if (symbol == "EURGBP") isymbol = 7;
else if (symbol == "EURJPY") isymbol = 8;
else if (symbol == "EURCHF") isymbol = 9;
else if (symbol == "EURAUD") isymbol = 10;
else if (symbol == "EURCAD") isymbol = 11;
else if (symbol == "GBPUSD") isymbol = 12;
else if (symbol == "GBPJPY") isymbol = 13;
else if (symbol == "GBPCHF") isymbol = 14;
else if (symbol == "GBPAUD") isymbol = 15;
else if (symbol == "GBPCAD") isymbol = 16;
else isymbol = 17;
if(isymbol<10 data-blogger-escaped-10="" data-blogger-escaped-agicnumber="" data-blogger-escaped-div="" data-blogger-escaped-isymbol="" data-blogger-escaped-magicnumber="MagicNumber" data-blogger-escaped-return="" data-blogger-escaped-timeframe="" data-blogger-escaped-tringconcatenate="" data-blogger-escaped-trtointeger="">