Optimization และ Overfitting: ค่าตั้งที่ดีที่สุดในอดีตไม่ใช่คำตอบเสมอ

เมื่อ EA มีค่าตั้งให้ปรับ สิ่งที่ทุกคนอยากทำคือให้ MT5 ลองทุกค่าแล้วเลือกชุดที่กำไรสูงสุด วิธีนี้ทำได้ง่ายมาก แต่ชุดที่ดีที่สุดในอดีตมักเป็นชุดที่เข้ากับความบังเอิญของข้อมูลช่วงนั้นพอดี บทความนี้อธิบายว่า Optimization ใช้ทำอะไรได้จริง Overfitting เกิดขึ้นอย่างไร และจะเลือกค่าตั้งที่ทนทานกว่าได้อย่างไร
ตัวเลขเป็นตัวอย่างเพื่อประกอบบทความ · ตรวจเงื่อนไขของโบรกเกอร์ก่อนเทรดจริง
สรุปสาระสำคัญ
- Optimization คือการรันทดสอบซ้ำหลายชุดค่าตั้ง เพื่อดูว่าผลเปลี่ยนตามค่าตั้งอย่างไร
- Overfitting คือค่าตั้งที่จับความบังเอิญของข้อมูลช่วงทดสอบ ได้ผลดีในอดีตแต่ไม่เกิดซ้ำ
- แบ่งข้อมูลเป็น In-sample สำหรับหาค่า และ Out-of-sample สำหรับตรวจ
- เลือกค่าจากที่ราบ ไม่ใช่จากยอดแหลม ค่าข้างเคียงควรให้ผลใกล้กัน
- ยิ่งมีพารามิเตอร์มาก ยิ่งมีโอกาสเจอชุดค่าที่ดีโดยบังเอิญ
Optimization ใน MT5 ทำอะไร
ในแท็บ Inputs ของ Strategy Tester เลือกพารามิเตอร์ที่ต้องการปรับ แล้วกำหนดค่าเริ่ม ขั้น และค่าสุดท้าย MT5 จะรันทดสอบทุกชุดหรือบางส่วนตามวิธีที่เลือก แบบ Slow complete algorithm ลองครบทุกชุด ส่วน Fast genetic based algorithm ค้นหาเฉพาะชุดที่น่าสนใจเพื่อประหยัดเวลา และเลือกเกณฑ์ได้ เช่น Balance สูงสุด Profit Factor สูงสุด หรือ Drawdown ต่ำสุด
ประโยชน์ที่แท้จริงของ Optimization คือได้เห็นว่าระบบไวต่อค่าตั้งแค่ไหน ไม่ใช่การหาค่าที่ดีที่สุดหนึ่งค่า การตั้งค่า Strategy Tester อยู่ใน Strategy Tester ใน MT5
จำนวนชุดค่าตั้งโตเร็วมาก
ถ้าพารามิเตอร์หนึ่งตัวลอง 11 ค่า จะมี 11 ชุด ถ้ามี 3 ตัวที่ลองตัวละ 11 ค่า จะเป็น 1,331 ชุด และ 5 ตัวจะเป็น 161,051 ชุด ยิ่งลองมาก ยิ่งมีโอกาสที่บางชุดจะออกมาดีเพียงเพราะเข้ากับเหตุการณ์เฉพาะในช่วงทดสอบ เหมือนโยนเหรียญหลายพันครั้งแล้วเจอช่วงที่ออกหัวติดกันยาว
Overfitting คืออะไร
Overfitting หรือ Curve fitting คือการปรับค่าตั้งจนระบบจำข้อมูลอดีตได้ แทนที่จะจับลักษณะที่เกิดซ้ำของตลาด คล้ายนักเรียนที่ท่องคำตอบของข้อสอบเก่า ได้คะแนนเต็มกับข้อสอบชุดเดิม แต่ทำข้อสอบชุดใหม่ไม่ได้ สัญญาณที่ชัดที่สุดคือผลในช่วงที่ใช้หาค่าดีมาก แต่ผลในช่วงที่ไม่ได้ใช้แย่ลงอย่างเห็นได้ชัด
ตัวอย่าง: ยอดแหลมกับที่ราบ
ภาพด้านล่างเป็นภาพประกอบของการปรับพารามิเตอร์หนึ่งตัวจาก 10 ถึง 60 ทีละ 5 แท่งสีน้ำเงินคือผลในช่วงที่ใช้หาค่า (In-sample) แท่งสีส้มคือผลในช่วงใหม่ที่ไม่ได้ใช้ (Out-of-sample)

