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
สัญญาณการซื้อขาย
กลยุทธ์การซื้อขายนี้ถูกนำไปใช้ใน 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
จากนั้นให้คุณระบุอัลกอริธึม 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
เอกสารแนบ: SignalMACD.mqh ที่มี CSignalMACD คลาส (รวมอยู่ใน MQL5 Standard Library) ตั้งอยู่ที่ MQL5\Include\Expert\Signal โฟลเดอร์. testmacd.mq5 มีโค้ดของ EA ที่สร้างขึ้นโดยใช้ MQL5 Wizard.
ความคิดเห็น 0