แค่แบ่ง IS/OOS ไม่พอ | ออกแบบหน้าต่าง Walk-Forward
สารบัญ
สรุป: ถ้า OOS มีช่วงเดียว ก็ยังเป็นเพียง "การสอบครั้งเดียว"
การแบ่งข้อมูลเป็นช่วงสำหรับปรับพารามิเตอร์ (IS) และช่วงสำหรับทดสอบ (OOS) เป็นก้าวแรกที่ดีในการสงสัยว่ากลยุทธ์ Overfitting หรือไม่ แต่ถ้าแบ่งเพียงครั้งเดียว ผล OOS จะบอกได้แค่ว่า "ในช่วงนั้นช่วงเดียวเป็นอย่างไร"
ข้อสรุปของเราคือ ให้แบ่ง OOS เป็นหลายหน้าต่างแล้วทดสอบเดินหน้าไปทีละช่วง และดูว่าแต่ละหน้าต่างทำกำไรหรือไม่ ไม่ใช่ดูแค่ยอดรวม ต่อให้ยอดรวมเป็นบวก หากกำไรกระจุกอยู่ในบางหน้าต่าง เราจะขอพักการประเมินไว้ก่อน
จุดอ่อนของการแบ่งแบบตายตัว
จุดแบ่งส่งผลต่อผลลัพธ์
ในการแบ่งแบบตายตัว ผู้พัฒนาเป็นคนเลือกว่าจะตัดตรงไหน หาก OOS บังเอิญตรงกับช่วงที่เทรนด์ชัดเจน กลยุทธ์จะดูดีเกินความสามารถจริง ในทางกลับกัน หากตรงกับช่วงตรงข้าม เราก็อาจทิ้งกลยุทธ์ที่ใช้ได้ไป ทั้งสองกรณีคือผลลัพธ์ขึ้นอยู่กับการเลือกเพียงอย่างเดียว นั่นคือจุดแบ่ง
ถ้าดู OOS ซ้ำหลายรอบ มันก็ไม่ใช่ OOS อีกต่อไป
อีกปัญหาหนึ่งคือพฤติกรรมของผู้พัฒนาเอง เมื่อผล OOS ไม่ดีก็แก้พารามิเตอร์ แล้วกลับมาดู OOS อีกครั้ง ทำซ้ำแบบนี้ไปเรื่อย ๆ ก็เท่ากับกำลังเลือกสิ่งที่เข้ากับ OOS ในทางรูปแบบแล้วเป็นข้อมูลที่ยังไม่เคยใช้ แต่ในทางเนื้อแท้ถูกนำไปใช้ปรับพารามิเตอร์แล้ว ความผิดพลาดนี้เกิดกับพวกเราเองได้เช่นกัน และป้องกันไม่ได้หากไม่วางขั้นตอนมาควบคุม
วิธีสร้างหน้าต่าง Walk-Forward
Walk-Forward คือวิธีที่ถือ "ช่วงปรับพารามิเตอร์" กับ "ช่วงทดสอบที่ต่อจากนั้นทันที" เป็นหนึ่งหน้าต่าง แล้วเลื่อนไปข้างหน้าตามเวลาซ้ำไปเรื่อย ๆ ช่วงทดสอบจะอยู่ในอนาคตของช่วงปรับพารามิเตอร์เสมอ และได้ OOS หลายช่วง
| วิธี | การเลื่อนหน้าต่าง | เหมาะกับ | จุดอ่อน |
|---|---|---|---|
| แบ่งแบบตายตัว | ตัดครั้งเดียว | การตรวจสอบหยาบ ๆ ในขั้นแรก | พึ่งพาจุดแบ่งมาก |
| แบบ Rolling | เลื่อนไปข้างหน้าโดยคงความยาวช่วงปรับพารามิเตอร์ไว้ | สัญลักษณ์ที่ลักษณะตลาดเปลี่ยนง่าย | ทิ้งข้อมูลของช่วงเก่า |
| แบบ Anchored | ตรึงจุดเริ่มต้นไว้และขยายช่วงปรับพารามิเตอร์ | กลยุทธ์ที่มีจำนวนเทรดน้อย | อิทธิพลของข้อมูลเก่าคงอยู่ตลอด |
เกณฑ์กำหนดความยาวหน้าต่าง
การกำหนดความยาวหน้าต่างด้วยจำนวนเทรดปลอดภัยกว่าการดูจำนวนปีตามปฏิทิน หากมีเทรดในช่วงทดสอบน้อยเกินไป การที่ผลเป็นกำไรหรือขาดทุนจะถูกกำหนดด้วยความบังเอิญ กลยุทธ์ที่ถือสถานะนานและเทรดไม่บ่อยยิ่งต้องใช้ช่วงทดสอบที่ยาวขึ้น
ขั้นตอนตรวจสอบทีละหน้าต่าง
- จัดหน้าต่างเรียงกันโดยไม่ให้ช่วงทดสอบซ้อนทับกัน
- ปรับพารามิเตอร์ในแต่ละหน้าต่าง แล้วนำพารามิเตอร์ที่ได้ไปใช้กับช่วงทดสอบที่ต่อจากนั้นทันทีเท่านั้น
- บันทึกกำไรขาดทุน PF จำนวนเทรด และ drawdown สูงสุดของแต่ละช่วงทดสอบ
- ตรวจว่ามีหน้าต่างที่ PF 1.0 ขึ้นไปกี่ช่วง และหน้าต่างที่ขาดทุนอยู่ในช่วงเวลาใด
- ตรวจว่าหากตัดหน้าต่างที่ทำกำไรสูงสุดออก ยอดรวมของที่เหลือยังเป็นบวกหรือไม่
- ดูว่าพารามิเตอร์ที่ถูกเลือกในแต่ละหน้าต่างไม่กระโดดไปมาอย่างรุนแรง
จุดสำคัญของการตรวจมีสามข้อ
- หน้าต่างที่ทำกำไรไม่กระจุกอยู่ในบางช่วง
- ความสูญเสียของหน้าต่างที่ขาดทุนไม่ใหญ่เกินไปเมื่อเทียบกับกำไรของหน้าต่างที่ทำกำไร
- พารามิเตอร์ที่เหมาะสมที่สุดของหน้าต่างที่อยู่ติดกันไม่เปลี่ยนไปอย่างสุดขั้ว
เราไม่คิดว่าทุกหน้าต่างต้องเป็นกำไร กลยุทธ์แบบตามเทรนด์ตามปกติจะแพ้ในหน้าต่างช่วงที่ตลาดไร้ทิศทาง สิ่งที่ควรถือเป็นปัญหาคือการอธิบายไม่ได้ว่าทำไมหน้าต่างนั้นแพ้ และความลึกของการขาดทุนเกินที่คาดไว้
ข้อจำกัดและข้อควรระวัง
ถ้าจำนวนเทรดไม่พอ หน้าต่างก็ไม่เกิดผล
แบ็กเทสต์ของ ATLAS มี 1193 เทรดในช่วงทดสอบ 7.5 ปี ต่อให้แบ่งเป็นหลายหน้าต่าง แต่ละหน้าต่างก็ยังมีเทรดเหลืออยู่พอสมควร ในทางกลับกัน แบ็กเทสต์ของ ETHEREUM EA มี 154 เทรดในช่วงทดสอบ 7.5 ปี หากหั่นกลยุทธ์ความถี่ต่ำแบบนี้เป็นหน้าต่างย่อย ๆ จำนวนเทรดต่อหน้าต่างจะเหลือน้อยมาก และการที่หน้าต่างเป็นกำไรหรือขาดทุนแทบไม่เป็นข้อมูลประกอบการตัดสินใจได้ เราทำได้เพียงทำหน้าต่างให้หยาบลง หรือใช้การประเมินรายหน้าต่างเป็นเพียงข้อมูลอ้างอิง
ตัวเลขที่เผยแพร่เป็นค่าตลอดทั้งช่วง
PF และอัตราชนะที่แสดงในอันดับผลทดสอบจริงเป็นค่าตลอดทั้งช่วงทดสอบ ไม่ใช่ผลรายหน้าต่าง ดังนั้นลำพังตัวเลขเหล่านี้ไม่อาจตัดสินได้ว่ามี Overfitting หรือไม่ โปรดอ่านโดยหักลบข้อนี้ไว้ด้วย
การออกแบบหน้าต่างเองก็ถูกปรับให้เข้ากับข้อมูลได้
หากเปลี่ยนความยาวหรือจำนวนหน้าต่างแล้วเลือกชุดที่ผลดูดี นั่นก็คือ Overfitting เช่นกัน การออกแบบหน้าต่างต้องกำหนดไว้ก่อนเริ่มทดสอบและไม่ขยับภายหลัง นี่คือข้อสมมติเบื้องต้น และจากภายนอกแทบไม่มีวิธีตรวจสอบว่าข้อสมมตินี้ถูกรักษาไว้หรือไม่
ถึงอย่างนั้นก็ยังไม่อาจรู้อนาคต
ต่อให้ผ่าน Walk-Forward ก็ไม่อาจรับมือสภาพตลาดที่ไม่เคยเกิดขึ้นในอดีตได้ ในฟอร์เวิร์ดเทสต์บนบัญชีเดโมที่เราดำเนินการอยู่ ก็มี EA หลายตัวที่กำไรขาดทุนติดลบ นี่เป็นบัญชีเดโม ไม่ใช่ผลของบัญชีจริง และระยะเวลาตั้งแต่เริ่มก็ยังสั้น จึงยังไม่ถึงขั้นสรุปได้ ไม่ว่าผลจะดีหรือไม่ดี วิธีทดสอบเป็นเครื่องมือลดโอกาสพลาด ไม่ใช่สิ่งที่รับประกันว่าจะถูก
สรุป
- การแบ่ง IS/OOS แบบตายตัวทำให้ผลลัพธ์ขึ้นอยู่กับจุดแบ่งและจำนวนครั้งที่ย้อนกลับไปปรับตาม OOS
- Walk-Forward คือวิธีสร้างช่วงทดสอบหลายช่วงและตรวจสอบโดยเดินหน้าไปทีละช่วง
- สิ่งที่ต้องดูคือกำไรขาดทุนรายหน้าต่าง ไม่ใช่ยอดรวม โดยตรวจการกระจุกตัวของกำไรและความเสถียรของพารามิเตอร์
- กลยุทธ์ที่มีจำนวนเทรดน้อย ยิ่งแบ่งเป็นหน้าต่างมากการตัดสินยิ่งไม่เสถียร
- กำหนดการออกแบบหน้าต่างไว้ล่วงหน้า ต่อให้ผ่านก็ไม่อาจรู้ผลงานในอนาคต
แนวคิดเรื่องการทดสอบยังรวบรวมไว้ในคลังความรู้ด้วย
บทความที่เกี่ยวข้อง
2026-10-12
แยกผล EA รายปี: จับพิรุธ EA ที่พึ่งปีทองปีเดียว
2026-10-02
การวิเคราะห์ Walk-Forward เพื่อป้องกัน Curve Fitting
2026-08-25
ทดสอบ Scalping Robot Pro | อัตราชนะ 82.9%→12.6% ขึ้นกับฟีด
2026-05-29
Python กับ MT5 บัญชีจริงต่างกัน 92-98% เรื่องที่พบ
📧 แจ้งก่อนขึ้นราคาบน MQL5 Market + คอร์สอีเมล 5 วัน (ฟรี)
EA บนเว็บนี้ใช้ฟรีเมื่อมีบัญชีจริงกับโบรกเกอร์พันธมิตร ส่วนเวอร์ชันที่ขายบน MQL5 Market อยู่ในราคาเปิดตัวและจะขึ้นราคาเป็นขั้นตามยอดขาย รับแจ้งเตือนก่อนขึ้นราคาแต่ละครั้ง พร้อมอีเมลวันละฉบับเรื่องพื้นฐานการเทรดอัตโนมัติ การอ่าน Backtest ให้ถูกต้อง และการเลือกโบรกเกอร์
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
มีคำถามเกี่ยวกับ EA หรือ Forex ไหม?
คุณสามารถตั้งคำถามได้ที่ฟอรัมเทรดของ Nattzy (สมัครฟรี) ไม่จำเป็นต้องเกี่ยวกับบทความนี้ก็ได้ เช่น การตั้งค่า EA หรือการเลือกโบรกเกอร์
ถามที่ Nattzy ↗