คุณรันแบ็คเทสต์บน MT5 ด้วยการเปิด Strategy Tester จาก View > Strategy Tester (หรือ Ctrl+R) เลือก Expert Advisor สัญลักษณ์ ไทม์เฟรม ช่วงวันที่ และโหมดการจำลอง แล้วกด Start ห้านาทีต่อมาคุณก็ได้รายงานมาหนึ่งฉบับ คำถามที่เร่งด่วนจึงไม่ใช่วิธีไปให้ถึงตรงนั้น แต่คือตัวเลขไหนในรายงานฉบับนั้นที่หมายความอย่างที่คุณคิดว่ามันหมายความ
คู่มือนี้ทำทั้งสองครึ่ง คือขั้นตอนการรัน และการอ่านผล การอ่านผลคือที่มาของหลักฐานในหน้านี้ เพราะเรามีการรันที่เสร็จแล้ว 23 ครั้งอยู่ในบันทึก และรายงานของมันขัดแย้งกันเองในแบบที่แทบไม่มีใครตรวจ
สิ่งที่คุณจะได้จากการรันที่เสร็จสมบูรณ์
ผลผลิตคือรายงานหนึ่งฉบับที่มีสองครึ่ง คือบล็อกผลลัพธ์ (จำนวนเทรด profit factor ดรอว์ดาวน์ กำไรสุทธิ) กับรายการเทรดที่อยู่เบื้องหลังมัน ทั้งสองส่วนสำคัญ แต่มีเพียงส่วนแรกเท่านั้นที่ถูกยกมาพูดถึง
สิ่งที่คุณควรพูดได้เมื่อจบไม่ใช่ “มันทำเงินได้ $3,023” แต่คือ ชุดกฎนี้ บนสัญลักษณ์และไทม์เฟรมนี้ ตลอดหน้าต่างเวลานี้ ด้วยโมเดลติกนี้ บนบัญชี $10,000 สร้างการเทรดจำนวนเท่านี้ ที่ profit factor เท่านี้ โดยเคยจมอยู่ใต้น้ำลึกที่สุดเท่านี้ ทุกวรรคในประโยคนั้นคือการตั้งค่าที่คุณเลือกเอง และการเปลี่ยนอย่างใดอย่างหนึ่งก็เปลี่ยนคำตอบ นั่นคือเหตุผลว่าทำไมการตั้งค่าจึงมาก่อนขั้นตอนการรันในหน้านี้
การตั้งค่า: ข้อมูลและค่าที่เป็นตัวชี้ขาดคำตอบ
นี่คือการรันจริงหนึ่งครั้งที่เรารันและเผยแพร่ ยกมาให้คุณถือค่าที่ป้อนเข้าไปกับผลที่ได้ออกมาเทียบกันได้ มันคือบันทึกที่อยู่เบื้องหลัง Stillwater กลยุทธ์ฝั่งซื้ออย่างเดียวบน USD/JPY กราฟ 5 นาที
| การตั้งค่า | การรันครั้งนี้ | ทำไมจึงตั้งแบบนั้น |
|---|---|---|
| Expert | Stillwater (19 อินพุต) | ทุกอินพุตที่ตรวจสอบแล้วว่ารายงานพกมาด้วย คือพื้นผิวที่คุณต้องป้อนซ้ำถ้าจะทำซ้ำการรันนี้ |
| สัญลักษณ์ | USDJPY_DUKA | สัญลักษณ์เฉพาะสำหรับประวัติติก แยกจากตัวที่ใช้ราคาสด การรันจึงทำซ้ำได้ |
| คาบเวลา | M5 | กราฟที่กฎใช้ประเมิน ส่วนฟิลเตอร์เทรนด์อ่าน M30 จากข้างใน EA |
| ช่วงวันที่ | 2019-01-01 → 2026-07-01 | 7.5 ปี ยาวพอจะบรรจุสภาวะตลาดได้มากกว่าหนึ่งแบบ |
| Modelling | Every tick based on real ticks (Model 4) | อะไรที่เทรดจบภายในวันต้องการเส้นทางราคาในแท่งที่วัดจริง ไม่ใช่ที่ประมาณค่าขึ้นมา |
| Deposit | 10,000 USD | คงที่ทุกการรันที่นี่ เปอร์เซ็นต์ดรอว์ดาวน์จึงเทียบกันได้ |
| เลเวอเรจ | ขอไว้ 1:500 — รันจริงที่ 1:100 | ดูด้านล่าง ข้อนี้ไม่ใช่อย่างที่มันดูเหมือน |
| Optimisation | ปิดไว้ | รันผ่านเดียว การค้นหาพารามิเตอร์เป็นงานคนละอย่างที่มีกับดักคนละชุด |
สองแถวในนั้นสมควรได้พื้นที่มากกว่าหนึ่งช่องตาราง
คุณภาพข้อมูลคือการตั้งค่าที่ผลลัพธ์ทั้งหมดวางอยู่บนมัน ตัวเลขอื่นทุกตัวในรายงานถูกคำนวณบนชุดราคาที่เทสเตอร์ใช้ ค่าคุณภาพการจำลองจึงเป็นตัวกำหนดขอบเขตว่ารายงานที่เหลือพูดถึงกลยุทธ์ของคุณจริงแค่ไหน บันทึกที่เผยแพร่ของการรันข้างบนระบุคุณภาพประวัติ 100% บนติกจริง 229 ล้านติก อ่านตรงมาจากรายงานของเทสเตอร์ การรันบนข้อมูลแท่งที่ประมาณค่าขึ้นมาจะให้ชุดเทรดที่ต่างออกไป ไม่ใช่แค่ราคาจับคู่ที่ต่างออกไป เพราะเทสเตอร์สมมติเส้นทางราบเรียบระหว่างราคาที่มันรู้ และกลยุทธ์ที่มีจุดตัดขาดทุนแคบก็เทรดอยู่บนข้อสมมตินั้นพอดี ถ้าคุณยังไม่ได้อ่านว่าเทอร์มินัลของคุณถือข้อมูลติกของสัญลักษณ์นั้นไว้แค่ไหน นั่นคือสิ่งแรกที่ต้องตรวจ ก่อนจะไปตรวจกลยุทธ์
ช่องเลเวอเรจคือคำขอ ไม่ใช่การตั้งค่า ในการรันทั้ง 23 ครั้งที่มีบันทึก เทสเตอร์ถูกขอไว้ที่ 1:500 แต่การทดสอบรันจริงที่ 1:100 — 0 จาก 23 ครั้งที่ค่าซึ่งขอไว้มีผลจริง และนั่นไม่ใช่การเดาจากการอ่านค่าย้อนกลับ แต่ตรึงไว้ด้วยการวัดมาร์จิ้นที่โพซิชันกินไปจริงในการทดสอบ คือ 126.39 USD ซึ่งตรงกับการคำนวณที่เลเวอเรจ 100 ไม่ใช่ที่ 500 ผลในทางปฏิบัติคือ ดีไซน์ที่อ่อนไหวต่อมาร์จิ้น ไม่ว่าจะเป็นกริด มาร์ติงเกล หรืออะไรก็ตามที่ซ้อนโพซิชันกันขึ้นไป อาจผ่านแบ็คเทสต์ที่เลเวอเรจซึ่งมันจะไม่มีวันได้เจอ หรือไม่ผ่านที่เลเวอเรจซึ่งมันจะไม่ได้ใช้ ให้ตรวจตัวเลขมาร์จิ้นในรายงานเทียบกับการคำนวณของคุณเอง แทนที่จะเชื่อช่องที่คุณพิมพ์ลงไป
ทีละขั้น: รันการทดสอบใน MT5
- เปิด View > Strategy Tester (
Ctrl+R) แผงจะเทียบท่าอยู่ด้านล่างของเทอร์มินัล โดยมี Settings, Inputs, Agents และ Journal เป็นแท็บของมัน - ที่แท็บ Settings เลือก Expert Advisor แล้วเลือก Symbol และ Period เลือกสัญลักษณ์ที่คุณจะเทรดจริง เพราะสเปกไม่ใช่แค่ราคามาจากมัน และขนาดสัญญากับกฎมาร์จิ้นก็ต่างกันระหว่างสัญลักษณ์หลายเวอร์ชันของคู่เดียวกันในโบรกเกอร์เดียวกัน
- ตั้งช่วงวันที่ ใช้ช่วงกำหนดเองที่ระบุวันเริ่มและวันจบชัดเจน แทนที่จะใช้ “เดือนที่แล้ว” การรันจึงถูกทำซ้ำได้โดยคนที่อ่านแค่รายงานของคุณ
- เลือกโหมด Modelling ใช้ Every tick based on real ticks กับอะไรก็ตามที่เทรดในวัน ใช้ Every tick ที่สร้างจากแท่ง M1 กับระบบที่ช้ากว่า ส่วนโหมดที่หยาบกว่านั้นมีไว้กวาดพารามิเตอร์ ไม่ใช่มีไว้สร้างตัวเลขที่คุณจะเผยแพร่
- ตั้ง Deposit สกุลเงิน และเลเวอเรจ แล้วปล่อย Optimisation ปิดไว้สำหรับการรันผ่านแรก จดเลเวอเรจที่คุณขอไว้ด้วย เพราะคุณจะต้องตรวจมันเทียบกับตัวเลขมาร์จิ้นในรายงาน แทนที่จะสมมติเอา
- เปิดแท็บ Inputs แล้วอ่านทุกค่า นี่คือแท็บที่พกการแก้ไขจากการรันครั้งก่อนติดมาแบบเงียบ ๆ และเป็นเหตุผลที่บันทึกของเราตรวจอินพุตเทียบกับรายงานที่เสร็จแล้ว แทนที่จะเทียบกับไฟล์ที่เราคิดว่าโหลดเข้าไป การรันหนึ่งครั้งในชุดนี้พกอินพุตมา 362 ตัว
- กด Start ปล่อย Visual mode ปิดไว้ ยกเว้นตอนไล่หาปัญหาของตรรกะการเข้า เพราะมันช้ากว่ามากและมันล่อให้คุณนั่งดูแทนที่จะวัด
- เมื่อรันจบ ให้เปิดแท็บ Results, Graph และ Backtest แล้วคลิกขวาในรายงานเพื่อบันทึกมันไว้ รายงานที่บันทึกไว้ ไม่ใช่ภาพหน้าจอของเส้นทุน คือสิ่งที่คุณจะเอามาเทียบทีหลัง
- บันทึกบิลด์ของเทอร์มินัลไว้ข้างผลลัพธ์ การรัน 23 ครั้งของเราพาดอยู่บนบิลด์ 6090 และ 6140 การรันกลยุทธ์เดียวกันสองครั้งบนคนละบิลด์ไม่ได้เป็นการทดลองเดียวกันโดยอัตโนมัติ
- ตรวจว่าสัญลักษณ์นั้นถือประวัติราคาไว้แค่ไหนจริง ๆ
- เลือกโหมดการจำลองให้เข้ากับระยะเวลาถือครอง
- ตั้งสัญลักษณ์ คาบเวลา และช่วงวันที่ที่ระบุชัด
- อ่านทุกค่าบนแท็บ Inputs
- รันผ่านเดียวโดยปิดการค้นหาพารามิเตอร์
- บันทึกรายงาน ไม่ใช่ภาพหน้าจอ
- อ่านดรอว์ดาวน์ทั้งสองบรรทัดก่อนอ่านบรรทัดกำไร
อ่านผลลัพธ์: ตัวเลขในรายงานหมายถึงอะไรจริง ๆ
หยิบผลของการรันเดียวกันนั้นมาดู นี่คือสิ่งที่ได้กลับมา
| ผลลัพธ์ | ค่า | สิ่งที่มันต้องผ่านก่อนคุณจะไปต่อ |
|---|---|---|
| จำนวนเทรดทั้งหมด | 416 | มากพอที่ค่าเฉลี่ยกำลังอธิบายกลุ่มตัวอย่าง ไม่ใช่เรื่องเล่า |
| profit factor | 1.28 | สูงกว่า 1.0 ด้วยระยะที่รอดจากต้นทุนซึ่งคุณไม่ได้จำลองไว้ |
| กำไรสุทธิ | 3,023.01 USD | บนเงินฝาก 10,000 — เป็นผลตอบแทน ไม่ใช่คะแนน |
| ดรอว์ดาวน์ของยอดคงเหลือ | 5.82% (747.57) | หลุมที่ลึกที่สุดของเทรดที่ปิดแล้ว |
| ดรอว์ดาวน์ของอิควิตี้ | 6.11% (787.60) | หลุมที่ลึกที่สุดเมื่อรวมโพซิชันที่ยังเปิดอยู่ คือหลุมที่คุณจะได้นั่งดู |
| อัตราชนะ | 60.82% | ลำพังตัวเดียวไม่มีความหมาย ให้อ่านคู่กับจุดตัดขาดทุนและเป้าหมาย ซึ่งที่นี่คือ 100 กับ 200 pip |
| เงื่อนไขการทดสอบ | |
|---|---|
| รหัสการทดลอง | EXP-BACKTEST-RUNBOOK-001 |
| รหัสการรัน | stillwater__gate_v2_duka_realticks__2019-01-01_2026-07-01 |
| บิลด์ MT5 | 6140 |
| สเปกสัญญา | Exness-MT5Trial5 |
| สัญลักษณ์ / ไทม์เฟรม | USDJPY_DUKA M5 |
| ช่วงเวลา | 2019-01-01 – 2026-07-01 |
| โมเดล | Every tick based on real ticks (Model 4) |
| เงินฝาก | 10,000 USD |
| เลเวอเรจที่ขอไว้ | 1:500 |
| เลเวอเรจที่มีผลจริง | 1:100 |
| วัดเมื่อ | 2026-08-23 |
| ยืนยันล่าสุด | 2026-08-25 |
มีสามอย่างในรายงานนั้นที่ถูกอ่านผิดเป็นประจำ
ดรอว์ดาวน์สองบรรทัดคือคำถามคนละข้อ ดรอว์ดาวน์ของยอดคงเหลือวัดเส้นทุนของเทรดที่ปิดแล้ว ส่วนดรอว์ดาวน์ของอิควิตี้รวมกำไรขาดทุนลอยตัวของโพซิชันที่ยังเปิดอยู่เข้าไปด้วย จากการรัน 23 ครั้งของเรา เส้นอิควิตี้ลึกกว่าทุกครั้ง และขนาดของช่องว่างก็เดาจากคำอธิบายกลยุทธ์ไม่ได้ ช่องว่างที่แคบที่สุดคือ 0.04 จุด (0.67% เทียบกับ 0.71%) และกว้างที่สุดคือ 11.10 จุด (14.52% เทียบกับ 25.62% คิดเป็นอัตราส่วน 1.76) กลยุทธ์ที่ปิดเร็วจะมีช่องว่างเล็ก ส่วนตัวที่นั่งทนผ่านการเคลื่อนไหวสวนทางจะมีช่องว่างใหญ่ และนั่นคือกลยุทธ์ชนิดที่คุณจำเป็นต้องรู้ดรอว์ดาวน์ของมันมากที่สุดก่อนจะเอาเงินใส่เข้าไป
MT5 พิมพ์ดรอว์ดาวน์แต่ละตัวออกมาสองครั้ง ภายใต้สองนิยาม ดรอว์ดาวน์แบบ Maximal วัดที่จังหวะซึ่งจำนวนเงินใหญ่ที่สุด ส่วนแบบ Relative วัดที่จังหวะซึ่งเปอร์เซ็นต์ใหญ่ที่สุด ทั้งสองเป็นคนละจังหวะเวลาในการรันเดียวกัน ตัวเลขสองตัวนั้นจึงไม่ใช่สองมุมมองของเหตุการณ์เดียว จากการรันของเรา มี 16 ครั้งที่บันทึกไว้บนนิยาม Maximal และ 5 ครั้งบน Relative และไปป์ไลน์ที่เขียนบันทึกเหล่านั้นปฏิเสธที่จะจับคู่ตัวเลขยอดคงเหลือแบบ Maximal เข้ากับตัวเลขอิควิตี้แบบ Relative เพราะหน้าที่แสดงทั้งคู่จะกลายเป็นการเทียบสองห้วงเวลาที่ต่างกัน เวลายกดรอว์ดาวน์มาพูด ให้ระบุนิยามกำกับไปด้วย
ยอดรวมในรายงานเองก็ถูกปัดเศษ และหน้าต่างเวลาของมันอาจไม่ใช่หน้าต่างที่คุณหมายถึง เมื่อคำนวณใหม่จากรายการเทรดที่เผยแพร่ profit factor ของการรันเดียวกันคือ 1.2843 ไม่ใช่ 1.28 ที่อยู่ในรายงาน ตรงนี้ไม่มีพิษภัย แต่จะมีพิษภัยขึ้นมาทันทีเมื่อคุณกำลังเทียบผู้สมัครสองรายที่ห่างกันสามตำแหน่งทศนิยม และที่สำคัญกว่านั้น การรัน 416 เทรดนั้นแยกออกเป็น 404 เทรดจนถึงเส้นตัดวันเผยแพร่ 2026-04-01 และอีก 12 เทรดหลังจากนั้น สิบสองเทรดช่วงหลังให้ profit factor 2.3317 ไม่มีตัวเลขไหนผิด มันแค่ตอบคนละคำถาม และเส้นตัดนั้นคือวันที่มนุษย์เลือก ไม่ใช่สิ่งที่เทสเตอร์พิมพ์ออกมา ถ้าคุณจะแบ่งการรันออกเป็น “ส่วนที่ฉันฟิตค่ามาแล้ว” กับ “ส่วนที่ฉันไม่ได้ฟิต” ให้เขียนไว้ก่อนว่าเส้นแบ่งอยู่ตรงไหน ก่อนที่จะเปิดดูครึ่งหลัง การอ่านรายงานแบ็คเทสต์ MT5 ทำการแบ่งแบบนั้นกับการรันทั้ง 23 ครั้ง และแสดงให้เห็นว่าตัวเลขพาดหัวขยับไปไกลแค่ไหน
กับดักที่ทำให้การรันใช้ไม่ได้แบบเงียบ ๆ
ปรับปรุงมัน: เปลี่ยนทีละอย่าง รันใหม่ แล้วเทียบ
ลูปนี้จงใจให้น่าเบื่อ เปลี่ยนตัวแปร หนึ่ง ตัว รันใหม่ แล้วจดผลลัพธ์ทั้งสองไว้ ถ้าเปลี่ยนสองตัวพร้อมกัน คุณจะระบุไม่ได้ว่าความต่างมาจากตัวไหน
ลำดับที่ให้ข้อมูลต่อการรันหนึ่งครั้งมากที่สุดคือ
- เปลี่ยนหน้าต่างเวลาก่อนเปลี่ยนกลยุทธ์ รัน 2019–2022 กับ 2022–2026 แยกกัน ถ้าสองครึ่งให้ผลขัดแย้งกัน แปลว่าพารามิเตอร์กำลังอธิบายช่วงเวลาเดียว และการจูนเท่าไรก็แก้เรื่องนั้นไม่ได้
- เปลี่ยนสัญลักษณ์ กฎที่ได้ผลเฉพาะบนคู่เดียวคือข้อเท็จจริงเกี่ยวกับคู่นั้น ชุดของเราจึงมีแนวทางกว้าง ๆ แบบเดียวกันพาดข้าม USD/JPY, EUR/GBP, AUD/CAD, NZD/USD ดัชนีหนึ่งตัว และคู่คริปโตหนึ่งคู่ ด้วยเหตุผลข้อนี้พอดี
- เปลี่ยนโหมดการจำลอง รันผู้รอดชีวิตซ้ำบนโมเดลที่หยาบกว่า ถ้าผลลัพธ์พังทลาย แปลว่าความได้เปรียบอาศัยอยู่ข้างในแท่ง และเส้นทางราคาภายในแท่งคือส่วนที่เชื่อถือได้น้อยที่สุดของการจำลองใด ๆ
- จากนั้นจึงค่อยเปลี่ยนพารามิเตอร์ และให้ถือว่าค่าที่คุณต้องออกแรงค้นหาถึงจะเจอ เป็นคำกล่าวอ้างที่อ่อนกว่าค่าที่คุณเลือกไว้ล่วงหน้า
หยุดวนลูปเมื่อการเปลี่ยนแปลงหนึ่งไม่ได้ขยับผลลัพธ์ออกไปพ้นสัญญาณรบกวนของการรันก่อนหน้าแล้ว หรือเมื่อคุณสังเกตว่าตัวเองกำลังเลือกค่าตั้งค่าเพราะรายงานฉบับล่าสุดพูดอะไรไว้ ข้อหลังคือเงื่อนไขหยุดตัวจริง และมันมาถึงเร็วกว่าที่คนคิด ตัววิเคราะห์แบ็คเทสต์ มีประโยชน์ตรงนี้ เพราะมันอ่านตัวเลขพาดหัวของรายงานที่บันทึกไว้ออกมาให้ ทำให้การเทียบสองการรันเป็นเรื่องของการคำนวณแทนที่จะเป็นเรื่องของความทรงจำ
ขั้นตอนถัดไป: ฟอร์เวิร์ดเทสต์ก่อนใช้เงินจริง
แบ็คเทสต์ที่สะอาดหนึ่งครั้งคือขั้นแรกจากสี่ขั้น ไม่ใช่เส้นชัย
ค้นหาค่าที่เหมาะสม ถ้ากฎนั้นมีพารามิเตอร์ที่ควรค้นหา ให้บันทึกช่วงการค้นหาทั้งหมด ไม่ใช่แค่ผ่านที่ชนะ เพราะผลลัพธ์ที่คุณต้องออกแรงหาคือหลักฐานเกี่ยวกับการค้นหา และช่วงนั้นคือสิ่งที่บอกผู้อ่านว่าคุณหาหนักแค่ไหน การออปติไมซ์พารามิเตอร์ พาเดินผ่านนั้นทีละขั้น และอ่านการค้นหาแปดครั้งที่เราบันทึกไว้เอง คือ 116 ชุดค่า และไม่มีสักค่าตั้งเดียวที่เรายอมเอาไปใช้จริง
จากนั้นเดินหน้าแบบ walk-forward ฟิตบนช่วงหนึ่ง วัดบนช่วงถัดไป แล้วทำซ้ำ นี่คือขั้นเดียวในสี่ขั้นที่โจมตีการโอเวอร์ฟิตตรง ๆ และเป็นเหตุผลว่าทำไมมันจึงมีค่ามากกว่าแบ็คเทสต์ที่ยาวขึ้น
จากนั้นฟอร์เวิร์ดเทสต์บนบัญชีทดลอง ตรงนี้คือจุดที่ความหน่วง รีโควต และการถ่างของสเปรดจริงเข้ามาอยู่ในการทดลองเสียที รันมันนานพอที่จะได้เห็นกลยุทธ์ขาดทุนแล้วฟื้นกลับมา เพราะตัวเลขที่คุณต้องการจริง ๆ ไม่ใช่ผลตอบแทน แต่คือคำตอบว่าคุณนั่งทนดรอว์ดาวน์ที่วัดไว้ข้างบนได้หรือไม่
แล้วจึงตัดสินใจ เขียนไว้ล่วงหน้าว่าขาดทุนถึงระดับไหนคุณจะปิดมันทิ้ง จุดหยุดที่ตั้งไว้ก่อนใส่เงินคือการตัดสินใจ ส่วนจุดที่ตั้งระหว่างกำลังขาดทุนคือปฏิกิริยา
ถ้าอยากได้ตัวอย่างที่ทำไว้ครบก่อนจะรันของตัวเอง ทุกรายการในแคตตาล็อก EA ที่เผยแพร่แล้วพกรายการเทรดที่ปิดแล้วทั้งหมด ดรอว์ดาวน์ทั้งสองบรรทัด และ run manifest ที่อยู่เบื้องหลังมาด้วย ส่วนวิธีที่เราทดสอบระบุมาตรฐานที่บันทึกเหล่านั้นถูกยึดไว้ ที่เหลือในคู่มือการแบ็คเทสต์ลงลึกในขั้นการค้นหาค่าและขั้น walk-forward ซึ่งหน้านี้ทำได้แค่ชี้ไป ไม่มีอะไรที่นี่รับปากผลลัพธ์ใด ๆ ตัวเลขทุกตัวบนหน้านี้อธิบายการรันที่เกิดขึ้นไปแล้ว