การ Backtest และการตรวจสอบ intermediate 12 นาทีในการอ่าน

ออปติไมซ์พารามิเตอร์ MT5: 116 ชุดค่า 252 รอบรัน 0 ค่าตั้งที่เราเอาไปใช้จริง

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

เผยแพร่ · ตรวจทาน

การออปติไมซ์พารามิเตอร์ใน MetaTrader 5 คือการค้นหา คุณประกาศช่วงค่าให้แต่ละอินพุต Strategy Tester รันทุกชุดค่า แล้วยื่นตารางที่เรียงตามตัวชี้วัดที่คุณเลือกมาให้ ส่วนที่ยากไม่ใช่การรันมัน ส่วนที่ยากคือตารางนั้นมีแถวบนสุดเสมอ และแถวบนสุดแทบจะผิดเสมอ

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

เงื่อนไขการทดสอบ
รหัสการทดลองEXP-PARAM-SEARCH-OUTCOMES-001
การทดลองแม่EXP-BUILDER-TEMPLATE-BASELINE-001
แหล่งที่มาea-templates-manifest.jsbt.explored
ประชากร8 recorded searches of the 53 measured templates
สัญลักษณ์ / ไทม์เฟรมUSDJPYm, M5 and H1
โมเดลM1 OHLC (Model=1), Exness MT5, measured 2026-06-18
พารามิเตอร์ที่เปลี่ยนค่าstop loss and take profit only
ยืนยันล่าสุด2026-08-25

การตั้งค่า: กริด การแบ่งช่วง และข้อมูล

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

ฟิลด์อยู่ที่ไหนตั้งเป็นอะไรทำไม
Optimisationแท็บ SettingsSlow complete algorithm สำหรับกริดเล็กโหมดพันธุกรรมเก็บแค่ตัวอย่างของพื้นที่ค้นหา ถ้ามี 12–32 ชุดค่าคุณมีกำลังพอจะดูมันทั้งหมด
Start / Step / Stopแท็บ Inputs แยกตามอินพุตพารามิเตอร์สองตัว สเต็ปหยาบทุกอินพุตที่คุณติ๊กคูณกริดให้ใหญ่ขึ้น ของเราขยับสองตัว
Forwardแท็บ Settings1/2, 1/3 หรือ 1/4แบ่งช่วงเวลาให้เทสเตอร์ให้คะแนนครึ่งหลังแยกต่างหาก นี่คือการตรวจที่เป็นเหตุผลของการรันการค้นหานี้ตั้งแต่แรก
Optimisation criterionแท็บ Settingsตัดสินใจก่อนจะเห็นตารางผลมันคือตัวชี้วัดที่เทสเตอร์ใช้จัดอันดับผ่าน มันจึงเป็นตัวตัดสินว่าแถวไหนคือแถวบนสุด
Modellingแท็บ Settingsใช้โหมดหยาบเพื่อกวาด แล้วรันผู้รอดชีวิตซ้ำบนติกจริงโหมดกวาดมีไว้จัดอันดับผู้สมัคร ไม่ใช่มีไว้สร้างตัวเลขที่จะเผยแพร่
Periodแท็บ Settingsยาวพอจะบรรจุสภาวะตลาดได้มากกว่าหนึ่งแบบการค้นหาภายในเทรนด์เดียวจะเจอค่าตั้งที่ขี่เทรนด์นั้น

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

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

  1. รันแบ็คเทสต์เดี่ยว ๆ ก่อนหนึ่งครั้งที่ค่าเริ่มต้น แล้วเก็บรายงานไว้ ถ้าไม่มีเส้นฐาน ตารางผลการค้นหาก็ไม่มีอะไรให้เอาชนะ — วิธีแบ็คเทสต์ ครอบคลุมผ่านนั้นตั้งแต่ต้นจนจบ
  2. ที่แท็บ Settings ตั้ง Optimisation เป็นการค้นหาแบบครบทุกชุดค่าสำหรับกริดเล็ก และตั้ง Forward เป็น 1/3 เพื่อให้เทสเตอร์กันหนึ่งในสามท้ายของช่วงเวลาไว้
  3. ที่แท็บ Inputs ให้ติ๊กเฉพาะพารามิเตอร์ที่คุณกำลังทดสอบจริง ๆ แล้วให้ค่า Start, Step และ Stop กับแต่ละตัว อินพุตสองตัวที่สเต็ปหยาบดีกว่าสี่ตัวที่สเต็ปละเอียด
  4. กด Start แล้วปล่อยให้มันจบ อ่านแท็บ Optimisation Results เป็นตาราง และอ่าน Optimisation Graph เป็นรูปทรง ยอดแหลมเดี่ยวคือคำเตือน ที่ราบสูงคือการค้นพบ
  5. หยิบผู้รอดชีวิต ไม่ใช่ผู้ชนะ แล้วรันแต่ละตัวซ้ำเป็นแบ็คเทสต์ เดี่ยว บนช่วงเวลาก่อนหน้าต่างที่ใช้ออปติไมซ์ นี่คือขั้นตอนที่ผลิตคำตัดสินเชิงลบทุกอันในชุดของเรา และเป็นขั้นที่คนข้าม

