คิดว่า magic number มีผลต่อการจับคู่คำสั่ง
มันไม่เปลี่ยนอะไรเลยเกี่ยวกับวิธีที่คำสั่งถูกจับคู่ มันคือข้อมูลกำกับ โบรกเกอร์ไม่ได้ทำอะไรตามมัน และมันไม่มีผลต่อราคา สเปรด หรือสลิปเพจ
จำนวนเต็มที่ Expert Advisor ประทับไว้บนทุกคำสั่งที่มันส่งออกไป เพื่อให้จำสถานะของตัวเองได้และไม่ไปยุ่งกับสิ่งอื่นในบัญชี
หรือ: magic ของ EA, หมายเลข magic ของคำสั่ง, MAGIC
อัปเดต · ตรวจทาน
ป้ายชื่อบนทุกไม้ที่เทรด เทอร์มินัลไม่สนใจว่าใครเปิดสถานะ ดังนั้น EA แต่ละตัวจึงเขียนหมายเลขของตัวเองลงบนตั๋วคำสั่ง แล้วหลังจากนั้นก็แตะเฉพาะตั๋วที่มีหมายเลขนั้น
MetaTrader ให้ EA ทุกตัวในบัญชีเห็นสถานะทั้งหมดเหมือนกันหมด ถ้าไม่มีป้ายกำกับ EA ก็แยกไม่ออกว่าไม้ไหนเป็นของตัวเอง ไม้ไหนเป็นของคุณ หรือของ EA ตัวอื่น — และ EA ที่ไปจัดการสถานะผิดตัวคือบั๊กที่กินเงิน ไม่ใช่บั๊กที่ขึ้นข้อความแจ้งเตือน
| ค่าตั้ง | ค่าที่ใช้ทั่วไป | หมายเหตุ |
|---|---|---|
| ไม้ที่เทรดมือ | 0 | ค่าเริ่มต้นของเทอร์มินัล EA ไม่ควรไปจัดการ magic 0 เด็ดขาด |
| EA หนึ่งตัว สินค้าหนึ่งตัว | จำนวนเต็มไม่ซ้ำอะไรก็ได้ | อะไรที่จำง่ายก็ใช้ได้ — 20260807, 1001 |
| EA ตัวเดียวกันบนหลายสินค้า | หนึ่งค่าต่อหนึ่งกราฟ | ไม่อย่างนั้นตัวที่รัน EURUSD จะไปปิดสถานะของตัวที่รัน GBPUSD |
| EA พอร์ตที่รันหลายกลยุทธ์ | หนึ่งค่าต่อหนึ่งขา | แต่ละขาต้องมีป้ายของตัวเองจึงจะถูกเลื่อนสต็อปและปิดได้อย่างอิสระ |
EA สามตัวบนบัญชีเดียว แต่ละตัวประทับหมายเลขของตัวเอง ดังนั้นแม้ทั้งสามจะเห็นครบทั้งหกสถานะ แต่ลูปสถานะของแต่ละตัวก็แตะเฉพาะแถวของตัวเอง
การคำนวณ if (PositionGetInteger(POSITION_MAGIC) != MagicNumber) continue;
ผลลัพธ์ EA แต่ละตัวจัดการเฉพาะสถานะที่ตัวเองเปิด
ตัวเลขเพื่อประกอบคำอธิบาย ไม่ใช่สถิติของ EA ที่วางจำหน่าย
ให้มอง magic number เป็นการตั้งค่าบัญชี ไม่ใช่พารามิเตอร์กลยุทธ์ จดไว้ก่อน EA ขึ้นบัญชีจริง และอย่าเปลี่ยนมันเด็ดขาดขณะยังมีสถานะเปิด
ตัวค่าเองไม่มีความหมายอะไรกับ MetaTrader — จำนวนเต็มอะไรก็ได้ สิ่งเดียวที่สำคัญคือมันต้องไม่ซ้ำกับสิ่งอื่นที่รันอยู่บนบัญชีนั้น
มันไม่เปลี่ยนอะไรเลยเกี่ยวกับวิธีที่คำสั่งถูกจับคู่ มันคือข้อมูลกำกับ โบรกเกอร์ไม่ได้ทำอะไรตามมัน และมันไม่มีผลต่อราคา สเปรด หรือสลิปเพจ
ตัวตนที่สำคัญคืออินสแตนซ์ที่กำลังรัน ไม่ใช่ตัวสินค้า สองกราฟที่ใช้ป้ายร่วมกันหมายถึงสองอินสแตนซ์ที่จัดการกองสถานะเดียวกัน
สถานะที่เปิดอยู่ยังคงถือป้ายเดิม การเปลี่ยนอินพุตคือการทิ้งมัน EA จะเลิกจำมันได้ และมันจะค้างเปิดอยู่จนกว่าจะปิดด้วยมือหรือถูกล้างพอร์ต
แท็บ Trade ของเทอร์มินัลไม่แสดงมัน การแยกผลลัพธ์รายตัว EA ต้องอ่าน DEAL_MAGIC จากประวัติ ซึ่งเป็นสิ่งที่เครื่องมือทำรายงานทำ ไม่ใช่สิ่งที่รายงานมาตรฐานให้คุณ
| จาก EA 14 ตัวที่เผยแพร่ที่นี่ | ค่า |
|---|---|
| รายการที่มีอินพุต MagicNumber | 10 |
| รายการที่ต้องแก้ค่านั้นตอนติดตั้ง | 0 |
| รายการที่ขอให้รันในที่ซึ่งไม่มีอะไรอื่นเทรดสินค้านั้น | 8 |
| ในจำนวนนั้น รายการที่ยังมีอินพุต MagicNumber อยู่ดี | 6 |
| สินค้าที่ถูกมากกว่าหนึ่งรายการจับจอง | 7 จาก 15 |
| คู่ EA ที่ใช้บัญชีเดียวกันไม่ได้ | 15 จาก 91 |
อ่านแถวสามกับแถวสี่พร้อมกัน การติดป้ายคำสั่งเป็นงานหนึ่ง ส่วนการตัดสินว่าจะยอมให้มีสัญญาณใหม่หรือไม่เป็นอีกงานหนึ่ง และ EA ที่จำกัดตัวเองไว้ที่สถานะเปิดเดียวต้องนับก่อน ถ้ามันนับด้วย PositionsTotal() บวกการเช็กสินค้า สถานะของคนอื่นจะเข้ามาอยู่ในผลรวมด้วย แต่ถ้ามันกรองด้วย POSITION_MAGIC ก่อน มันจะไม่เข้ามา หกรายการที่นี่มีอินพุตนั้นแล้วก็ยังพิมพ์คำเตือนออกมาอยู่ดี ซึ่งบอกคุณได้ว่าการนับสถานะของพวกมันใช้วิธีไหนในสองวิธีนั้น
ดังนั้นคำถามเรื่องจับคู่จึงเป็นคำถามเรื่องสินค้า และตอบได้ก่อนซื้อ USD/JPY ถูกสี่รายการจับจองพร้อมกัน — Iridescence, Kestrel Hover, Lanternfish และ Tessera — จึงไม่มีคู่ไหนในกลุ่มนี้ที่ควรอยู่ด้วยกัน ตอนนี้ EUR/GBP มีสองรายการ คือ Ballast และ Thunderhead มีเพียง Orrery, Peregrine และ Zerqon เท่านั้นที่ไม่ทับซ้อนกับใคร ตรงที่สองตัวทับซ้อนกันจริง การแยกบัญชีจะแก้สิ่งที่ป้ายกำกับแก้ไม่ได้ เพราะจากนั้น EA แต่ละตัวจะนับกองที่มีเฉพาะไม้ของตัวเอง ระเบียบวิธีของเราบันทึกทุกการรันที่เผยแพร่แยกตามสินค้า ซึ่งก็คือการแยกแยะแบบเดียวกันเมื่อมองจากฝั่งการวัด