EA ที่พัฒนาได้ตรงโจทย์ไม่ได้เริ่มจากโค้ด แต่เริ่มจาก requirement ที่ไม่มีช่องว่างให้ตีความ เช็กลิสต์นี้ช่วยให้เจ้าของแนวคิดและผู้พัฒนาคุยภาษาเดียวกันก่อนลงมือบน MT4 หรือ MT5
ระบุสัญญาณให้คอมพิวเตอร์เข้าใจ
เขียนสูตร ตัวแปร timeframe และแหล่งราคาอย่างชัดเจน ระบุว่าสัญญาณประเมินทุก tick หรือเมื่อแท่งปิด หากใช้อินดิเคเตอร์หลายตัวต้องบอกลำดับและตรรกะ AND/OR พร้อมตัวอย่างกรณีที่เข้าและไม่เข้า
ห้ามใช้คำคลุมเครือ เช่น แนวโน้มแข็งแรงหรือราคาใกล้แนวรับโดยไม่มีนิยามเชิงตัวเลข เพราะผู้พัฒนาไม่สามารถทดสอบเจตนาที่เปลี่ยนไปตามสายตาได้
กำหนดวงจรชีวิตของคำสั่ง
ระบุชนิดคำสั่ง ระยะ stop loss, take profit, trailing stop และเงื่อนไขปิดก่อนกำหนด รวมถึงจำนวนสถานะสูงสุด การป้องกันคำสั่งซ้ำ magic number และพฤติกรรมเมื่อ restart
ต้องตัดสินใจเรื่อง spread สูง slippage ตลาดปิด margin ไม่พอ และ error จาก broker ล่วงหน้า การ retry โดยไม่มีข้อจำกัดอาจทำให้เกิดคำสั่งที่ไม่คาดคิด
เกณฑ์รับงานและส่งมอบ
กำหนดชุดข้อมูล test case และ expected result สำหรับกฎหลัก ตรวจ log และไฟล์ตั้งค่า รวมถึงเวอร์ชัน MT4/MT5 ที่รองรับ เอกสารควรระบุสิ่งที่อยู่นอกขอบเขตด้วย
ผล Backtest ไม่ใช่ใบรับรองกำไร การยอมรับงานควรวัดว่าโปรแกรมทำตามข้อกำหนดและรับมือข้อผิดพลาดได้ ไม่ใช่วัดจากผลตอบแทนช่วงเดียว
เช็กลิสต์ Requirement 10 ข้อก่อนเริ่มโค้ด
ใช้รายการนี้ทบทวนกับผู้พัฒนาทีละข้อ ข้อใดตอบไม่ได้แปลว่ายังไม่พร้อมเขียนโค้ด ไม่ใช่ปล่อยให้ผู้พัฒนาเดาแทน
- แพลตฟอร์มและเวอร์ชันMT4 หรือ MT5, build ขั้นต่ำ, ประเภทบัญชี (hedging หรือ netting) และโบรกเกอร์ที่ใช้ทดสอบ
- สินทรัพย์และ Timeframeรายการ symbol, timeframe หลักและรอง, session ที่อนุญาตให้เทรด และ timezone อ้างอิง
- นิยามสัญญาณสูตร Indicator ทุกตัวพร้อมพารามิเตอร์ ประเมินที่ tick หรือแท่งปิด และตรรกะ AND/OR เมื่อใช้หลายเงื่อนไข
- กฎเข้า-ออกเงื่อนไข entry, exit, invalidation และลำดับความสำคัญเมื่อหลายสัญญาณเกิดพร้อมกัน
- ขนาดคำสั่งfixed lot, % risk ต่อคำสั่ง หรือสูตรอื่น พร้อมค่าต่ำสุด/สูงสุด และการปัดเศษตาม lot step
- วงจรชีวิตคำสั่งชนิดคำสั่ง, SL/TP, trailing, break-even, partial close, จำนวนสถานะสูงสุด และ magic number
- Risk limitขาดทุนต่อวัน, drawdown สูงสุด, exposure รวม และพฤติกรรมเมื่อถึงขีดจำกัด (หยุดเปิดใหม่หรือปิดทั้งหมด)
- Error handlingspread สูง, requote, margin ไม่พอ, ตลาดปิด, disconnect และจำนวน retry ที่ยอมรับ
- Restart และ Reconciliationเมื่อ terminal เปิดใหม่ EA อ่านสถานะจากที่ใด และตรวจสอบสถานะกับบัญชีอย่างไรก่อนส่งคำสั่งใหม่
- Acceptance และส่งมอบtest case พร้อม expected result, รูปแบบ log, ไฟล์ .set, เอกสาร และสิ่งที่อยู่นอกขอบเขต
ตัวอย่างตารางพารามิเตอร์ขั้นต่ำ
ระดับความชัดเจนที่ผู้พัฒนาต้องการมีหน้าตาแบบนี้ ทุกช่องเป็นค่าที่ทดสอบได้ ไม่มีคำว่าประมาณหรือแล้วแต่สถานการณ์
ตัวอย่าง · EA แนว trend-following บน H1
| พารามิเตอร์ | ค่าตัวอย่าง | หมายเหตุ |
|---|---|---|
| Symbol / Timeframe | EURUSD · H1 | ประเมินสัญญาณเมื่อแท่ง H1 ปิดเท่านั้น |
| Entry (Long) | EMA(20) ตัดขึ้น EMA(50) และ RSI(14) > 50 | ทั้งสองเงื่อนไขต้องเป็นจริงบนแท่งเดียวกัน |
| Exit | SL = 1.5 × ATR(14) · TP = 2 × SL | คำนวณ ณ เวลาเปิดคำสั่ง ไม่ปรับตามแท่งถัดไป |
| Position size | 1% ของ balance ต่อคำสั่ง | ปัดลงตาม lot step หากต่ำกว่า min lot ให้ข้ามสัญญาณและบันทึก log |
| Max positions | 1 ต่อ symbol | ไม่เปิดซ้ำจนกว่าสถานะเดิมจะปิด |
| Daily loss limit | -3% ของ balance ณ ต้นวัน | ถึงขีดจำกัดแล้วหยุดเปิดคำสั่งใหม่จนถึงวันถัดไป |
| Spread filter | ไม่เปิดคำสั่งเมื่อ spread > 2.0 pip | บันทึก log ทุกครั้งที่สัญญาณถูกข้าม |
| Magic number | 20260823 | แยกจาก EA อื่นในบัญชีเดียวกัน |
ตัวเลขทั้งหมดเป็นเพียงตัวอย่างเพื่อแสดงระดับความชัดเจน ไม่ใช่ค่าที่แนะนำ ผู้ใช้ต้องกำหนดจากกลยุทธ์และความเสี่ยงที่ตนเองยอมรับได้
ตัวอย่าง Test Case แบบ Given / When / Then
เมื่อพารามิเตอร์ชัด test case จะเขียนได้ทันที และกลายเป็นเกณฑ์รับงานที่ทั้งสองฝ่ายตรวจได้
- Given spread ปัจจุบัน 2.5 pip · When เกิดสัญญาณ Long · Then EA ไม่เปิดคำสั่งและบันทึก log ว่าข้ามสัญญาณเพราะ spread
- Given มีสถานะ Long เปิดอยู่ 1 รายการ · When เกิดสัญญาณ Long อีกครั้ง · Then ไม่เปิดคำสั่งเพิ่ม
- Given terminal ถูกปิดขณะมีสถานะเปิดอยู่ · When เปิด terminal ใหม่ · Then EA อ่านสถานะจาก magic number และจัดการ SL/TP ต่อโดยไม่ส่งคำสั่งซ้ำ
- Given ขาดทุนสะสมวันนี้ถึง -3% · When เกิดสัญญาณใด ๆ · Then EA ปฏิเสธการเปิดคำสั่งจนถึงวันถัดไปและแจ้งเตือนผู้ใช้
Test case เหล่านี้วัดว่าซอฟต์แวร์ทำตามข้อกำหนดหรือไม่ ไม่ได้วัดว่ากลยุทธ์ทำกำไรหรือไม่ ซึ่งเป็นคนละคำถามและไม่มีใครรับประกันได้



