[บันทึกความจำ] การทำ Optimization Expert Advisor (EA) ใน MT5

THT
2 min readMay 6, 2020

--

เขียนไว้เตือนเพราะ นานๆมาทำทีนึงมักจะลืมแล้วก็เสียเวลางมอยู่นาน

สิ่งที่ควรทำ

กำหนดจุดประสงค์การ optimization

  • ว่าทำไปเพื่ออะไร เพิ่ม balance หรือ ลดความเสี่ยง หรืออยากให้มี order เพิ่ม จะได้เห็นการเคลื่อนไหวบ่อย แต่สำหรับผมอยากเห็น shape ที่สวยงาม ( shape ratio , recovery ratio) เพราะเวลาที่มันได้ก็ดีครับแต่พอเวลามันเสีย ก็อยากให้มันกลับมาใน order ถัดไป หรืออีกนัยยะนึงคือ อย่าเสียติดๆกัน

Setting การ back test

  • ช่วงเวลา 1–3 ปีย้อนหลัง มากไปก็ไม่ช่วยเพราะสภาพตลาดเปลี่ยนตลอด
  • เลือก Modelling เป็น Every tick หรือ Every real tick based on real ticks
  • ยอดเงินเท่ากับยอดที่มีใน account เรา
  • Optimization : Fast generic based algorithm เพราะเร็วกว่าเห็นๆ

ทำทีละ parameter ก่อน

  • เพื่อโฟกัสดูความเปลี่ยนแปลงว่ามีผลต่อจำนวนผลลัพธ์ส่วนไหน เช่นorder ที่เพิ่มขึ้น หรือ profit rate เพราะเราปรับทีละตัวเลยเห็นชัดขึ้นว่าตัวไหนมีผลต่ออะไร
  • สามารถทำได้ละเอียดเพราะเมื่อมี parameter ตัวเดียวไม่ต้องรวมกับคนอื่น ก็จะใช้ step ที่เล็กๆ เช่น 1, 0.1, 0.01 แล้วแต่ว่าเป็น parameter ขออะไร การทำให้ step เล็กลงอาจจะนำมาซึ่งผลลัพธ์ที่ยิ่งไหน เพราะมันอาจจะซ่อนอยู่ใน parameter เล็กๆนี้ เพราะ code ของเราอาจจะไม่ได้เขียนดีแต่วันแรก ที่แยกประเภท order ได้แบบเจาะจง
  • รอไม่นาน ทำให้เห็นผลการ backtest เร็ว มนุษย์เพราะเห็น ผลลัพธ์เร็วก็จะมีความต่อเนื่องมีสมาธิทำได้ยาวนานขึ้น สังเกตุอะไรได้มากขึ้นและอาจจะเจออะไรดีๆในการ optimize นั้นๆ

ลบ parameter ที่ไม่มีผลใดๆออก

  • เพื่อลดจำนวนลงให้เหลือเท่าที่จำเป็น เพราะเมื่อกลับมา optimize อีกเราจะได้ไม่ต้องมานั่งปรับค่าเหล่านี้อีก
  • ลดความซ้ำซ้อนของโปรแกรมลง ทำให้เวลา optimize ก็สั้นลง
  • Group parameter ที่อยู่ในหมวดเดียวกันให้อยู่ใกล้ๆกัน
  • ใช้ parameter string เป็นตัวแยกหมวดและอธิบายคร่าวๆ

อ่านผลลัพธ์ทุกมิติ

  • การดูแค่ว่า balance เยอะขึ้นอย่างเดียวอาจจะนำไปสู่การล้างพอร์ตได้ เพราะส่วนใหญ่ได้เยอะก็มาจากความเสี่ยงที่เยอะขึ้นด้วย นั่นหมายถึง drawdown จะเยอะขึ้น เมื่อใดก็ตามที่ สภาพตลาดเป็นเหมือนอดีตเราก็รอด แต่ถ้ามันไม่ใช่ drawdown ตัวนี้จะเป็นตัวที่เราขาดทุนในอนาคตได้
  • export optimization output ออกมาในรูปแบบที่ excel อ่านออกแล้วใช้ filter / condition color ช่วยเลือก input parameter ที่เหมาะสมได้
  • run single test output ที่คิดว่าดี แล้วดูกราฟ เพื่อ เอามันออกมาเป็นภาพ จะเห็นบุคคลิคภาพ ของ EA นี้ได้ดีกว่า ผลสุดท้ายใน หน้า optimization results และให้ save output single test นี้เก็บไว้ เพราะจะเห็น graph และ ค่าผลลัพธ์ในมิติต่างๆได้ละเอียดและเข้าใจมากขึ้น save เก็บไว้ให้ชื่อสื่อความ เช่น EA-Name_version_2.0-profit_factor_3.0-drawdwon_40-expected_payoff_2000.html เป็นต้น

Save Input สม่ำเสมอ สำคัญมาก

  • เมื่อได้ผลลัพธ์ที่พอใจหรือเป็น mile stone แล้วให้ save เก็บไว้
  • ตั้งชื่อ input ให้ สื่อความว่าใช้แล้วได้ผลลัพธ์อะไร เช่น EA-Name_version_2.0-profit_factor_3.0-drawdwon_40-expected_payoff_2000.set เป็นต้น
  • จัดเก็บให้อยู่ใน folder MQL5/preset/paired/xxx.set เพราะจะได้หาง่ายเวลา add EA ใน graph การทำมาทั้งหมดจะไม่ได้อะไรถ้าใส่ input ผิด
  • เอาค่าที่คิดว่าเจ๋งที่สุดกลับไปใส่เป็นค่า default ใน code ช่วยลดความเสียหายได้ เผื่อลืม / ใส่ input ใน EA บน chart ผิด

เริ่ม optimize พร้อมๆกัน มากว่า 1 parameter

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

สุดท้ายทดสอบตัว complete algorithm คือช้าสุดนานสุดแต่ scope ให้เหลือช่วงแคบๆของ parameter เท่านั้น

ตรงนี้มาถึงจุดที่ตัดสินใจยากเพราะมันจะไม่ค่อยแต่ต่างในเรื่องของ balance ที่เห็นได้ชัด ก็ให้กลับไปที่ จุดประสงค์ (ข้อแรก) ว่าเรา optimize ไปทำไม เพื่อให้ drawdown ลดลงหรือเพิ่มจำนวน order

อีกเรื่องที่ทำให้เราเห็นภาพประสิทธิภาพของ EA คือการ ใส่มันใน myfxbook.com มันจะเห็น ประวัติการทำงานของ EA แต่ละตัว ว่ามีผลประกอบการเท่าไร performance แต่ละเดือน สัปดาห์ เป็นอย่างไร เป็นตัวกระตุ้นให้เรายังคงพัฒนามันต่อ

รูปสมมติ ที่เกิดจากการ Back Test จริง

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

THT
THT

Written by THT

ตามลมหายใจ

No responses yet

Write a response