บทความในหมวด บทเรียนที่ 14: ทดสอบและวัดผล

🎯 เมื่อเรียนบทเรียนนี้จบ คุณจะ

  • แยกผลย้อนหลังออกจากสิ่งที่เกิดจริงในอนาคต
  • ตรวจต้นทุน การได้รับคำสั่ง และการรั่วไหลของข้อมูล
  • แบ่งข้อมูลพัฒนากับประเมิน พร้อมบันทึกเวอร์ชัน
  • เตรียมรายการข้อมูลที่ทำให้ทดสอบซ้ำได้

Backtesting คือการนำกฎของกลยุทธ์ไปทดสอบกับข้อมูลราคาในอดีต เพื่อดูว่าถ้าใช้กฎนี้ในช่วงนั้นจะได้ผลอย่างไร

สิ่งที่ต้องเข้าใจก่อนอย่างอื่นคือ — ผลจริงอาจดีกว่าหรือแย่กว่าผลทดสอบได้ ต้องตรวจว่าความต่างมาจากตลาด ต้นทุน ข้อมูล แบบจำลอง หรือการทำตามกฎ

Backtest ตอบอะไรได้และตอบอะไรไม่ได้

✅ ตอบได้ ❌ ตอบไม่ได้
กฎนี้ให้ผลอย่างไรในช่วงเวลาที่ทดสอบ อนาคตจะเหมือนช่วงนั้นหรือไม่
เกิดไม้ประมาณกี่ไม้ในช่วงเวลาหนึ่ง คุณจะทำตามกฎได้ครบหรือไม่
Drawdown ที่เคยเกิดในช่วงนั้น Drawdown สูงสุดที่เป็นไปได้
กฎที่เขียนไว้ชัดพอจะทดสอบหรือไม่ กลยุทธ์นี้จะทำกำไรได้หรือไม่

แถวสุดท้ายในคอลัมน์ซ้ายมีค่ามากกว่าที่คนคิด

เมื่อคุณเริ่มทดสอบ คุณจะพบทันทีว่ากฎบางข้อตีความได้หลายแบบ

และคุณต้องกลับไปแก้ให้ชัดขึ้นก่อนทดสอบต่อ

กระบวนการนี้เองทำให้ Trading Plan ของคุณดีขึ้น แม้ผลทดสอบจะยังไม่ออก

ช่องว่างระหว่างผลทดสอบกับผลจริง

ข้อมูลและกฎ

ตรวจข้อมูล ณ เวลาตัดสินใจ เวอร์ชัน และช่วงที่ใช้เลือกกฎ

ต้นทุนและคำสั่ง

ตรวจ Spread, Commission, Swap, Slippage และคำสั่งที่ไม่ได้รับ

ตลาดและการใช้งาน

ผลจริงอาจสูงหรือต่ำกว่าเดิม แยกสภาวะตลาดออกจากการทำตามกฎ

1. ต้นทุนจริงมักถูกใส่ต่ำเกินไป

ควรใช้ Spread ตามเวลาและข้อมูล Bid/Ask ของบัญชีเมื่อมีข้อมูลเพียงพอ พร้อมทดสอบกรณีต้นทุนสูงแยกจากกรณีฐาน

ค่าคงที่หรือค่าเฉลี่ยอาจไม่สะท้อนช่วงที่กลยุทธ์ส่งคำสั่งจริง แต่ค่าสูงสุดที่เคยบันทึกได้ก็ไม่ใช่เพดานในอนาคต และไม่จำเป็นต้องใช้เป็นต้นทุนของทุกไม้

รวม Commission และค่าใช้จ่ายที่บัญชีเรียกเก็บ ตลอดจน Swap หากผ่านเวลาคิดยอดของสัญญา โดยใช้เครื่องหมายบวก/ลบและตัวคูณวันให้ถูกต้อง

📖 ต้นทุนแฝงที่มือใหม่มองข้าม

