แนะนำ 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 จะเกิดขึ้นในช่วงขาลง โดยมีแท่งเทียนใหญ่ตามด้วยแท่งเทียนขนาดเล็กที่มีร่างกายอยู่ภายในช่วงของแท่งเทียนใหญ่ รูปแบบนี้บ่งบอกว่าสถานะขาลงอาจจะกลับตัวได้ และเป็นสัญญาณที่ดีในการเปิดสถานะซื้อ โดยแท่งเทียนที่สองจะเปิดด้วยช่องว่างขึ้น ยิ่งแท่งเทียนที่สองเล็กมากเท่าไหร่ การกลับตัวก็ยิ่งมีความเป็นไปได้สูงขึ้น

รูปที่ 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 จะเกิดขึ้นในช่วงขาขึ้น โดยมีแท่งเทียนใหญ่ตามด้วยแท่งเทียนขนาดเล็กที่มีร่างกายอยู่ภายในช่วงของแท่งเทียนใหญ่ รูปแบบนี้บ่งบอกว่าสถานะขาขึ้นอาจจะกลับตัวได้ และเป็นสัญญาณที่ดีในการเปิดสถานะขาย โดยแท่งเทียนที่สองจะเปิดด้วยช่องว่างลง

รูปที่ 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 กรณี:
- หากเส้น CCI ถึงระดับวิกฤติที่ตรงข้าม (80 สำหรับสถานะซื้อและ -80 สำหรับสถานะขาย)
- หากสัญญาณกลับตัวไม่ได้รับการยืนยัน (เมื่อ CCI ถึงระดับ -80 สำหรับสถานะซื้อและ 80 สำหรับสถานะขาย)

รูปที่ 3. สัญญาณ Bullish Harami ที่ยืนยันด้วย CCI Indicator
- int CBH_BH_CCI::LongCondition() - ตรวจสอบเงื่อนไขในการเปิดสถานะซื้อ (คืนค่า 80) และปิดสถานะขาย (คืนค่า 40);
- int CBH_BH_CCI::ShortCondition() - ตรวจสอบเงื่อนไขในการเปิดสถานะขาย (คืนค่า 80) และปิดสถานะซื้อ (คืนค่า 40).
2.1. เปิดสถานะซื้อ/ปิดสถานะขาย
การเกิดรูปแบบ "Bullish Harami" ต้องได้รับการยืนยันจาก CCI Indicator: CCI(1)<-50 (ค่าของ CCI ของแท่งเทียนที่แล้วต้องน้อยกว่า -50).
สถานะขายต้องถูกปิดหาก 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. เปิดสถานะขาย/ปิดสถานะซื้อ
การเกิดรูปแบบ "Bearish Harami" ต้องได้รับการยืนยันจาก CCI Indicator: CCI(1)>50 (ค่าของ CCI ของแท่งเทียนที่แล้วต้องมากกว่า 50).
สถานะซื้อจะต้องถูกปิดเมื่อ 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:

รูปที่ 4. การสร้าง Expert Advisor ด้วย MQL5 Wizard
ให้ตั้งชื่อ Expert Advisor:

รูปที่ 5. คุณสมบัติทั่วไปของ Expert Advisor
หลังจากนั้นให้เลือกโมดูลของสัญญาณการซื้อขายที่ใช้.

รูปที่ 6. คุณสมบัติของสัญญาณ Expert Advisor
ในกรณีของเราใช้เพียงโมดูลเดียวของสัญญาณการซื้อขาย.
เพิ่มโมดูล "สัญญาณที่อิงจาก Bullish Harami/Bearish Harami ยืนยันด้วย CCI" ของสัญญาณการซื้อขาย:

รูปที่ 7. คุณสมบัติของ Expert Advisor
โมดูลของสัญญาณการซื้อขายถูกเพิ่มแล้ว:

รูปที่ 8. คุณสมบัติของ Expert Advisor
คุณสามารถเลือกคุณสมบัติการ trailing ใด ๆ แต่เราจะใช้ "Trailing Stop ไม่ใช้":

รูปที่ 9. คุณสมบัติการ trailing ของ 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).

รูปที่ 11. ผลการทดสอบ Expert Advisor ที่สร้างจาก Bullish Harami/Bearish Harami + CCI
ค่าพารามิเตอร์ที่ดีที่สุดสามารถค้นหาได้จาก Strategy Tester ของ MetaTrader 5.
โค้ดของ Expert Advisor ที่สร้างขึ้นโดย MQL5 Wizard จะถูกแนบไว้ใน expert_abh_bh_cci.mq5.
โพสต์ที่เกี่ยวข้อง
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก Morning/Evening Stars + MFI
- สร้างสัญญาณการซื้อขายด้วย MQL5 Wizard: การใช้ EMA และกรองเวลาภายใน
- สร้างสัญญาณการซื้อขายด้วย MQL5 Wizard: เทคนิค Hammer/Hanging Man และ CCI
- สร้าง EA บน MQL5 Wizard ด้วยสัญญาณการซื้อขายจากแท่งเทียน 3 Black Crows/3 White Soldiers + Stochastic
- สร้าง Expert Advisor ด้วย MQL5 Wizard สำหรับสัญญาณการเทรด Bullish Harami/Bearish Harami และ RSI