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

สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Bullish Engulfing/Bearish Engulfing + RSI

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

MQL5 Wizard เป็นเครื่องมือที่ช่วยให้คุณสามารถสร้าง Expert Advisors (EA) ที่พร้อมใช้งานตาม คลาสในมาตรฐาน ที่มาพร้อมกับเทอร์มินัลของคุณ (ดูรายละเอียดเพิ่มเติมที่ การสร้าง Expert Advisors ที่พร้อมใช้งานใน MQL5 Wizard). คุณสามารถตรวจสอบแนวคิดการเทรดของคุณได้อย่างรวดเร็ว เพียงแค่สร้างคลาสสัญญาณการเทรดของคุณเอง โดยโครงสร้างของคลาสนี้และตัวอย่างสามารถดูได้ในบทความ MQL5 Wizard: วิธีการสร้างโมดูลของสัญญาณการเทรด.

แนวคิดทั่วไปคือ คลาสของสัญญาณการเทรดจะถูกสร้างขึ้นจาก CExpertSignal จากนั้นจะต้องเขียนเมธอด LongCondition() และ ShortCondition() ให้ตรงกับวิธีการของคุณเอง.

มีหนังสือชื่อ "Strategies of Best Traders" (เป็นภาษา รัสเซีย) ที่มีหลายกลยุทธ์การเทรดซึ่งเราจะมุ่งเน้นไปที่รูปแบบแท่งเทียนที่กลับตัว ยืนยันโดย Stochastic, CCI, MFI และ RSI ออสซิลเลเตอร์.

วิธีที่ดีที่สุดคือการสร้างคลาสแยกต่างหากที่สร้างขึ้นจาก CExpertSignal สำหรับตรวจสอบการเกิดรูปแบบแท่งเทียน เพื่อยืนยันสัญญาณการเทรดที่เกิดจากรูปแบบแท่งเทียน เพียงแค่เขียนคลาสที่สร้างขึ้นจาก CCandlePattern และเพิ่มฟีเจอร์ที่จำเป็น (เช่น ยืนยันโดยออสซิลเลเตอร์) เข้าไป.

ที่นี่เราจะพิจารณาสัญญาณที่อิงจากรูปแบบแท่งเทียน "Bullish Engulfing/Bearish Engulfing" ที่ได้รับการยืนยันโดย RSI โดยโมดูลของสัญญาณการเทรดนั้นจะถูกสร้างขึ้นจากคลาส CCandlePattern ซึ่งเป็นตัวอย่างง่าย ๆ ของการใช้งานเพื่อสร้างสัญญาณการเทรดด้วยรูปแบบแท่งเทียน.


1. "Bullish Engulfing" และ "Bearish Engulfing"

1.1. Bullish Engulfing

รูปแบบกลับตัว "Bullish Engulfing" จะเกิดขึ้นในช่วงแนวโน้มขาลงเมื่อแท่งเทียนสีดำขนาดเล็กตามมาด้วยแท่งเทียนสีขาวขนาดใหญ่ที่ปกคลุมแท่งเทียนของวันก่อนหน้าอย่างสมบูรณ์ เงาของแท่งเทียนขนาดเล็กจะสั้น ทำให้ร่างกายของแท่งเทียนขนาดใหญ่สามารถปกคลุมแท่งเทียนทั้งหมดจากวันก่อนหน้าได้.

Fig. 1. รูปแบบแท่งเทียน

Fig. 1. รูปแบบแท่งเทียน "Bullish Engulfing"

การตรวจจับรูปแบบ "Bullish Engulfing" จะถูกดำเนินการในเมธอด CheckPatternBullishEngulfing() ของ CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบแท่งเทียน "Bullish Engulfing"      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing
   if((Open(2)>Close(2))             &&  // แท่งเทียนก่อนหน้านี้เป็น bearish
      (Close(1)-Open(1)>AvgBody(1))  &&  // ร่างกายของแท่งเทียน bullish สูงกว่าค่าเฉลี่ยของร่างกาย
      (Close(1)>Open(2))             &&  // ราคาปิดของแท่งเทียน bullish สูงกว่าราคาเปิดของแท่งเทียน bearish
      (MidOpenClose(2)<CloseAvg(2))  &&  // แนวโน้มขาลง
      (Open(1)<Close(2)))                // ราคาที่เปิดของแท่งเทียน bullish ต่ำกว่าราคาที่ปิดของแท่งเทียน bearish
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) ของ CCandlePattern ถูกใช้เพื่อตรวจสอบการเกิดรูปแบบ "Bullish Engulfing".


