MQL5 Wizard ช่วยให้เราสามารถสร้างโค้ดสำหรับ Expert Advisors ได้โดยอัตโนมัติ สำหรับรายละเอียดเพิ่มเติม ดูที่ การสร้าง Expert Advisors ที่พร้อมใช้งานใน MQL5 Wizard.
วันนี้เราจะมาทำความรู้จักกับกลยุทธ์การเทรดที่ใช้ Moving Average 3 ตัว ซึ่งเรียกว่า “สัญญาณจาก Moving Average 3 ตัว” โดยกลยุทธ์นี้จะใช้ Moving Average แบบ Exponential 3 ตัว ได้แก่ FastEMA, MediumEMA และ SlowEMA เพื่อช่วยในการวิเคราะห์แนวโน้มของตลาด.
สัญญาณการเทรดมีดังนี้:
- สัญญาณซื้อ: FastEMA > MediumEMA > SlowEMA (แนวโน้มขาขึ้น).
- สัญญาณขาย: FastEMA < MediumEMA < SlowEMA (แนวโน้มขาลง).
กลยุทธ์นี้ได้ถูกนำไปใช้ในคลาส CSignal3EMA (ไฟล์ signal3ema.mqh ต้องถูกวางไว้ใน terminal_data_folder\MQL5\Include\Expert\Signal\Signal3EMA.mqh).

Figure 1. สัญญาณการเทรดจาก Moving Average 3 ตัว
สัญญาณการเทรด
กลยุทธ์การเทรดนี้ได้ถูกสร้างขึ้นในคลาส CSignal3EMA โดยมีวิธีการที่ป้องกันเพื่อให้เข้าถึงค่า Moving Average 3 ตัวได้ง่ายขึ้น:
double FastEMA(int ind) // คืนค่าของ Fast EMA ของแท่งราคา double MediumEMA(int ind) // คืนค่าของ Medium EMA ของแท่งราคา double SlowEMA(int ind) // คืนค่าของ Slow EMA ของแท่งราคา
1. เปิดตำแหน่งซื้อ (Long Position)
แนวโน้มขาขึ้นถูกกำหนดโดยเงื่อนไขดังนี้: FastEMA > MediumEMA > SlowEMA:
- FastEMA(1) > MediumEMA(1): Fast EMA สูงกว่า Medium EMA (แท่งราคาที่เสร็จสมบูรณ์ล่าสุด);
- MediumEMA(2) > SlowEMA(1): Medium EMA สูงกว่า Slow EMA (แท่งราคาที่เสร็จสมบูรณ์ล่าสุด);
//+------------------------------------------------------------------+ //| เช็คเงื่อนไขการเปิดตำแหน่งซื้อ (Long Position) | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { double medium=MediumEMA(1); //--- price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- ตรวจสอบแนวโน้มขาขึ้น (ในแท่งราคาที่เสร็จสมบูรณ์ล่าสุด): FastEMA(1) > MediumEMA(1) > SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
2. ปิดตำแหน่งซื้อ (Close Long Position)
แนวโน้มขาลงถูกกำหนดโดยเงื่อนไขดังนี้: FastEMA < MediumEMA < SlowEMA:
- FastEMA(1) < MediumEMA(1): Fast EMA ต่ำกว่า Medium EMA (แท่งราคาที่เสร็จสมบูรณ์ล่าสุด);
- MediumEMA(2) < SlowEMA(1): Medium EMA ต่ำกว่า Slow EMA (แท่งราคาที่เสร็จสมบูรณ์ล่าสุด);
//+------------------------------------------------------------------+ //| เช็คเงื่อนไขการปิดตำแหน่งซื้อ | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseLong(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- ตรวจสอบแนวโน้มขาลง (ในแท่งราคาที่เสร็จสมบูรณ์ล่าสุด): FastEMA(1) < MediumEMA(1) < SlowEMA(1) return(FastEMA(1)<medium && medium<SlowEMA(1)); }
3. เปิดตำแหน่งขาย (Short Position)
//+------------------------------------------------------------------+ //| เช็คเงื่อนไขการเปิดตำแหน่งขาย (Short Position) | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { double medium=MediumEMA(1); //--- price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- ตรวจสอบแนวโน้มขาลง (ในแท่งราคาที่เสร็จสมบูรณ์ล่าสุด): FastEMA(1) < MediumEMA(1) < SlowEMA(1) return(FastEMA(1)<medium && medium<SlowEMA(1)); }
4. ปิดตำแหน่งขาย (Close Short Position)
//+------------------------------------------------------------------+ //| เช็คเงื่อนไขการปิดตำแหน่งขาย | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseShort(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- ตรวจสอบแนวโน้มขาขึ้น (ในแท่งราคาที่เสร็จสมบูรณ์ล่าสุด): FastEMA(1) > MediumEMA(1) > SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
คุณสามารถปรับปรุงการปิดตำแหน่งขายได้ โดยไม่จำเป็นต้องรอแนวโน้มขาขึ้น คุณสามารถปิดตำแหน่งขายเมื่อราคาอยู่ในช่วงราบ โดยสามารถตรวจสอบได้จากเงื่อนไข: FastEMA > MediumEMA < SlowEMA.
การสร้าง Expert Advisor ด้วย MQL5 Wizard
ในการสร้างหุ่นยนต์เทรดที่ใช้กลยุทธ์นี้ คุณต้องเลือกคุณสมบัติของสัญญาณเป็น “สัญญาณจาก Moving Average 3 ตัว” ในตัวเลือก MQL5 Wizard:

Figure 2. เลือก "สัญญาณจาก Moving Average 3 ตัว" ใน MQL5 Wizard
ถัดไปคุณต้องระบุอัลกอริธึม Trailing Stop ที่ต้องการ และ ระบบการจัดการเงินและความเสี่ยง. โค้ดของ Expert Advisor จะถูกสร้างขึ้นโดยอัตโนมัติ คุณสามารถคอมไพล์และทดสอบใน Strategy Tester ของ MetaTrader 5.
ผลการทดสอบ
มาดูกันว่าผลลัพธ์จากการทดสอบ Expert Advisor บนข้อมูลประวัติศาสตร์ (EURUSD H1, ช่วงทดสอบ: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900) เป็นอย่างไร.
ในการสร้าง Expert Advisor เราใช้ขนาดล็อตที่คงที่ (Trading Fixed Lot, 0.1) และไม่ได้ใช้ Trailing Stop (ไม่ใช้ Trailing).

Figure 3. ผลการทดสอบย้อนหลังของ Expert Advisor ที่ใช้ Moving Average 3 ตัว
ไฟล์แนบ: ไฟล์ Signal3EMA.mqh ที่มีคลาส CSignal3EMA ต้องถูกวางไว้ใน terminal_data_folder\MQL5\Include\Expert\Signal.
ไฟล์ threeema.mq5 มีโค้ดของ Expert Advisor ที่สร้างขึ้นโดยใช้ MQL5 Wizard.
ความคิดเห็น 0