MQL5 Wizard เป็นเครื่องมือที่ช่วยให้เราสร้าง Expert Advisors ที่พร้อมใช้งาน โดยอิงจาก คลาสในไลบรารีมาตรฐาน ของ MetaTrader 5 (สามารถดูรายละเอียดเพิ่มเติมเกี่ยวกับการสร้าง Expert Advisors ได้จาก หน้า MQL5 Wizard). การใช้เครื่องมือนี้ทำให้เราสามารถตรวจสอบไอเดียการเทรดของเราได้อย่างรวดเร็ว เพียงแค่สร้างคลาสสัญญาณการเทรดของเราเอง
แนวคิดหลักคือการสร้างคลาสสัญญาณการเทรด โดยสืบทอดมาจาก CExpertSignal และจากนั้นให้เราเขียนฟังก์ชัน LongCondition() และ ShortCondition() เพื่อให้เหมาะสมกับกลยุทธ์ของเรา
มีหนังสือที่ชื่อ "กลยุทธ์ของเทรดเดอร์ที่ดีที่สุด" (เป็นภาษารัสเซีย) ที่พูดถึงกลยุทธ์การเทรดมากมาย ซึ่งเราจะมุ่งเน้นไปที่รูปแบบแท่งเทียนกลับตัวที่ได้รับการยืนยันโดย Stochastic, CCI, MFI และ RSI
วิธีที่ดีที่สุดคือการสร้างคลาสแยกต่างหากที่สืบทอดมาจาก CExpertSignal สำหรับการตรวจสอบการเกิดรูปแบบแท่งเทียน การยืนยันสัญญาณการเทรดที่เกิดจากรูปแบบแท่งเทียนสามารถทำได้โดยการเขียนคลาสที่สืบทอดมาจาก CCandlePattern และเพิ่มฟีเจอร์ที่จำเป็น (เช่น การยืนยันโดยออสซิลเลเตอร์)
1. รูปแบบแท่งเทียน Bullish Engulfing และ Bearish Engulfing
1.1. Bullish Engulfing
รูปแบบ Bullish Engulfing เกิดขึ้นในแนวโน้มขาลง เมื่อแท่งเทียนสีดำขนาดเล็กถูกตามด้วยแท่งเทียนสีขาวขนาดใหญ่ที่ปิดทับแท่งเทียนของวันก่อนหน้าอย่างสมบูรณ์ เงาของแท่งเทียนขนาดเล็กจะสั้น ทำให้แท่งเทียนขนาดใหญ่สามารถปิดทับแท่งเทียนของวันก่อนหน้าได้ทั้งหมด

Fig. 1. รูปแบบ Bullish Engulfing
การระบุรูปแบบ Bullish Engulfing จะถูกดำเนินการในฟังก์ชัน CheckPatternBullishEngulfing() ของ CCandlePattern:
//+------------------------------------------------------------------+ //| ตรวจสอบการเกิดรูปแบบ Bullish Engulfing | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- Bullish Engulfing if((Open(2)>Close(2)) && // แท่งเทียนก่อนหน้าคือขาลง (Close(1)-Open(1)>AvgBody(1)) && // แท่งเทียนขาขึ้นสูงกว่าค่าเฉลี่ยของแท่งเทียน (Close(1)>Open(2)) && // ราคาปิดของแท่งเทียนขาขึ้นสูงกว่าราคาเปิดของแท่งเทียนขาลง (MidOpenClose(2)<CloseAvg(2)) && // แนวโน้มขาลง (Open(1)<Close(2))) // ราคาเปิดของแท่งเทียนขาขึ้นต่ำกว่าราคาปิดของแท่งเทียนขาลง return(true); //--- return(false); }
ฟังก์ชัน CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) ของ CCandlePattern ถูกใช้เพื่อตรวจสอบการเกิดรูปแบบ Bullish Engulfing
1.2. Bearish Engulfing
รูปแบบ Bearish Engulfing เกิดขึ้นในแนวโน้มขาขึ้น เมื่อแท่งเทียนสีขาวขนาดเล็กถูกตามด้วยแท่งเทียนสีดำขนาดใหญ่ที่ปิดทับแท่งเทียนของวันก่อนหน้าอย่างสมบูรณ์ เงาของแท่งเทียนขนาดเล็กจะสั้น ทำให้แท่งเทียนขนาดใหญ่สามารถปิดทับแท่งเทียนของวันก่อนหน้าได้ทั้งหมด

