วิธี Backtest EA ใน MT5 ให้แม่น — ทำยังไงให้ผลเชื่อถือได้จริง (2026)

ถ้าคุณเคยเห็นกราฟ backtest ที่พุ่งขึ้นเป็นเส้นตรงสวยงาม แล้วพอเอาไปรันจริงกลับติดลบตั้งแต่สัปดาห์แรก — คุณไม่ได้ซวย และ EA ก็อาจไม่ได้พัง
สิ่งที่พังคือ วิธีทดสอบ
บทความส่วนใหญ่ในภาษาไทยสอนแค่ว่ากดปุ่มไหน ซึ่งใช้เวลาอ่าน 3 นาทีก็ทำตามได้ แต่ไม่มีใครบอกว่า ผลที่ออกมาแปลว่าอะไร และเมื่อไหร่ที่ไม่ควรเชื่อมัน
บทความนี้จะพาไปทั้งสองส่วน: ขั้นตอนตั้งค่า Strategy Tester ใน MT5 ให้ครบ และที่สำคัญกว่า — วิธีอ่านผลว่ามันคือความได้เปรียบจริง หรือแค่ตัวเลขที่เราเผลอปั้นขึ้นมาเอง
ตอนท้ายมีเทคนิคที่แทบไม่มีใครในไทยพูดถึง: วิธีหาว่า Stop Loss ควรอยู่ตรงไหน โดยวัดจากเทรดจริงของคุณเอง ไม่ใช่กฎสำเร็จรูปแบบ "2% ของพอร์ต"
Backtest บอกอะไรได้ และบอกอะไรไม่ได้
ก่อนจะกดปุ่มอะไร ต้องเคลียร์เรื่องนี้ก่อน เพราะความเข้าใจผิดตรงนี้คือต้นตอของความเสียหายเกือบทั้งหมด
Backtest บอกได้:
- กฎที่คุณเขียนไว้ ถ้าเอาไปใช้กับข้อมูลในอดีต จะให้ผลหน้าตาแบบไหน
- ระบบนี้เทรดถี่แค่ไหน ถือไม้นานเท่าไหร่ ขาดทุนติดกันได้กี่ไม้
- พฤติกรรมของระบบเปลี่ยนไปมั้ยเมื่อสภาพตลาดเปลี่ยน
- โค้ดทำงานตรงกับที่คุณคิดไว้ในหัวหรือเปล่า (ข้อนี้สำคัญที่สุดและคนมองข้ามบ่อยที่สุด)
Backtest บอกไม่ได้:
- ระบบนี้จะกำไรในอนาคตหรือไม่
- จะเจอสภาพตลาดแบบไหนที่ไม่เคยมีในข้อมูลย้อนหลัง
- โบรกของคุณจะ execute ให้จริงตามที่ทดสอบหรือเปล่า
พูดให้ตรงที่สุด: backtest คือการตรวจว่าสมมติฐานของคุณเคยเป็นจริงในอดีตหรือไม่ ไม่ใช่การพยากรณ์ ถ้าผลออกมาแย่ แปลว่าตัดทิ้งได้เลยประหยัดเงิน แต่ถ้าผลออกมาดี มันแค่ "ยังไม่ถูกตัดทิ้ง" เท่านั้น ไม่ใช่ใบรับรอง
เก็บประโยคนี้ไว้อ่านซ้ำตอนเห็นกราฟสวยๆ ครับ
คุณภาพข้อมูลคือตัวตัดสิน — ถ้าข้อมูลไม่ดี ผลก็ไม่มีความหมาย
นี่คือขั้นที่คนข้ามบ่อยที่สุด และเป็นขั้นที่ทำให้ backtest ทั้งหมดเป็นโมฆะได้ในทีเดียว
tick model — เลือกให้ถูกตั้งแต่แรก
MT5 มีโหมดจำลองราคาให้เลือกหลายแบบ เรียงจากละเอียดที่สุดไปหยาบที่สุด:
| โหมด | ใช้เมื่อไหร่ |
|---|---|
| Every tick based on real ticks | ใช้อันนี้เป็นค่าเริ่มต้นเสมอ — ใช้ tick จริงที่โบรกเก็บไว้ ใกล้ความจริงที่สุด |
| Every tick | โบรกไม่มี tick จริงให้ MT5 จะสร้าง tick จำลองจากแท่ง M1 |
| 1 minute OHLC | ใช้แค่ราคาเปิด-สูง-ต่ำ-ปิดของแต่ละนาที เร็วขึ้นมาก แต่หยาบ |
| Open prices only | ใช้ตอนไล่หา parameter คร่าวๆ เท่านั้น ห้ามใช้ตัดสินใจ |
กฎง่ายๆ: ยิ่ง EA ของคุณอ่อนไหวกับราคาภายในแท่ง (scalping, grid, ระบบที่มี SL แคบ, ระบบที่ใช้ pending order) ยิ่งต้องใช้ real ticks เท่านั้น ถ้าระบบเข้า-ออกที่ราคาปิดแท่ง H1 หรือ H4 อย่างเดียว โหมดหยาบกว่านั้นพอรับได้
ที่ต้องระวังคือ โหมดหยาบมักให้ผลดีกว่าความจริงเสมอ เพราะมันไม่เห็นการแกว่งในแท่งที่จะไปชน SL ของคุณ ถ้าเปลี่ยนจาก 1 minute OHLC เป็น real ticks แล้วผลเปลี่ยนจากกำไรเป็นขาดทุน — นั่นแปลว่าผลจริงคืออันหลัง ไม่ใช่ว่าเครื่องทดสอบมีปัญหา
ดาวน์โหลดข้อมูลย้อนหลังให้ครบก่อน
MT5 ดึงข้อมูลจากเซิร์ฟเวอร์โบรกให้อัตโนมัติ แต่ถ้าเพิ่งติดตั้งใหม่หรือเพิ่งเปลี่ยนโบรก ข้อมูลอาจยังไม่ครบ ให้เปิดหน้าต่าง Symbols มาดูก่อนว่าช่วงที่จะทดสอบมีข้อมูลจริงหรือเปล่า
ถ้าข้อมูลขาดช่วง ผลที่ได้จะเพี้ยนโดยที่ไม่มีอะไรมาเตือนคุณเลย
spread — จุดที่หลอกตาที่สุด
ค่าเริ่มต้นบางแบบใช้ spread คงที่ที่แคบกว่าความเป็นจริง สำหรับระบบที่เทรดถี่ ความต่างแค่ 1-2 จุดต่อไม้ คูณด้วยพันไม้ ก็พลิกจากกำไรเป็นขาดทุนได้ทั้งระบบ
ถ้าใช้ real ticks ระบบจะใช้ spread ตามประวัติจริงให้เอง ซึ่งเป็นอีกเหตุผลที่ควรใช้โหมดนี้ และอย่าลืมว่า spread ช่วงข่าวแรงกับช่วงตลาดปิดคาบเกี่ยว กว้างกว่าปกติหลายเท่า — ถ้าระบบคุณเทรดในช่วงนั้น ต้องเห็นมันในผลทดสอบด้วย
commission และ swap
ทั้งสองอย่างนี้เป็นค่าที่ตั้งฝั่งเซิร์ฟเวอร์ ไม่ใช่ทุกบัญชีจะเหมือนกัน บัญชีประเภท ECN/Raw มี commission แยกต่างหากที่ backtest อาจไม่ได้คิดให้ถ้าตั้งค่าไม่ตรง และระบบที่ถือข้ามคืนหลายวันจะโดน swap กินจนเปลี่ยนผลได้ โดยเฉพาะคืนวันพุธที่คิดสามเท่า
ตั้งค่า Strategy Tester ใน MT5 ทีละขั้น
เปิดจากเมนู View → Strategy Tester หรือกด Ctrl+R แล้วไล่ตามนี้
1. เลือก EA และสัญลักษณ์
เลือกไฟล์ EA ที่จะทดสอบ แล้วเลือกคู่เงิน — ตรงนี้มีกับดัก ต้องเลือกสัญลักษณ์ที่ตรงกับที่จะใช้จริง โบรกหลายเจ้าตั้งชื่อไม่เหมือนกัน เช่น EURUSD EURUSD.m EURUSDmicro ซึ่งอาจมี spread และขนาดสัญญาต่างกันคนละเรื่อง
2. เลือก Timeframe
ต้องตรงกับ timeframe ที่ EA ออกแบบมา ไม่ใช่ timeframe ที่คุณชอบดู
3. กำหนดช่วงเวลา
เลือกวันเริ่ม-วันจบ ดูวิธีเลือกช่วงที่เหมาะในหัวข้อถัดไป
4. เลือก Modelling
ตั้งเป็น Every tick based on real ticks ตามที่คุยกันไปแล้ว
5. ตั้งเงินฝากและ Leverage
ใส่ให้ตรงกับบัญชีที่จะใช้จริง ไม่ใช่ใส่เงินล้านทั้งที่จะเทรดด้วยหมื่นเดียว เพราะเงินตั้งต้นมีผลกับการคำนวณล็อตและ margin โดยตรง
6. Delays
ค่าเริ่มต้นคือไม่มีดีเลย์ ซึ่งไม่มีอยู่จริงในโลก ถ้าจะให้ใกล้ความจริงขึ้น ลองตั้งเป็นดีเลย์แบบสุ่มดู แล้วเทียบกับผลเดิม ถ้าผลเปลี่ยนไปเยอะ แปลว่าระบบคุณอ่อนไหวกับความเร็ว ซึ่งเป็นสัญญาณเตือนสำหรับการใช้จริง
7. กด Start แล้วรอ
โหมด real ticks ใช้เวลานานกว่าโหมดอื่นหลายเท่า ถ้าทดสอบหลายปีอาจใช้เวลาเป็นสิบนาที — อันนี้ปกติ
เสร็จแล้วดูผลได้ที่แท็บ Results, Graph และ Report
เลือกช่วงเวลาทดสอบ — จำนวนเทรดสำคัญกว่าจำนวนปี
คำถามที่เจอบ่อยที่สุดคือ "ควร backtest ย้อนหลังกี่ปี" — ซึ่งเป็นคำถามที่ผิดตั้งแต่ต้น
สิ่งที่ต้องดูไม่ใช่จำนวนปี แต่คือ จำนวนไม้ที่ระบบเทรด เพราะระบบที่เทรดวันละ 10 ไม้กับระบบที่เทรดเดือนละไม้ ใช้เวลาย้อนหลังเท่ากันแต่ได้กลุ่มตัวอย่างต่างกันเป็นร้อยเท่า
Sergey Ermolov เขียนไว้ในบทความวิจัยกลยุทธ์ breakout บน MQL5 (ต้นฉบับ) โดยให้เกณฑ์ที่ชัดเจนไว้แบบนี้:
| จำนวนเทรด | ความหมาย |
|---|---|
| ต่ำกว่า 100 | ไม่พอ สรุปอะไรไม่ได้ |
| 100–300 | พอรับได้ ใช้ตัดสินใจเบื้องต้น |
| 300–700 | ช่วงที่เหมาะที่สุด |
| เกิน 1,000 | มากเกินไป |
ข้อสุดท้ายฟังดูแปลก แต่มีเหตุผล — ยิ่งข้อมูลยาว ผลยิ่งถูกเฉลี่ยข้ามสภาพตลาดหลายแบบจนกลายเป็น "ตลาดเฉลี่ย" ที่ไม่มีอยู่จริง ระบบที่ดูดีในกราฟ 10 ปี อาจแปลว่ามันกำไรมหาศาลใน 2 ปีและขาดทุนเรื่อยๆ ใน 8 ปีที่เหลือ ซึ่งถ้าคุณเริ่มใช้วันนี้ก็อาจอยู่ในช่วงหลัง
ทางที่ดีกว่าคือ ทดสอบแยกเป็นช่วงๆ แล้วดูว่าผลสม่ำเสมอมั้ย ระบบที่กำไรทุกปีแบบพอประมาณ น่าเชื่อถือกว่าระบบที่กำไรก้อนโตปีเดียวแล้วที่เหลือแบนราบ
ทำไมต้องใช้ล็อตคงที่ตอนทดสอบ
ข้อนี้สวนสามัญสำนึกคนส่วนใหญ่ และเป็นหนึ่งในจุดที่ทำให้ผล backtest หลอกตาที่สุด
คนทั่วไปตั้งให้ EA คำนวณล็อตจาก ยอดเงินปัจจุบัน (เช่น เสี่ยง 2% ของ balance) เพราะนั่นคือวิธีที่จะใช้จริง — ฟังดูสมเหตุสมผลใช่มั้ยครับ
ปัญหาคือตอนวัดผล วิธีนี้ทำให้ เทรดช่วงท้ายมีน้ำหนักมากกว่าเทรดช่วงต้นแบบทวีคูณ ถ้าระบบบังเอิญกำไรช่วงต้น เงินก้อนโตขึ้น ล็อตโตขึ้น กำไรช่วงท้ายก็ยิ่งดูมโหฬาร กราฟจะโค้งขึ้นสวยงาม — แต่ความโค้งนั้นมาจากดอกเบี้ยทบต้น ไม่ได้มาจากคุณภาพของกลยุทธ์
Ermolov แนะนำให้ตอนทดสอบใช้ ความเสี่ยงคงที่จากทุนตั้งต้น แทน เช่น เสี่ยงเท่ากันทุกไม้โดยอิงเงินก้อนแรกเสมอ ไม่อิงยอดปัจจุบัน วิธีนี้ทำให้ทุกไม้มีน้ำหนักเท่ากัน และคุณจะเห็นความได้เปรียบจริงของระบบโดยไม่มีการทบต้นมาบัง
พอมั่นใจว่าระบบมีของจริงแล้ว ค่อยเปลี่ยนกลับไปเป็นการคำนวณล็อตแบบที่จะใช้จริงตอนทดสอบรอบสุดท้าย
อ่านผล — ตัวเลขที่สำคัญกว่ากำไร
หน้ารายงานของ MT5 มีตัวเลขเป็นสิบ คนส่วนใหญ่ดูอย่างเดียวคือกำไรสุทธิ ซึ่งเป็นตัวเลขที่มีประโยชน์น้อยที่สุดในหน้านั้น
เรียงตามความสำคัญจริงๆ:
1. Maximum Drawdown (%) — ระบบเคยติดลบลึกสุดกี่เปอร์เซ็นต์จากจุดสูงสุด นี่คือตัวเลขที่ตัดสินว่าคุณจะอยู่กับระบบนี้ไหวมั้ย ระบบที่กำไร 200% แต่เคยติดลบ 60% ระหว่างทาง คนส่วนใหญ่ปิดทิ้งไปก่อนถึงกำไรนั้นแล้ว
2. Profit Factor — กำไรรวมหารด้วยขาดทุนรวม ต่ำกว่า 1 คือระบบขาดทุน ประมาณ 1.5 ขึ้นไปถือว่าเริ่มน่าสนใจ แต่ระวังค่าที่สูงผิดปกติ เช่น เกิน 5 จากกลุ่มตัวอย่างไม่กี่สิบไม้ — นั่นมักแปลว่าตัวอย่างน้อยเกินไป ไม่ใช่ระบบเทพ
3. Recovery Factor — กำไรสุทธิหารด้วย drawdown สูงสุด บอกว่าระบบฟื้นจากหลุมได้เร็วแค่ไหน
4. Sharpe Ratio — ผลตอบแทนเทียบกับความผันผวน ยิ่งสูงยิ่งสม่ำเสมอ
5. จำนวนไม้ขาดทุนติดกันสูงสุด — ตัวเลขนี้บอกว่าคุณต้องทนดูอะไร ระบบที่ขาดทุนติดกันได้ 12 ไม้ ต่อให้ระยะยาวกำไร คนส่วนใหญ่ก็ถอดใจไปตั้งแต่ไม้ที่ 7
ในบทความของ Ermolov มีตัวอย่างที่ตรงประเด็นมาก — เขาเลือกชุดพารามิเตอร์ที่ให้ Sharpe 5.4 แทนชุดที่ให้ 2.83 ทั้งที่ผลตอบแทนน้อยกว่า เพราะความสม่ำเสมอสำคัญกว่าตัวเลขกำไรก้อนเดียว และเขาสรุปไว้ตรงๆ ว่ากำไรไม่ควรเป็นเกณฑ์หลักในการเลือกพารามิเตอร์
Optimization คือกับดักที่ใหญ่ที่สุด
Strategy Tester มีโหมด optimization ที่ไล่ทดสอบพารามิเตอร์เป็นพันชุดแล้วบอกว่าชุดไหนดีที่สุด — ฟีเจอร์นี้ทำลายระบบเทรดมามากกว่าที่มันช่วยไว้
เหตุผลง่ายมาก: ถ้าคุณลองมั่วพอ คุณจะเจอชุดตัวเลขที่พอดีกับอดีตเสมอ ไม่ว่าระบบจะมีความได้เปรียบจริงหรือไม่ ผลที่ได้คือชุดค่าที่จำอดีตได้แม่นยำ แต่ไม่รู้อะไรเกี่ยวกับอนาคตเลย ภาษาอังกฤษเรียกว่า overfitting ภาษาบ้านๆ คือ "ปั้นตัวเลขให้เข้ากับข้อสอบที่เฉลยแล้ว"
วิธีใช้ให้ไม่พัง
ดูการกระจายของผล ไม่ใช่ค่าที่ดีที่สุด
นี่คือหัวใจ หลัง optimization อย่ารีบดูอันดับหนึ่ง ให้ดูภาพรวมว่า มีชุดค่าที่กำไรมากน้อยแค่ไหนจากทั้งหมด
Ermolov ให้เกณฑ์ไว้ชัด: ถ้าจากหลายร้อยชุด มีที่กำไรแค่ไม่กี่ชุด — นั่นคือสัญญาณอันตราย ไม่ใช่การค้นพบ เพราะมันแปลว่ากำไรเกิดจากความบังเอิญของตัวเลขเฉพาะเจาะจง ไม่ใช่จากตรรกะของระบบ
กลับกัน ถ้าค่าพารามิเตอร์ในย่านกว้างๆ ให้ผลกำไรใกล้เคียงกันหมด แปลว่าระบบมีความได้เปรียบจริงและทนต่อการเปลี่ยนแปลง — เลือกค่าตรงกลางย่านนั้น ไม่ใช่ค่าที่ให้กำไรสูงสุด
อย่า optimize ทุกอย่างพร้อมกัน
จัดพารามิเตอร์เป็นกลุ่มตามหน้าที่ (กลุ่มสัญญาณเข้า / กลุ่มจุดออก / กลุ่มบริหารความเสี่ยง) แล้วทำทีละกลุ่ม การไล่ 8 ตัวแปรพร้อมกันคือการเปิดโอกาสให้ overfit อย่างเต็มที่
ถ้าไม่เวิร์กกับสินค้านี้ ให้เปลี่ยนสินค้า อย่าดัดระบบ
Ermolov เตือนไว้ว่าไม่ใช่ทุกสินค้าจะเหมาะกับทุกกลยุทธ์ ถ้าต้องบิดพารามิเตอร์จนแปลกประหลาดเพื่อให้กำไร แปลว่ากลยุทธ์กับสินค้านั้นไม่เข้ากัน ย้ายไปสินค้าอื่นดีกว่า
Forward test — ข้อสอบที่ยังไม่เคยเห็นเฉลย
ทุกอย่างข้างบนยังอยู่บนข้อมูลชุดเดียวกับที่ใช้จูน ซึ่งแปลว่ายังพิสูจน์อะไรไม่ได้ ขั้นตอนที่ขาดไม่ได้คือเอาค่าที่ได้ไปทดสอบกับ ข้อมูลที่ไม่เคยถูกใช้ตอนหาค่า
MT5 มีฟีเจอร์ Forward ในหน้า Strategy Tester ที่แบ่งช่วงเวลาให้อัตโนมัติ — จูนบนส่วนแรก ทดสอบบนส่วนหลัง
เกณฑ์อ่านผล:
- ถ้าผลช่วง forward ใกล้เคียงช่วงจูน = ระบบน่าจะมีของจริง
- ถ้าผลช่วง forward แย่ลงมาก = คุณเพิ่งจูนให้พอดีกับอดีตเท่านั้น กลับไปเริ่มใหม่
- Ermolov ระบุว่าช่วง forward ควรมีอย่างน้อย 50–100 เทรด ถึงจะเริ่มบอกอะไรได้ ถ้าน้อยกว่านั้นคือเสียงรบกวนล้วนๆ
และต่อให้ผ่าน forward test แล้ว ขั้นสุดท้ายยังต้องรันบนบัญชี Demo จริง อีกอย่างน้อย 2–4 สัปดาห์ เพราะมีบั๊กทั้งกลุ่มที่โผล่เฉพาะตอนต่อกับเซิร์ฟเวอร์จริงเท่านั้น (รายละเอียดอยู่หัวข้อสุดท้าย)
Stop Loss ควรอยู่ตรงไหน — วัดจากเทรดจริง ไม่ใช่กฎสำเร็จรูป
หัวข้อนี้คือส่วนที่ผมอยากให้อ่านที่สุด เพราะคำถาม "ตั้ง SL เท่าไหร่ดี" เป็นคำถามที่ถูกตอบด้วยกฎมั่วๆ มากที่สุดในวงการ — "2% ของพอร์ต" "ใต้แนวรับ" "1.5 เท่า ATR" ซึ่งไม่มีอันไหนอิงกับระบบของคุณเลย
มีวิธีที่ดีกว่านั้น และมันวัดจากข้อมูลที่คุณมีอยู่แล้ว
MAE กับ MFE คืออะไร
สองค่านี้วัดว่าระหว่างที่ไม้เปิดอยู่ ราคาเคยวิ่งไปไกลแค่ไหนทั้งสองทาง — ไม่ใช่แค่ตอนปิด
- MAE (Maximum Adverse Excursion) = ไม้นี้เคยติดลบลึกสุดเท่าไหร่ก่อนจะปิด
- MFE (Maximum Favorable Excursion) = ไม้นี้เคยกำไรสูงสุดเท่าไหร่ก่อนจะปิด
ไม้ที่ปิดกำไร 30 จุด อาจเคยติดลบไป 80 จุดก่อนหน้านั้น — ตัวเลขกำไรสุทธิไม่เคยบอกคุณเรื่องนี้ แต่ MAE บอก
วิธีใช้หาจุด SL และ TP
หลักการมาจากบทความของ Silvina Duarte บน MQL5 (ต้นฉบับ) ที่ทำเครื่องมืออ่านประวัติเทรดแล้วไล่ดูราคาระดับนาทีระหว่างจุดเข้ากับจุดออกของทุกไม้ เพื่อวัด MAE/MFE ออกมาเป็นสถิติ
วิธีอ่านผลคือ แยกไม้ที่ชนะออกจากไม้ที่แพ้ก่อน แล้วดูเฉพาะไม้ที่ชนะ:
สำหรับ Stop Loss — ดูการกระจายของ MAE ในกลุ่มไม้ที่ชนะ แล้ว ตั้ง SL ให้พ้นค่า p90 (ค่าที่ครอบคลุมไม้ชนะ 90%)
ตรรกะคือ: ไม้พวกนี้สุดท้ายชนะ แต่ระหว่างทางเคยติดลบไปเท่านี้ ถ้าคุณตั้ง SL แคบกว่านั้น คุณจะโดนเขี่ยออกจากไม้ที่กำลังจะกำไร ซึ่งเป็นอาการที่คนบ่นกันว่า "โดนกินก่อนกราฟดีด" — ส่วนใหญ่ไม่ใช่โบรกแกล้ง แต่เป็นเพราะ SL แคบกว่าธรรมชาติของระบบตัวเอง
สำหรับ Take Profit — ดู ค่ากลาง (median) ของ MFE ในกลุ่มไม้ที่ชนะ แล้วตั้ง TP ใกล้ๆ ค่านั้น
ตรรกะคือ: ครึ่งหนึ่งของไม้ที่ชนะเคยวิ่งไปถึงระยะนี้ ถ้าตั้งไกลกว่านั้นมาก คุณกำลังรอสิ่งที่เกิดขึ้นน้อยกว่าครึ่งหนึ่งของเวลา
ค่าที่สามที่น่าดู — Efficiency = กำไรที่เก็บได้จริง ÷ MFE คิดเป็นเปอร์เซ็นต์ บอกว่าคุณเก็บกำไรได้กี่ % จากที่ราคาเคยวิ่งให้ ถ้าค่านี้ต่ำมาก แปลว่าปัญหาของคุณไม่ใช่จุดเข้า แต่คือจุดออก
ตัวเลขตัวอย่างของจริง
ในบทความต้นฉบับ Duarte ยกผลจากการวิเคราะห์ XAUUSD ย้อนหลัง 180 วัน จำนวน 1,382 ไม้ ได้ตัวเลขแบบนี้:
| ค่า | ผลที่วัดได้ |
|---|---|
| MAE ค่ากลางของไม้ที่ชนะ | 218 จุด |
| MAE p90 ของไม้ที่ชนะ | 1,090 จุด |
| MFE ค่ากลางของไม้ที่ชนะ | 442 จุด |
| MAE ค่ากลางของไม้ที่แพ้ | 419 จุด |
| Efficiency ค่ากลาง | 33% |
น่าสนใจตรงที่ ช่องว่างระหว่าง 218 กับ 1,090 กว้างมาก — ไม้ที่ชนะครึ่งหนึ่งแทบไม่ติดลบเลย แต่มีอีกกลุ่มที่ติดลบหนักก่อนกลับมาชนะ ถ้าดูแค่ค่าเฉลี่ยจะไม่มีทางเห็นเรื่องนี้
และ efficiency 33% หมายความว่าโดยเฉลี่ยเก็บกำไรได้เพียงหนึ่งในสามของที่ราคาวิ่งให้
ย้ำ: ตัวเลขชุดนี้เป็นของ XAUUSD ในระบบและช่วงเวลาของผู้เขียนบทความนั้น ห้ามเอาไปใช้กับระบบคุณตรงๆ ประเด็นคือวิธี ไม่ใช่ตัวเลข คุณต้องวัดจากประวัติเทรดของคุณเอง
ทำเองยังไง
สองทาง:
- Export ประวัติเทรดเป็น CSV แล้วคำนวณเองด้วย Excel หรือ Python — ต้องดึงราคา M1 ในช่วงที่แต่ละไม้เปิดอยู่มาหาค่าสูงสุด/ต่ำสุด
- ใช้เครื่องมือ MQL5 ที่อ่าน history แล้ววัดให้อัตโนมัติ แบบที่บทความต้นฉบับทำไว้
ข้อควรระวังที่ผู้เขียนต้นฉบับระบุไว้เอง: วิธีนี้อ่านจากแท่ง M1 ไม่ใช่ tick จึงหยาบกว่าความจริงเล็กน้อย, ต้องมีจำนวนไม้มากพอค่า percentile ถึงจะนิ่ง, และการกระจายที่วัดได้สะท้อนสภาพความผันผวนของช่วงเวลานั้นเท่านั้น ถ้าตลาดเปลี่ยนโหมด ตัวเลขก็เปลี่ยน
เช็คลิสต์ก่อนเชื่อ backtest ของตัวเอง
ติ๊กให้ครบก่อนเอาเงินจริงลง:
ข้อมูล
- ใช้โหมด Every tick based on real ticks
- ข้อมูลย้อนหลังครบทั้งช่วง ไม่มีช่วงขาด
- สัญลักษณ์ตรงกับที่จะใช้จริง (ระวังนามสกุลต่อท้าย)
- spread สะท้อนความจริง ไม่ใช่ค่าคงที่แคบๆ
- คิด commission และ swap แล้ว
กลุ่มตัวอย่าง
- มีเทรดอย่างน้อย 100 ไม้ (300–700 เหมาะที่สุด)
- ทดสอบแยกเป็นช่วงแล้วผลสม่ำเสมอ ไม่ใช่กำไรก้อนเดียวปีเดียว
- ใช้ล็อตคงที่จากทุนตั้งต้นตอนวัดผล
การตีความ
- ดู Max DD และ Profit Factor ก่อนดูกำไรสุทธิ
- รู้ว่าระบบขาดทุนติดกันได้สูงสุดกี่ไม้ และรับได้
- ถ้า optimize แล้ว — ดูการกระจายของผล ไม่ใช่แค่อันดับหนึ่ง
- เลือกค่ากลางของย่านที่เวิร์ก ไม่ใช่ค่าที่กำไรสูงสุด
การยืนยัน
- ผ่าน forward test บนข้อมูลที่ไม่เคยใช้จูน (50–100 ไม้ขึ้นไป)
- SL/TP อิงจาก MAE/MFE ของเทรดจริง ไม่ใช่กฎสำเร็จรูป
- รันบน Demo จริงต่ออีก 2–4 สัปดาห์
ถ้ามีข้อไหนติ๊กไม่ได้ ยังไม่ควรใช้เงินจริง
สิ่งที่ backtest บอกไม่ได้เลย ต่อให้ทำถูกทุกข้อ
ต่อให้ผ่านเช็คลิสต์ครบ ยังมีบั๊กทั้งกลุ่มที่ ไม่มีทางโผล่ใน backtest เพราะเครื่องทดสอบไม่มีเงื่อนไขเหล่านี้อยู่เลย
ออเดอร์ค้างหลังรีสตาร์ท — ตอน backtest โปรแกรมรันรวดเดียวไม่มีสะดุด แต่ในโลกจริง VPS รีสตาร์ทตอนตีสาม MT5 เปิดใหม่ แล้ว EA ต้องจำให้ได้ว่าไม้ไหนเป็นของมัน ไม้ไหนไม่ใช่ ถ้าเขียนไม่รัดกุมมันจะเปิดซ้ำหรือทิ้งไม้เก่าไว้ไม่ดูแล
Requote และ slippage จริง — backtest ให้ราคาที่ขอเสมอ เซิร์ฟเวอร์จริงไม่ใช่ ระบบที่ SL แคบจะเจอปัญหานี้หนักที่สุด
Partial fill — สั่ง 1 lot ได้จริง 0.6 lot แล้ว EA คิดว่าได้ครบ ตรรกะที่ตามมาทั้งหมดจะเพี้ยน
สเปกของโบรกแต่ละเจ้า — ระยะ stop level ขั้นต่ำ, filling policy ที่รองรับ, freeze level, ขนาดล็อตขั้นต่ำและ step ค่าพวกนี้ต่างกันทุกโบรก และ Strategy Tester ทดสอบกับสเปกของโบรกที่คุณต่ออยู่เท่านั้น พอย้ายโบรก EA ตัวเดิมอาจส่งคำสั่งไม่ผ่านเลย
Lookahead bias ในโค้ด — ถ้าโค้ดเผลออ่านค่าของแท่งที่ยังไม่ปิด ผล backtest จะสวยเกินจริงแบบมีเหตุผล และมันจะไม่มีอะไรเตือนคุณ
นี่คือกลุ่มบั๊กเดียวกับที่ผมเขียนถึงในบทความ เขียน EA ด้วย AI ได้จริงไหม — เป็นกลุ่มที่ "compile ผ่าน backtest สวย" แล้วมาพังตอนใช้เงินจริง และเป็นเหตุผลจริงๆ ที่การมีคนตรวจโค้ดมีค่า ไม่ใช่เพราะเขียนเองไม่ได้
โดยเฉพาะระบบประเภท Grid และ Martingale ที่ backtest ออกมาสวยหลอกตาเป็นพิเศษ เพราะช่วงข้อมูลที่ตลาดออกข้างจะให้กราฟเรียบสวยมาก จนกว่าจะเจอเทรนด์ยาวที่ล้างพอร์ตในครั้งเดียว
คำถามที่พบบ่อยเรื่อง Backtest EA
Q1: Backtest EA คืออะไร?
Backtest คือการนำ EA ไปทดสอบกับข้อมูลราคาย้อนหลัง เพื่อดูว่ากฎการเทรดที่เขียนไว้ให้ผลแบบไหนในอดีต ทำได้ผ่าน Strategy Tester ที่มีมาในตัว MetaTrader ประโยชน์หลักคือใช้คัดระบบที่ไม่เวิร์กทิ้งก่อนเสียเงินจริง ไม่ใช่ใช้ทำนายว่าจะกำไรในอนาคต
Q2: ควร backtest EA ย้อนหลังกี่ปี?
ควรดูที่จำนวนไม้มากกว่าจำนวนปี เกณฑ์ที่ใช้กันคือต่ำกว่า 100 ไม้ยังสรุปอะไรไม่ได้ 100–300 ไม้พอรับได้ และ 300–700 ไม้คือช่วงที่เหมาะที่สุด ถ้าเกิน 1,000 ไม้ผลจะถูกเฉลี่ยข้ามสภาพตลาดหลายแบบจนกลืนความจริงไป ทางที่ดีกว่าคือทดสอบแยกเป็นช่วงๆ แล้วดูว่าผลสม่ำเสมอหรือไม่
Q3: tick model แบบไหนถึงจะเชื่อถือได้?
ควรใช้ Every tick based on real ticks เป็นค่าเริ่มต้นเสมอ เพราะใช้ tick จริงที่โบรกเก็บไว้และใช้ spread ตามประวัติจริง โหมดที่หยาบกว่าอย่าง 1 minute OHLC หรือ Open prices only มักให้ผลดีเกินจริงเพราะมองไม่เห็นการแกว่งภายในแท่งที่จะไปชน Stop Loss ยิ่ง EA อ่อนไหวกับราคาภายในแท่ง เช่น scalping หรือ grid ยิ่งต้องใช้ real ticks เท่านั้น
Q4: backtest ผ่านแล้วเอาไปเทรดเงินจริงได้เลยไหม?
ไม่ควร ต้องผ่าน forward test บนข้อมูลที่ไม่เคยใช้ตอนจูนก่อน แล้วรันบนบัญชี Demo จริงต่ออีกอย่างน้อย 2–4 สัปดาห์ เพราะมีบั๊กทั้งกลุ่มที่ backtest ตรวจไม่เจอเลย เช่น การจำสถานะออเดอร์หลัง VPS รีสตาร์ท การรับมือ requote การเจอ partial fill และความต่างของสเปกแต่ละโบรก
Q5: ตั้ง Stop Loss เท่าไหร่ดี มีวิธีคำนวณไหม?
มีวิธีที่อิงข้อมูลจริงแทนการใช้กฎสำเร็จรูป คือวัดค่า MAE (ระยะที่ไม้เคยติดลบลึกสุดก่อนปิด) ของเฉพาะไม้ที่ปิดกำไร แล้วตั้ง Stop Loss ให้พ้นค่า p90 ของกลุ่มนั้น เหตุผลคือไม้เหล่านั้นสุดท้ายชนะแต่ระหว่างทางเคยติดลบเท่านี้ ถ้าตั้ง SL แคบกว่านั้นจะโดนเขี่ยออกจากไม้ที่กำลังจะกำไร ส่วน Take Profit ให้ดูค่ากลางของ MFE ในกลุ่มไม้ที่ชนะ
Q6: ทำไม backtest สวยแต่รันจริงขาดทุน?
สาเหตุที่พบบ่อยเรียงตามความถี่คือ ใช้ tick model หยาบเกินไป, ตั้ง spread แคบกว่าความจริงหรือลืมคิด commission, overfit จากการ optimize จนได้ค่าที่พอดีกับอดีตเท่านั้น, กลุ่มตัวอย่างน้อยเกินไป, มี lookahead bias ในโค้ด และบั๊กที่โผล่เฉพาะตอนต่อเซิร์ฟเวอร์จริงอย่างการจำออเดอร์หลังรีสตาร์ท
Q7: backtest ใน MT4 กับ MT5 ต่างกันยังไง?
MT5 ทดสอบได้เร็วกว่ามากเพราะรองรับการประมวลผลหลายคอร์และการทดสอบหลายสัญลักษณ์พร้อมกัน อีกทั้งรองรับโหมด tick จริงจากโบรกซึ่ง MT4 ไม่มี MT4 ใช้ค่า modelling quality เป็นเปอร์เซ็นต์บอกคุณภาพการจำลองแทน โดยรวมถ้าเลือกได้ควรทดสอบบน MT5 รายละเอียดการเลือกแพลตฟอร์มอ่านได้ที่บทความ MT4 vs MT5 เลือกตัวไหนดี
สรุป
- Backtest ใช้คัดทิ้ง ไม่ใช่ใช้ทำนาย — ผลแย่แปลว่าตัดได้เลย ผลดีแปลว่าแค่ยังไม่ถูกตัด
- คุณภาพข้อมูลตัดสินทุกอย่าง — real ticks, spread จริง, commission และ swap ถ้าตรงนี้ผิด ที่เหลือไม่มีความหมาย
- นับไม้ ไม่ใช่นับปี — 300–700 ไม้คือย่านที่เหมาะ และต้องผลสม่ำเสมอข้ามช่วงเวลา
- ล็อตคงที่ตอนวัดผล — ไม่งั้นดอกเบี้ยทบต้นจะบังคุณภาพจริงของระบบ
- Optimization ดูการกระจาย ไม่ใช่อันดับหนึ่ง — ถ้ามีไม่กี่ชุดที่กำไร นั่นคือสัญญาณอันตราย
- SL/TP วัดจาก MAE/MFE ของเทรดจริง ไม่ใช่จากกฎที่ลอกมาจากที่อื่น
- มีบั๊กทั้งกลุ่มที่ backtest ไม่มีทางเจอ — ต้องผ่าน Demo จริงเสมอ
ข้อที่ผมอยากให้จำที่สุดคือข้อ 5 กับข้อ 7 เพราะสองข้อนี้คือจุดที่เงินหายไปมากที่สุดจากประสบการณ์ที่เจอมา
backtest แล้วผลไม่ตรงกับที่คิด? ส่งมาให้ดูได้
ถ้าคุณ backtest แล้วเจอผลแปลกๆ ไม่แน่ใจว่าเป็นที่การตั้งค่า ที่ข้อมูล หรือที่โค้ด — ส่งไฟล์ EA หรือรายงานผลมาให้ผมดูได้เลย ประเมินราคาฟรี ตอบกลับใน 1 วัน
รับทั้งงานเขียน EA ใหม่, แก้ไข EA เดิม, และเพิ่มโมดูลบริหารความเสี่ยงให้ EA ที่มีอยู่แล้ว — เริ่มต้น 500 บาท รับใบเสนอราคาภายใน 24 ชม.
📱 Line: @lafanoom 📞 โทร: 085-937-7580 💬 Facebook: facebook.com/thaimql 📧 Email: Lafanoom@gmail.com
🕒 เวลาทำการ: ทุกวัน (10:00 - 20:00 น.)
แหล่งอ้างอิง — บทความนี้อ้างอิงงานเขียนบน MQL5.com สามชิ้น ขอบคุณผู้เขียนทั้งสามท่าน:
- Silvina Duarte — Where should your stop-loss really sit? An MAE/MFE excursion analyzer in MQL5 (30 ก.ค. 2569) — แนวคิด MAE/MFE, เกณฑ์ p90 และตัวเลขตัวอย่าง XAUUSD
- Sergey Ermolov — How to Research a Trading Idea: A Range Breakout Strategy Case Study (31 ก.ค. 2569) — เกณฑ์จำนวนเทรด, การใช้ล็อตคงที่, การอ่านการกระจายผล optimization
- Ushana Kevin Iorkumbul — CSV Data Analysis (Part 7): Statistical Robustness Testing (30 ก.ค. 2569) — แนวคิดการตรวจความทนทานทางสถิติ
อ่านต่อ: รับเขียน EA ทุกสิ่งที่ต้องรู้ · เขียน EA ด้วย AI ได้จริงไหม · ราคาเขียน EA เท่าไหร่ · Grid Trading คืออะไร
บทความนี้เขียนจากประสบการณ์รับเขียนและทดสอบ EA มา 15 ปี ตัวเลขตัวอย่างทั้งหมดเป็นของระบบและช่วงเวลาในบทความต้นทาง ไม่ใช่ผลของระบบใดระบบหนึ่งที่แนะนำให้ใช้ ทดสอบด้วยข้อมูลของคุณเองและรันบน Demo ก่อนใช้เงินจริงเสมอครับ