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

สร้างระบบเทรดด้วย MQL5 Wizard: สัญญาณการเทรดจาก 3 Black Crows/3 White Soldiers + RSI

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

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

แนวคิดพื้นฐานคือ การสร้างคลาสสัญญาณการเทรดที่สืบทอดจาก CExpertSignal และต้องทำการ override เมธอด LongCondition() และ ShortCondition() ด้วยเมธอดของคุณเอง.

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

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

1. รูปแบบแท่งเทียนกลับตัว 3 Black Crows และ 3 White Soldiers

1.1 3 Black Crows

เป็นรูปแบบแท่งเทียนขาลงที่ใช้ในการทำนายการกลับตัวของแนวโน้มขาขึ้น รูปแบบนี้ประกอบด้วยแท่งเทียนที่มีลำตัวยาวสามแท่งติดต่อกัน โดยแต่ละแท่งได้ปิดต่ำกว่าแท่งก่อนหน้าและเปิดในลำตัวของแท่งก่อนหน้านี้.

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

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

การตรวจสอบรูปแบบ "3 Black Crows" ใช้เมธอด CheckPatternThreeBlackCrows ในคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบแท่งเทียน 3 Black Crows             |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Black Crows 
   if((Open(3)-Close(3)>AvgBody(1)) && // (แท่งดำยาว)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) &&
      (MidPoint(2)3))          && // (จุดกลางต่ำ)
      (MidPoint(1)2)))     
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) ของ CCandlePattern ใช้ในการตรวจสอบการเกิดรูปแบบแท่งเทียน "3 Black Crows".

1.2 3 White Soldiers

เป็นรูปแบบแท่งเทียนขาขึ้นที่ใช้ในการทำนายการกลับตัวของแนวโน้มขาลง โดยประกอบด้วยแท่งเทียนที่มีลำตัวยาวสามแท่งติดต่อกัน โดยแต่ละแท่งได้ปิดสูงกว่าแท่งก่อนหน้า และเปิดในลำตัวของแท่งก่อนหน้านี้.

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

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

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

ต่อไปนี้เป็นวิธีการตรวจสอบการเกิดรูปแบบ "3 White Soldiers":

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบแท่งเทียน 3 White Soldiers         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 White Soldiers
   if((Close(3)-Open(3)>AvgBody(1)) && // แท่งขาวยาว
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))          && // (จุดกลางสูง)
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) ของ CCandlePattern ใช้ในการตรวจสอบการเกิดรูปแบบแท่งเทียน "3 White Soldiers".

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

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

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

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

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

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

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

2.1 เปิดตำแหน่งยาว/ปิดตำแหน่งสั้น

  1. การเกิดรูปแบบ "3 White Soldiers" ต้องได้รับการยืนยันจาก RSI โดย RSI(1)<40 (ค่า RSI ของแท่งที่เสร็จสิ้นล่าสุดต้องน้อยกว่า 40).

  2. ตำแหน่งสั้นต้องถูกปิดหาก RSI ข้ามขึ้นไปยังระดับสำคัญ 70 หรือ 30.

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

2.2 เปิดตำแหน่งสั้น/ปิดตำแหน่งยาว

  1. การเกิดรูปแบบ "3 Black Crows" ต้องได้รับการยืนยันจาก RSI โดย RSI(1)>60 (ค่า RSI ต้องมากกว่า 60).

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

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขสำหรับการเข้าตลาดและออกจากตลาด                   |
//| 1) เข้าตลาด (เปิดตำแหน่งสั้น, ผลลัพธ์=80)                         |
//| 2) ออกจากตลาด (ปิดตำแหน่งยาว, ผลลัพธ์=40)                       |
//+------------------------------------------------------------------+
int CBC_WS_RSI::ShortCondition()
  {
   int result=0;
//--- idx สามารถใช้กำหนดโหมดการทำงานของ Expert Advisor
//--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่ทุกทิก
//--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะที่แท่งข่าว
  int idx   =StartIndex();
//--- ตรวจสอบเงื่อนไขในการเปิดตำแหน่งสั้น
//--- การเกิดรูปแบบ 3 Black Crows และ RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60))
     result=80;
//--- ตรวจสอบเงื่อนไขในการปิดตำแหน่งยาว
//--- สัญญาณข้ามระดับ overbought/oversold (ลง 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

คลาส CML_RSI ไม่ได้รวมอยู่ในคลาส Standard Library ดังนั้นคุณจะต้องดาวน์โหลดไฟล์ acml_rsi.mqh (ดูแนบ) และบันทึกไว้ในโฟลเดอร์ client_terminal_data\MQL5\Include\Expert\Signal\MySignals. สิ่งเดียวกันนี้ควรทำกับไฟล์ candlepatterns.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

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

เพิ่มโมดูล สัญญาณที่อิงจาก 3 Black Crows/3 White Soldiers ลงในสัญญาณการเทรด:

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

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

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

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

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

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

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

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

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

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

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

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

พารามิเตอร์การตั้งค่าที่ตั้งไว้ล่วงหน้าของ Expert Advisor ที่สร้างขึ้น:

//--- inputs สำหรับสัญญาณหลัก
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 สำหรับสัญญาณหลัก
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 ช่วยให้คุณสามารถกำหนดระดับ threshold สำหรับการเปิดและปิดตำแหน่ง.

ในโค้ดของเมธอด LongCondition() และ ShortCondition() ของคลาสสัญญาณการเทรด เราได้กำหนดค่า threshold ที่คงที่:

  • เปิดตำแหน่ง: 80;
  • ปิดตำแหน่ง: 40;

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

ผลการลงคะแนนเสียงของโมดูลหลักยังถูกนำมาใช้ใน "การเฉลี่ยคะแนนเสียง" ในกรณีของเราเรามี: โมดูลหลัก + 1 โมดูลสัญญาณการเทรด ดังนั้นเราจึงต้องคำนึงถึงเรื่องนี้เมื่อกำหนดค่าระดับ threshold เพราะเหตุนี้ 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.02.02, PeriodRSI=37, MA_period=51).

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

Fig. 11. ผลการทดสอบ Expert Advisor ที่อิงจาก 3 Black Crows/3 White Soldiers + RSI

Fig. 11. ผลการทดสอบ Expert Advisor ที่อิงจาก 3 Black Crows/3 White Soldiers + RSI

ค่าพารามิเตอร์ที่ดีที่สุดสามารถหาได้จากการใช้ Strategy Tester ของ MetaTrader 5.

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

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

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