Backtesting คือการนำกลยุทธ์การเทรดไปรันย้อนหลังกับข้อมูลราคาในอดีต เพื่อดูว่าหากคุณเทรดด้วยกลยุทธ์นี้ในอดีตจริง ผลลัพธ์จะออกมาเป็นอย่างไร นี่คือขั้นตอนที่สำคัญที่สุดเพียงขั้นตอนเดียวระหว่าง "ไอเดียนี้ดูดี" กับการเอาเงินจริงไปเสี่ยงกับมันจริงๆ — และใช้ได้กับทั้ง EA ที่เทรดอัตโนมัติเต็มรูปแบบและกลยุทธ์ที่คุณเทรดด้วยมือเองเช่นกัน EA ฟรีทุกตัวบนเว็บไซต์นี้คือไฟล์ .mq4/.mq5 จริง และไม่ควรมีตัวไหนถูกลากไปวางบนกราฟ live ก่อนที่จะผ่านการ backtest มาก่อน
รัน Backtest ใน Strategy Tester
ทั้ง MetaTrader 4 และ MetaTrader 5 มี Strategy Tester ในตัวมาให้ และนี่คือเครื่องมือมาตรฐานสำหรับงานนี้ — คุณไม่จำเป็นต้องใช้ซอฟต์แวร์จากภายนอกเพื่อเริ่มต้น เปิดมันจากเมนู View → Strategy Tester (หรือกด Ctrl+R) เลือก EA ที่ต้องการทดสอบ เลือกคู่เงินและ timeframe ตั้งช่วงวันที่ของข้อมูลย้อนหลัง แล้วกด Start ตัวทดสอบจะเล่นย้อนประวัติศาสตร์นั้นทีละ tick (หรือทีละแท่งเทียน ขึ้นอยู่กับคุณภาพการจำลองที่เลือก) และจำลองทุกการเทรดที่ EA จะเปิดและปิด ตามที่โค้ดของมันกำหนดไว้ทุกประการ
เนื่องจาก EA ทุกตัวบนเว็บไซต์นี้เป็น source code ที่ดาวน์โหลดได้ คุณสามารถนำตัวไหนก็ได้ไปวางใน MQL4/Experts หรือ MQL5/Experts แล้วทดสอบด้วยวิธีนี้ ก่อนที่จะแนบมันเข้ากับกราฟ live หรือแม้แต่กราฟ demo เสียอีก ตัวทดสอบจะออกรายงานฉบับเต็ม: กำไรสุทธิรวม, drawdown, อัตราชนะ, profit factor และกราฟ equity curve รายงานนี้มีประโยชน์จริง — มันบอกคุณได้ว่าตรรกะของกลยุทธ์มีหลักฐานทางประวัติศาสตร์รองรับหรือไม่ — แต่มันคือจุดเริ่มต้นของกระบวนการประเมิน ไม่ใช่จุดจบ
ทำไม Backtest ที่ดูดีเยี่ยมจึงไม่รับประกันผลลัพธ์ตอนเทรดจริง
รายงาน backtest ที่แสดงกราฟ equity curve ที่ราบเรียบและไต่ขึ้นอย่างสม่ำเสมอนั้นให้กำลังใจก็จริง แต่มันตั้งอยู่บนสมมติฐานที่มักไม่ตรงกับการเทรดจริงเป๊ะๆ Strategy Tester ต้องจำลอง spread และ slippage ด้วยวิธีใดวิธีหนึ่ง และโดยค่าเริ่มต้นมันมักใช้ค่า spread คงที่หรือแบบง่ายเกินไป แทนที่จะเป็น spread จริงที่แกว่งตัวตลอดเวลาซึ่งโบรกเกอร์ของคุณคิดจริง ดูบทเรียน Spread และ Slippage ว่าทำไมช่องว่างนี้ถึงสำคัญ spread จริงจะกว้างขึ้นช่วงข่าวและช่วงสภาพคล่องต่ำ และ slippage บนคำสั่ง market order หมายความว่าราคาที่คุณได้จริงบางครั้งแย่กว่าราคาที่ตัวทดสอบสมมติไว้ กลยุทธ์ที่มีความได้เปรียบต่อการเทรดบางๆ อาจดูทำกำไรได้ใน backtest ที่สมมติการ fill แบบสมบูรณ์แบบ แต่พอหักต้นทุนการเทรดจริงออกแล้วอาจกลายเป็นเท่าทุนหรือแย่กว่านั้น
ความเร็วในการส่งคำสั่งและการ requote ก็เป็นช่องว่างอีกจุดหนึ่ง: backtest จะ fill ทุกสัญญาณที่ถูกต้องทันที ในขณะที่ server ของโบรกเกอร์จริงอาจมี latency และตลาดที่เคลื่อนไหวเร็วอาจ requote หรือปฏิเสธคำสั่งไปเลย ทั้งหมดนี้ไม่ได้แปลว่า backtesting ไร้ค่า — แต่หมายความว่าผลลัพธ์จาก backtest คือตัวกรองด่านแรก ไม่ใช่คำตัดสินสุดท้าย และควรอ่านมันโดยคำนึงถึงสมมติฐานที่ทำให้เรื่องง่ายขึ้นเหล่านี้ ไม่ใช่เชื่อตามตัวเลขที่เห็นตรงๆ
Overfitting: เมื่อ Backtest ที่สมบูรณ์แบบคือสัญญาณเตือน
อันตรายที่ลึกกว่าใน backtesting ไม่ใช่โมเดล spread ของตัวทดสอบ — แต่คือสิ่งที่เกิดขึ้นเมื่อเทรดเดอร์ปรับ parameter ของกลยุทธ์ซ้ำแล้วซ้ำเล่ากับข้อมูลย้อนหลังชุดเดิม จนกราฟ equity curve ดูสมบูรณ์แบบไร้ที่ติ พฤติกรรมนี้เรียกว่า overfitting หรือ curve-fitting คือการปรับ period ของ Moving Average, ระยะ Stop Loss, ค่าขีดจำกัดของ ADX หรือ input ใดๆ ซ้ำไปซ้ำมา เพื่อไล่หาผลลัพธ์ที่ดีขึ้นบนช่วงประวัติศาสตร์ช่วงหนึ่งโดยเฉพาะ parameter ที่ได้ออกมามักไม่ได้จับความได้เปรียบของตลาดที่แท้จริงและทำซ้ำได้ — แต่จับ noise และความบังเอิญเฉพาะของชุดข้อมูลนั้นชุดเดียว ซึ่งจะไม่มีวันเกิดขึ้นซ้ำในรูปแบบเดียวกันอีก
ไดอะแกรมด้านบนคือแก่นของบทเรียนนี้ กราฟที่ขรุขระและเกือบสมบูรณ์แบบทางด้านซ้ายคือสิ่งที่ backtest ของกลยุทธ์ที่ overfit มักมีหน้าตาแบบนั้น — มันไต่ขึ้นแทบไม่มีสะดุดเลยจนถึงจุดที่ข้อมูล live เริ่มต้น แล้วก็ล้มครืนลง เพราะ "ความได้เปรียบ" ที่มันเจอนั้นแท้จริงแล้วเป็นเพียงคำอธิบายอดีต ไม่ใช่การคาดการณ์อนาคต ส่วนกราฟที่นิ่งกว่าทางด้านขวาเป็นของกลยุทธ์ที่แข็งแกร่งกว่า — มันไม่ได้ backtest ออกมาสวยงามเท่า แต่มันยังคงไต่ขึ้นต่อไปแม้พ้นจุดที่ข้อมูลทดสอบสิ้นสุดลงแล้ว เพราะตรรกะของมันสะท้อนบางสิ่งที่ยั่งยืนเกี่ยวกับพฤติกรรมตลาดจริง ไม่ใช่ความบังเอิญในตัวอย่างเดียว backtest ที่ดูดีเกินไปสมควรถูกตั้งข้อสงสัยมากขึ้น ไม่ใช่น้อยลง
Walk-Forward Testing: ตรวจสอบกับข้อมูลที่กลยุทธ์ไม่เคยเห็นมาก่อน
แนวทางป้องกัน overfitting มาตรฐานคือ walk-forward testing หรือเรียกอีกอย่างว่า out-of-sample testing แนวคิดนี้ตรงไปตรงมา: แบ่งข้อมูลย้อนหลังของคุณเป็นสองช่วง ปรับ parameter ของกลยุทธ์เฉพาะบนช่วงแรกเท่านั้น (ช่วง "in-sample") จากนั้นโดยไม่ปรับอะไรเพิ่มเติมอีก ให้รันกลยุทธ์เดียวกันนี้บนช่วงที่สอง (ช่วง "out-of-sample") — ข้อมูลที่กลยุทธ์ไม่เคยเห็นมาก่อนตอนปรับ parameter หากผลลัพธ์ยังคงดีพอสมควรในช่วง out-of-sample นั่นคือสัญญาณที่ให้กำลังใจได้จริง แต่หากผลลัพธ์พังทลายลง แสดงว่ากลยุทธ์นั้นน่าจะถูกปรับให้เข้ากับ noise ในช่วงแรกมากกว่าจะจับรูปแบบที่แท้จริงได้
วิธีปฏิบัติจริงใน Strategy Tester นั้นง่าย: ปรับ parameter โดยใช้ข้อมูลปี 2022-2023 ตัวอย่างเช่น จากนั้นรันค่าตั้งค่าเดียวกันนั้นซ้ำกับข้อมูลปี 2024 ที่คุณตั้งใจไม่แตะต้องเลยตอนปรับ parameter การทำซ้ำแบบนี้ข้ามหลายช่วง out-of-sample ที่แตกต่างกัน แทนที่จะตรวจแค่ช่วงเดียว จะให้ผลลัพธ์ที่ตรงไปตรงมากว่ามากว่ากลยุทธ์หนึ่ง — รวมถึง EA ตัวใดก็ตามบนเว็บไซต์นี้ — มีความได้เปรียบที่แท้จริงคุ้มค่าแก่การเทรดหรือไม่
การทดสอบด้วย Demo ยังจำเป็นอยู่แม้ Backtest จะออกมาดี
แม้กลยุทธ์ที่ผ่าน walk-forward testing มาได้อย่างน่าเชื่อถือ ก็ยังต้องพิสูจน์ตัวเองแบบ real-time ก่อนที่จะนำเงินจริงเข้ามาเกี่ยวข้อง backtest ไม่ว่าจะสร้างมาอย่างพิถีพิถันแค่ไหน ก็ยังเป็นการจำลองที่รันบนข้อมูลย้อนหลังทั้งหมดในคราวเดียว ในขณะที่บัญชี demo จะรันกลยุทธ์ไปข้างหน้าทีละ tick ภายใต้เงื่อนไขการส่งคำสั่งจริงของ platform ดูบทเรียน Demo กับ Live Account ต่างกันตรงไหนกันแน่ ว่าอะไรเปลี่ยนไปบ้างระหว่างสองแบบนี้ — ประเด็นที่เกี่ยวข้องตรงนี้คือ การทดสอบด้วย demo คือจุดที่คุณจะสังเกตพฤติกรรม spread จริง, การส่งคำสั่งจริง และผลงานของกลยุทธ์ในสภาพตลาดใหม่ๆ ที่แท้จริงได้ในที่สุด แทนที่จะเป็นแค่การสมมติ
รัน EA ตัวใดก็ได้บนบัญชี demo ข้ามหลายสัปดาห์และหลายสภาพตลาด — ทั้งช่วงมีเทรนด์และช่วงไซด์เวย์ ทั้งช่วงนิ่งและช่วงผันผวน — ก่อนที่จะพิจารณาใช้เงินจริงเลย ระหว่างทดสอบด้วย demo ให้กำหนดขนาดโพซิชันแบบเดียวกับที่คุณจะใช้กับเงินทุนจริง โดยใช้แนวทางจากพื้นฐานการบริหารความเสี่ยง คือเสี่ยงเป็นเปอร์เซ็นต์คงที่จำนวนน้อยต่อการเทรด เพื่อให้นิสัยและการตั้งค่าที่คุณสร้างขึ้นระหว่างทดสอบนำไปใช้ต่อกับบัญชี live ได้โดยไม่ต้องเปลี่ยนแปลงในภายหลัง
ทำไมเรื่องนี้ถึงสำคัญ
การข้าม backtesting ไปเลยหมายถึงการเทรดตามความรู้สึกโดยไม่มีหลักฐานทางประวัติศาสตร์รองรับไม่ว่าทางใด การ backtest โดยไม่ทำ walk-forward testing หมายถึงการเสี่ยงว่าผลลัพธ์ที่ดูดีที่สุดของคุณอาจเป็นเพียงคำอธิบายแบบ overfit ของช่วงประวัติศาสตร์ที่โชคดีช่วงหนึ่งเท่านั้น และการ backtest มาอย่างดีแต่ข้ามการทดสอบด้วย demo หมายถึงการมาเจอช่องว่างของการส่งคำสั่งจริงตอนที่เงินจริงอยู่บนโต๊ะแล้ว แทนที่จะเจอในสภาพแวดล้อมที่สร้างมาเพื่อเปิดเผยมันก่อน แต่ละขั้นตอนในบทเรียนนี้มีไว้เพื่อจับความมั่นใจปลอมๆ คนละแบบ การทำครบทุกขั้นตอนตามลำดับ กับกลยุทธ์หรือ EA ตัวใดก็ตาม ก่อนที่มันจะแตะบัญชี live เลยแม้แต่ครั้งเดียว คือสิ่งที่เปลี่ยน "ดูดีนะ" ให้กลายเป็นการตัดสินใจที่ผ่านการทดสอบมาอย่างซื่อสัตย์จริงๆ