ZZ2_EA Evolution: From Fixed SL to Progressive Hedging with Risk-Based Money Management
Development Log · 2025-06
1. Title
ZZ2_EA Evolution: From Fixed SL to Progressive Hedging with Risk-Based Money Management
2. Date / Phase
- Date: 2025-06 (เริ่มต้น)
- Phase: Risk Architecture & Hedging Substitution — การเปลี่ยนผ่านจากระบบ Stop Loss แบบดั้งเดิมไปสู่ระบบป้องกันความเสี่ยงเชิงรุก (Progressive Hedging) ที่คำนวณขนาดไม้แบบไดนามิก
3. Background
จุดเริ่มต้นของบทสนทนานี้มาจากความต้องการปรับปรุง Expert Advisor ชื่อ ZZ2_EA ซึ่งเป็น EA ที่เปิดออเดอร์โดยอาศัยสัญญาณจาก ZigZag สองตัว (ZigZag1 และ ZigZag2) ร่วมกับเงื่อนไขการยืนยันแท่งเทียนสองแท่ง (Two-Candle Confirmation)
ปัญหาที่พบในระบบเดิมมีสองประการ:
Money Management แบบคงที่ — การใช้ Lot Size คงที่ (เช่น 0.01) ไม่ได้สะท้อนความเสี่ยงที่แท้จริงของแต่ละการเทรด และไม่ปรับตัวตามขนาดบัญชีที่เปลี่ยนแปลง
Stop Loss แบบดั้งเดิม — การตั้ง SL ตามระยะห่างจากราคาเข้าออเดอร์ (A) เป็นวิธีที่ทำให้ขาดทุนในทันทีเมื่อราคาเคลื่อนที่ตรงข้าม และไม่เปิดโอกาสให้ระบบปรับตัว
คำถามหลักคือ: จะสามารถแทนที่ Stop Loss แบบอัตโนมัติด้วยเทคนิค Progressive Hedging ได้หรือไม่ โดยที่ ZZ2_EA ยังคงตรรกะการเปิดออเดอร์เดิมไว้ทั้งหมด และในขณะเดียวกันก็ต้องทำให้ระบบสามารถแยกแยะระหว่างออเดอร์หลักกับออเดอร์ Hedge ได้อย่างชัดเจน
4. Key Insights
4.1 Risk-Based Money Management แทน Lot Size คงที่
แนวคิดแรกคือการเปลี่ยนระบบ Money Management จาก Lot Size คงที่มาเป็น Risk % ต่อการเทรด โดยคำนวณจาก:
- Equity ปัจจุบันของบัญชี
- ระยะห่างระหว่างราคาเข้าออเดอร์กับ Stop Loss (หรือในกรณีนี้คือระยะ A)
- มูลค่าต่อจุด (Tick Value) ของสินค้า
เหตุผล: การใช้ Risk % ทำให้ขนาดออเดอร์ปรับตัวอัตโนมัติตามขนาดบัญชี ช่วยควบคุม Drawdown ได้ดีขึ้น และทำให้ผลลัพธ์ใน Backtest สอดคล้องกับพอร์ตจริงมากขึ้น
4.2 การแยกตัวตนของออเดอร์ด้วย Magic Number
เพื่อให้ ZZ2_EA ยังคงทำงานตามเงื่อนไขเดิม (เปิดออเดอร์ได้เฉพาะเมื่อไม่มีออเดอร์เปิดอยู่) แต่ในขณะเดียวกันก็ต้องมีออเดอร์ Hedge เปิดอยู่พร้อมกัน จำเป็นต้องใช้ Magic Number สองค่า:
MAGIC_ZZสำหรับออเดอร์หลักที่เปิดโดย ZZ2_EAMAGIC_HEDGEสำหรับออเดอร์ Hedge ที่เปิดโดยระบบ Progressive Hedging
เหตุผล: การแยก Magic Number ทำให้ฟังก์ชัน
HasOpenPosition() ของ ZZ2_EA ตรวจสอบเฉพาะออเดอร์ของตัวเอง
และไม่สนใจออเดอร์ Hedge ที่เปิดอยู่
4.3 แนวคิด "Virtual Close" ของออเดอร์หลัก
เมื่อราคาเคลื่อนที่ตรงข้ามจนถึงระดับที่ควรจะเป็น Stop Loss เดิม ระบบจะ
ไม่ปิดออเดอร์หลักจริง แต่จะทำเครื่องหมายว่า "เสมือนปิด"
(virtuallyClosed = true) และเปิด Hedge Order แทน
เหตุผล: ออเดอร์หลักยังคงมี Entry Price และ Take Profit ที่ตั้งไว้ หากราคากลับมาดี ออเดอร์หลักจะสามารถทำกำไรได้ตาม TP เดิม ในขณะที่ ZZ2_EA จะเข้าใจว่าไม่มีออเดอร์เปิดอยู่ และพร้อมรับสัญญาณใหม่ได้ทันที
4.4 Progressive Hedging ตามสูตรคณิตศาสตร์
ระบบ Hedge ใช้สูตรการคำนวณ Lot Size จากเอกสาร Hedging Formula:
