EA Bug Fix

EA เปิด Order ซ้ำ เกิดจากอะไร?

อาการ EA เปิดออเดอร์ซ้ำไม่ได้แปลว่าเงื่อนไขเทรดผิดเสมอไป ส่วนใหญ่มาจากวิธีควบคุมสถานะระหว่าง Tick, แท่งราคา และคำสั่งที่ส่งไปยังโบรกเกอร์ การแก้ที่ดีต้องหาว่าซ้ำที่ชั้น Signal, Order หรือการตอบกลับจากเซิร์ฟเวอร์ก่อน

เหตุใด Signal เดียวจึงเปิดได้หลาย Order

EA ทำงานทุกครั้งที่มี Tick ใหม่ หากเงื่อนไข Entry ยังเป็นจริงหลาย Tick และไม่มีตัวล็อก ฟังก์ชันส่งคำสั่งอาจถูกเรียกซ้ำ อีกกรณีคือคำสั่งแรกกำลังประมวลผลแต่ Position ยังไม่อัปเดต โค้ดจึงมองว่ายังไม่มีออเดอร์

สาเหตุที่พบบ่อย

ไม่มี New Bar guard; ตรวจ Magic Number หรือ Symbol ไม่ครบ; แยก Pending Order กับ Position ไม่ครบ; รีเซ็ตตัวแปรล็อกเร็วเกินไป; หรือ Error handling ส่งคำสั่งซ้ำโดยไม่แยก Retcode

วิธีตรวจอย่างเป็นระบบ

บันทึกเวลาแท่ง, Tick, ค่า Signal, Magic Number, จำนวน Position/Pending และ Retcode ทุกครั้งที่ตัดสินใจเข้า จากนั้นจำลองช่วงที่เกิดปัญหาใน Strategy Tester เพื่อดูว่า Signal ถูกเรียกกี่ครั้งก่อนสถานะเปลี่ยน

แนวทางแก้

กำหนดให้ชัดว่าเปิดได้หนึ่งครั้งต่อแท่ง หนึ่ง Position ต่อ Symbol/Magic หรือเปิดซ้ำได้เมื่อไม้ก่อนปิด ใช้ Existing Order check ร่วมกับ Entry lock และจัดการผลส่งคำสั่ง ไม่ควรใช้ Sleep เพื่อกลบ Race condition

Checklist สำหรับส่งให้ผู้พัฒนา

  • Platform, Symbol, Timeframe และ Input
  • ขั้นตอนที่ทำให้เกิดอาการ พร้อม Experts/Journal
  • Source Code ที่มีสิทธิ์ใช้งาน (ถ้ามี)
  • ผลลัพธ์ที่คาดหวังหลังแก้

คำถามที่พบบ่อย

ใช้ New Bar อย่างเดียวพอไหม?

ไม่เสมอ หากทำงานหลายกราฟ หลาย Symbol หรือมี Pending Order ต้องตรวจสถานะและ Magic Number ด้วย

แก้โดยไม่เขียนใหม่ได้ไหม?

ได้ในหลายกรณีหากมี Source Code โดยเพิ่ม Guard และปรับจุดตรวจสถานะ

LINEขอราคา