หมวดหมู่
ประสิทธิภาพ
ระดับความยาก
ขั้นสูง
ใช้ใน
การแบ็กเทสต์การออกแบบกลยุทธ์การใช้งาน MT5

การวิเคราะห์ walk-forward

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

หรือ: WFA, การออปติไมซ์แบบ walk-forward, WFO, การทดสอบนอกตัวอย่างแบบเลื่อนหน้าต่าง

อัปเดต · ตรวจทาน · ตรวจทานโดย mt5depot research desk

อธิบายแบบเข้าใจง่าย

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

ทำไมจึงสำคัญ

การทดสอบนอกตัวอย่างครั้งเดียวตอบคำถามหนึ่งข้อได้หนึ่งครั้ง walk-forward ถามคำถามเดิมซ้ำในทุกก้าว และนั่นคือทางเดียวที่จะเห็นว่าความได้เปรียบรอดจากการฟิตใหม่ได้เรื่อย ๆ หรือรอดมาได้ครั้งเดียวเพราะโชค ยิ่งไปกว่านั้นมันยังซ้อมสิ่งที่ผู้นำ EA ไปใช้งานลงมือทำอยู่จริง ๆ นั่นคือเลือกพารามิเตอร์จากอดีตที่เพิ่งผ่านมา แล้วปล่อยมันเข้าสู่อนาคตที่ยังไม่มีใครเคยเห็น

  • มันให้คะแนนกระบวนการ ไม่ใช่ค่าตั้ง «ฟิตใหม่แบบนี้ แล้วค่อยเทรด» คือสิ่งที่คุณจะทำจริง ๆ ดังนั้นสิ่งที่คุ้มค่าแก่การตรวจสอบก็คือกระบวนการนั้นเอง
  • มันคืนค่าออกมาเป็นชุดผลลัพธ์นอกตัวอย่างแทนที่จะเป็นตัวเลขเดียว ไตรมาสเดียวที่หน้าตาสวยงามจึงแบกคำกล่าวอ้างทั้งหมดไว้เองไม่ได้
  • มันเปิดโปงค่าอินพุตที่ไม่ยอมอยู่นิ่ง เมื่อการฟิตใหม่ทุกรอบลงเอยที่จุดใหม่เสมอ กฎชุดนั้นกำลังวิ่งตามกลุ่มตัวอย่าง ไม่ใช่ตามตลาด
  • ช่วงที่กันไว้เพียงช่วงเดียวซ่อนคำถามเรื่องสภาวะตลาดเอาไว้ การค้นหาที่เราบันทึกไว้แปดครั้ง มีสองครั้งที่ผ่านหน้าต่างหลังการค้นหา แล้วไปล้มบนหน้าต่างก่อนหน้ามัน

ใช้ตรวจสอบความน่าเชื่อถือของกลยุทธ์

ใช้ที่ไหน

  • ตรวจสอบกลยุทธ์ที่คุณตั้งใจจะฟิตค่าอินพุตใหม่ตามรอบเวลาจริง ๆ
  • เลือกรอบการออปติไมซ์ใหม่ — ค่าอินพุตชุดหนึ่งยังใช้ได้นานแค่ไหนก่อนที่มันจะต้องถูกรีเฟรช
  • แยกความได้เปรียบที่รอดผ่านสภาวะตลาดหลายแบบ ออกจากความได้เปรียบที่เคยมีอยู่เฉพาะในหน้าต่างที่มันถูกจูนเท่านั้น
  • สร้างบันทึกนอกตัวอย่างที่ปกป้องตัวเองได้ ในกรณีที่ประวัติราคาสั้นเกินกว่าจะยอมสละบล็อกสำรองก้อนใหญ่ก้อนเดียว

ผลลัพธ์ที่น่าเชื่อถือเป็นอย่างไร

  • สิ่งที่ประกอบเป็นตัวเลขพาดหัวคือช่วงนอกตัวอย่างเท่านั้น ต่อกันจากปลายถึงปลาย โดยวางตัวเลขในตัวอย่างไว้ข้าง ๆ ไม่ใช่ผสมเข้าด้วยกัน
  • คุณกำหนดความยาวของช่วงฝึก ความยาวของช่วงทดสอบ และระยะก้าว ไว้ก่อนการรันครั้งแรก และทั้งสามค่านั้นเดินทางไปพร้อมกับผลลัพธ์
  • บทสรุปอ้างถึงประสิทธิภาพนอกตัวอย่าง — ผลงานนอกตัวอย่างคิดเป็นสัดส่วนของผลงานในตัวอย่าง — ไม่ใช่แค่กำไร
  • ทุกก้าวระบุค่าอินพุตที่มันเลือก ผู้อ่านจึงตัดสินได้ว่าค่าเหล่านั้นเร่ร่อนไปไกลแค่ไหน
  • จำนวนคอนฟิก walk-forward ที่ลองไปทั้งหมดปรากฏอยู่ที่ใดที่หนึ่ง เพราะการลองหลาย ๆ แบบก็เป็นการฟิตรูปแบบหนึ่งเช่นกัน