ค่า 20 ให้ผลดีที่สุดในช่วงหาค่าที่ +5.9R แต่ค่าข้างเคียง 15 และ 25 เฉลี่ยเพียง −0.8R และในช่วงใหม่ค่า 20 ได้ −0.8R นี่คือยอดแหลมที่เกิดจากเหตุการณ์เฉพาะช่วง ส่วนค่า 40 ถึง 50 ให้ผลใกล้กันทุกค่า เฉลี่ย +3.4R ค่า 45 ที่อยู่กลางที่ราบได้ +3.8R ในช่วงหาค่า และยังได้ +2.6R ในช่วงใหม่ ตัวเลขเป็นภาพประกอบ ไม่ใช่ผลของระบบจริง
In-sample และ Out-of-sample
หลักคือแบ่งข้อมูลเป็นสองส่วน หาค่าตั้งจากส่วนแรก แล้วตรวจกับส่วนที่สองที่ระบบไม่เคยเห็น ใน MT5 ตั้งได้ที่ช่อง Forward ของแท็บ Settings เช่น 1/3 หรือ 1/4 ของช่วงเวลา หรือกำหนดวันที่เอง ตัวทดสอบจะแสดงผลของช่วงนั้นแยกให้เทียบ
ข้อสำคัญคือใช้ช่วง Out-of-sample ตรวจเพียงครั้งเดียวหรือน้อยครั้งที่สุด ถ้าหาค่าใหม่แล้วตรวจซ้ำกับช่วงเดิมหลายรอบจนผ่าน ช่วงนั้นจะกลายเป็นส่วนหนึ่งของการหาค่าไปโดยไม่รู้ตัว
สัญญาณเตือนว่าอาจ Overfit
- ค่าที่ดีที่สุดยืนอยู่ตัวเดียว — ค่าข้างเคียงให้ผลแย่กว่ามาก
- มีพารามิเตอร์และตัวกรองจำนวนมาก — บางตัวถูกเพิ่มเพื่อหลบไม้แพ้เฉพาะครั้งในอดีต
- กราฟผลเรียบเกินจริงจากไม้ไม่มาก — Profit Factor สูงผิดปกติ
- ผลช่วงใหม่แย่ลงชัดเจน — เมื่อเทียบกับช่วงที่ใช้หาค่า
- ผลพังเมื่อ Spread หรือความหน่วงเปลี่ยนเล็กน้อย — ระบบพึ่งรายละเอียดที่ควบคุมไม่ได้
ลดโอกาส Overfit
- ใช้พารามิเตอร์ให้น้อย — และใช้ขั้นที่หยาบพอ ไม่ต้องลองทุกค่าที่เป็นไปได้
- เลือกค่าจากกลางที่ราบ — แม้จะไม่ใช่ค่าที่กำไรสูงสุด
- ตรวจกับช่วงเวลาและสัญลักษณ์อื่น — ถ้าเหตุผลของระบบควรใช้ได้กว้างกว่านั้น
- ใส่ต้นทุนให้ใกล้จริง — ตามที่อธิบายใน ต้นทุนการเทรด
- ตามด้วย Forward Test — ตรวจกับตลาดที่เกิดขึ้นหลังจากหาค่าเสร็จแล้ว
สรุป
Optimization มีประโยชน์เมื่อใช้ดูความไวของระบบต่อค่าตั้ง และเป็นอันตรายเมื่อใช้หาค่าที่ดีที่สุดเพียงค่าเดียว เลือกค่าจากที่ราบ ตรวจกับข้อมูลที่ไม่ได้ใช้ และอ่านผลด้วยวิธีใน อ่านรายงาน Backtest จากนั้นจึงนำไปทดสอบกับตลาดปัจจุบันใน Forward Test


