การออกแบบล็อก EA เพื่อย้อนดูเหตุการณ์ผิดปกติ
สารบัญ (6)
- สรุป: EA ที่ไม่มีล็อก ตรวจสอบย้อนหลังไม่ได้เมื่อเกิดเหตุผิดปกติ
- ทำไมต้องมีล็อก 3 ประเภท
- ค่าที่ใช้ตัดสินใจ: ถ้าไม่เก็บตัวเลข ก็แยก "บังเอิญ" ออกจากกันไม่ได้
- เหตุผลที่ข้าม: ถูกละไว้บ่อยที่สุด แต่สำคัญที่สุด
- การจับคู่คำสั่ง: บันทึกสิ่งที่เกิดขึ้นนอก EA
- แต่ละบรรทัดควรมีอะไร: ตัวอย่างรูปแบบการเขียน
- ขั้นตอนตรวจสอบสำหรับผู้ใช้งาน
- ข้อจำกัดและข้อควรระวัง
- สรุป
สารบัญ
- สรุป: EA ที่ไม่มีล็อก ตรวจสอบย้อนหลังไม่ได้เมื่อเกิดเหตุผิดปกติ
- ทำไมต้องมีล็อก 3 ประเภท
- ค่าที่ใช้ตัดสินใจ: ถ้าไม่เก็บตัวเลข ก็แยก "บังเอิญ" ออกจากกันไม่ได้
- เหตุผลที่ข้าม: ถูกละไว้บ่อยที่สุด แต่สำคัญที่สุด
- การจับคู่คำสั่ง: บันทึกสิ่งที่เกิดขึ้นนอก EA
- แต่ละบรรทัดควรมีอะไร: ตัวอย่างรูปแบบการเขียน
- ขั้นตอนตรวจสอบสำหรับผู้ใช้งาน
- ข้อจำกัดและข้อควรระวัง
- สรุป
สรุป: EA ที่ไม่มีล็อก ตรวจสอบย้อนหลังไม่ได้เมื่อเกิดเหตุผิดปกติ
ขอสรุปไว้ก่อนเลย ล็อกของ EA อย่างน้อยควรบันทึก "ค่าที่ใช้ตัดสินใจ" "เหตุผลที่ไม่เข้าเทรด" และ "ผลการจับคู่คำสั่ง" อย่างละ 1 บรรทัด หากมีครบทั้ง 3 อย่างนี้ ก็จะย้อนดูได้ทั้งการเทรดที่ไม่คาดคิดและกรณีที่ "ไม่มีอะไรเกิดขึ้นเลย" แต่ถ้าไม่มี ไม่ว่าจะขาดทุน หรือไม่มีเทรดเลยสักไม้ ก็แยกไม่ออกว่าสาเหตุมาจากตรรกะของ EA สภาพตลาด หรือฝั่งโบรกเกอร์
ทีมของเราเองก็พัฒนา EA และเคยทั้งได้ล็อกช่วยไว้ และเคยเจอกรณีที่ล็อกไม่พอจนหาสาเหตุไม่ได้ บทความนี้จะสรุปว่า "ล็อกที่ดี" เป็นอย่างไรเมื่อมองจากฝั่งผู้ใช้งาน
เปรียบเทียบโบรกเกอร์แนะนำ →
🎁 ดาวน์โหลด EA ฟรี📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
ทำไมต้องมีล็อก 3 ประเภท
การตัดสินใจของ EA หนึ่งรอบ โดยคร่าว ๆ คือ "คำนวณค่า → ตรวจเงื่อนไข → ส่งคำสั่ง → จับคู่คำสั่ง" หากจะระบุย้อนหลังว่าขั้นตอนไหนไม่เป็นไปตามที่คาด ก็ต้องมีบันทึกของแต่ละขั้นตอน
| ประเภทล็อก | ตัวอย่างข้อมูลที่บันทึก | คำถามที่ตอบได้ |
|---|---|---|
| ค่าที่ใช้ตัดสินใจ | เวลาของแท่งที่ปิดแล้ว ค่าอินดิเคเตอร์ ค่าเกณฑ์ สเปรด | "ทำไมถึงเข้าตรงนั้น" |
| เหตุผลที่ข้าม | ข้ามเพราะเงื่อนไขใด (นอกช่วงเวลา สเปรดเกิน มีโพสิชันอยู่แล้ว ฯลฯ) | "ทำไมถึงไม่เข้า" |
| การจับคู่คำสั่ง | ราคาที่ร้องขอ ราคาที่จับคู่ได้ สลิปเพจ รหัสผลลัพธ์ (return code) หมายเลขตั๋ว | "ถูกส่งคำสั่งตรงตามที่ตั้งใจหรือไม่" |
ค่าที่ใช้ตัดสินใจ: ถ้าไม่เก็บตัวเลข ก็แยก "บังเอิญ" ออกจากกันไม่ได้
ล็อกที่เขียนแค่ "เกิดสัญญาณซื้อ" แทบไม่ช่วยอะไร เพราะถ้าไม่รู้ว่าค่าอินดิเคเตอร์ ณ ตอนนั้นห่างจากค่าเกณฑ์เท่าไร ก็บอกไม่ได้ว่าเข้าเงื่อนไขแบบเฉียดฉิว หรือเข้าเงื่อนไขอย่างชัดเจน นอกจากนี้ต้องบันทึกด้วยเสมอว่าตัดสินใจจากแท่งไหน (เวลาของแท่งที่ปิดแล้ว)
เหตุผลที่ข้าม: ถูกละไว้บ่อยที่สุด แต่สำคัญที่สุด
EA ส่วนใหญ่เขียนล็อกเฉพาะตอน "เข้าเทรด" แต่คำถามที่พบบ่อยที่สุดระหว่างใช้งานคือ "ทำไมไม่เข้าเทรดเลย" หากมีเหตุผลที่ข้ามอยู่ในล็อก ก็ตรวจได้ว่าเป็นการข้ามตามสเปกจริง หรือเกิดจากการตั้งค่าผิดพลาดหรือเวลาเซิร์ฟเวอร์เหลื่อมกัน
MEGAMAX DONCHIAN ของเรา ในฟอร์เวิร์ดเทสต์บนบัญชีเดโมของ Exness ณ วันที่ 11 พฤศจิกายน 2026 มีจำนวนเทรดเป็น 0 ไม้ ส่วนเหตุผลที่ข้ามนั้น ทีมของเราเองก็ยังตรวจสอบไม่ได้ จึงจะไม่เขียนคาดเดาไว้ ณ ที่นี้ แต่ในสถานการณ์แบบนี้ การมีหรือไม่มีล็อกเหตุผลที่ข้าม ทำให้แรงที่ต้องใช้ตรวจสอบต่างกันมาก การที่เทรดเป็น 0 ไม่ได้หมายความว่าผลงานแย่ แต่ก่อนจะอ่านล็อก ก็ยังยืนยันไม่ได้ว่าเป็น "การข้ามที่ปกติ"
การจับคู่คำสั่ง: บันทึกสิ่งที่เกิดขึ้นนอก EA
คำสั่งถูกปฏิเสธ หรือจับคู่ได้แต่สลิปเพจสูง เป็นปัญหาคนละเรื่องกับตรรกะของ EA หากเก็บรหัสผลลัพธ์และราคาที่จับคู่ได้ไว้ ก็แยกพิจารณาได้ว่าเป็นปัญหาของ EA หรือปัญหาของโบรกเกอร์และเครือข่าย
แต่ละบรรทัดควรมีอะไร: ตัวอย่างรูปแบบการเขียน
เราสรุปการตัดสินใจ 1 รอบไว้ใน 1 บรรทัด โดยใช้รูปแบบคงที่เพื่อให้ค้นหาย้อนหลังได้ง่าย
[EVAL] bar=2026.11.10 14:00 sig=BUY val=1.234 th=1.200 spread=18 -> ENTRY
[SKIP] bar=2026.11.10 15:00 reason=SPREAD spread=45 max=30
[FILL] ticket=123456 req=152.340 fill=152.346 slip=6 ret=10009
ประเด็นที่ควรทำมีดังนี้
- ใส่แท็กบอกประเภท (EVAL / SKIP / FILL) ไว้ต้นบรรทัด เพื่อให้ค้นด้วย grep หรือการค้นหาได้
- เวลาของแท่งให้เขียนเป็นเวลาของ "แท่งที่ปิดแล้วที่ใช้ตัดสินใจ" (ถือว่าเป็นเวลาเซิร์ฟเวอร์)
- เหตุผลให้เขียนเป็นรหัสที่กำหนดไว้ ไม่ใช่ประโยค (SPREAD, TIME, POSITION เป็นต้น)
- ไม่ต้องเขียนทุกทิก ให้เขียนเฉพาะจังหวะที่ตัดสินใจ
หากเขียนล็อกทุกทิก ไฟล์ล็อกจะใหญ่ขึ้นอย่างรวดเร็ว กินพื้นที่ดิสก์ และทำให้บรรทัดสำคัญจมหาย หลักการพื้นฐานคือ "เขียน 1 ครั้งเมื่อแท่งปิด"
ขั้นตอนตรวจสอบสำหรับผู้ใช้งาน
ผู้ที่ใช้ EA สามารถไล่ตรวจตามลำดับนี้เพื่อหาสาเหตุได้เร็วขึ้น
- ที่แท็บ "ผู้เชี่ยวชาญ" (Experts) ของ MT5 ตรวจว่า EA เขียนล็อกของตัวเองออกมาหรือไม่
- หาบรรทัด EVAL ณ เวลาที่เกิดเทรดที่ไม่คาดคิด แล้วดูค่าที่ใช้ตัดสินใจและค่าเกณฑ์
- ในช่วงที่ไม่มีการเข้าเทรด ให้ดูบรรทัด SKIP แล้วนับว่าเหตุผลใดพบมากที่สุด
- ที่บรรทัด FILL ตรวจความต่างระหว่างราคาที่ร้องขอกับราคาที่จับคู่ได้ และรหัสผลลัพธ์
- เทียบเวลากับแท็บ "ประวัติการดำเนินการ" (บันทึกฝั่งโบรกเกอร์)
สำหรับการทบทวนการตั้งค่า ดูได้ที่ วิธีตั้งค่า EA และสำหรับการสร้างสภาพแวดล้อมที่ทำงานตลอดเวลา ดูข้อมูลได้ที่ ข้อมูล VPS
ข้อจำกัดและข้อควรระวัง
ล็อกไม่ใช่ทุกอย่าง ขอพูดตามตรงดังนี้
- สิ่งที่ไม่ได้เขียนไว้ในล็อก ก็ไม่มีทางรู้ เหตุการณ์ที่ผู้พัฒนาไม่ได้คาดการณ์ไว้ จะไม่ถูกบันทึกตั้งแต่แรก
- ล็อกไม่ได้ถูกต้องเสมอไป หากโค้ดที่เขียนล็อกมีบั๊ก ก็จะบันทึกค่าที่ผิดลงไป
- ล็อกบอกไม่ได้ว่าการตัดสินใจเกี่ยวกับตลาดดีหรือไม่ สิ่งที่ล็อกบอกได้คือ "ทำงานตามสเปกหรือไม่" ไม่ใช่ว่าสเปกนั้นทำกำไรได้หรือเปล่า
- เขียนมากเกินไปก็เป็นต้นเหตุของปัญหา ล็อกจำนวนมากกินพื้นที่ และคนอ่านก็พลาดสิ่งสำคัญได้ง่ายขึ้น
- ความหมายของล็อกต่างกันระหว่างแบ็กเทสต์ บัญชีเดโม และบัญชีจริง ในเทสเตอร์ สลิปเพจและการปฏิเสธคำสั่งไม่ได้ถูกจำลองเหมือนของจริง ดังนั้นเมื่อเปรียบเทียบล็อกการจับคู่คำสั่ง ต้องคำนึงถึงความต่างของสภาพแวดล้อมด้วย
สรุป
- ล็อกควรมี 3 ประเภท คือ "ค่าที่ใช้ตัดสินใจ" "เหตุผลที่ข้าม" และ "การจับคู่คำสั่ง" อย่างละ 1 บรรทัด
- ที่ถูกละไว้บ่อยที่สุดคือล็อกเหตุผลที่ข้าม ซึ่งเป็นประโยชน์ที่สุดเวลาหาสาเหตุที่ "EA ไม่ทำงาน"
- หากกำหนดแท็กและรหัสเหตุผลไว้ล่วงหน้า ก็ค้นหาและนับย้อนหลังได้
- ให้เขียนล็อก 1 ครั้งต่อแท่งที่ปิด ไม่เขียนทุกทิก
- ล็อกบอกได้แค่ว่า "ทำงานตามสเปกหรือไม่" ส่วนเรื่องทำกำไรได้หรือไม่ ต้องอาศัยการทดสอบอย่างอื่น
ความรู้ด้านการใช้งาน MT5 เรื่องอื่น ๆ รวบรวมไว้ที่ ความรู้ EA และ MT5
บทความที่เกี่ยวข้อง
2026-11-14
ตั้งค่า Push Notification MT5 จาก EA และออกแบบการแจ้งเตือน
2026-11-06
MT5 ปฏิเสธคำสั่ง: ความหมาย Return Code และลำดับตรวจสอบ
2026-11-04
การออกแบบ MagicNumber|วิธีรันหลาย EA ในบัญชีเดียว
2026-11-02
MT5 ออเดอร์และโพซิชัน|ป้องกันปัญหาบัญชี Netting
📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
มีคำถามเกี่ยวกับ EA หรือ Forex ไหม?
คุณสามารถตั้งคำถามได้ที่ฟอรัมเทรดของ Nattzy (สมัครฟรี) ไม่จำเป็นต้องเกี่ยวกับบทความนี้ก็ได้ เช่น การตั้งค่า EA หรือการเลือกโบรกเกอร์
ถามที่ Nattzy ↗