หน้าแรก การเทรดด้วยระบบ โพสต์

สร้างระบบเทรดอัตโนมัติด้วย MQL5 Wizard: สัญญาณการซื้อขายจากการตัดกันของราคาและค่าเฉลี่ยเคลื่อนที่

ไฟล์แนบ
248.zip (3.15 KB, ดาวน์โหลด 0 ครั้ง)

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)  // คืนค่าความแตกต่างระหว่างราคาปิดและค่าเฉลี่ยเคลื่อนที่
ต้องระวัง: ค่าของราคาและสัญญาณในแท่งที่ 0 (ยังไม่สมบูรณ์) อาจมีการเปลี่ยนแปลง ดังนั้นควรตรวจสอบเงื่อนไขการเทรดจากข้อมูลของแท่งที่สมบูรณ์เท่านั้น

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:

เลือก 'สัญญาณจากการตัดกันของราคาและ 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)

Crossover with Moving Average

รูปที่ 3. ผลการทดสอบย้อนหลังของ Expert Advisor ที่อิงจากการตัดกันของราคาและ MA

แนบไฟล์: SignalMA.mqh ที่มี CSignalMA (รวมอยู่ใน MQL5 Standard Library) ตั้งอยู่ที่ MQL5\Include\Expert\Signal folder. ไฟล์ crossoverma.mq5 มีโค้ดของ Expert Advisor ที่สร้างขึ้นโดยใช้ MQL5 Wizard.

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)