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

สร้างสัญญาณการซื้อขายด้วย MQL5 Wizard: Bullish Harami/Bearish Harami + CCI

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

แนะนำ MQL5 Wizard สำหรับการสร้าง Expert Advisor

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

การสร้างคลาสสัญญาณการซื้อขาย

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

เราจะใช้รูปแบบแท่งเทียนกลับตัวที่เรียกว่า "Bullish Harami" และ "Bearish Harami" ซึ่งมีการยืนยันจาก CCI Indicator ซึ่งจะช่วยให้เราสามารถสร้างสัญญาณการซื้อขายจากรูปแบบแท่งเทียนนี้ได้

1. รูปแบบแท่งเทียน Bullish Harami และ Bearish Harami

1.1. Bullish Harami

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

Bullish Harami reversal pattern

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

การตรวจสอบรูปแบบ Bullish Harami จะทำในฟังก์ชัน CheckPatternBullishHarami() ของคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบ Bullish Harami                           |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && 
     ((Open(2)-Close(2))>AvgBody(1))  && 
     ((Close(1)<Open(2))              && 
      (Open(1)>Close(2)))              && 
      (MidPoint(2)<CloseAvg(2)))         
      return(true);
//---
   return(false);
  }

ฟังก์ชัน CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) จะใช้ในการตรวจสอบการเกิดรูปแบบ Bullish Harami

1.2. Bearish Harami

รูปแบบ Bearish Harami จะเกิดขึ้นในช่วงขาขึ้น โดยมีแท่งเทียนใหญ่ตามด้วยแท่งเทียนขนาดเล็กที่มีร่างกายอยู่ภายในช่วงของแท่งเทียนใหญ่ รูปแบบนี้บ่งบอกว่าสถานะขาขึ้นอาจจะกลับตัวได้ และเป็นสัญญาณที่ดีในการเปิดสถานะขาย โดยแท่งเทียนที่สองจะเปิดด้วยช่องว่างลง

Bearish Harami reversal pattern

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

การตรวจสอบรูปแบบ Bearish Harami จะทำในฟังก์ชัน CheckPatternBearishHarami() ของคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดรูปแบบ Bearish Harami                           |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && 
     ((Close(2)-Open(2))>AvgBody(1))  && 
     ((Close(1)>Open(2))              && 
      (Open(1)<Close(2)))              && 
      (MidPoint(2)>CloseAvg(2)))         
      return(true);
//---
   return(false);
  }

ฟังก์ชัน CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) จะใช้ในการตรวจสอบการเกิดรูปแบบ Bearish Harami

2. สัญญาณการซื้อขายที่ยืนยันด้วย CCI Indicator

สัญญาณการซื้อขายเพื่อเปิดสถานะซื้อหรือขายต้องได้รับการยืนยันจาก CCI Indicator โดยค่า CCI ต้องมีค่ามากกว่าหรือน้อยกว่าระดับวิกฤติ (-50 สำหรับสถานะซื้อและ 50 สำหรับสถานะขาย).

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

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

สัญญาณ Bullish Harami

รูปที่ 3. สัญญาณ Bullish Harami ที่ยืนยันด้วย CCI Indicator

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

2.1. เปิดสถานะซื้อ/ปิดสถานะขาย

  1. การเกิดรูปแบบ "Bullish Harami" ต้องได้รับการยืนยันจาก CCI Indicator: CCI(1)<-50 (ค่าของ CCI ของแท่งเทียนที่แล้วต้องน้อยกว่า -50).

  2. สถานะขายต้องถูกปิดหาก CCI Indicator ข้ามขึ้นไปยังระดับวิกฤติ -80 หรือข้ามลงไปยังระดับ 80.

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

2.2. เปิดสถานะขาย/ปิดสถานะซื้อ

  1. การเกิดรูปแบบ "Bearish Harami" ต้องได้รับการยืนยันจาก CCI Indicator: CCI(1)>50 (ค่าของ CCI ของแท่งเทียนที่แล้วต้องมากกว่า 50).

  2. สถานะซื้อจะต้องถูกปิดเมื่อ CCI Indicator ข้ามลงไปยังระดับ -80 หรือ 80.

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

2.3. การสร้าง Expert Advisor ด้วย MQL5 Wizard

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

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

การสร้าง Expert Advisor ด้วย MQL5 Wizard

รูปที่ 4. การสร้าง Expert Advisor ด้วย MQL5 Wizard

ให้ตั้งชื่อ Expert Advisor:

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

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

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

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

รูปที่ 6. คุณสมบัติของสัญญาณ Expert Advisor

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

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

คุณสมบัติของ Expert Advisor

รูปที่ 7. คุณสมบัติของ Expert Advisor

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

คุณสมบัติของ Expert Advisor

รูปที่ 8. คุณสมบัติของ Expert Advisor

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

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

รูปที่ 9. คุณสมบัติการ trailing ของ Expert Advisor

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

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

รูปที่ 10. คุณสมบัติการจัดการเงินของ Expert Advisor

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

ค่าพารามิเตอร์เริ่มต้นของ 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 โมดูลของสัญญาณการซื้อขาย ดังนั้นเราจึงต้องพิจารณาข้อเท็จจริงนี้เมื่อกำหนดค่าระดับเกณฑ์ เนื่องจากเหตุผลนี้ 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.16, PeriodCCI=11, MA_period=5).

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

ผลการทดสอบ Expert Advisor

รูปที่ 11. ผลการทดสอบ Expert Advisor ที่สร้างจาก Bullish Harami/Bearish Harami + CCI


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

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


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

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