สร้าง EA ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก MACD Crossover

Mike 2011.01.14 21:55 14 0 0
ไฟล์แนบ

MQL5 Wizard ช่วยให้คุณสร้าง EA อัตโนมัติได้อย่างง่ายดาย (ดู MQL5 Wizard: สร้าง EA โดยไม่ต้องเขียนโปรแกรม).

วันนี้เราจะมาพูดถึงสัญญาณการซื้อขายที่เกิดจากการตัดกันของเส้น MACD โดยกลยุทธ์นี้เรียกว่า “สัญญาณจากการตัดกันของเส้นหลักและเส้นสัญญาณ MACD” (เมื่อสร้าง EA โดยอัตโนมัติใน MQL5 Wizard).

เส้นหลักของ MACD คำนวณจากผลต่างระหว่าง EMA เร็วและ EMA ช้า ส่วนเส้นสัญญาณของ MACD จะเป็นการทำให้เส้นหลักเรียบขึ้นตามระยะเวลาที่กำหนด.

สัญญาณการซื้อขาย:

  • ซื้อ: เส้นหลักตัดขึ้นเหนือเส้นสัญญาณของ MACD.
  • ขาย: เส้นหลักตัดลงต่ำกว่าเส้นสัญญาณของ MACD.

กลยุทธ์นี้ถูกนำไปใช้ใน CSignalMACD ภายใน คลาสกลยุทธ์การซื้อขาย ของ MQL5 Standard Library (อยู่ใน MQL5\Include\Expert\Signal\SignalMACD.mqh).

Figure 1. สัญญาณการซื้อขายจากการตัดกันของเส้นหลักและเส้นสัญญาณ MACD

Figure 1. สัญญาณการซื้อขายจากการตัดกันของเส้นหลักและเส้นสัญญาณ MACD


สัญญาณการซื้อขาย

กลยุทธ์การซื้อขายนี้ถูกนำไปใช้ใน CSignalMACD ซึ่งมีฟังก์ชันที่ช่วยง่ายต่อการเข้าถึงค่าของ indikator:

double  MainMACD(int ind)      // คืนค่าของเส้นหลัก MACD ของแท่งราคา
double  SignalMACD(int ind)    // คืนค่าของเส้นสัญญาณ MACD ของแท่งราคา
double  StateMACD(int ind)     // คืนค่าผลต่างระหว่างเส้นหลักและเส้นสัญญาณ MACD
int     ExtStateMACD(int ind); // คืนค่าจำนวนการเปลี่ยนแปลงสัญญาณของความแตกต่างระหว่างเส้นหลักและเส้นสัญญาณ


1. เปิดสถานะซื้อ

เงื่อนไขในการเปิดสถานะซื้อ:

  • ExtStateMACD(1)==1; หมายความว่าเส้นหลักตัดขึ้นเหนือเส้นสัญญาณ MACD
//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขเพื่อเปิดสถานะซื้อ                    |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==1);
  }


2. ปิดสถานะซื้อ

เงื่อนไขในการปิดสถานะซื้อ:

  • ExtStateMACD(1)==1; หมายความว่าเส้นหลักตัดลงต่ำกว่าเส้นสัญญาณ MACD
//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขเพื่อปิดสถานะซื้อ                         |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==-1);
  }


3. เปิดสถานะขาย

เงื่อนไขในการเปิดสถานะขายจะเหมือนกับเงื่อนไขการปิดสถานะซื้อ.

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขเพื่อเปิดสถานะขาย                  |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==-1);
  }


4. ปิดสถานะขาย

เงื่อนไขในการปิดสถานะขายจะเหมือนกับเงื่อนไขการเปิดสถานะซื้อ.

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขเพื่อปิดสถานะขาย                        |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }

การสร้าง EA ด้วย MQL5 Wizard

ในการสร้างหุ่นยนต์ซื้อขายตามกลยุทธ์นี้ คุณต้องเลือกคุณสมบัติของสัญญาณเป็น “สัญญาณจากการตัดกันของเส้นหลักและเส้นสัญญาณ MACD” ในตัวเลือก “การสร้าง EA ที่พร้อมใช้งาน” ของ MQL5 Wizard:

Figure 2. เลือก 'สัญญาณจากการตัดกันของเส้นหลักและเส้นสัญญาณ MACD' ใน MQL5 Wizard

Figure 2. เลือก 'สัญญาณจากการตัดกันของเส้นหลักและเส้นสัญญาณ MACD' ใน MQL5 Wizard

จากนั้นให้คุณระบุอัลกอริธึม Trailing Stop และระบบ การจัดการเงินและความเสี่ยง. โค้ดของ EA จะถูกสร้างขึ้นโดยอัตโนมัติ คุณสามารถคอมไพล์และทดสอบใน Strategy Tester ของ MetaTrader 5.


ผลการทดสอบ

มาดูการทดสอบย้อนหลังก่อนการใช้งานจริงของ EA บนข้อมูลประวัติ (EURUSD H1, ช่วงการทดสอบ: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).

ในการสร้าง EA เราใช้ขนาดล็อตคงที่ (Trading Fixed Lot, 0.1), อัลกอริธึม Trailing Stop ไม่ได้ถูกใช้ (Trailing ไม่ได้ถูกใช้).

Figure 3. ผลการทดสอบของ EA ที่มีสัญญาณการซื้อขายจากการตัดกันของเส้น MACD

Figure 3. ผลการทดสอบของ EA ที่มีสัญญาณการซื้อขายจากการตัดกันของเส้น MACD


เอกสารแนบ: SignalMACD.mqh ที่มี CSignalMACD คลาส (รวมอยู่ใน MQL5 Standard Library) ตั้งอยู่ที่ MQL5\Include\Expert\Signal โฟลเดอร์. testmacd.mq5 มีโค้ดของ EA ที่สร้างขึ้นโดยใช้ MQL5 Wizard.

รายการ
ความคิดเห็น 0