2. แบบจำลองการได้รับคำสั่งอาจไม่ตรงของจริง

ขึ้นกับเครื่องมือและโหมดทดสอบ บางโหมดจำลองราคาที่เปลี่ยนระหว่างส่งคำสั่งกับดำเนินการได้ เช่น MT5 มีการตั้ง Execution Delay แต่ไม่แทนสภาพคล่องจริงทุกกรณี Slippage อาจเป็นบวกหรือลบ และต้องดูคำสั่งที่ไม่ได้รับหรือถูกปฏิเสธด้วย

📖 Slippage คืออะไร

3. ข้อได้เปรียบจากการเห็นอนาคต

เป็นหนึ่งในความเสี่ยงที่สำคัญของการทดสอบ

ถ้าขณะตัดสินใจคุณเห็นกราฟอนาคต หรือใช้ข้อมูลที่ยังไม่ประกาศในเวลานั้น ผลอาจเอนเอียงได้ แต่ Backtest ที่ออกแบบให้ใช้เฉพาะข้อมูล ณ เวลานั้นไม่ได้มีข้อผิดพลาดนี้โดยอัตโนมัติ

ความรู้นั้นแทรกเข้าไปในการตัดสินใจแม้คุณจะพยายามไม่ให้แทรก

คุณจะ “เห็น” สัญญาณตรงจุดที่มันได้ผล และ “ไม่เห็น” ตรงจุดที่มันไม่ได้ผล

จึงต้องตรวจการรั่วไหลของข้อมูลทั้งในการอ่านกราฟด้วยมือและในโค้ด เช่น ใช้ราคาปิดที่ยังไม่เกิด หรือใช้ Pivot ย้อนตำแหน่งก่อนรอแท่งยืนยันครบ

📖 วิธีลดปัญหานี้ด้วยการปิดส่วนที่ยังไม่เกิด

4. การทำตามไม่ครบ

การทดสอบด้วยมืออาจทำตามกฎไม่ครบเช่นกัน ส่วนโปรแกรมอาจมีบั๊ก เมื่อใช้เวลาจริงยังมีเรื่องการรอ การเชื่อมต่อ และการส่งคำสั่ง จึงต้องแยกผลตามกฎที่จำลองจากผลที่เกิดขึ้นจริง

ขั้นตอนที่ทำให้ผลเชื่อถือได้

  1. เขียนกฎและหมายเลขเวอร์ชันให้ครบก่อนเริ่ม หากพบข้อผิดพลาดให้หยุดตรวจ แก้เป็นเวอร์ชันใหม่ และแยกผลเก่าไว้ ไม่รวมเป็นกฎเดียวกัน
  2. แบ่งข้อมูลเป็นสองส่วน — ส่วนที่ใช้ปรับ และส่วนที่เก็บไว้ทดสอบ
  3. ใส่ต้นทุนตามแบบจำลองที่มีหลักฐาน และทดสอบกรณีต้นทุนสูงเพิ่มเติม
  4. บันทึกทุกไม้ ไม่ใช่เฉพาะที่จำได้
  5. ทดสอบจนถึงจำนวนไม้ที่กำหนดไว้ก่อน ไม่ใช่หยุดเมื่อผลดูดี

ข้อ 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 ของบัญชีที่จะเทรดจริง

📖 บทเรียนที่ 12: Gold / XAU/USD

คำถามที่พบบ่อย

ผลทดสอบดีแปลว่าจะได้กำไรไหม?
ไม่ — บอกได้แค่ว่าถ้าใช้กฎนี้ในช่วงนั้นจะได้อะไร ไม่ได้บอกว่าอนาคตจะเหมือนกัน

ควรทดสอบย้อนหลังกี่ปี?
สิ่งที่สำคัญกว่าจำนวนปีคือจำนวนไม้และความหลากหลายของสภาวะตลาด — อ่านต่อ