1.2. Bearish Engulfing

รูปแบบกลับตัว "Bearish Engulfing" จะเกิดขึ้นในช่วงแนวโน้มขาขึ้นเมื่อแท่งเทียนสีขาวขนาดเล็กตามมาด้วยแท่งเทียนสีดำขนาดใหญ่ที่ปกคลุมแท่งเทียนของวันก่อนหน้าอย่างสมบูรณ์ เงาของแท่งเทียนขนาดเล็กจะสั้น ทำให้ร่างกายของแท่งเทียนขนาดใหญ่สามารถปกคลุมแท่งเทียนทั้งหมดจากวันก่อนหน้าได้.

Fig. 2. รูปแบบแท่งเทียน

Fig. 2. รูปแบบแท่งเทียน "Bearish Engulfing"

การตรวจจับรูปแบบ "Bearish Engulfing" จะถูกดำเนินการในเมธอด CheckPatternBearishEngulfing() ของ CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบแท่งเทียน "Bearish Engulfing"      |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing
   if((Open(2)<Close(2))            &&  // แท่งเทียนก่อนหน้านี้เป็น bullish
      (Open(1)-Close(1)>AvgBody(1)) &&  // ร่างกายของแท่งเทียน bearish สูงกว่าค่าเฉลี่ยของร่างกาย
      (Close(1)<Open(2))            &&  // ราคาปิดของแท่งเทียน bearish ต่ำกว่าราคาเปิดของแท่งเทียน bullish
      (MidOpenClose(2)>CloseAvg(2)) &&  // แนวโน้มขาขึ้น
      (Open(1)>Close(2)))               // ราคาที่เปิดของแท่งเทียน bearish สูงกว่าราคาที่ปิดของแท่งเทียน bullish
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) ของ CCandlePattern ถูกใช้เพื่อตรวจสอบการเกิดรูปแบบ "Bearish Engulfing".


2. สัญญาณการเทรดที่ยืนยันโดยออสซิลเลเตอร์ RSI

สัญญาณการเทรดเพื่อเปิดสถานะยาวหรือสั้นจะต้องได้รับการยืนยันโดย RSI โดยค่าของ RSI ต้องต่ำกว่าหรือสูงกว่าระดับวิกฤต (40 สำหรับสถานะยาวและ 60 สำหรับสถานะสั้น).

การปิดสถานะที่เปิดอยู่ขึ้นอยู่กับค่าของ RSI. สามารถทำได้ใน 2 กรณี:

  1. ถ้า RSI ถึงระดับวิกฤตที่ตรงกันข้าม (70 สำหรับสถานะยาวและ 30 สำหรับสถานะสั้น)
  2. ถ้าสัญญาณกลับตัวไม่ได้รับการยืนยัน (เมื่อ RSI ถึงระดับถัดไป: 30 สำหรับสถานะยาวและ 70 สำหรับสถานะสั้น)

Fig. 3. รูปแบบ

Fig. 3. รูปแบบ "Bullish Engulfing" ที่ได้รับการยืนยันโดยออสซิลเลเตอร์ RSI


  • int CBE_BE_RSI::LongCondition() - ตรวจสอบเงื่อนไขในการเปิดสถานะยาว (คืนค่า 80) และปิดสถานะสั้น (คืนค่า 40);
  • int CBE_BE_RSI::ShortCondition() - ตรวจสอบเงื่อนไขในการเปิดสถานะสั้น (คืนค่า 80) และปิดสถานะยาว (คืนค่า 40).

2.1. เปิดสถานะยาว/ปิดสถานะสั้น

  1. การเกิดรูปแบบ "Bullish Engulfing" ต้องได้รับการยืนยันโดย RSI: RSI(1)<40 (ค่าของ RSI ของแท่งที่แล้วต้องต่ำกว่า 40).

  2. สถานะสั้นต้องถูกปิดถ้า RSI ข้ามขึ้นระดับวิกฤต 70 หรือ 30.

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการเข้าและออกจากตลาด                 |
//| 1) การเข้าตลาด (เปิดสถานะยาว, ผลลัพธ์=80)                  |
//| 2) การออกจากตลาด (ปิดสถานะสั้น, ผลลัพธ์=40)                 |
//+------------------------------------------------------------------+
int CBE_BE_RSI::LongCondition()
  {
   int result=0;
//--- idx สามารถใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor
//--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่แต่ละที
//--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะในแท่งข่าว
  int idx   =StartIndex();
//--- ตรวจสอบเงื่อนไขในการเปิดสถานะยาว
//--- การเกิดรูปแบบ Bullish Engulfing และ RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1)<40))
     result=80;
//--- ตรวจสอบเงื่อนไขในการปิดสถานะสั้น
//--- สัญญาณการข้ามของระดับที่ถูกซื้อเกิน/ขายเกิน (ขึ้น 30, ขึ้น 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- คืนค่าผลลัพธ์
   return(result);
  }

