บทนำสู่การเพิ่มประสิทธิภาพ EA ด้วย Genetic Algorithm บน MT5
สารบัญ (10)
สารบัญ
บทนำสู่การเพิ่มประสิทธิภาพ EA ด้วย Genetic Algorithm บน MT5
เมื่อต้องการปรับแต่งพารามิเตอร์ของ EA นั้น Strategy Tester ของ MT5 มีโหมดการเพิ่มประสิทธิภาพอยู่ 2 รูปแบบ ได้แก่ Brute Force (ทดสอบทุกชุดค่าผสมอย่างครบถ้วน) และ Genetic Algorithm (GA)
สำหรับการค้นหาชุดค่าผสมที่มีจำนวนมหาศาลให้เสร็จสิ้นในเวลาอันสมเหตุสมผลนั้น Genetic Algorithm คือวิธีมาตรฐาน บทความนี้จะอธิบายหลักการพื้นฐานของการเพิ่มประสิทธิภาพด้วย Genetic Algorithm พร้อมแนะนำจุดสำคัญที่ควรทราบในการใช้งานจริง
ประเด็นสำคัญของบทความนี้
- หากชุดค่าผสมมีมากกว่าหลักหมื่น ให้ค้นหาด้วย Genetic Algorithm (GA) แทน Brute Force
- เลือกตัวชี้วัดเป็น Recovery Factor หรือ Sharpe Ratio และตัดชุดผลลัพธ์ที่มีจำนวนเทรดน้อยออก
- อย่าเลือกจากคะแนนสูงสุดเพียง 1 ชุด แต่ให้ตัดสินค่าที่จะใช้จากการกระจุกตัวของ 10-20 อันดับแรก, Parameter Sensitivity และการตรวจสอบแบบแบ่งช่วงเวลา
ขั้นตอนการ Optimize (ภาพรวม)
| ขั้นตอน | สิ่งที่ต้องทำ | คำอธิบายโดยละเอียด |
|---|---|---|
| 1 | จำกัดพารามิเตอร์ที่จะ Optimize ให้เหลือเพียงไม่กี่ตัวที่เป็นแกนหลักของลอจิก | จำกัดเป้าหมาย Optimization ให้แคบ |
| 2 | ดูจำนวนชุดค่าผสม แล้วตัดสินใจว่าจะใช้ Brute Force หรือ GA | เลือกใช้ Brute Force หรือ GA? |
| 3 | ตั้งค่า "Fast genetic based algorithm" และตัวชี้วัดใน Tester | การตั้งค่าใน Strategy Tester |
| 4 | รัน Optimization แล้วดูการลู่เข้าในแท็บ "Optimization Results" | การรัน Genetic Algorithm Optimization |
| 5 | คัด Over-Optimization ออกด้วยการแบ่งช่วงเวลา, เปรียบเทียบชุดอันดับต้น ๆ และตรวจ Sensitivity | การหลีกเลี่ยง Over-Optimization |
| 6 | หากใช้เวลานาน ให้ย่นเวลาด้วย Parallel Agent หรือ Cloud | การใช้ Parallel Optimization |
เปรียบเทียบโบรกเกอร์แนะนำ →
🎁 ดาวน์โหลด EA ฟรี📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
Genetic Algorithm คืออะไร
Genetic Algorithm (GA) คือวิธีการเพิ่มประสิทธิภาพที่ได้รับแรงบันดาลใจจากกระบวนการวิวัฒนาการทางชีววิทยา โดยดำเนินการตามขั้นตอนดังนี้
- สร้างชุดพารามิเตอร์สุ่ม (individual) ขึ้นมาหลายชุด
- รัน Backtest กับแต่ละชุด แล้วให้คะแนนตามตัวชี้วัด (PF, Recovery Factor ฯลฯ)
- คัดเลือกชุดที่มีคะแนนสูงสุดเป็น "พ่อแม่" แล้วสร้างรุ่นต่อไปด้วยการ Crossover และ Mutation
- ทำซ้ำกระบวนการนี้ และยิ่งผ่านหลาย Generation มากขึ้น พารามิเตอร์ก็จะยิ่งลู่เข้าสู่ค่าที่มีคะแนนสูงขึ้น
ขณะที่ Brute Force จะ "กวาดทดสอบทุกชุดค่าผสม" นั้น GA จะ "โฟกัสการค้นหาเฉพาะพื้นที่ที่มีแนวโน้มดี" ทำให้ใช้เวลาในการคำนวณน้อยกว่าอย่างเห็นได้ชัด
เลือกใช้ Brute Force หรือ GA?
| Brute Force | Genetic Algorithm (GA) | |
|---|---|---|
| วิธีการค้นหา | กวาดทดสอบทุกชุดค่าผสม | โฟกัสการค้นหาเฉพาะพื้นที่ที่มีแนวโน้มดี |
| ขนาดที่เหมาะสม | พารามิเตอร์น้อย ชุดค่าผสมไม่เกินหลักพัน | พารามิเตอร์มาก ชุดค่าผสมหลักหมื่นขึ้นไป |
| เวลาคำนวณ | เพิ่มขึ้นตามจำนวนชุดค่าผสม | สั้นกว่าอย่างเห็นได้ชัด |
ตัวอย่างเช่น หากมี 3 พารามิเตอร์ที่แต่ละตัวมี 10 ขั้น จะได้ 1,000 ชุดค่าผสม ซึ่ง Brute Force เพียงพอ แต่หากมี 5 พารามิเตอร์ที่แต่ละตัวมี 20 ขั้น จะได้ถึง 3.2 ล้านชุดค่าผสม และนั่นคือเมื่อ Genetic Algorithm กลายเป็นสิ่งจำเป็น
การตั้งค่าใน Strategy Tester
เพื่อเปิดใช้งานการเพิ่มประสิทธิภาพ ให้ตั้งค่าใน Strategy Tester ดังนี้

