การ 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 สวย” ขนาดไหน