สัญญาณเตือน

  • ตัวเลขรวมค่าเดียว โดยไม่แยกครึ่งในตัวอย่างออกจากครึ่งนอกตัวอย่าง
  • ความยาวหน้าต่างที่ดูเหมือนถูกจูนมา คืออัตราส่วนช่วงฝึกต่อช่วงทดสอบที่ประหลาดโดยไม่มีใครอธิบาย
  • ค่าอินพุตที่กระโดดทุกครั้งที่ฟิตใหม่ ซึ่งแปลว่าการฟิตแต่ละรอบกำลังไล่ตามสัญญาณรบกวนของหน้าต่างก่อนหน้า
  • ประสิทธิภาพที่ใกล้หรือเกิน 100 % ซึ่งชี้ไปที่การรั่วไหลระหว่างหน้าต่างบ่อยกว่าชี้ไปที่กลยุทธ์ที่ทนทานผิดปกติมาก
  • การอ้างแบบตรึงจุดเริ่ม (anchored) กับแบบเลื่อน (rolling) สลับกันไปมา เพราะหน้าต่างที่ยืดยาวขึ้นกับหน้าต่างที่ความยาวคงที่ตอบคนละคำถามกัน

แบ็กเทสต์เทียบกับเทรดจริง

  • walk-forward ปิดช่องว่างกับผลบัญชีจริงได้ส่วนหนึ่ง เพราะกระบวนการที่ถูกทดสอบคือกระบวนการเดียวกับที่ถูกนำไปใช้
  • มันไม่แตะความเสี่ยงด้านการส่งคำสั่งเลย สลิปเพจ สเปรดที่ถ่างออก และความหน่วง ล้วนอยู่นอกแบบฝึกหัดนี้ทั้งหมด
  • มันสร้างสภาวะตลาดที่ประวัติราคาไม่เคยมีขึ้นมาเองไม่ได้ กลยุทธ์ที่รอดการฟิตใหม่ยี่สิบรอบภายในทศวรรษที่สงบเงียบเดียว จึงยังไม่เคยถูกทดสอบกับทศวรรษที่ตึงเครียด
  • ให้คาดหวังว่าผลบัญชีจริงจะอยู่ใกล้ชุดตัวเลขนอกตัวอย่าง ไม่ใช่ชุดในตัวอย่าง ตัวเลขในตัวอย่างมีไว้วินิจฉัยการค้นหา มันไม่ได้พยากรณ์อะไรเลย

วิธีตรวจสอบที่แนะนำ

  1. 1MetaTrader 5 ไม่ได้ให้ walk-forward แบบเลื่อนหน้าต่างมาด้วย ช่อง Forward บนแท็บ Settings ของ Strategy Tester ตัดช่วงเวลาให้เพียงครั้งเดียว — 1/2, 1/3, 1/4 หรือวันที่ที่กำหนดเอง — แล้วให้คะแนนพาสที่รอดชีวิตบนส่วนหาง โดยแสดงในแท็บ Forward Results แยกต่างหาก การรันหนึ่งครั้งซื้อได้เพียงหนึ่งก้าว
  2. 2จงประกอบชุดผลลัพธ์ด้วยมือ ทำการออปติไมซ์ซ้ำหนึ่งครั้งต่อหนึ่งก้าว แต่ละครั้งเลื่อนช่วงวันที่ไปตามระยะก้าว แล้วเก็บแถวผลฝั่ง forward ของทุกครั้งไว้ ยี่สิบช่วงต้องแลกด้วยการรันยี่สิบครั้ง ดังนั้นจงตกลงจำนวนก้าวให้เรียบร้อยก่อนเริ่ม
  3. 3เลือกเกณฑ์การออปติไมซ์ก่อนที่คุณจะมองกริด เพราะมันคือสิ่งที่ตัดสินว่า MT5 จะเรียกพาสไหนว่าผู้ชนะในทุก ๆ ก้าว Custom max ส่งการตัดสินใจนั้นผ่าน OnTester() เมื่อไม่มีเกณฑ์สำเร็จรูปตัวไหนตรงกับวิธีที่คุณใช้ตัดสินการรัน
  4. 4MT5 ตัดชิ้นส่วน forward ออกจากปลายของช่วงเสมอ หน้าต่างที่อยู่ก่อนช่วงฝึกทันทีจึงไม่เคยถูกทดสอบเลย จงรันหน้าต่างนั้นเอง บนชุดของเราเอง มันดักจับกลยุทธ์ที่ออกแบบไว้ได้สองตัว ซึ่งการตรวจฝั่ง forward โบกมือให้ผ่านไปแล้ว
  5. 5จงบันทึกค่าอินพุตที่ชนะทีละก้าว แท็บ Forward Results ยื่นพาสให้คุณหนึ่งพาส ไม่เคยยื่นเส้นทางการเดินของค่าตั้งข้ามก้าวให้ — และเส้นทางนั้นแหละคือสิ่งที่ค้นพบ
  6. 6จงถือแบบฝึกหัดทั้งหมดนี้เป็นการทดลองเดียว การรันมันใหม่ด้วยความยาวหน้าต่างชุดใหม่ไปเรื่อย ๆ จนกว่ามันจะผ่าน เป็นการเลื่อนการโอเวอร์ฟิตขึ้นไปอีกชั้นหนึ่ง ไม่ใช่การกำจัดมัน

