บทความในหมวด บทเรียนที่ 14: ทดสอบและวัดผล
🎯 เมื่อเรียนบทเรียนนี้จบ คุณจะ
- แยกผลย้อนหลังออกจากสิ่งที่เกิดจริงในอนาคต
- ตรวจต้นทุน การได้รับคำสั่ง และการรั่วไหลของข้อมูล
- แบ่งข้อมูลพัฒนากับประเมิน พร้อมบันทึกเวอร์ชัน
- เตรียมรายการข้อมูลที่ทำให้ทดสอบซ้ำได้
Backtesting คือการนำกฎของกลยุทธ์ไปทดสอบกับข้อมูลราคาในอดีต เพื่อดูว่าถ้าใช้กฎนี้ในช่วงนั้นจะได้ผลอย่างไร
สิ่งที่ต้องเข้าใจก่อนอย่างอื่นคือ — ผลจริงอาจดีกว่าหรือแย่กว่าผลทดสอบได้ ต้องตรวจว่าความต่างมาจากตลาด ต้นทุน ข้อมูล แบบจำลอง หรือการทำตามกฎ
Backtest ตอบอะไรได้และตอบอะไรไม่ได้
| ✅ ตอบได้ | ❌ ตอบไม่ได้ |
|---|---|
| กฎนี้ให้ผลอย่างไรในช่วงเวลาที่ทดสอบ | อนาคตจะเหมือนช่วงนั้นหรือไม่ |
| เกิดไม้ประมาณกี่ไม้ในช่วงเวลาหนึ่ง | คุณจะทำตามกฎได้ครบหรือไม่ |
| Drawdown ที่เคยเกิดในช่วงนั้น | Drawdown สูงสุดที่เป็นไปได้ |
| กฎที่เขียนไว้ชัดพอจะทดสอบหรือไม่ | กลยุทธ์นี้จะทำกำไรได้หรือไม่ |
แถวสุดท้ายในคอลัมน์ซ้ายมีค่ามากกว่าที่คนคิด
เมื่อคุณเริ่มทดสอบ คุณจะพบทันทีว่ากฎบางข้อตีความได้หลายแบบ
และคุณต้องกลับไปแก้ให้ชัดขึ้นก่อนทดสอบต่อ
กระบวนการนี้เองทำให้ Trading Plan ของคุณดีขึ้น แม้ผลทดสอบจะยังไม่ออก
ช่องว่างระหว่างผลทดสอบกับผลจริง
ข้อมูลและกฎ
ตรวจข้อมูล ณ เวลาตัดสินใจ เวอร์ชัน และช่วงที่ใช้เลือกกฎ
ต้นทุนและคำสั่ง
ตรวจ Spread, Commission, Swap, Slippage และคำสั่งที่ไม่ได้รับ
ตลาดและการใช้งาน
ผลจริงอาจสูงหรือต่ำกว่าเดิม แยกสภาวะตลาดออกจากการทำตามกฎ
1. ต้นทุนจริงมักถูกใส่ต่ำเกินไป
ควรใช้ Spread ตามเวลาและข้อมูล Bid/Ask ของบัญชีเมื่อมีข้อมูลเพียงพอ พร้อมทดสอบกรณีต้นทุนสูงแยกจากกรณีฐาน
ค่าคงที่หรือค่าเฉลี่ยอาจไม่สะท้อนช่วงที่กลยุทธ์ส่งคำสั่งจริง แต่ค่าสูงสุดที่เคยบันทึกได้ก็ไม่ใช่เพดานในอนาคต และไม่จำเป็นต้องใช้เป็นต้นทุนของทุกไม้
รวม Commission และค่าใช้จ่ายที่บัญชีเรียกเก็บ ตลอดจน Swap หากผ่านเวลาคิดยอดของสัญญา โดยใช้เครื่องหมายบวก/ลบและตัวคูณวันให้ถูกต้อง
2. แบบจำลองการได้รับคำสั่งอาจไม่ตรงของจริง
ขึ้นกับเครื่องมือและโหมดทดสอบ บางโหมดจำลองราคาที่เปลี่ยนระหว่างส่งคำสั่งกับดำเนินการได้ เช่น MT5 มีการตั้ง Execution Delay แต่ไม่แทนสภาพคล่องจริงทุกกรณี Slippage อาจเป็นบวกหรือลบ และต้องดูคำสั่งที่ไม่ได้รับหรือถูกปฏิเสธด้วย
3. ข้อได้เปรียบจากการเห็นอนาคต
เป็นหนึ่งในความเสี่ยงที่สำคัญของการทดสอบ
ถ้าขณะตัดสินใจคุณเห็นกราฟอนาคต หรือใช้ข้อมูลที่ยังไม่ประกาศในเวลานั้น ผลอาจเอนเอียงได้ แต่ Backtest ที่ออกแบบให้ใช้เฉพาะข้อมูล ณ เวลานั้นไม่ได้มีข้อผิดพลาดนี้โดยอัตโนมัติ
ความรู้นั้นแทรกเข้าไปในการตัดสินใจแม้คุณจะพยายามไม่ให้แทรก
คุณจะ “เห็น” สัญญาณตรงจุดที่มันได้ผล และ “ไม่เห็น” ตรงจุดที่มันไม่ได้ผล
จึงต้องตรวจการรั่วไหลของข้อมูลทั้งในการอ่านกราฟด้วยมือและในโค้ด เช่น ใช้ราคาปิดที่ยังไม่เกิด หรือใช้ Pivot ย้อนตำแหน่งก่อนรอแท่งยืนยันครบ
4. การทำตามไม่ครบ
การทดสอบด้วยมืออาจทำตามกฎไม่ครบเช่นกัน ส่วนโปรแกรมอาจมีบั๊ก เมื่อใช้เวลาจริงยังมีเรื่องการรอ การเชื่อมต่อ และการส่งคำสั่ง จึงต้องแยกผลตามกฎที่จำลองจากผลที่เกิดขึ้นจริง
ขั้นตอนที่ทำให้ผลเชื่อถือได้
- เขียนกฎและหมายเลขเวอร์ชันให้ครบก่อนเริ่ม หากพบข้อผิดพลาดให้หยุดตรวจ แก้เป็นเวอร์ชันใหม่ และแยกผลเก่าไว้ ไม่รวมเป็นกฎเดียวกัน
- แบ่งข้อมูลเป็นสองส่วน — ส่วนที่ใช้ปรับ และส่วนที่เก็บไว้ทดสอบ
- ใส่ต้นทุนตามแบบจำลองที่มีหลักฐาน และทดสอบกรณีต้นทุนสูงเพิ่มเติม
- บันทึกทุกไม้ ไม่ใช่เฉพาะที่จำได้
- ทดสอบจนถึงจำนวนไม้ที่กำหนดไว้ก่อน ไม่ใช่หยุดเมื่อผลดูดี
ข้อ 2 ช่วยแยกข้อมูลพัฒนาจากข้อมูลประเมิน แต่ไม่กำจัด Overfitting โดยเฉพาะเมื่อเลือกจากการลองหลายกลยุทธ์
วิธีทำ: เก็บข้อมูลช่วงหลังไว้โดยไม่ดูเลย ระหว่างที่ปรับกฎกับข้อมูลช่วงแรก
เมื่อกฎนิ่งแล้ว จึงเปิดข้อมูลที่เก็บไว้ทดสอบครั้งเดียว
⚠️ ถ้าผลออกมาไม่ดีแล้วกลับไปปรับกฎอีก — ข้อมูลชุดนั้นยังใช้พัฒนาและตรวจย้อนหลังได้ แต่ไม่ใช่ชุดทดสอบที่ไม่เคยเห็นสำหรับกฎที่ปรับต่อแล้ว ต้องมีข้อมูลใหม่สำหรับประเมินอีกครั้ง
ข้อ 5 สำคัญไม่แพ้กัน — การหยุดเมื่อผลดูดีคือการเลือกจุดจบที่เข้าข้างตัวเอง
ชุดข้อมูลที่ต้องเก็บเพื่อทดสอบซ้ำ
- ชื่อและเวอร์ชันกฎ สัญลักษณ์ สเปกสัญญา Timeframe และเขตเวลาของข้อมูล
- วันเริ่ม/สิ้นสุด ช่วงเตรียม Indicator ช่วงพัฒนากฎ และช่วงที่กันไว้ประเมิน
- วิธีจำลองราคาและคำสั่ง แหล่ง Bid/Ask, Commission, Swap, Delay และเงื่อนไขคำสั่งไม่สำเร็จ
- ผลทุกไม้รวมผลสุทธิและ Equity ระบุข้อมูลขาดหาย การเปลี่ยนสเปก และสมมติฐานที่ตรวจจริงไม่ได้
ถ้าแท่งเดียวแตะทั้ง SL และ TP แต่มีเพียง OHLC จะยังไม่รู้ลำดับจริง ห้ามเลือก TP ก่อนเพื่อให้ผลดี ใช้ข้อมูลละเอียดขึ้น หรือรายงานกรณีที่กำหนดอย่างอนุรักษ์นิยมพร้อมจำนวนไม้กำกวม
ปัญหาเรื่องคุณภาพข้อมูล
หากข้อมูลราคาที่ใช้ทดสอบมาจากโบรกเกอร์รายเดียว
ซึ่งแปลว่าราคาสูงสุด-ต่ำสุดของแท่งอาจไม่ตรงกับของโบรกเกอร์อื่น
ถ้ากลยุทธ์ของคุณอ่อนไหวต่อจุดที่ราคาแตะพอดี — ผลทดสอบอาจเปลี่ยนไปมากเมื่อใช้ข้อมูลจากแหล่งอื่น
วิธีตรวจ: ถ้าเป็นไปได้ ให้ทดสอบกับข้อมูลจากสองแหล่งแล้วเทียบผล
แล้วทองคำล่ะ
การทดสอบทองต้องตรวจสัญญาและต้นทุนของ XAU/USD ให้ตรงกับบัญชี
ความคลาดเคลื่อนไม่ได้จัดอันดับจากชื่อสินทรัพย์ได้เสมอ ต้องดูข้อมูลราคา ช่วงเวลา กฎเข้าออก และต้นทุนเมื่อเทียบกับระยะกำไร/ขาดทุน อ่านรายละเอียด ต้นทุนการเทรดทอง
ราคาและสเปกทองของแต่ละผู้ให้บริการอาจต่างกัน จึงต้องระบุแหล่งข้อมูลและไม่สลับสัญญาโดยไม่ตรวจ
สิ่งที่ต้องทำ:
• ใช้ Spread ตามเวลาเมื่อมีข้อมูล และทดสอบต้นทุนสูงแยกต่างหาก ไม่หัก Spread ซ้ำหากใช้ราคา Bid/Ask แล้ว
• ตรวจ Swap ฝั่ง Buy/Sell เวลาคิดยอดและตัวคูณวัน ไม่สมมติว่าเป็นค่าใช้จ่ายติดลบเสมอ และตรวจค่าใช้จ่ายอื่นของบัญชี Swap-free
• ใช้ Contract Size ของบัญชีที่จะเทรดจริง
คำถามที่พบบ่อย
ผลทดสอบดีแปลว่าจะได้กำไรไหม?
ไม่ — บอกได้แค่ว่าถ้าใช้กฎนี้ในช่วงนั้นจะได้อะไร ไม่ได้บอกว่าอนาคตจะเหมือนกัน
ควรทดสอบย้อนหลังกี่ปี?
สิ่งที่สำคัญกว่าจำนวนปีคือจำนวนไม้และความหลากหลายของสภาวะตลาด — อ่านต่อ
ทดสอบด้วยโปรแกรมดีกว่าด้วยมือไหม?
โปรแกรมช่วยทำซ้ำได้เร็วและตรวจคำสั่งตามโค้ด แต่ต้องตรวจบั๊กและจำนวนครั้งที่ลองกฎ ส่วนด้วยมือช่วยตรวจความชัดของการตัดสินใจ ทั้งสองแบบเสี่ยงต่อการเลือกผลที่เข้าข้างตัวเองได้
ต้องทดสอบทุกครั้งที่แก้กฎไหม?
ใช่ — เพราะผลของกฎเก่าใช้แทนกฎใหม่ไม่ได้ นี่คือเหตุผลที่ไม่ควรแก้กฎบ่อย
สรุป
1. ผลจริงอาจสูงหรือต่ำกว่า Backtest ต้องตรวจสาเหตุของความต่าง
2. ตรวจต้นทุน การได้รับคำสั่ง ข้อมูลอนาคต และการทำตามกฎ รวมถึงการเปลี่ยนของตลาด
3. แบ่งข้อมูลเป็นสองส่วน และเปิดส่วนที่เก็บไว้ครั้งเดียว
4. ใช้ต้นทุนที่ตรงข้อมูลและบัญชี พร้อมกรณีทดสอบความทนทาน
5. หยุดเมื่อถึงจำนวนไม้ที่กำหนด ไม่ใช่เมื่อผลดูดี
อ่านต่อ
- Manual Backtest บน MT5
- Overfitting และ Curve Fitting
- Sample Size เท่าไรจึงเชื่อถือได้
- Forward Testing
แหล่งอ้างอิง
- MetaQuotes — Strategy Testing: ข้อมูล การจำลอง Delay และ Forward split
- Bailey และคณะ — The Probability of Backtest Overfitting
- บทความนี้อธิบายหลักการและข้อจำกัดของการทดสอบย้อนหลัง ไม่ได้ยืนยันว่าการทดสอบตามวิธีนี้จะทำให้กลยุทธ์ทำกำไรได้ ค่าต้นทุนที่ใช้ในการทดสอบต้องมาจากบัญชีของผู้อ่านเอง
📘 บทความนี้เป็นส่วนหนึ่งของ บทเรียนที่ 14: Build → Test → Measure → Improve
📚 บทความถัดไป
Manual Backtest ทำอย่างไร? หลักการปิดอนาคต
คุณได้กำหนดสิ่งที่แบบจำลองต้องมีและข้อจำกัดที่ต้องเปิดเผย
บทถัดไปนำหลักการนี้ไปใช้กับการทดสอบด้วยมือและบันทึกการตัดสินใจก่อนเห็นผล
Share This Story, Choose Your Platform!
โฆษณาพันธมิตร: จำนวน $30 ในภาพไม่ยืนยันสิทธิ์ของทุกบัญชี ตรวจข้อเสนอที่แสดงสำหรับคุณและเงื่อนไขถอนกำไรก่อนสมัคร ดูวิธีตรวจสิทธิ์
ตรวจสิทธิ์ก่อนรับโบนัส
โบนัสและเงื่อนไขอาจต่างกันตามประเทศ ประเภทบัญชี และช่วงเวลา ตรวจข้อเสนอที่แสดงในบัญชีของคุณ พร้อมเงื่อนไขการใช้เครดิตและการถอนกำไรก่อนตัดสินใจ
บทความในหมวด บทเรียนที่ 13: Trading Strategy 🎯 เมื่อเรี […]
บทความในหมวด บทเรียนที่ 13: Trading Strategy 🎯 เมื่อเรี […]
บทความในหมวด บทเรียนที่ 13: Trading Strategy 🎯 เมื่อเรี […]