Fig. 2. รูปแบบ Bearish Engulfing
การระบุรูปแบบ Bearish Engulfing จะถูกดำเนินการในฟังก์ชัน CheckPatternBearishEngulfing() ของ CCandlePattern:
//+------------------------------------------------------------------+ //| ตรวจสอบการเกิดรูปแบบ Bearish Engulfing | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- Bearish Engulfing if((Open(2)<Close(2)) && // แท่งเทียนก่อนหน้าคือขาขึ้น (Open(1)-Close(1)>AvgBody(1)) && // แท่งเทียนขาลงสูงกว่าค่าเฉลี่ยของแท่งเทียน (Close(1)<Open(2)) && // ราคาปิดของแท่งเทียนขาลงต่ำกว่าราคาเปิดของแท่งเทียนขาขึ้น (MidOpenClose(2)>CloseAvg(2)) && // แนวโน้มขาขึ้น (Open(1)>Close(2))) // ราคาเปิดของแท่งเทียนขาลงสูงกว่าราคาปิดของแท่งเทียนขาขึ้น return(true); //--- return(false); }
ฟังก์ชัน CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) ของ CCandlePattern ถูกใช้เพื่อตรวจสอบการเกิดรูปแบบ Bearish Engulfing
2. สัญญาณการเทรดที่ได้รับการยืนยันโดยออสซิลเลเตอร์ CCI
สัญญาณการเทรดเพื่อเปิดตำแหน่งยาวหรือสั้นจะต้องได้รับการยืนยันโดย CCI โดยค่าของ CCI จะต้องสูงกว่าหรือต่ำกว่าระดับวิกฤต (-50 สำหรับตำแหน่งยาว และ 50 สำหรับตำแหน่งสั้น)
การปิดตำแหน่งที่เปิดอยู่จะขึ้นอยู่กับค่าของ CCI ซึ่งสามารถทำได้ใน 2 กรณี:
- หากเส้น CCI ถึงระดับวิกฤตตรงข้าม (80 สำหรับตำแหน่งยาว และ -80 สำหรับตำแหน่งสั้น)
- หากสัญญาณกลับไม่ถูกยืนยัน (เมื่อ CCI ถึงระดับต่อไป: -80 สำหรับตำแหน่งยาว และ 80 สำหรับตำแหน่งสั้น)

