การ backtest EA ใน MT5 ทำผ่าน Strategy Tester ซึ่งติดมากับโปรแกรมฟรี ไม่ต้องจ่ายอะไรเพิ่ม ขั้นตอนหลักมี 5 ขั้น: เตรียมข้อมูลราคา → ตั้งค่าให้เหมือนบัญชีจริง → รันเทส → อ่านรายงาน → ตรวจสอบว่าผลไม่ได้หลอกตัวเอง ฟังดูง่าย แต่ 90% ของคนที่ “backtest แล้วกำไร รันจริงแล้วเจ๊ง” พลาดตั้งแต่ขั้นแรกกับขั้นสุดท้าย บทความนี้เราจะพาทำครบทุกขั้นแบบที่คนเทสระบบจริงเขาทำกัน — ไม่ใช่แบบที่คนขาย EA อยากให้คุณทำ
เราเทสระบบมาหลายสิบตัวบนกระดานเทสของเรา และเห็นศพมามากพอจะบอกได้ว่า backtest ที่ทำผิดวิธีอันตรายกว่าไม่ทำเลย เพราะมันให้ความมั่นใจปลอม ๆ ก่อนคุณเอาเงินจริงไปวาง
Strategy Tester ใน MT5 คืออะไร เปิดยังไง
Strategy Tester คือเครื่องมือทดสอบระบบเทรดย้อนหลังที่ฝังมาใน MetaTrader 5 ทุกเครื่อง เปิดได้ 2 ทาง: เมนู View > Strategy Tester หรือกดคีย์ลัด Ctrl+R แล้วหน้าต่างเทสเตอร์จะเด้งขึ้นมาด้านล่างของโปรแกรม ใช้ฟรี ไม่มีเวอร์ชันพรีเมียม ไม่ต้องสมัครอะไรเพิ่ม
หน้าแท็บ Settings คือศูนย์บัญชาการ มีช่องหลัก ๆ ที่ต้องรู้จักดังนี้
- Expert Advisor — เลือกไฟล์ EA ที่จะเทส (ไฟล์ต้องอยู่ในโฟลเดอร์ Experts ของ MT5 ก่อน)
- Symbol — คู่เงินหรือสินค้าที่จะเทส เช่น XAUUSD, EURUSD
- Timeframe — ไทม์เฟรมของชาร์ตที่ EA จะมองเห็นตอนรัน
- Custom period — ช่วงวันที่เริ่มและจบของการเทส เลือกเองได้อิสระ
- Forward — แบ่งช่วงท้ายของข้อมูลไว้เป็น out-of-sample สำหรับตรวจสอบผล optimize (เดี๋ยวเราจะใช้ช่องนี้หนัก ๆ ในหัวข้อ optimization)
- Delays — จำลองความหน่วงของการส่งคำสั่ง ตั้งแต่ zero latency ไปจนถึงหน่วงหลักร้อย millisecond
- Modeling — โหมดจำลองราคา มี 4 แบบหลักที่เราจะเทียบกันละเอียดในหัวข้อถัดไป
- Deposit / Leverage — ทุนเริ่มต้นและเลเวอเรจของบัญชีจำลอง
- Optimization — เปิด/ปิดการไล่หาค่าพารามิเตอร์ พร้อมเลือกอัลกอริทึม
ส่วนแท็บ Inputs คือที่ตั้งค่าพารามิเตอร์ของ EA ตัวนั้น ๆ ถ้าจะ optimize ก็ติ๊กเลือกตัวแปรแล้วกำหนดช่วง Start / Step / Stop ตรงนี้ นอกจากนี้ยังมีปุ่มเปิด Visual mode ให้ดู EA เข้าออกไม้บนชาร์ตแบบ replay ได้ เหมาะกับการเช็คว่า logic ทำงานตามที่คิดจริงไหม ก่อนจะไปเชื่อตัวเลขสรุป
จุดที่มือใหม่มักงง: Strategy Tester ไม่ได้เทสบน “ชาร์ตที่คุณเปิดอยู่” แต่เทสบนข้อมูล history ที่ดาวน์โหลดมาจากเซิร์ฟเวอร์โบรกเกอร์ ซึ่งนำเราไปสู่ขั้นตอนที่คนข้ามบ่อยที่สุดและเจ็บหนักที่สุด
ขั้นแรก: เตรียมข้อมูลราคาให้ดีก่อน (สำคัญกว่าที่คิด)
คำตอบสั้น: ต้องเทสบนข้อมูลของโบรกเกอร์ที่คุณจะรันจริงเท่านั้น และควรใช้โหมด real ticks ที่ดึง tick จริงจากเซิร์ฟเวอร์โบรกนั้น เพราะข้อมูลราคาของแต่ละโบรกไม่เหมือนกัน — spread ต่างกัน ช่วงเวลาเปิดปิดตลาดต่างกัน ราคา bid/ask ต่างกัน แม้แต่ความ “หยาบ-ละเอียด” ของการเคลื่อนไหวก็ต่างกัน ฟีดที่ผิดตัวเดียวทำให้ผลเทสทั้งหมดเป็นนิยาย
วิธีปฏิบัติ: ล็อกอินบัญชี (เดโม่ก็ได้) ของโบรกเป้าหมายใน MT5 เลือก Symbol และช่วงเวลาที่จะเทส แล้วปล่อยให้ Strategy Tester ดาวน์โหลด history เอง ครั้งแรกกับโหมด real ticks อาจกินเวลานานและกินดิสก์หลาย GB — อดทน มันคุ้ม จากนั้นทุกครั้งที่รันเสร็จ ให้เปิดรายงานแล้วดูค่า History Quality ซึ่งบอกเป็นเปอร์เซ็นต์ว่าข้อมูลสมบูรณ์แค่ไหน เมื่อใช้ real ticks ควรได้ ใกล้ 99% ถ้าตัวเลขต่ำกว่านั้นมาก แปลว่ามีช่วงที่ MT5 ต้องเดาราคาเอง และผลเทสช่วงนั้นเชื่อถือไม่ได้
ทำไมเราถึงย้ำเรื่องนี้แรงขนาดนี้? เพราะเราเคยโดนเอง ระบบ breakout ทองของเราตัวหนึ่งกำไรงามมากใน backtest จนเกือบได้ขึ้นแท่นระบบเรือธง แต่พอไปไล่ดูข้อมูลดิบถึงได้พบว่าฟีดราคาที่ใช้เทสถูก smooth จนความผันผวนหายไปเกือบครึ่ง — ATR บน M5 ในฟีดเทสเหลือ ~3.1 ขณะที่โบรกจริงอยู่ที่ ~6.1 พูดง่าย ๆ คือระบบถูกเทสในโลกที่ราคานิ่งกว่าความจริงเท่าตัว breakout เลยดูแม่นเกินเหตุ
พอเรารันซ้ำบนข้อมูล tick จริงของโบรก 3 เจ้า เจ้าละราว 5,000 setups ผลออกมา Profit Factor 0.79 / 0.88 / 0.86 — เจ๊งเรียบทุกเจ้า กำไรทั้งก้อนใน backtest แรกคือภาพลวงจากฟีดผิดล้วน ๆ เราชำแหละเคสนี้ละเอียดไว้ในบทเรียนระบบ breakout ทองกับฟีดเน่า ถ้าจะอ่านต่อจากบทความนี้แค่ลิงก์เดียว อ่านอันนั้น
บทเรียนที่อยากให้จำ: คุณภาพข้อมูลมาก่อนทุกอย่าง โหมดเทสเทพแค่ไหน สถิติสวยแค่ไหน ถ้า input เป็นขยะ output ก็เป็นขยะที่แต่งหน้ามาดีเท่านั้นเอง
Modeling mode 4 แบบ เลือกยังไง
คำตอบสั้น: EA ที่ไวต่อการเคลื่อนไหวระหว่างแท่ง (scalper, SL/TP แคบ, pending order ถี่) ต้องใช้ Every tick based on real ticks เท่านั้น ส่วน EA ที่ตัดสินใจเฉพาะตอนเปิดแท่งใหม่ ใช้ Open prices only เพื่อความเร็วได้ในรอบสำรวจ แล้วค่อยยืนยันรอบสุดท้ายด้วย real ticks
MT5 มีโหมดจำลองราคา 4 แบบ ต่างกันที่ “ความละเอียดของราคาที่ EA จะมองเห็น” เทียบกันตามนี้
| Modeling mode | ความแม่น | ความเร็ว | เหมาะกับ EA แบบไหน | ข้อควรระวัง |
|---|---|---|---|---|
| Every tick based on real ticks | สูงสุด — ใช้ tick จริงจากเซิร์ฟเวอร์โบรก พร้อม bid/ask และ spread จริง ณ ขณะนั้น | ช้าสุด กินดิสก์เยอะสุด | scalper, EA ที่ SL/TP แคบ, ทุก EA ในรอบเทสยืนยันก่อนใช้เงินจริง | ต้องรอดาวน์โหลด tick นาน และมีข้อมูลย้อนหลังเท่าที่โบรกเก็บไว้เท่านั้น เช็ค History Quality ทุกครั้ง |
| Every tick | สูง แต่เป็น tick สังเคราะห์ ที่ MT5 สร้างจากแท่ง M1 ด้วยสูตรจำลอง | ช้า | EA ทั่วไปเมื่อ real ticks ไม่มีหรือย้อนหลังไม่พอ | เส้นทางราคาในแท่งเป็นการเดา ไม่ใช่เหตุการณ์จริง ผล scalper บนโหมดนี้เชื่อไม่ได้ |
| 1 minute OHLC | กลาง — เห็นแค่ราคา Open/High/Low/Close ของทุกแท่ง M1 | เร็ว | EA ที่ logic หยาบกว่าระดับนาที และไม่อ่อนไหวกับลำดับราคาในแท่ง | ลำดับการชน High/Low ในแท่งเดียวกันเป็นการสมมติ อาจตัดสิน SL/TP ผิดจากความจริง |
| Open prices only | ต่ำสุด — EA เห็นเฉพาะราคาเปิดแท่งของไทม์เฟรมที่เทส | เร็วสุด | EA ที่ตัดสินใจเฉพาะตอนเปิดแท่งใหม่ 100% (เช็คโค้ดให้แน่ก่อน) และรอบ optimize หยาบ ๆ | ถ้า EA มี logic ที่ทำงานระหว่างแท่งแม้นิดเดียว (trailing stop, เช็คราคาทุก tick) ผลจะเพี้ยนทันที |
หลักการเลือกของเรา: ใช้ Open prices only หรือ 1 minute OHLC เป็น “รอบร่าง” ตอนสำรวจไอเดียหรือไล่ optimize เพราะเร็วกว่าหลายเท่า แต่ ห้ามตัดสินใจใช้เงินจริงจากโหมดร่างเด็ดขาด — รอบสุดท้ายก่อนขึ้นเงินจริงต้องเป็น real ticks บนข้อมูลโบรกที่จะรันเสมอ
อีกเรื่องที่คนพลาด: Every tick (แบบสังเคราะห์) ให้ตัวเลขที่ดู “ละเอียดน่าเชื่อ” แต่มันคือการที่ MT5 เดา ว่าราคาวิ่งในแท่ง M1 ยังไง สำหรับระบบที่กำไรต่อไม้แค่ไม่กี่ pip การเดาผิดไม่กี่จุดต่อไม้ก็พลิกระบบกำไรเป็นขาดทุนได้สบาย ๆ นี่ไม่ใช่ทฤษฎี — ระบบต่ำกว่ากรอบ Daily บนกระดานเทสของเราตายด้วยต้นทุนจุกจิกพวกนี้เกือบทั้งหมด
ตั้งค่าให้เหมือนบัญชีจริงที่สุด
คำตอบสั้น: ทุกช่องใน Settings ต้องตรงกับบัญชีที่จะรันจริง — Deposit เท่าทุนจริง Leverage เท่าบัญชีจริง spread ตามจริง (แล้วเทสซ้ำด้วย spread แย่กว่าค่าเฉลี่ยอีกรอบ) และอย่าลืม commission กับ swap เพราะ backtest ที่ลืมต้นทุนคือ backtest ของระบบในจินตนาการ
Deposit ใส่เท่าทุนที่จะใช้จริง ไม่ใช่ $100,000 สวย ๆ ที่เป็นค่า default เพราะขนาดทุนกระทบการคำนวณ lot, margin และจุดที่พอร์ตจะโดน stop out ระบบที่รอดบนทุนแสนเหรียญอาจตายบนทุนพันเหรียญเพราะทน drawdown ช่วงเดียวกันไม่ไหว Leverage ก็เช่นกัน — ตั้งให้ตรงบัญชีจริง เพราะมันกำหนดว่า margin เต็มเมื่อไหร่
Spread มีให้เลือกระหว่าง Current กับ Fixed เทียบกันตรง ๆ แบบนี้
| การตั้ง spread | มันคืออะไร | ใช้เมื่อไหร่ | กับดัก |
|---|---|---|---|
| Current / จาก tick จริง | โหมด real ticks ใช้ spread จริงที่บันทึกมากับ tick แต่ละตัว ส่วนโหมดอื่นใช้ค่าปัจจุบัน | รอบเทสหลักทุกครั้ง — สมจริงสุดเท่าที่ข้อมูลมี | spread “ปัจจุบัน” ตอนคุณกดรันวันเสาร์เงียบ ๆ อาจแคบกว่าตอนข่าว Non-farm มาก |
| Fixed (กำหนดเป็น points เอง) | บังคับ spread คงที่ตลอดการเทส | stress test — ตั้งค่าแย่กว่าค่าเฉลี่ยของโบรก แล้วดูว่าระบบยังรอดไหม | ถ้าตั้งค่าสวยกว่าความจริง ก็คือโกหกตัวเองแบบมีพิธีรีตอง |
แนวปฏิบัติของเรา: รันรอบหลักด้วย spread จริง แล้วรันซ้ำอีกรอบด้วย fixed spread ที่แย่กว่าค่าเฉลี่ย ถ้ากำไรหายเกลี้ยงแค่เพราะ spread ขยับขึ้นไม่กี่จุด แปลว่า edge ของระบบบางเท่ากระดาษทิชชู่ รู้ตอนนี้ดีกว่ารู้ตอนเงินจริงหาย
Swap — Strategy Tester คิดค่า swap ให้อัตโนมัติจากข้อมูล symbol ของโบรก อันนี้สบาย แต่ Commission ต้องระวัง: ขึ้นกับโบรกและรุ่นของ MT5 บางโบรกฝัง commission มากับ symbol ให้เทสเตอร์คิดเอง บางกรณีต้องตั้งเองในเทสเตอร์ของ MT5 รุ่นใหม่ ถ้าบัญชีจริงของคุณเป็นแบบ raw spread + commission แล้ว backtest ไม่ได้คิด commission เลย ตัวเลขกำไรที่เห็นคือนิยายทั้งเรื่อง โดยเฉพาะระบบเทรดถี่ที่ค่า commission สะสมโหดกว่า spread เสียอีก
สุดท้ายคือ Delays — ช่องจำลอง latency และผลของ slippage จากความหน่วง ค่า default คือ zero latency ซึ่งเป็นโลกอุดมคติที่ไม่มีอยู่จริง ตั้งเป็นหลักสิบถึงหลักร้อย millisecond ตามระยะจริงระหว่าง VPS/คอมคุณกับเซิร์ฟเวอร์โบรก แล้วดูว่าผลเปลี่ยนแค่ไหน ระบบที่ผลพังเพราะหน่วงไป 100ms คือระบบที่พึ่งจังหวะเป๊ะระดับที่ retail trader ไม่มีทางได้ — บทเรียน friction ที่ฆ่าระบบ sub-daily บนกระดานเราเกือบยกกระดาน ก็เรื่องเดียวกันนี้แหละ
รัน backtest แล้วอ่านรายงานยังไงให้เป็น
คำตอบสั้น: กด Start แล้ว MT5 จะสรุปผลในแท็บรายงานพร้อมกราฟ สิ่งที่ต้องดูไม่ใช่แค่ “กำไรเท่าไหร่” แต่คือชุด metrics ที่บอกว่ากำไรนั้น ได้มายังไง และ น่าเชื่อแค่ไหน — ตารางข้างล่างคือวิธีอ่านแบบจับผิด
| Metric | ตัวนี้บอกอะไร | ค่าแบบไหนน่าพอใจ | ค่าแบบไหนคือธงแดง |
|---|---|---|---|
| Profit Factor (PF) | กำไรรวมหารขาดทุนรวม — เกิน 1 คือได้มากกว่าเสีย | โซน ~1.3 ขึ้นไปบนจำนวนไม้เยอะ ๆ เริ่มน่าคุย | PF สูงลิ่ว + ไม้น้อยมาก = อาการ overfit คลาสสิก และ PF ~1.0 คือเท่าโยนเหรียญ |
| Expected Payoff | กำไรเฉลี่ยต่อไม้ | สูงพอจะกิน spread+commission+slippage แล้วยังเหลือ | บวกบาง ๆ ระดับไม่กี่จุด — ต้นทุนจริงนิดเดียวก็กลืนหมด |
| Max Drawdown (balance vs equity) | Balance DD วัดตอนปิดไม้แล้ว ส่วน Equity DD รวมขาดทุนลอยของไม้ที่ยังเปิดอยู่ | สองค่าใกล้กัน และลึกในระดับที่ใจกับ margin คุณรับได้จริง | Equity DD ลึกกว่า Balance DD มาก = ระบบถือไม้ลอยขาดทุน (เข้าทาง martingale/grid ที่ระเบิดวันใดวันหนึ่ง) |
| Recovery Factor | กำไรสุทธิเทียบกับ Max DD — คุ้มไหมกับความเจ็บ | ยิ่งสูงยิ่งดีเมื่อเทสช่วงยาว | ต่ำ = ได้กำไรนิดเดียวแลกกับการเสียวสันหลังหลายรอบ |
| Sharpe Ratio | ผลตอบแทนเทียบความผันผวน — ความนิ่งของเส้นทุน | บวกและสม่ำเสมอข้ามช่วงเวลา | สวยเฉพาะบางช่วง แปลว่าพึ่ง regime เดียว |
| Total Trades | ขนาดตัวอย่าง — ฐานของความน่าเชื่อทางสถิติ | หลักหลายร้อยขึ้นไป และไม้ไม่ทับซ้อนกันเอง | หลักสิบไม้แล้วสรุปว่าระบบเทพ = ดูดวงจากกากกาแฟ |
| Win rate | สัดส่วนไม้กำไร | ค่าไหนก็ได้ที่สอดคล้องกับ RR ของระบบ | Win rate 90%+ มักมาคู่ SL กว้าง TP แคบ — ชนะบ่อยแต่ตายทีเดียวจบ |
เรื่อง Total Trades ขอขยายอีกนิดเพราะคนโดนหลอกเยอะ: จำนวนไม้เยอะไม่ได้แปลว่าหลักฐานเยอะเสมอไป ถ้าไม้เปิดทับซ้อนกันในช่วงเวลาเดียวกัน มันคือการเดิมพันกับเหตุการณ์เดียวกันซ้ำ ๆ เราเคยเจอ backtest ที่มี 9,113 ไม้ ฟังดูหนักแน่น แต่พอคิดความทับซ้อนแล้ว standard error พองขึ้น ~4.8 เท่า เหลือหลักฐานอิสระจริง ๆ หรือ n_eff แค่ ~400 ไม้ — รายละเอียดอยู่ในบทความ effective sample size อ่านแล้วจะไม่มองช่อง Total Trades แบบเดิมอีก
นอกจากตารางตัวเลข ให้ดูกราฟด้วย 2 อย่าง อย่างแรกคือ equity curve ในแท็บกราฟ — เส้นที่ดีคือชันสม่ำเสมอ ไม่ใช่เส้นแบนยาว ๆ แล้วพุ่งเพราะช่วงเดียว หรือเส้นสวยที่มาจากการถัวไม้ขาดทุนจนรอด อย่างที่สองคือกราฟ MFE/MAE ในรายงาน (Maximum Favorable/Adverse Excursion — ไม้แต่ละไม้เคยกำไรสูงสุดและลอยขาดทุนลึกสุดแค่ไหนก่อนปิด) ถ้าไม้กำไรส่วนใหญ่เคยติดลบหนัก ๆ มาก่อน แปลว่าระบบรอดเพราะทนถือ ไม่ใช่เพราะเข้าถูก และวันที่ตลาดไม่เด้งกลับ มันจะไม่ใช่แค่ลอยขาดทุนอีกต่อไป
Optimization: อาวุธที่ฆ่าคนใช้บ่อยกว่าฆ่าตลาด
คำตอบสั้น: ฟีเจอร์ optimization ของ MT5 ให้คุณไล่หาค่าพารามิเตอร์ที่ผลดีสุดอัตโนมัติ — และนั่นแหละคือปัญหา เพราะยิ่ง sweep เยอะ ยิ่งการันตีว่าจะเจอชุดค่าที่สวยโดยบังเอิญ ถ้าใช้ไม่เป็น optimization คือเครื่องผลิตระบบ overfit ที่มีใบเซอร์
วิธีใช้ก่อน: ในช่อง Optimization เลือกได้ระหว่าง Slow complete algorithm (ไล่ทุก combination — แม่นแต่ช้า ใช้ได้เมื่อ combination หลักร้อยหลักพัน) กับ Fast genetic based algorithm (genetic algorithm — สุ่มเก่ง ๆ หาโซนดีโดยไม่ต้องไล่ครบ ใช้เมื่อ combination ระดับหมื่นแสน) จากนั้นไปแท็บ Inputs ติ๊กพารามิเตอร์ที่จะไล่ กำหนด Start / Step / Stop ให้ช่วงกว้างพอมีความหมายแต่ไม่เว่อร์ แล้วเลือกเกณฑ์ที่ให้ MT5 จัดอันดับ เช่น Balance สูงสุด หรือค่า criterion อื่นที่มันมีให้
ทีนี้มาถึงส่วนที่เราอยากตะโกน: ทุก combination ที่คุณเทสเพิ่มคือการซื้อสลากลุ้น “ระบบสวยโดยบังเอิญ” เพิ่มหนึ่งใบ เราเคยทำ grid sweep ค่า period ของระบบ EMA cross บนทอง D1 ทั้งหมด 81 combination เจอผู้รอดที่ดูดีจริง ๆ แค่ 2 ตัว ฟังดูเหมือนเจอของ — จนเราเอา 2 ตัวนั้นไปเทสยาว 23 ปี แล้วได้ PF 1.00 เป๊ะ เท่าโยนเหรียญทุกประการ ผู้รอดทั้งสองคือ noise ที่แต่งตัวมาดี ไม่ใช่ edge อ่านการชันสูตรเต็ม ๆ ได้ที่บทความ EMA cross ที่พังคามือ
วิธีป้องกันมี 3 ชั้น ชั้นแรกคือใช้ช่อง Forward ใน Settings — MT5 จะแบ่งข้อมูลเป็นช่วง in-sample ที่ใช้ optimize กับช่วง out-of-sample (เลือกได้ เช่น 1/4 หรือ 1/3 ท้ายของช่วงเทส หรือกำหนดวันที่เอง) แล้วเอาพารามิเตอร์ที่ชนะไปรันต่อบนข้อมูลที่มันไม่เคยเห็นให้ดูเลยว่ารอดไหม ชุดค่าที่เทพเฉพาะ in-sample แต่แป้กใน forward period คือ overfit ชัด ๆ ทิ้งได้ทันทีโดยไม่ต้องเสียดาย
ชั้นที่สองคือเลือกโซน ไม่ใช่ยอด เวลาดูตาราง optimization results อย่าคว้าแถวบนสุดมาใช้ ให้ดูว่าพารามิเตอร์ข้างเคียงมัน (neighboring values) ผลยังดีอยู่ไหม ถ้าค่า 20 เทพแต่ 18 กับ 22 เจ๊ง นั่นคือยอดแหลมโดดเดี่ยวที่เกิดจากความบังเอิญ ระบบที่มี edge จริงจะให้ผลดีเป็น “ที่ราบสูง” — ขยับพารามิเตอร์นิดหน่อยแล้วผลไม่พังคาตา
ชั้นที่สามคือความจำใส่ใจ: นับจำนวน combination ที่เทสไปทั้งหมด แล้วถามตัวเองว่าโดยสุ่มล้วน ๆ ควรเจอชุดสวยกี่ชุด ถ้าเทส 81 ชุดแล้วเจอสวย 2 ชุด นั่นอยู่ในระดับที่ความบังเอิญอธิบายได้สบาย ๆ อย่างที่เราเจอมากับตัว
ผ่าน backtest แล้วยังไม่จบ: 3 ด่านก่อนใช้เงินจริง
คำตอบสั้น: backtest สวยเป็นแค่บัตรผ่านรอบคัดเลือก ก่อนใช้เงินจริงต้องผ่านอีก 3 ด่าน — เทสหลาย regime, ชนกับ random baseline, และ forward test บนเดโม่ ระบบส่วนใหญ่ที่ผ่านด่านแรกมาได้ตายที่สามด่านนี้ และนั่นคือข่าวดี เพราะมันตายบนกระดาษ ไม่ใช่บนพอร์ต
ด่านที่ 1: เทสให้ครบหลาย regime รวมช่วงตลาดลงแรง
ตลาดมีหลายบุคลิก — เทรนด์ขึ้นยาว, ดิ่งแรง, sideways น่าเบื่อ — และระบบส่วนใหญ่มีบุคลิกที่ตัวเองถนัดอยู่หนึ่งอย่าง การเทสเฉพาะช่วงที่เข้าทางระบบคือการหลอกตัวเองแบบพื้นฐานสุด ตั้ง Custom period ให้ครอบคลุมอย่างน้อยหนึ่งช่วง crash ใหญ่เสมอ แล้วดูผลแยกช่วง ไม่ใช่ดูแค่ค่าเฉลี่ยรวม
ข้อมูลจากกระดานเทสของเราชี้ว่าหลายระบบมี maxDD ที่ถูกขับด้วยช่วง crash ซึ่งกินเวลาแค่ ~2.3% ของช่วงเทสทั้งหมด — แปลว่าถ้าคุณสุ่มเทสช่วงสั้น ๆ โอกาสสูงมากที่จะไม่เจอช่วงนรกนั้นเลย แล้วสรุปผิดว่าระบบทนทาน วิธีคิดเรื่องถ่วงน้ำหนัก regime เราเขียนไว้ในบทความ regime-weighted evaluation
ด่านที่ 2: ชนกับ random baseline
ด่านนี้โหดและน้อยคนทำ: เอาระบบไปเทียบกับการเข้าไม้สุ่มที่ใช้ SL/TP และเงื่อนไขออกแบบเดียวกัน ถ้าสัญญาณเข้าของระบบมี “ของ” จริง มันต้องชนะการโยนเหรียญได้อย่างมีนัยยะ ถ้าไม่ชนะ แปลว่ากำไรที่เห็นมาจาก exit, จาก regime, หรือจากดวง — ไม่ใช่จากสัญญาณที่คุณภูมิใจ
เราเคยจับบอทของเราเอง 2 ตัวไปชนการเข้าไม้สุ่ม 500 รอบ ที่ใช้ SL/TP เดียวกัน ผลคือบอทเราแพ้ — random ทำได้ +358bps และใน 500 รอบนั้นไม่มีสักรอบเดียวที่ติดลบ อ่านแล้วเจ็บแต่จริง: สัญญาณเข้าของบอทเราไม่มีค่าอะไรเลย ตัวที่ทำงานคือโครง SL/TP กับสภาพตลาดล้วน ๆ วิธีทำ random baseline ทีละขั้นอยู่ในบทความ random baseline — เราถือว่านี่คือด่านบังคับของทุกระบบก่อนขึ้นเงินจริง
ด่านที่ 3: forward test บนเดโม่ 1-3 เดือน
ด่านสุดท้าย ง่ายสุดแต่ต้องใช้ความอดทน: รัน EA บนบัญชีเดโม่ของโบรกเดียวกับที่จะใช้จริง 1-3 เดือน แล้วเอาผลมาเทียบกับ backtest ช่วงเวลาเดียวกันแบบไม้ต่อไม้ ถ้าไม้ที่เข้าจริงกับไม้ใน backtest ตรงกันเป็นส่วนใหญ่ และผลกำไรขาดทุนใกล้เคียง แปลว่าโมเดลการเทสของคุณสมจริงพอ ถ้าเพี้ยนกันเยอะ — ไม้ไม่ตรง, ราคา fill ต่างลิบ, spread จริงกินหนักกว่าที่เทส — นั่นคือสัญญาณว่าตัวจำลองกับความจริงยังห่างกัน กลับไปแก้ที่การตั้งค่าก่อน อย่าเพิ่งโทษดวง
สามเดือนบนเดโม่ฟังดูนาน แต่ลองเทียบกับเวลาที่ต้องใช้หาเงินก้อนที่เสียไปคืน แล้วมันจะดูสั้นลงทันที
Checklist ก่อนเชื่อผล backtest
สรุปทั้งบทความเป็นข้อ ๆ เอาไว้ไล่เช็คก่อนกดโอนเงินเข้าบัญชีจริง
- เทสบนข้อมูลของโบรกที่จะรันจริง ไม่ใช่ฟีดกลางจากไหนก็ไม่รู้
- โหมด Every tick based on real ticks ในรอบยืนยันสุดท้าย และ History Quality ใกล้ 99%
- Deposit / Leverage ตรงบัญชีจริง ไม่ใช่ค่า default
- คิด spread จริง + รอบ stress test ด้วย fixed spread ที่แย่กว่าค่าเฉลี่ย แล้วระบบยังรอด
- commission และ swap ถูกคิดครบ ตามเงื่อนไขบัญชีจริง และตั้ง Delays จำลอง latency แล้ว
- Total Trades หลักหลายร้อยขึ้นไป และเช็คแล้วว่าไม้ไม่ทับซ้อนจนหลักฐานจริงเหลือนิดเดียว
- Equity DD ไม่ลึกกว่า Balance DD แบบผิดสังเกต — ไม่มีพฤติกรรมถือไม้ลอยขาดทุนซ่อนอยู่
- ถ้า optimize มา: ผ่าน Forward period (out-of-sample) แล้ว และค่าที่เลือกอยู่ในโซนเสถียร ไม่ใช่ยอดแหลมโดดเดี่ยว
- เทสครอบคลุมหลาย regime รวมช่วงตลาดลงแรง ไม่ใช่เฉพาะช่วงที่ระบบหล่อ
- ชนะ random baseline ที่ใช้ SL/TP เดียวกัน และผ่าน forward test บนเดโม่ 1-3 เดือน โดยผลใกล้เคียง backtest
ข้อไหนยังไม่ผ่าน อย่าเพิ่งข้าม — ทุกข้อในลิสต์นี้มีศพจริงบนกระดานเทสของเรารองรับ
แล้วสรุป backtest มีไว้ทำไมกันแน่
backtest ที่ดีไม่ได้มีไว้พิสูจน์ว่าระบบเราเจ๋ง แต่มีไว้ฆ่าระบบห่วยให้ตายบนกระดาษ ก่อนที่มันจะไปตายบนพอร์ตเรา ถ้าคุณรัน Strategy Tester เพื่อหาหลักฐานเข้าข้างระบบตัวเอง คุณจะหาเจอเสมอ — ปรับพารามิเตอร์อีกนิด เลือกช่วงเวลาอีกหน่อย เดี๋ยวเส้น equity ก็สวย แต่ตลาดไม่ได้อ่านรายงานเทสของคุณ มันเก็บเงินจริงเท่านั้น
ระบบส่วนใหญ่ที่ผ่านมือเราตายในขั้นตอนใดขั้นตอนหนึ่งของบทความนี้ และนั่นคือระบบที่ทำงานได้ตามหน้าที่ของมัน เทสให้โหด ให้ระบบตายฟรีบนกระดาษเยอะ ๆ แล้ววันที่เจอตัวที่รอดครบทุกด่านจริง ๆ คุณจะรู้ว่ามันต่างจากตัวที่ “แค่ backtest สวย” ขนาดไหน