อ่านผลลัพธ์: สามช่วงเวลา ไม่ใช่ช่วงเดียว

นี่คือชุดที่เราบันทึกไว้ทั้งหมด เรียงตาม profit factor ในกลุ่มตัวอย่างที่ดีที่สุดที่แต่ละการค้นหาทำได้ IS คือช่วงเวลาที่ค่าตั้งถูกฟิตเข้ากับมัน OOS คือโฮลด์เอาต์ และ prior คือหน้าต่างเวลาก่อนหน้าที่การค้นหาไม่เคยเห็น

เทมเพลตกริดที่ค้นหาIS ดีที่สุดOOSช่วงก่อนหน้าคำตัดสิน
ichimoku12 ชุดค่า × 3 หน้าต่างเวลา1.370.890.80no_robust_edge
ma_crossover20 + 12 ชุดค่า สองไทม์เฟรม1.230.89–0.940.78no_robust_edge
cci_level12 ชุดค่า × 3 หน้าต่างเวลา1.071.050.92no_robust_edge
adx_trend12 ชุดค่า × 3 หน้าต่างเวลา1.040.910.80no_robust_edge
breakout12 ชุดค่า × 3 หน้าต่างเวลา1.040.79–0.890.64–0.84no_robust_edge
macd_signal12 ชุดค่า × 3 หน้าต่างเวลา1.14–1.150.74–0.77no_robust_edge
rsi_reversal12 ชุดค่า × 3 หน้าต่างเวลา0.91no_robust_edge
bb_bounce12 ชุดค่า × 3 หน้าต่างเวลา0.91no_robust_edge

อ่านคอลัมน์ตัวเลขแรกลงมาก่อน แล้วค่อยอ่านตามแนวนอน ผลในกลุ่มตัวอย่างที่ใหญ่ที่สุดในชุดนี้คือตัวที่ร่วงหนักที่สุด ค่า 1.37 ของ ichimoku ตกลงมาที่ 0.89 แล้วต่อไปที่ 0.80 ลำดับนั้นไม่ใช่ความบังเอิญ เพราะค่าตั้งที่ฟิตกับหน้าต่างเวลาหนึ่งได้ดีที่สุด โดยโครงสร้างแล้วคือตัวที่ดูดซับสัญญาณรบกวนของหน้าต่างนั้นไว้มากที่สุด

ทีนี้ดูค่าตั้งที่เข้าใกล้ที่สุดจริง ๆ มันไม่อยู่ในตารางข้างบน เพราะมันไม่เคยเป็นแถวบนสุดของอะไรเลย บนกริด ichimoku เดียวกันนั้น SL50/TP150 ทำได้ 1.18 ในกลุ่มตัวอย่าง 0.99 นอกกลุ่มตัวอย่าง และ 1.00 บนหน้าต่างเวลาก่อนหน้า สามช่วงเวลา ราบเรียบพอ ๆ กันทั้งหมด มันถูกบันทึกไว้ว่าเป็นผู้สมัครที่ใกล้ที่สุด และก็ยังไม่ถูกรับมาใช้ เพราะการเสมอตัวพาดข้ามสามหน้าต่างเวลาไม่ใช่ความได้เปรียบ มันคือการไม่มีความได้เปรียบ ที่วัดมาอย่างระมัดระวัง

เทียบกับนั้น เส้นฐานที่การค้นหาเหล่านี้พยายามเอาชนะอยู่ระหว่าง 0.92 ถึง 1.03 ไม่มีการค้นหาสักครั้งที่ขยับค่าเริ่มต้นซึ่งเผยแพร่ไปแล้วได้

กับดักที่ต้องเลี่ยง

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

ปรับปรุงและวนซ้ำ: เปลี่ยนอะไร และหยุดเมื่อไร

เปลี่ยนทีละอย่าง รันใหม่ แล้วเทียบกับเส้นฐานที่คุณเก็บไว้ ลำดับที่เสียเวลาน้อยที่สุดคือ

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

หยุดเมื่อข้อใดข้อหนึ่งเป็นจริง และเขียนไว้ด้วยว่าข้อไหน

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

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

ขั้นตอนถัดไป: ฟอร์เวิร์ดเทสต์ แล้วจึงตัดสินใจ

การออปติไมซ์คือขั้นที่สองจากสี่ขั้น ลำดับคือแบ็คเทสต์ → ออปติไมซ์ → walk-forward → บัญชีทดลอง และแต่ละขั้นกำจัดวิธีที่จะผิดคนละแบบออกไปหนึ่งแบบ

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

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