2.2. เปิดสถานะสั้น/ปิดสถานะยาว

  1. การเกิดรูปแบบ "Bearish Engulfing" ต้องได้รับการยืนยันโดย RSI: RSI(1)>60 (ค่าของ RSI ของแท่งที่แล้วต้องสูงกว่า 60).

  2. สถานะยาวต้องถูกปิดถ้า RSI ข้ามลงระดับวิกฤต 70 หรือ 30.

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการเข้าและออกจากตลาด                 |
//| 1) การเข้าตลาด (เปิดสถานะสั้น, ผลลัพธ์=80)                 |
//| 2) การออกจากตลาด (ปิดสถานะยาว, ผลลัพธ์=40)                  |
//+------------------------------------------------------------------+
int CBE_BE_RSI::ShortCondition()
  {
   int result=0;
//--- idx สามารถใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor
//--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่แต่ละที
//--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะในแท่งข่าว
  int idx   =StartIndex();
//--- ตรวจสอบเงื่อนไขในการเปิดสถานะสั้น
//--- การเกิดรูปแบบ Bearish Engulfing และ RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1)>60))
     result=80;
//--- ตรวจสอบเงื่อนไขในการปิดสถานะยาว
//--- สัญญาณการข้ามของระดับที่ถูกซื้อเกิน/ขายเกิน (ลง 70, ลง 30)
  if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- คืนค่าผลลัพธ์
   return(result);
  }


2.3. การสร้าง Expert Advisor โดยใช้ MQL5 Wizard

คลาส CBE_BE_RSI ไม่ได้รวมอยู่ในคลาสของ Standard Library ต้องดาวน์โหลดไฟล์ acml_rsi.mqh (ดูในแนบ) และบันทึกไปที่ client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. ควรทำเช่นเดียวกันกับไฟล์ acandlepatterns.mqh. คุณสามารถใช้มันใน MQL5 Wizard หลังจากการรีสตาร์ทของ MetaEditor.

ในการสร้าง Expert Advisor ให้เปิด MQL5 Wizard:

Fig. 4. การสร้าง Expert Advisor โดยใช้ MQL5 Wizard

Fig. 4. การสร้าง Expert Advisor โดยใช้ MQL5 Wizard

ให้ระบุชื่อของ Expert Advisor:

Fig. 5. คุณสมบัติทั่วไปของ Expert Advisor

Fig. 5. คุณสมบัติทั่วไปของ Expert Advisor

จากนั้นเราต้องเลือกโมดูลของสัญญาณการเทรดที่ใช้.

Fig. 6. คุณสมบัติของสัญญาณของ Expert Advisor

Fig. 6. คุณสมบัติของสัญญาณของ Expert Advisor

ในกรณีของเราเราใช้เพียงโมดูลเดียวของสัญญาณการเทรด.

เพิ่มโมดูล "สัญญาณจาก Bullish Engulfing/Bearish Engulfing ยืนยันโดย RSI" ของสัญญาณการเทรด:

Fig. 7. คุณสมบัติของสัญญาณของ Expert Advisor

Fig. 7. คุณสมบัติของสัญญาณของ Expert Advisor

โมดูลของสัญญาณการเทรดได้ถูกเพิ่มแล้ว:

Fig. 8. คุณสมบัติของสัญญาณของ Expert Advisor

Fig. 8. คุณสมบัติของสัญญาณของ Expert Advisor

คุณสามารถเลือกคุณสมบัติการติดตามใด ๆ แต่เราจะใช้ "ไม่ใช้ Trailing Stop":

Fig. 9. คุณสมบัติการจัดการเงินของ Expert Advisor

Fig. 9. คุณสมบัติการจัดการเงินของ Expert Advisor

ในส่วนของคุณสมบัติการจัดการเงิน เราจะใช้ "การเทรดด้วยปริมาณการเทรดคงที่":

