MT5 ปฏิเสธคำสั่ง: ความหมาย Return Code และลำดับตรวจสอบ
สารบัญ
- สรุป: ดูก่อนว่า "ล้มเหลวทุกครั้ง หรือล้มเหลวเป็นบางครั้ง"
- หลักการ: return code คือ "คำตอบจากเซิร์ฟเวอร์"
- ขั้นตอนการตรวจสอบ: ไล่ตามลำดับนี้
- 1. 10018: ดูนาฬิกาก่อน
- 2. 10030: ปรับโหมดการส่งคำสั่งให้ตรงกัน
- 3. 10013: สงสัยเนื้อหาของคำสั่ง
- 4. 10004: slippage ที่ยอมรับได้และช่วงเวลา
- 5. 10006: บางครั้งต้องถามโบรกเกอร์
- ข้อจำกัดและข้อควรระวัง
- สรุป
สรุป: ดูก่อนว่า "ล้มเหลวทุกครั้ง หรือล้มเหลวเป็นบางครั้ง"
เมื่อคำสั่งของ EA ถูก MT5 ปฏิเสธ ในล็อกจะมีตัวเลขขึ้นมา เช่น "retcode=10030" เรามักได้รับคำถามเกี่ยวกับ return code เหล่านี้อยู่เสมอ
ขอสรุปไว้ก่อนเลย สิ่งแรกที่ควรดูคือ การปฏิเสธเกิดขึ้นทุกครั้ง หรือเกิดเป็นบางครั้ง
- ล้มเหลวทุกครั้ง → สงสัย 10030, 10013, 10018 สาเหตุมักอยู่ที่การตั้งค่าหรือช่วงเวลา ถ้าไม่แก้หรือไม่เลิกส่งคำสั่งแบบนั้น ต่อให้ลองกี่ครั้งก็ไม่ผ่าน
- ล้มเหลวเป็นบางครั้ง → สงสัย 10004, 10006 เกิดจากสภาวะตลาดหรือการตัดสินใจของโบรกเกอร์ บางครั้งรอสักพักก็ผ่าน
ว่าเข้ากรณีไหน จะกำหนดทั้งจุดที่ต้องตรวจและความเร่งด่วน
เปรียบเทียบโบรกเกอร์แนะนำ →
🎁 ดาวน์โหลด EA ฟรี📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
หลักการ: return code คือ "คำตอบจากเซิร์ฟเวอร์"
เมื่อ EA ส่งคำสั่ง เซิร์ฟเวอร์ของโบรกเกอร์จะตัดสินว่ารับหรือไม่ แล้วตอบกลับเป็นตัวเลข ถ้าสำเร็จจะได้ 10009 (จับคู่คำสั่งแล้ว) เป็นต้น ถ้าล้มเหลวจะได้หมายเลขที่บอกเหตุผลของการปฏิเสธ
สิ่งที่ควรระวังคือ ตัวเลขนี้เป็นเพียงการจัดหมวดหมู่ที่เซิร์ฟเวอร์ตอบมา บางครั้งไม่ได้บอกเหตุผลที่แท้จริงของการปฏิเสธ โดยเฉพาะ 10006 เป็นรหัสที่ดูจากล็อกแล้วมักไม่รู้ว่าโบรกเกอร์ตัดสินจากอะไร
| รหัส | ความหมายใน MT5 | รูปแบบที่เกิด | ที่ที่ต้องตรวจ | รอแล้วจะผ่านไหม |
|---|---|---|---|---|
| 10018 | ตลาดปิดอยู่ | ทุกครั้ง (ขึ้นกับช่วงเวลา) | เวลาซื้อขาย・วันหยุด | ผ่านเมื่อตลาดเปิด |
| 10030 | ไม่รองรับโหมดการส่งคำสั่ง (filling) ที่ระบุ | ทุกครั้ง | การตั้งค่า EA・สเปคของสัญลักษณ์ | ไม่ผ่าน |
| 10013 | คำขอไม่ถูกต้อง | มักเป็นทุกครั้ง | ล็อต・ราคา・ชื่อสัญลักษณ์ | ไม่ผ่าน |
| 10004 | Requote (ราคาเปลี่ยน) | เป็นบางครั้ง | slippage ที่ยอมรับได้・ช่วงเวลา | มักผ่าน |
| 10006 | คำขอถูกปฏิเสธ | เป็นบางครั้งถึงทุกครั้ง | สอบถามโบรกเกอร์ | บอกไม่ได้ |
ขั้นตอนการตรวจสอบ: ไล่ตามลำดับนี้
1. 10018: ดูนาฬิกาก่อน
ตรวจง่ายที่สุดจึงดูเป็นอันดับแรก ตรวจว่าตรงกับสุดสัปดาห์ วันหยุด ช่วงปีใหม่ หรือช่วงพักของแต่ละสัญลักษณ์หรือไม่ (ทองคำและดัชนีหุ้นในหลายโบรกเกอร์มีช่วงพักระหว่างวัน) คลิกขวาที่สัญลักษณ์ใน Market Watch แล้วเปิด "Specification" ก็จะเห็นเวลาซื้อขาย และอย่าลืมว่าเวลาเซิร์ฟเวอร์กับเวลาญี่ปุ่นต่างกัน ถ้าสาเหตุคือช่วงเวลา ไม่ต้องทำอะไร เมื่อตลาดเปิดก็จะผ่านเอง
2. 10030: ปรับโหมดการส่งคำสั่งให้ตรงกัน
โหมดการส่งคำสั่งที่รับได้ (FOK・IOC・Return) แตกต่างกันตามโบรกเกอร์และประเภทบัญชี ถ้า EA ส่งคำสั่งด้วยโหมดที่ไม่รองรับ จะถูกปฏิเสธทุกครั้ง หากใน input ของ EA มีช่อง "Filling" ให้ตั้งให้ตรงกับโหมดที่ระบุไว้ในช่อง "Execution" ของสเปคสัญลักษณ์ ถ้าไม่มีช่องนี้ ต้องให้ฝั่ง EA แก้ไข กรุณาสอบถามผู้เผยแพร่ EA เรื่องนี้มักเกิดทันทีหลังย้ายไปโบรกเกอร์ใหม่หรือเปลี่ยนประเภทบัญชี
3. 10013: สงสัยเนื้อหาของคำสั่ง
มักขึ้นเมื่อเนื้อหาคำสั่งผิดพลาด เช่น ล็อตน้อยกว่าล็อตขั้นต่ำ ล็อตไม่ตรงกับขั้นของล็อต หรือส่วนท้ายของชื่อสัญลักษณ์ (เช่น ".m" หรือ "#") ไม่ตรง บางครั้งล็อกก็ไม่แสดงเหตุผลโดยละเอียด และบางกรณีต้องลองปรับล็อตหรือชื่อสัญลักษณ์ทีละน้อยเพื่อหาสาเหตุ การทบทวนรายการตั้งค่าสรุปไว้ใน วิธีตั้งค่า EA
4. 10004: slippage ที่ยอมรับได้และช่วงเวลา
เป็นรหัสที่ขึ้นง่ายในช่วงที่ราคาเคลื่อนไหวเร็ว เช่น หลังประกาศตัวเลขเศรษฐกิจหรือช่วงเช้ามืด หาก EA มีช่อง "Slippage" หรือ "Deviation" การขยายค่าเล็กน้อยอาจช่วยให้เกิดน้อยลง แต่ถ้าขยายมากเกินไป ก็เท่ากับยอมรับการจับคู่ที่ราคาไม่เป็นผลดี ถ้าเน็ตช้าซ้ำเติมอยู่ด้วย การใช้ VPS อาจช่วยปรับปรุงได้
5. 10006: บางครั้งต้องถามโบรกเกอร์
เป็นการปฏิเสธจากการตัดสินใจของฝั่งโบรกเกอร์ ผู้ใช้มองไม่เห็นสาเหตุ อาจเป็นข้อจำกัดการซื้อขายของบัญชี การหยุดซื้อขายสัญลักษณ์ชั่วคราว หรือการจำกัดเพราะส่งคำสั่งมากเกินไป แต่เราเองก็ฟันธงไม่ได้ว่าตรงกับข้อไหน วิธีที่ชัวร์ที่สุดคือจดเวลาในล็อกและเนื้อหาคำสั่งไว้ แล้วสอบถามฝ่ายซัพพอร์ตของโบรกเกอร์ ถ้าเกิดบ่อย การพิจารณาย้ายโบรกเกอร์โดยดูจาก เปรียบเทียบโบรกเกอร์ ก็เป็นอีกทางเลือกหนึ่ง
ข้อจำกัดและข้อควรระวัง
- บัญชีทดลองอาจไม่เกิดซ้ำ วิธีการจับคู่คำสั่งในบัญชีทดลองกับบัญชีจริงไม่จำเป็นต้องเหมือนกัน ความถี่ที่เกิด requote หรือการปฏิเสธอาจต่างกัน แม้ใช้งานได้ปกติในบัญชีทดลอง ก็ยืนยันไม่ได้ว่าบัญชีจริงจะผ่านเหมือนกัน
- การลองส่งซ้ำหลายครั้งอาจส่งผลเสีย 10030 และ 10013 ต่อให้ส่งคำสั่งเดิมซ้ำก็ไม่ผ่าน ถ้า EA ส่งซ้ำทุกครั้งที่ถูกปฏิเสธ คำสั่งจะกระจุกตัวในเวลาสั้น ๆ ซึ่งอาจทำให้ติดข้อจำกัดของโบรกเกอร์ได้ EA ของเรามีแนวทางส่งซ้ำเฉพาะรหัสชั่วคราวอย่าง 10004 และกำหนดจำนวนครั้งไว้
- เทรดที่ถูกปฏิเสธจะไม่ถูกบันทึก ในการทดสอบย้อนหลัง การปฏิเสธแบบนี้แทบไม่เกิด ผลงานจริงจึงคลาดเคลื่อนไปตามส่วนนี้ นี่เป็นเหตุผลหนึ่งที่ผลไม่เหมือนกับผลของ tester
- return code ยังมีหมายเลขอื่นนอกเหนือจาก 5 ตัวที่กล่าวถึงนี้ เช่น ล็อตไม่ถูกต้อง ราคาไม่ถูกต้อง และมาร์จิ้นไม่พอ บทความนี้สรุปเฉพาะ 5 ตัวที่มีคนสอบถามบ่อย
สรุป
- ดูก่อนว่า "ล้มเหลวทุกครั้ง หรือล้มเหลวเป็นบางครั้ง"
- ถ้าล้มเหลวทุกครั้ง ให้ตรวจตามลำดับ 10018 (เวลา) → 10030 (โหมดการส่งคำสั่ง) → 10013 (เนื้อหาคำสั่ง)
- ถ้าล้มเหลวเป็นบางครั้ง ให้ดู 10004 (slippage・ช่วงเวลา) ส่วน 10006 ให้สอบถามโบรกเกอร์
- 10030 และ 10013 ส่งซ้ำกี่ครั้งก็ไม่ผ่าน ต้องแก้การตั้งค่า
- สาเหตุแท้จริงของ 10006 บางครั้งผู้ใช้มองไม่เห็น และเราเองก็ฟันธงไม่ได้
- แม้ผ่านในบัญชีทดลอง ก็ไม่ได้แปลว่าบัญชีจริงจะผ่านเหมือนกัน
บทความที่เกี่ยวข้อง
📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
มีคำถามเกี่ยวกับ EA หรือ Forex ไหม?
คุณสามารถตั้งคำถามได้ที่ฟอรัมเทรดของ Nattzy (สมัครฟรี) ไม่จำเป็นต้องเกี่ยวกับบทความนี้ก็ได้ เช่น การตั้งค่า EA หรือการเลือกโบรกเกอร์
ถามที่ Nattzy ↗