ตัวอย่าง

หนึ่งก้าว จากงานที่เราบันทึกไว้เอง คือการค้นหาพารามิเตอร์แปดครั้งใน EXP-PARAM-SEARCH-OUTCOMES-001 เทมเพลต ichimoku ค้นกริด 12 ชุดค่าผสมบน H1 เก็บพาสในตัวอย่างที่ดีที่สุดของมันไว้ แล้วจึงได้เจอกับหน้าต่างสองบานที่การค้นหาไม่เคยแตะต้อง

กริดที่ค้นหา
12 ชุดค่าผสม
SL 30-80 x TP 60-250, H1
ตัวประกอบกำไรในตัวอย่าง
1.37
หน้าต่างหลังการค้นหา
0.89
หน้าต่างก่อนการค้นหา
0.80
การค้นหาที่บันทึกไว้ / ที่รับมาใช้
8 / 0

65 % ตกอยู่ในย่านที่บทความส่วนใหญ่เรียกว่าแข็งแรง แต่ค่าตั้งเดียวกันนั้นยังขาดทุนบนหน้าต่างที่มันไม่เคยเห็นทั้งสองบาน ด้วยเหตุนี้หนึ่งก้าวจึงอ่านได้เป็นจุดข้อมูลหนึ่งจุด ไม่ใช่คำตัดสิน

การคำนวณ 0.89 หารด้วย 1.37 = ประสิทธิภาพ 65 % บนก้าวนั้น; 0.80 หารด้วย 1.37 = 58 % บนหน้าต่างก่อนหน้า

ผลลัพธ์ ประสิทธิภาพ 65 % — บนค่าตั้งที่เราปฏิเสธจะปล่อยออกไป

ตีความอย่างไร

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

ช่วงค่า ความหมาย
ต่ำกว่าราว 40 % การค้นหาส่วนใหญ่ฟิตเข้ากับหน้าต่างของตัวมันเอง ความได้เปรียบเล็ก ๆ อาจรอดอยู่ แต่ไม่ใช่ความได้เปรียบที่ถูกโฆษณาไว้
ราว 40-60 % ธรรมดา เมื่อค่าอินพุตหลายตัวขยับ จงวางแผนรอบตัวเลขนอกตัวอย่าง ไม่ใช่ตัวเลขในตัวอย่าง
เกิน 60 % บนก้าวเดียว น่ายินดี แต่ไม่ใช่คำตัดสิน ก้าว 65 % ของเราก็ยังขาดทุนบนหน้าต่างที่มันไม่เคยเห็นทั้งสองบาน
เกิน 60 % ในก้าวส่วนใหญ่ และค่าอินพุตนิ่ง แข็งแรง การฟิตใหม่ยังใช้ได้เรื่อย ๆ และการฟิตแต่ละรอบก็เห็นตรงกันเรื่องค่าตั้ง
ใกล้หรือเกิน 100 % ให้สงสัยการรั่วไหลระหว่างหน้าต่าง การมองล่วงหน้า หรือจำนวนช่วงที่น้อยเกินกว่าจะมีความหมาย
  • จงนับจำนวนช่วง สี่ช่วงคือเรื่องเล่า ยี่สิบช่วงคือการแจกแจง
  • จงพล็อตค่าอินพุตที่ถูกเลือกข้ามก้าวต่าง ๆ จุดเหมาะสมที่เร่ร่อนกำลังบอกคุณว่ามันคือสัญญาณรบกวน
  • อย่าผสมเส้นทุนในตัวอย่างกับนอกตัวอย่างเข้าเป็นเส้นเดียว ส่วนผสมนั้นครึ่งหนึ่งเป็นข้อสอบ อีกครึ่งเป็นเฉลย
  • จงทดสอบหน้าต่างที่อยู่ก่อนช่วงฝึกด้วย การค้นหาสองในแปดครั้งของเราผ่านไปข้างหน้าแต่ล้มเมื่อย้อนกลับ

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