Fig. 10. คุณสมบัติการจัดการเงินของ Expert Advisor

Fig. 10. คุณสมบัติการจัดการเงินของ Expert Advisor

โดยการกดปุ่ม "เสร็จสิ้น" เราจะได้รับรหัสของ Expert Advisor ที่สร้างขึ้น ซึ่งจะถูกบันทึกไว้ใน terminal_data_folder\MQL5\Experts\.

พารามิเตอร์นำเข้าของ Expert Advisor ที่สร้างขึ้นตามค่าเริ่มต้น:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =10;     // ค่าเกณฑ์สัญญาณในการเปิด [0...100]
input int            Signal_ThresholdClose  =10;     // ค่าเกณฑ์สัญญาณในการปิด [0...100]
input double         Signal_PriceLevel      =0.0    // ระดับราคาที่จะดำเนินการทำธุรกรรม
input double         Signal_StopLevel       =50.0   // ระดับ Stop Loss (ในจุด)
input double         Signal_TakeLevel       =50.0    // ระดับ Take Profit (ในจุด)

ต้องถูกแทนที่ด้วย:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =40;     // ค่าเกณฑ์สัญญาณในการเปิด [0...100]
input int            Signal_ThresholdClose  =20;     // ค่าเกณฑ์สัญญาณในการปิด [0...100]
input double         Signal_PriceLevel      =0.0    // ระดับราคาที่จะดำเนินการทำธุรกรรม
input double         Signal_StopLevel       =0.0    // ระดับ Stop Loss (ในจุด)
input double         Signal_TakeLevel       =0.0    // ระดับ Take Profit (ในจุด)

พารามิเตอร์นำเข้า Signal_ThresholdOpen/Signal_ThresholdClose ช่วยให้สามารถกำหนดระดับเกณฑ์สำหรับการเปิดและปิดสถานะ.

ในรหัสของ LongCondition() และ ShortCondition() ของคลาสสัญญาณการเทรด เราได้ระบุค่าเกณฑ์คงที่:

  • เปิดสถานะ: 80;
  • ปิดสถานะ: 40.

Expert Advisor ที่สร้างขึ้นโดย MQL5 Wizard จะเปิดและปิดสถานะโดยใช้ "โหวต" จากโมดูลของสัญญาณการเทรด ผลโหวตของโมดูลหลัก (เป็นคอนเทนเนอร์ ซึ่งประกอบด้วยโมดูลทั้งหมดที่ถูกเพิ่มเข้ามา) ก็จะถูกใช้เช่นกัน แต่เมธอด LongCondition() และ ShortCondition() ของมันจะคืนค่าเป็น 0 เสมอ.

ผลการโหวตของโมดูลหลักก็จะถูกใช้ในการเฉลี่ย "โหวต" ในกรณีของเรามี: โมดูลหลัก + 1 โมดูลของสัญญาณการเทรด ดังนั้นต้องคำนึงถึงเรื่องนี้เมื่อกำหนดค่าระดับเกณฑ์ เนื่องจากเหตุผลนี้ ThresholdOpen และ ThresholdClose จะต้องตั้งค่าเป็น 40=(0+80)/2 และ 20=(0+40)/2.

ค่าของพารามิเตอร์นำเข้า Signal_StopLevel และ Signal_TakeLevel จะถูกตั้งค่าเป็น 0 ซึ่งหมายความว่าการปิดสถานะจะดำเนินการก็ต่อเมื่อเงื่อนไขการปิดเป็นจริง.


2.4. ผลการทดสอบย้อนหลัง

มาพิจารณาการทดสอบย้อนหลังของ Expert Advisor บนข้อมูลในอดีต (EURUSD H1, ช่วงการทดสอบ: 2010.01.01-2011.03.04, PeriodRSI=11, MA_period=5).

ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (การเทรดด้วยล็อตคงที่, 0.1) และไม่ใช้ Trailing Stop (ไม่ใช้ Trailing).

Fig. 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก Bullish Engulfing/Bearish Engulfing + RSI

Fig. 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก Bullish Engulfing/Bearish Engulfing + RSI


ชุดค่าพารามิเตอร์ที่ดีที่สุดสามารถพบได้โดยใช้ Strategy Tester ของเทอร์มินัล MetaTrader 5.

รหัสของ Expert Advisor ที่สร้างขึ้นโดย MQL5 Wizard ถูกแนบไว้ใน expert_abe_be_rsi.mq5.


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

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