ควรออปติไมซ์พารามิเตอร์กี่ตัวพร้อมกัน
น้อยกว่าที่เทสเตอร์ยอมให้ทำ การค้นหาทุกครั้งในชุดที่เราบันทึกไว้ขยับพารามิเตอร์เพียงสองตัวพอดี คือจุดตัดขาดทุนกับจุดทำกำไร พาดตั้งแต่ 12 ถึง 32 ชุดค่า และไม่มีสักตัวเดียวในแปดตัวนั้นที่ให้ค่าตั้งซึ่งเรายอมเอาไปใช้จริง การเพิ่มพารามิเตอร์ตัวที่สามและตัวที่สี่ไม่ได้แก้เรื่องนั้น มันแค่คูณกริดให้ใหญ่ขึ้นและทำให้หาชุดค่าที่ฟิตกับสัญญาณรบกวนในหน้าต่างทดสอบของคุณได้ง่ายขึ้นมาก ถ้าพารามิเตอร์สองตัวยังสร้างผลลัพธ์ที่รอดสามช่วงเวลาไม่ได้ ปัญหาอยู่ที่ตัวกฎ ไม่ใช่ความละเอียดของการค้นหา
ในรอบออปติไมซ์ ควรมองหา profit factor เท่าไร
ให้ดูสามตัวเลข ไม่ใช่ตัวเดียว ในชุดของเรา profit factor ในกลุ่มตัวอย่างที่ดีที่สุดขึ้นไปถึง 1.37 บนเทมเพลต ichimoku และค่าตั้งเดียวกันนั้นได้ 0.89 นอกกลุ่มตัวอย่าง และได้ 0.80 บนหน้าต่างเวลาก่อนหน้า ค่าตั้งที่เข้าใกล้การใช้งานได้จริงมากที่สุดกลับดูไม่น่าประทับใจเลยในกลุ่มตัวอย่าง คือ 1.18 แล้วยืนที่ 0.99 กับ 1.00 บนอีกสองช่วงเวลา มันก็ยังไม่ถูกรับมาใช้ เพราะการเสมอตัวบนสองในสามหน้าต่างเวลาไม่ใช่ความได้เปรียบ ตัวเลขในกลุ่มตัวอย่างที่สูงคือตัวเลขที่ให้ข้อมูลน้อยที่สุดบนหน้าจอ
การทดสอบนอกกลุ่มตัวอย่างครั้งเดียวพอไหมสำหรับยืนยันค่าที่ออปติไมซ์มาแล้ว
ไม่พอ และเรามีเคสที่แสดงให้เห็นว่าทำไม เทมเพลต macd_signal ให้ค่าตั้งที่ทำได้ 1.14 ถึง 1.15 นอกกลุ่มตัวอย่าง เป็นการผ่านโฮลด์เอาต์ครั้งเดียวอย่างสะอาด แล้วมันได้ 0.74 ถึง 0.77 บนหน้าต่างเวลาก่อนช่วงทดสอบ อีกดีไซน์หนึ่งคือ cci_level ไปได้ไกลกว่านั้น คือ 1.07 ในกลุ่มตัวอย่าง 1.05 นอกกลุ่มตัวอย่าง และ 0.92 บนหน้าต่างเวลาก่อนหน้า สองช่วงเวลาก็ยังไม่พอเหมือนกัน ทั้งคู่จะถูกปล่อยออกไปใช้ ถ้าใช้กฎโฮลด์เอาต์ครั้งเดียวแบบที่ทำกันทั่วไป
ถ้าออปติไมซ์แล้วหาค่าตั้งที่ทำกำไรไม่ได้เลย แปลว่าอะไร
แปลว่าคุณได้คำตอบตั้งแต่เนิ่น ๆ และได้มาด้วยต้นทุนต่ำ ซึ่งเป็นผลลัพธ์ที่ดี สองในแปดการค้นหาของเรา คือ rsi_reversal กับ bb_bounce ไม่เคยให้ profit factor เกิน 1.0 แม้แต่บนช่วงเวลาที่มันถูกฟิตมา ผลที่ดีที่สุดในกลุ่มตัวอย่างของทั้งคู่คือ 0.91 กฎที่ทำให้ทำงานได้บนข้อมูลที่มันถูกจูนมาไม่ได้ จะไม่ถูกกู้ด้วยกริดที่กว้างขึ้นหรือการรันที่ยาวขึ้น ให้บันทึกช่วงที่คุณค้นหาไว้พร้อมกับคำตัดสิน แล้วเดินไปหาไอเดียถัดไป

คำศัพท์ที่เกี่ยวข้อง

การอ้างอิงอภิธานศัพท์