MQL5 Wizard เป็นเครื่องมือที่ช่วยให้เราสามารถสร้างโค้ดสำหรับ EA (Expert Advisor) ได้อย่างอัตโนมัติ ดูรายละเอียดเพิ่มเติมได้ที่ การสร้าง EA ที่พร้อมใช้งานใน MQL5 Wizard นะครับ
ในบทความนี้ เราจะมาพูดถึงกลยุทธ์ที่อิงจากการตัดกันของราคาและค่าเฉลี่ยเคลื่อนที่ ซึ่งเรียกว่า “สัญญาณจากการตัดกันของราคาและ MA” (เมื่อสร้าง EA โดยอัตโนมัติใน MQL5 Wizard)
สัญญาณการเทรด:
- ซื้อ: ราคาไปตัดขึ้นเหนือค่าเฉลี่ยเคลื่อนที่
- ขาย: ราคาไปตัดลงต่ำกว่าค่าเฉลี่ยเคลื่อนที่
- การตรวจสอบการเพิ่ม/ลดของ MA ใช้กรองสัญญาณเท็จ
กลยุทธ์นี้ถูกใช้งานในคลาส CSignalMA ของ คลาสกลยุทธ์การเทรด ใน MQL5 Standard Library (ตั้งอยู่ที่ MQL5\Include\Expert\Signal\SignalMA.mqh)

รูปที่ 1. สัญญาณการซื้อขายจากการตัดกันของราคาและค่าเฉลี่ยเคลื่อนที่
สัญญาณการเทรด
กลยุทธ์การเทรดนี้ถูกใช้งานในคลาส CSignalMA โดยมีวิธีการที่ป้องกันเพื่อให้ง่ายต่อการเข้าถึงค่าสัญญาณและราคาต่างๆ:
double MA(int ind) // คืนค่าของค่าเฉลี่ยเคลื่อนที่ของแท่ง double Open(int ind) // คืนค่าราคาการเปิดของแท่ง double Close(int ind) // คืนค่าราคาปิดของแท่ง double StateMA(int ind) // คืนค่าเชิงบวกถ้าเฉลี่ยเพิ่มขึ้นและเชิงลบถ้าเฉลี่ยลดลง double StateOpen(int ind) // คืนค่าความแตกต่างระหว่างราคาการเปิดและค่าเฉลี่ยเคลื่อนที่ double StateClose(int ind) // คืนค่าความแตกต่างระหว่างราคาปิดและค่าเฉลี่ยเคลื่อนที่
1. เปิดตำแหน่งซื้อ
เงื่อนไขในการเปิดตำแหน่งซื้อ (การตัดกันของราคาและ MA และตรวจสอบการเพิ่มของ MA):
- Open(1) < MA(1): ราคาการเปิดต่ำกว่าค่าเฉลี่ยเคลื่อนที่;
- Close(1) > MA(1): ราคาปิดสูงกว่าค่าเฉลี่ยเคลื่อนที่;
- MA(1) > MA(2): ตรวจสอบการเพิ่มขึ้นของค่าเฉลี่ยเคลื่อนที่ (กรองสัญญาณเท็จ)
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขในการเปิดตำแหน่งซื้อ | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- ราคาตัดขึ้นเหนือ MA และ MA เพิ่มขึ้น return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. ปิดตำแหน่งซื้อ
เงื่อนไขในการปิดตำแหน่งซื้อ (การตัดกันของราคาและ MA และตรวจสอบการลดของ MA):
- Open(1) > MA(1): ราคาการเปิดสูงกว่าค่าเฉลี่ยเคลื่อนที่;
- Close(1) < MA(1): ราคาปิดต่ำกว่าค่าเฉลี่ยเคลื่อนที่;
- MA(1) < MA(2): ตรวจสอบการลดลงของค่าเฉลี่ยเคลื่อนที่ (กรองสัญญาณเท็จ)
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขในการปิดตำแหน่งซื้อ | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- ราคาตัดลงต่ำกว่าค่าเฉลี่ยเคลื่อนที่และค่าเฉลี่ยลดลง return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. เปิดตำแหน่งขาย
เงื่อนไขในการเปิดตำแหน่งขายจะเหมือนกับเงื่อนไขในการปิดตำแหน่งซื้อ
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขในการเปิดตำแหน่งขาย (ขาย) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- ราคาตัดขึ้นเหนือค่าเฉลี่ยเคลื่อนที่และค่าเฉลี่ยลดลง return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. ปิดตำแหน่งขาย
เงื่อนไขในการปิดตำแหน่งขายจะเหมือนกับเงื่อนไขในการเปิดตำแหน่งซื้อ
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขในการปิดตำแหน่งขาย | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- ราคาตัดขึ้นเหนือค่าเฉลี่ยเคลื่อนที่และค่าเฉลี่ยเพิ่มขึ้น return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
สร้าง Expert Advisor โดยใช้ MQL5 Wizard
ในการสร้างหุ่นยนต์เทรดตามกลยุทธ์นี้ คุณต้องเลือกคุณสมบัติของสัญญาณเป็น “สัญญาณจากการตัดกันของราคาและ MA” ในตัวเลือก MQL5 Wizard:

รูปที่ 2. เลือก 'สัญญาณจากการตัดกันของราคาและ MA' ใน MQL5 Wizard
จากนั้นคุณต้องระบุอัลกอริธึม Trailing Stop ที่ต้องการและระบบ การจัดการเงินและความเสี่ยง โค้ดของ Expert Advisor จะถูกสร้างขึ้นโดยอัตโนมัติ คุณสามารถคอมไพล์และทดสอบใน Strategy Tester ของ MetaTrader 5 ได้เลย
ผลการทดสอบ
มาดูการทดสอบย้อนหลังของ Expert Advisor บนข้อมูลประวัติศาสตร์ (EURUSD H1, ช่วงเวลา: 1.1.2010-05.01.2011, MA_period=12, MA_Shift=0)
Trading Fixed Lot, 0.1) และไม่ได้ใช้ Trailing Stop (ไม่ใช้ Trailing)

รูปที่ 3. ผลการทดสอบย้อนหลังของ Expert Advisor ที่อิงจากการตัดกันของราคาและ MA
แนบไฟล์: SignalMA.mqh ที่มี CSignalMA (รวมอยู่ใน MQL5 Standard Library) ตั้งอยู่ที่ MQL5\Include\Expert\Signal folder. ไฟล์ crossoverma.mq5 มีโค้ดของ Expert Advisor ที่สร้างขึ้นโดยใช้ MQL5 Wizard.
โพสต์ที่เกี่ยวข้อง
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก Morning/Evening Stars + MFI
- สร้างสัญญาณการซื้อขายด้วย MQL5 Wizard: การใช้ EMA และกรองเวลาภายใน
- JS-Chaos: ระบบเทรดอัจฉริยะสำหรับ MetaTrader 5
- ใช้ MQL5 Wizard สร้าง Expert Advisor ด้วยสัญญาณเทรด Morning/Evening Stars + Stochastic
- สร้างสัญญาณการซื้อขายด้วย MQL5 Wizard: เทคนิค Hammer/Hanging Man และ CCI