- Optimization: เลือก "Fast genetic based algorithm"
- Optimization criterion: เลือกตัวชี้วัด เช่น "Maximum complex criterion", "Custom max", "Maximum recovery factor"
- แท็บ Input parameters: ติ๊กถูกที่พารามิเตอร์ที่ต้องการปรับแต่ง แล้วกำหนดค่าเริ่มต้น ค่าสิ้นสุด และขั้นละเท่าไร
วิธีเลือกตัวชี้วัด (Optimization Criterion)
สิ่งที่กำหนดว่า "อะไรคือผลลัพธ์ที่ดี" ส่งผลโดยตรงต่อผลลัพธ์ที่ได้ ตัวชี้วัดที่นิยมใช้มีดังนี้
| ตัวชี้วัด | เนื้อหา | ลักษณะ |
|---|---|---|
| Maximum profit (Equity) | เพิ่มกำไรสูงสุดเพียงอย่างเดียว | ไม่สนใจความเสี่ยง จึงเสี่ยงต่อ Over-Optimization สูง |
| Recovery Factor | กำไรสุทธิ ÷ DD สูงสุด | เน้นความสมดุล |
| Sharpe Ratio | คำนึงถึงความสม่ำเสมอของผลตอบแทน | เน้นความเสถียร |
| Custom max | กำหนดเองในโค้ด EA ได้อย่างอิสระ (เช่น PF × จำนวนเทรด) | ออกแบบให้ตรงกับเป้าหมายได้ |
การใช้ Recovery Factor หรือ Sharpe Ratio เป็นวิธีที่ช่วยหลีกเลี่ยง Over-Optimization ในขณะที่ยังหาพารามิเตอร์ที่ใช้งานได้จริง
การรัน Genetic Algorithm Optimization
เมื่อเริ่มกระบวนการเพิ่มประสิทธิภาพ ค่าพารามิเตอร์ที่มีคะแนนสูงในแต่ละ Generation จะปรากฏใน แท็บ "Optimization Results" ของ MT5
Genetic Algorithm ของ MT5 จะวนซ้ำหลายร้อย Generation โดยอัตโนมัติ และลู่เข้าหาคำตอบที่ดีที่สุด