ความเข้าใจผิดที่พบบ่อย

เรียกการรัน Forward ของ MT5 หนึ่งครั้งว่า walk-forward

ช่อง Forward แบ่งช่วงเวลาเพียงครั้งเดียวและรายงานส่วนหาง นั่นคือการกันข้อมูลไว้ก้อนเดียวแบบตรึงจุดเริ่ม เพียงแต่มีแท็บที่เรียบร้อยกว่า และมันตอบคำถามได้เพียงครั้งเดียว walk-forward ต้องการให้จุดแบ่งเคลื่อนที่ ซึ่งใน MT5 แปลว่าคุณต้องขับลูปนั้นเอง คือออปติไมซ์หนึ่งครั้งต่อหนึ่งก้าว แล้วรวบรวมแถวฝั่ง forward เข้าเป็นชุดผลลัพธ์

จูนตัวคอนฟิกของ walk-forward เสียเอง

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

อ่านตัวเลขนอกตัวอย่างที่สูงว่าดีโดยอัตโนมัติ

การค้นหา macd_signal ของเราไปถึง 1.14-1.15 บนหน้าต่างหลังการค้นหา และ 0.74-0.77 บนหน้าต่างก่อนหน้ามัน ตัวเลขนอกตัวอย่างที่สูงอาจหมายถึงการรั่วไหล สภาวะตลาดที่เอื้ออำนวย หรือจำนวนช่วงที่น้อยเกินไป — จงสอบสวนก่อนจะฉลอง

คิดว่า walk-forward พิสูจน์ความทนทานต่อสภาพที่ไม่เคยเห็น

มันทดสอบได้เพียงสภาพที่ประวัติราคาบรรจุไว้เท่านั้น การฟิตใหม่ยี่สิบรอบภายในสภาวะตลาดเดียวให้ผลลัพธ์ยี่สิบชุดจากสภาวะนั้น ซึ่งไม่ได้บอกอะไรเลยเกี่ยวกับสภาวะถัดไป

รายละเอียดเพิ่มเติม

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