Fig. 3. รูปแบบ Bullish Engulfing ที่ได้รับการยืนยันโดย CCI
- int CBE_BE_CCI::LongCondition() - ตรวจสอบเงื่อนไขในการเปิดตำแหน่งยาว (คืนค่า 80) และปิดตำแหน่งสั้น (คืนค่า 40);
- int CBE_BE_CCI::ShortCondition() - ตรวจสอบเงื่อนไขในการเปิดตำแหน่งสั้น (คืนค่า 80) และปิดตำแหน่งยาว (คืนค่า 40).
2.1. เปิดตำแหน่งยาว/ปิดตำแหน่งสั้น
การเกิดรูปแบบ Bullish Engulfing ต้องได้รับการยืนยันโดย CCI: CCI(1)<-50 (ค่าของ CCI ของแท่งล่าสุดที่เสร็จสมบูรณ์ต้องน้อยกว่า -50).
ตำแหน่งสั้นต้องถูกปิดหากดัชนี CCI ข้ามขึ้นไปยังระดับวิกฤต -80 หรือข้ามลงไปยังระดับวิกฤต 80.
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขในการเข้าและออกจากตลาด | //| 1) การเข้า (เปิดตำแหน่งยาว, ผลลัพธ์=80) | //| 2) การออก (ปิดตำแหน่งสั้น, ผลลัพธ์=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::LongCondition() { int result=0; //--- idx ใช้กำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่แต่ละติ๊ก //--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะเมื่อมีข่าว int idx =StartIndex(); //--- ตรวจสอบเงื่อนไขในการเปิดตำแหน่งยาว //--- รูปแบบ Bullish Engulfing และ CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1)<-50)) result=80; //--- ตรวจสอบเงื่อนไขในการปิดตำแหน่งสั้น //--- สัญญาณข้ามระดับซื้อมาก/ขายมาก (ลงไปที่ -80, ลงไปที่ -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- คืนค่าผลลัพธ์ return(result); }
2.2. เปิดตำแหน่งสั้น/ปิดตำแหน่งยาว
การเกิดรูปแบบ Bearish Engulfing ต้องได้รับการยืนยันโดย CCI : CCI(1)>50 (ค่าของ CCI ของแท่งล่าสุดที่เสร็จสมบูรณ์ต้องมากกว่า 50).
ตำแหน่งยาวต้องถูกปิดหาก CCI ข้ามลงไปยังระดับ -80 หรือ 80.
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขในการเข้าและออกจากตลาด | //| 1) การเข้า (เปิดตำแหน่งสั้น, ผลลัพธ์=80) | //| 2) การออก (ปิดตำแหน่งยาว, ผลลัพธ์=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::ShortCondition() { int result=0; //--- idx ใช้กำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่แต่ละติ๊ก //--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะเมื่อมีข่าว int idx =StartIndex(); //--- ตรวจสอบเงื่อนไขในการเปิดตำแหน่งสั้น //--- รูปแบบ Bearish Engulfing และ CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1)>50)) result=80; //--- ตรวจสอบเงื่อนไขในการปิดตำแหน่งยาว //--- สัญญาณข้ามระดับซื้อมาก/ขายมาก (ลงไปที่ -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
คลาส CBE_BE_CCI จะไม่ถูกนำเข้ามาในคลาสของไลบรารีมาตรฐาน ดังนั้นจึงต้องดาวน์โหลดไฟล์ acbe_be_cci.mqh (ดูจากแนบ) และบันทึกไว้ในโฟลเดอร์ client_terminal_data\MQL5\Include\Expert\Signal\MySignals. ควรทำเช่นเดียวกันกับไฟล์ candlepatterns.mqh. หลังจากรีสตาร์ท MetaEditor คุณสามารถใช้ได้ใน MQL5 Wizard
ในการสร้าง Expert Advisor ให้เปิด MQL5 Wizard:

Fig. 4. การสร้าง Expert Advisor โดยใช้ MQL5 Wizard
ให้ระบุชื่อ Expert Advisor:

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

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

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

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

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

Fig. 10. คุณสมบัติการจัดการเงินของ Expert Advisor
เมื่อกดปุ่ม "เสร็จสิ้น" เราจะได้รับโค้ดของ Expert Advisor ที่สร้างขึ้น ซึ่งจะถูกบันทึกไว้ใน Expert_ABE_BE_CCI.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 โมดูลสัญญาณการเทรด ดังนั้นเราจึงต้องคำนึงถึงเรื่องนี้เมื่อกำหนดค่าธรณี เพราะฉะนั้น 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=49, MA_period=11).
ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (การเทรดด้วยปริมาณคงที่, 0.1), ไม่ใช้กลยุทธ์ Trailing Stop (ไม่ใช้ Trailing).

Fig. 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก Bullish Engulfing/Bearish Engulfing + CCI
เซ็ตค่าพารามิเตอร์ที่ดีที่สุดสามารถค้นหาได้โดยใช้ Strategy Tester ของ MetaTrader 5.
โค้ดของ Expert Advisor ที่สร้างขึ้นโดย MQL5 Wizard จะถูกแนบใน expert_abe_be_cci.mq5.
โพสต์ที่เกี่ยวข้อง
- การสร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Morning/Evening Stars + RSI
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Bullish Engulfing/Bearish Engulfing + RSI
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก Morning/Evening Stars + MFI
- ใช้ MQL5 Wizard สร้าง Expert Advisor ด้วยสัญญาณเทรด Morning/Evening Stars + Stochastic
- MQL5 Wizard: สร้างสัญญาณการเทรดจาก Bullish Harami/Bearish Harami พร้อม MFI