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

MQL5 Wizard: สร้างสัญญาณเทรดจาก Bullish Harami/Bearish Harami + Stochastic สำหรับ MetaTrader 5

ไฟล์แนบ
310.zip (6.59 KB, ดาวน์โหลด 2 ครั้ง)

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

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

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

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

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

1. รูปแบบเทียนกลับตัว "Bullish Harami" และ "Bearish Harami"

1.1. Bullish Harami

รูปแบบ Bullish Harami จะเกิดขึ้นในช่วงแนวโน้มขาลงเมื่อมีเทียนขนาดใหญ่ที่ตามมาด้วยเทียนขนาดเล็กที่มีลำตัวอยู่ภายในขอบเขตแนวตั้งของลำตัวที่ใหญ่กว่า รูปแบบนี้บ่งบอกว่าทิศทางที่ลดลงอาจจะกลับตัว มันบ่งบอกว่าเป็นเวลาที่ดีในการเข้าไปในตำแหน่งซื้อ (long position). เทียนที่สองจะเปิดด้วยช่องว่างขึ้น.

ยิ่งเทียนที่สอง (สีขาว) มีขนาดเล็กมากเท่าไหร่ โอกาสในการกลับตัวก็จะยิ่งมากขึ้น.

Fig. 1.

Fig. 1. รูปแบบเทียน "Bullish Harami"

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

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

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


1.2. Bearish Harami

รูปแบบ Bearish Harami จะเกิดขึ้นในช่วงแนวโน้มขาขึ้นเมื่อมีเทียนขนาดใหญ่ที่ตามมาด้วยเทียนขนาดเล็กที่มีลำตัวอยู่ภายในขอบเขตแนวตั้งของลำตัวที่ใหญ่กว่า รูปแบบนี้บ่งบอกว่าทิศทางที่เพิ่มขึ้นอาจจะกลับตัว มันบ่งบอกว่าเป็นเวลาที่ดีในการเข้าไปในตำแหน่งขาย (short position). เทียนที่สองจะเปิดด้วยช่องว่างลง.

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

Fig. 2.

Fig. 2. รูปแบบเทียน "Bearish Harami"

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

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

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


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

สัญญาณการเทรดเพื่อเปิดตำแหน่งขายหรือซื้อจะต้องได้รับการยืนยันโดย Stochastic ออสซิลเลเตอร์. สัญญาณ %D จะต้องมีค่ามากกว่าหรือน้อยกว่าระดับที่สำคัญ (30 หรือ 70).

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

  1. หากสาย %D ถึงระดับสำคัญในทางตรงกันข้าม (80 สำหรับตำแหน่งซื้อและ 20 สำหรับตำแหน่งขาย)
  2. หากไม่มีการยืนยันสัญญาณกลับ (เมื่อสาย %D ถึงระดับถัดไป: 20 สำหรับตำแหน่งซื้อและ 80 สำหรับตำแหน่งขาย)

Fig. 3.

Fig. 3. รูปแบบเทียน "Bearish Harami", ที่ได้รับการยืนยันโดย Stochastic indicator

การตรวจสอบเงื่อนไขการเทรดเพื่อเข้าและออกได้ถูกดำเนินการใน 2 เมธอด:

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

2.1. เปิดตำแหน่งซื้อ/ปิดตำแหน่งขาย

  1. การก่อตัวของรูปแบบ "Bullish Harami" ต้องได้รับการยืนยันโดย Stochastic indicator: StochSignal(1)<30 (ค่าของสัญญาณของ Stochastic indicator ของแท่งเทียนที่แล้วต้องน้อยกว่า 30).

  2. ตำแหน่งขายต้องถูกปิดหากสายสัญญาณของ Stochastic indicator ข้ามขึ้นไปที่ระดับ 20 หรือ 80.

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

2.2. เปิดตำแหน่งขาย/ปิดตำแหน่งซื้อ

  1. การก่อตัวของรูปแบบ "Bearish Harami" ต้องได้รับการยืนยันโดย Stochastic indicator: StochSignal(1)>70 (ค่าของสัญญาณของ Stochastic indicator ของแท่งเทียนที่แล้วต้องมากกว่า 70).

  2. ตำแหน่งซื้อจะต้องถูกปิดหากสายสัญญาณของ Stochastic indicator ข้ามลงมาที่ระดับ 80 หรือ 20.

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

คลาส CBH_BH_Stoch ไม่รวมอยู่ในคลาส Standard Library ดังนั้นเพื่อใช้งานมัน คุณต้องดาวน์โหลดไฟล์ acbh_bh_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

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

เพิ่มโมดูล "สัญญาณที่อิงจาก Bullish Harami/Bearish Harami ที่ได้รับการยืนยันโดย Stochastic" ของสัญญาณการเทรด:

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

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

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

//--- พารามิเตอร์สำหรับสัญญาณหลัก
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 (ในจุด)

ต้องเปลี่ยนเป็น:

//--- พารามิเตอร์สำหรับสัญญาณหลัก
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 โมดูลสัญญาณการเทรด ดังนั้นเราต้องคำนึงถึงเรื่องนี้เมื่อกำหนดค่าธรณี เนื่องจากเหตุนี้ ค่าธรณีเปิดและปิดต้องตั้งค่าเป็น 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, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (Trading Fixed Lot, 0.1), ไม่ได้ใช้กลยุทธ์ Trailing Stop (Trailing not used).

Fig. 11. ผลลัพธ์การทดสอบของ Expert Advisor ที่อิงจาก

Fig. 11. ผลลัพธ์การทดสอบของ Expert Advisor ที่อิงจาก "Bullish/Bearish Harami + Stochastic"


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

โค้ดของ Expert Advisor ที่สร้างโดย MQL5 Wizard แนบมาด้วยใน expert_abh_bh_stoch.mq5.

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

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