ข้อผิดพลาดที่พบบ่อย
| อาการ | สาเหตุที่เป็นไปได้ |
|---|---|
| ลู่เข้าเร็วเกินไป | อาจเกิดจากช่วงการค้นหาพารามิเตอร์แคบเกินไป |
| ไม่ลู่เข้าเลย | ตัวชี้วัดไม่เหมาะสม หรือมี Noise มากเกินไป |
| ลู่เข้าหาค่าที่ดูผิดปกติ | ไม่ได้กรองผลลัพธ์ที่มีจำนวนเทรดน้อยเกินไปออก |
การกรองผลลัพธ์ที่มีจำนวนเทรดต่ำกว่า 50 ครั้งออกจากฟังก์ชันประเมินผล จะช่วยกำจัดชุดพารามิเตอร์ที่ไม่มีนัยสำคัญทางสถิติออกไปได้
การหลีกเลี่ยง Over-Optimization
ยิ่งรัน Optimization มากขึ้น ก็จะยิ่งได้พารามิเตอร์ที่ "สมบูรณ์แบบในอดีต แต่ใช้ไม่ได้ในอนาคต" ต่อไปนี้คือกฎเชิงปฏิบัติ 4 ข้อที่ช่วยป้องกัน
| กฎ | สิ่งที่ต้องตรวจสอบ |
|---|---|
| 1. แบ่งช่วงเวลา | ผลลัพธ์ไม่พังในช่วง Out-of-Sample ช่วงหลังหรือไม่ |
| 2. เปรียบเทียบ 10-20 อันดับแรก | ชุดอันดับต้น ๆ อยู่ในพื้นที่ใกล้เคียงกันหรือไม่ |
| 3. ตรวจสอบ Parameter Sensitivity | ขยับ ±10-20% แล้วผลลัพธ์ไม่พังทลายมากหรือไม่ |
| 4. เก็บพารามิเตอร์ที่ไม่ Optimize ไว้ | ยังคงค่าคงที่ที่สมเหตุสมผลตามตรรกะไว้หรือไม่ |
1. แบ่งช่วงเวลา
หากมีข้อมูลย้อนหลัง 10 ปี ให้ Optimize บนช่วง 7 ปีแรก แล้วใช้ 3 ปีหลังเป็น Out-of-Sample (OOS) ตรวจสอบ หากผลลัพธ์แย่ลงในช่วง OOS แสดงว่า Over-Fit กับช่วงแรก
2. เปรียบเทียบ 10-20 อันดับแรก
การเลือกเพียงชุดที่ได้คะแนนสูงสุดเพียงชุดเดียวมีความเสี่ยง
ให้ตรวจสอบว่า ชุดอันดับต้นๆ อยู่ในพื้นที่ใกล้เคียงกันหรือไม่ หากอยู่ใกล้กัน ให้เลือกพารามิเตอร์ที่อยู่ตรงกลางของกลุ่มนั้น
3. ตรวจสอบ Parameter Sensitivity
ลองขยับพารามิเตอร์ที่เป็นตัวเลือกอยู่ ±10-20% แล้วดูว่าผลลัพธ์พังทลายหรือไม่ หากพังทลาย แสดงว่าชุดนั้น Over-Fit กับ "จุดสูงสุดที่แหลมคม"
4. เก็บพารามิเตอร์ที่ไม่ Optimize ไว้
การคง "ค่าคงที่ที่สมเหตุสมผลตามตรรกะ ไม่ใช่จากการ Optimize" ไว้เสมอ ช่วยลดความเสี่ยงของ Over-Optimization
ตัวอย่างเช่น Optimize ช่วง EMA แต่ตรึงค่าคูณ ATR ไว้คงที่
การใช้ Parallel Optimization
MT5 รองรับ Parallel Optimization โดยใช้หลาย CPU Core พร้อมกัน สามารถเพิ่มจำนวน Agent ที่ใช้ได้ใน "Tester" → "Settings" เพื่อลดเวลาคำนวณ
นอกจากนี้ยังสามารถใช้ MQL5 Cloud Network เพื่อรัน Optimization ขนาดใหญ่ด้วย Remote Agent จากทั่วโลก อย่างไรก็ตาม มีค่าใช้จ่าย ดังนั้นวิธีที่มีประสิทธิภาพกว่าคือการจำกัดช่วงพารามิเตอร์ใน Local ก่อน แล้วค่อยใช้ Cloud
จำกัดเป้าหมาย Optimization ให้แคบ
โดยพื้นฐานแล้ว พารามิเตอร์ที่จะ Optimize ควรจำกัดไว้เพียงไม่กี่ตัวที่เป็นแกนหลักของลอจิก เช่น ช่วงเวลาสำหรับตัดสินใจเข้าเทรดหรือระยะ SL
การกำหนดพารามิเตอร์อื่นๆ เป็น "ค่าตามธรรมชาติ" จะช่วยป้องกัน Over-Optimization ได้ง่ายขึ้น
PF จาก Backtest จะสูงขึ้นได้เรื่อยๆ หากรัน Optimization แต่ก็ยิ่งเพิ่มโอกาสที่มันจะทำงานไม่ได้ในตลาดอนาคตเช่นกัน การเลือกตัวเลขธรรมดาๆ แล้วรันให้ยาวนาน คือคำตอบที่ใช้ได้จริงในการซื้อขาย
ดาวน์โหลด EA ฟรี
EA ฟรีของเว็บไซต์นี้ DONCHIAN ENGINE (USDJPY H1) ได้ผล Backtest บน USDJPY H1 ระยะ 9.4 ปี (2017-2026 Real Tick ของ Dukascopy) PF 1.50, อัตราชนะ 34.5%, Max DD 10.8%, จำนวนเทรด 631 ครั้ง
โบรกเกอร์แนะนำ
เพื่อให้ผลลัพธ์จาก Backtest และ Optimization ได้รับการทำซ้ำในการใช้งานจริงได้มากที่สุด เว็บไซต์นี้แนะนำโบรกเกอร์ที่ให้ความสำคัญกับคุณภาพการ Execute คำสั่ง
บทความที่เกี่ยวข้อง
📧 คอร์สอีเมลฟรี (8 ฉบับ) + แพ็กอินดิเคเตอร์ MT5 13 ตัว เฉพาะสมาชิก
* ปกป้องความเป็นส่วนตัวอย่างเคร่งครัด คุณสามารถยกเลิกการสมัครได้ตลอดเวลา
มีคำถามเกี่ยวกับ EA หรือ Forex ไหม?
คุณสามารถตั้งคำถามได้ที่ฟอรัมเทรดของ Nattzy (สมัครฟรี) ไม่จำเป็นต้องเกี่ยวกับบทความนี้ก็ได้ เช่น การตั้งค่า EA หรือการเลือกโบรกเกอร์
ถามที่ Nattzy ↗