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

MQL5 Wizard: สร้าง EA สำหรับสัญญาณการเทรดด้วย Dark Cloud Cover/Piercing Line + Stochastic

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

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

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

ในหนังสือ "Strategies of best traders" (ภาษารัสเซีย) มีการพิจารณากลยุทธ์การเทรดหลายแบบ โดยเราจะเน้นไปที่รูปแบบแท่งเทียนกลับตัวที่ได้รับการยืนยันโดย Stochastic, CCI, MFI และ RSI oscillators

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

ในที่นี้เราจะพิจารณาสัญญาณที่สร้างจากรูปแบบแท่งเทียนกลับตัว "Dark Cloud Cover/Piercing Line" ที่ได้รับการยืนยันจาก Stochastic โดยโมดูลของสัญญาณการเทรดจะอิงจากคลาส CCandlePattern ซึ่งเป็นตัวอย่างที่ง่ายสำหรับการสร้างสัญญาณการเทรดด้วยรูปแบบแท่งเทียน


1. รูปแบบแท่งเทียนกลับตัว "Dark Cloud Cover" และ "Piercing Line"

1.1. Dark Cloud Cover

รูปแบบนี้เป็นสัญญาณกลับตัวที่ bearish จะเกิดขึ้นที่จุดสิ้นสุดของขาขึ้น โดยในวันแรกจะมีแท่งเทียนสีขาวยาว และในวันถัดมาเกิด gap ขึ้น แต่วันถัดมาจะปิดที่ระดับต่ำกว่าจุดกึ่งกลางของวันแรก

Fig. 1.

Fig. 1. รูปแบบแท่งเทียน "Dark Cloud Cover"

การรู้จำรูปแบบ "Dark Cloud Cover" จะดำเนินการในเมธอด CheckPatternDarkCloudCover() ของคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบแท่งเทียน "Dark Cloud Cover"       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (ยาวสีขาว)
      (Close(1)<Close(2))            && //
      (Close(1)>Open(2))             && // (ปิดภายในร่างของวันก่อน)
      (MidOpenClose(2)>CloseAvg(1))  && // (ขาขึ้น)
      (Open(1)>High(2)))                // (เปิดที่ระดับสูงใหม่)
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) ของคลาส CCandlePattern ใช้เพื่อเช็คการเกิดรูปแบบ "Dark Cloud Cover"


1.2. Piercing Line

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

Figure 2.

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

การรู้จำรูปแบบ "Piercing Line" จะดำเนินการในเมธอด CheckPatternPiercingLine() ของคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบแท่งเทียน "Piercing Line"          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (ยาวสีขาว)
      (Open(2)-Close(2)>AvgBody(1)) && // (ยาวสีดำ)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (ปิดภายในร่างของวันก่อน) 
      (MidOpenClose(2)<CloseAvg(2)) && // (ขาลง)
      (Open(1)<Low(2)))                // (เปิดต่ำกว่าระดับต่ำก่อนหน้า) 
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) ของคลาส CCandlePattern ใช้เพื่อเช็คการเกิดรูปแบบ "Piercing Line"


2. สัญญาณการเทรดที่ได้รับการยืนยันโดย Stochastic Indicator

สัญญาณการเทรดเพื่อเปิดตำแหน่ง Long หรือ Short ต้องได้รับการยืนยันจาก Stochastic โดยสัญญาณเส้น %D ต้องสูงกว่าหรือต่ำกว่าระดับวิกฤติ (30 หรือ 70)

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

  • หากเส้น %D ถึงระดับวิกฤติที่ตรงกัน (80 สำหรับตำแหน่ง Long และ 20 สำหรับตำแหน่ง Short)
  • หากสัญญาณกลับตัวไม่ได้รับการยืนยัน (เมื่อเส้น %D อยู่ที่ระดับ 20 สำหรับตำแหน่ง Long และ 80 สำหรับตำแหน่ง Short)

Figure 3.

Figure 3. รูปแบบ "Dark Cloud Cover" ที่ได้รับการยืนยันโดย Stochastic Indicator


2.1. เปิดตำแหน่ง Long/ปิดตำแหน่ง Short

  1. การเกิดรูปแบบ "Piercing Line" ต้องได้รับการยืนยันโดย Stochastic Indicator: StochSignal(1)<30 (ค่าของเส้นสัญญาณของ Stochastic Indicator ของแท่งสุดท้ายต้องน้อยกว่า 30)

  2. ตำแหน่ง Short ต้องปิดหากเส้นสัญญาณของ Stochastic Indicator ข้ามขึ้นระดับ 20 หรือ 80

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

2.2. เปิดตำแหน่ง Short/ปิดตำแหน่ง Long

  1. การเกิดรูปแบบ "Dark Cloud Cover" ต้องได้รับการยืนยันโดย Stochastic Indicator: StochSignal(1)>70 (ค่าของเส้นสัญญาณของ Stochastic Indicator ของแท่งสุดท้ายต้องมากกว่า 70)

  2. ตำแหน่ง Long ต้องปิดหากเส้นสัญญาณของ Stochastic Indicator ข้ามลงระดับ 80 หรือ 20

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการเข้าหรือออกจากตลาด                 |
//| 1) เข้าตลาด (เปิดตำแหน่ง Short, result=80)                 |
//| 2) ออกจากตลาด (ปิดตำแหน่ง Long, result=40)                  |
//+------------------------------------------------------------------+
int CDC_PL_Stoch::ShortCondition()
  {
   int result=0;
//--- idx สามารถใช้ในการระบุโหมดการทำงานของ Expert Advisor
//--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่แต่ละ Tick
//--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะที่แท่งข่าว
  int idx   =StartIndex();
//--- ตรวจสอบเงื่อนไขในการเปิดตำแหน่ง Short
//--- การเกิดรูปแบบ Dark Cloud Cover และเส้นสัญญาณ>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (StochSignal(1)>70))
     result=80;
//--- ตรวจสอบเงื่อนไขในการปิดตำแหน่ง Long
//--- การข้ามเส้นสัญญาณของระดับ overbought/oversold (ลง 80, ขึ้น 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- คืนค่าผลลัพธ์
   return(result);
  }

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

คลาส CDC_PL_Stoch ไม่ได้รวมอยู่ในคลาส Standard Library ดังนั้นจึงต้องดาวน์โหลดไฟล์ adc_pl_stoch.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

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

เพิ่มโมดูล "สัญญาณที่อิงจาก Dark Cloud Cover/Piercing Line โดยได้รับการยืนยันจาก Stochastic":

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 ที่สร้างขึ้น ซึ่งอยู่ใน Expert_ADC_PL_Stoch.mq5 จะถูกบันทึกใน 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.02.02, PeriodK=9, PeriodD=5, PeriodSlow=20, MA_period=27)

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

Fig. 11. ผลการทดสอบของ Expert Advisor ที่สร้างจาก Dark Cloud Cover/Piercing Line + Stochastic

Fig. 11. ผลการทดสอบของ Expert Advisor ที่สร้างจาก Dark Cloud Cover/Piercing Line + Stochastic


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

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

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

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