จะรันการวิเคราะห์ walk-forward ใน MetaTrader 5 ได้อย่างไร
MT5 ให้ชิ้นส่วนมา ไม่ได้ให้ลูปมา ตั้งค่า Forward บนแท็บ Settings ของ Strategy Tester เป็น 1/2, 1/3 หรือ 1/4 โปรแกรมทดสอบจะออปติไมซ์บนส่วนหน้าของช่วงวันที่ของคุณ แล้วให้คะแนนพาสที่รอดชีวิตบนส่วนหาง ซึ่งมันจะแสดงไว้ในแท็บ Forward Results ของมันเอง นั่นคือหนึ่งก้าว หากต้องการชุดผลลัพธ์ ให้เลื่อนช่วงวันที่ทั้งช่วงไปข้างหน้าตามระยะก้าว แล้วรันการออปติไมซ์อีกครั้ง หนึ่งครั้งต่อหนึ่งช่วง พร้อมบันทึกแถวฝั่ง forward และค่าอินพุตที่ชนะทุกครั้ง ยี่สิบช่วงหมายถึงยี่สิบรัน
ความยาวของหน้าต่างในตัวอย่างและนอกตัวอย่างควรเป็นเท่าไร
ยาวพอที่หน้าต่างฝึกจะบรรจุสภาวะตลาดมากกว่าหนึ่งแบบ และหน้าต่างทดสอบจะบรรจุออเดอร์มากพอที่จะมีความหมาย อัตราส่วนสำเร็จรูปในโปรแกรมทดสอบ — 1/2, 1/3 และ 1/4 — เป็นจุดตั้งต้นที่สมเหตุสมผล ส่วนวันที่ forward ที่กำหนดเองให้ชิ้นทดสอบที่สั้นลงเมื่อระยะก้าวเล็ก กฎสำคัญกว่าตัวเลข จงเลือกอัตราส่วนก่อนการรันครั้งแรก เพราะการลองหลายแบบแล้วเผยแพร่แบบที่ดีที่สุดคือการทำผิดซ้ำในสิ่งที่ walk-forward มีอยู่เพื่อจับ
การวิเคราะห์ walk-forward กำจัดการโอเวอร์ฟิตได้หรือไม่
ไม่ได้ มันย้ายที่ของมันและทำให้มองเห็นได้ การฟิตใหม่ยังคงเกิดขึ้นภายในหน้าต่างฝึกแต่ละบาน วิธีนี้จึงวัดว่าการฟิตนั้นรอดจากการปะทะกับหน้าต่างถัดไปได้มากแค่ไหน แทนที่จะป้องกันมัน การค้นหาแปดครั้งที่เราบันทึกไว้เองรันชุดค่าผสมพารามิเตอร์ 116 ชุด และไม่รับมาใช้เลยสักชุด สองในนั้นผ่านหน้าต่างหลังการค้นหาแล้วไปล้มบนหน้าต่างก่อนหน้ามัน ซึ่งคือรูปแบบที่การกันข้อมูลไว้ก้อนเดียวซ่อนไว้พอดี
ประสิทธิภาพนอกตัวอย่างเท่าไรจึงถือว่าดี
ราว 40-60 % ถือว่าธรรมดาเมื่อค่าอินพุตไม่กี่ตัวขยับ ส่วนตัวเลขเกิน 60 % ที่ยืนได้ในก้าวส่วนใหญ่พร้อมค่าอินพุตที่นิ่ง ถือว่าแข็งแรง จงมองก้าวเดี่ยว ๆ ก้าวใดก็ตามด้วยความระแวง การค้นหาที่ฟิตได้ดีที่สุดของเราอ่านได้ 65 % บนก้าวหนึ่ง แต่ค่าตั้งที่มันเลือกก็ยังขาดทุนบนหน้าต่างที่มันไม่เคยเห็นทั้งสองบาน ตัวเลขที่ใกล้หรือเกิน 100 % ส่งสัญญาณถึงการรั่วไหลระหว่างหน้าต่างฝึกกับหน้าต่างทดสอบบ่อยกว่าส่งสัญญาณถึงกลยุทธ์ที่ทนทานผิดปกติ
ควรใช้เกณฑ์การออปติไมซ์ตัวไหนจัดอันดับพาส
จงตัดสินใจก่อนที่กริดจะปรากฏ เพราะเกณฑ์นั้น — หรือฟังก์ชันวัตถุประสงค์ ในวรรณกรรมที่กว้างกว่า — เป็นตัวเลือกพาสที่ชนะในทุกก้าว การจัดอันดับตามยอดคงเหลือให้รางวัลกับพาสที่รับความเสี่ยงมากที่สุด การจัดอันดับตามดรอว์ดาวน์ให้รางวัลกับพาสที่เทรดน้อยที่สุด และ Custom max ยื่นการตัดสินใจให้ OnTester() ของคุณเองเมื่อไม่มีอันไหนเหมาะ ในการค้นหาที่เราบันทึกไว้ การจัดอันดับของโปรแกรมทดสอบไม่เคยตัดสินอะไรได้ด้วยตัวเองเลย ทุกพาสที่รอดชีวิตยังต้องรักษาตัวประกอบกำไรให้เกิน 1.0 บนหน้าต่างสามบาน และไม่มีสักครั้งในแปดครั้งที่ทำได้
การวิเคราะห์ walk-forward ต่างจากการทดสอบนอกตัวอย่างครั้งเดียวอย่างไร
การทดสอบครั้งเดียวกันข้อมูลไว้หนึ่งก้อน แล้วตรวจพารามิเตอร์ชุดสุดท้ายกับก้อนนั้นหนึ่งครั้ง walk-forward ทำวงจรจูนแล้วทดสอบซ้ำไปตลอดประวัติราคาทั้งเส้น มันจึงคืนค่าออกมาเป็นชุดผลลัพธ์นอกตัวอย่าง และทดสอบตัวกระบวนการฟิตใหม่เอง — สิ่งที่คนนำ EA ไปใช้จริงลงมือทำเดือนแล้วเดือนเล่า