ทดสอบด้วยโปรแกรมดีกว่าด้วยมือไหม?
โปรแกรมช่วยทำซ้ำได้เร็วและตรวจคำสั่งตามโค้ด แต่ต้องตรวจบั๊กและจำนวนครั้งที่ลองกฎ ส่วนด้วยมือช่วยตรวจความชัดของการตัดสินใจ ทั้งสองแบบเสี่ยงต่อการเลือกผลที่เข้าข้างตัวเองได้

ต้องทดสอบทุกครั้งที่แก้กฎไหม?
ใช่ — เพราะผลของกฎเก่าใช้แทนกฎใหม่ไม่ได้ นี่คือเหตุผลที่ไม่ควรแก้กฎบ่อย

สรุป

1. ผลจริงอาจสูงหรือต่ำกว่า Backtest ต้องตรวจสาเหตุของความต่าง

2. ตรวจต้นทุน การได้รับคำสั่ง ข้อมูลอนาคต และการทำตามกฎ รวมถึงการเปลี่ยนของตลาด

3. แบ่งข้อมูลเป็นสองส่วน และเปิดส่วนที่เก็บไว้ครั้งเดียว

4. ใช้ต้นทุนที่ตรงข้อมูลและบัญชี พร้อมกรณีทดสอบความทนทาน

5. หยุดเมื่อถึงจำนวนไม้ที่กำหนด ไม่ใช่เมื่อผลดูดี

อ่านต่อ

แหล่งอ้างอิง

  • บทความนี้อธิบายหลักการและข้อจำกัดของการทดสอบย้อนหลัง ไม่ได้ยืนยันว่าการทดสอบตามวิธีนี้จะทำให้กลยุทธ์ทำกำไรได้ ค่าต้นทุนที่ใช้ในการทดสอบต้องมาจากบัญชีของผู้อ่านเอง

📘 บทความนี้เป็นส่วนหนึ่งของ บทเรียนที่ 14: Build → Test → Measure → Improve

คำเตือนความเสี่ยง: การซื้อขาย Forex และ CFD มีความเสี่ยงสูง ผลการทดสอบย้อนหลังไม่ได้เป็นเครื่องรับประกันผลลัพธ์ในอนาคต ผลจริงอาจแตกต่างจากแบบจำลองทั้งด้านผลตอบแทนและความเสี่ยง เนื้อหานี้จัดทำเพื่อการศึกษาเท่านั้น

📚 บทความถัดไป

Manual Backtest ทำอย่างไร? หลักการปิดอนาคต

คุณได้กำหนดสิ่งที่แบบจำลองต้องมีและข้อจำกัดที่ต้องเปิดเผย

บทถัดไปนำหลักการนี้ไปใช้กับการทดสอบด้วยมือและบันทึกการตัดสินใจก่อนเห็นผล

Share This Story, Choose Your Platform!

โฆษณาพันธมิตร: จำนวน $30 ในภาพไม่ยืนยันสิทธิ์ของทุกบัญชี ตรวจข้อเสนอที่แสดงสำหรับคุณและเงื่อนไขถอนกำไรก่อนสมัคร ดูวิธีตรวจสิทธิ์

ตรวจสิทธิ์ก่อนรับโบนัส

โบนัสและเงื่อนไขอาจต่างกันตามประเทศ ประเภทบัญชี และช่วงเวลา ตรวจข้อเสนอที่แสดงในบัญชีของคุณ พร้อมเงื่อนไขการใช้เครดิตและการถอนกำไรก่อนตัดสินใจ

ดูวิธีตรวจสิทธิ์โบนัส

โบนัสเทรดฟรี ไม่ต้องฝากเงิน

ตรวจสิทธิ์และเงื่อนไขก่อนรับโบนัส การถอนกำไรขึ้นอยู่กับข้อกำหนดของข้อเสนอและบัญชี ไม่ใช่ทุกคนจะมีสิทธิ์รับโบนัส

บทความที่เกี่ยวข้อง