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

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. รูปแบบ "Dark Cloud Cover" ที่ได้รับการยืนยันโดย Stochastic Indicator
2.1. เปิดตำแหน่ง Long/ปิดตำแหน่ง Short
การเกิดรูปแบบ "Piercing Line" ต้องได้รับการยืนยันโดย Stochastic Indicator: StochSignal(1)<30 (ค่าของเส้นสัญญาณของ Stochastic Indicator ของแท่งสุดท้ายต้องน้อยกว่า 30)
ตำแหน่ง 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
การเกิดรูปแบบ "Dark Cloud Cover" ต้องได้รับการยืนยันโดย Stochastic Indicator: StochSignal(1)>70 (ค่าของเส้นสัญญาณของ Stochastic Indicator ของแท่งสุดท้ายต้องมากกว่า 70)
ตำแหน่ง 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
ให้เรากำหนดชื่อของ Expert Advisor:

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

Fig. 6. คุณสมบัติของสัญญาณของ Expert Advisor
ในกรณีของเราใช้เพียงโมดูลเดียวในการสร้างสัญญาณการเทรด
เพิ่มโมดูล "สัญญาณที่อิงจาก Dark Cloud Cover/Piercing Line โดยได้รับการยืนยันจาก Stochastic":

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

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

Fig. 9. คุณสมบัติการจัดการเงินของ 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
ชุดค่าพารามิเตอร์ที่ดีที่สุดสามารถค้นหาได้จาก Strategy Tester ของ MetaTrader 5
โค้ดของ Expert Advisor ที่สร้างโดย MQL5 Wizard จะถูกแนบไว้ใน expert_adc_pl_stoch.mq5.
โพสต์ที่เกี่ยวข้อง
- MQL5 Wizard: สร้างสัญญาณการเทรดจาก Bullish Harami/Bearish Harami พร้อม MFI
- การสร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Morning/Evening Stars + RSI
- MQL5 Wizard: ระบบเทรดสัญญาณจาก Hammer/Hanging Man + MFI บน MetaTrader 5
- สร้าง Expert Advisor ด้วย MQL5 Wizard สำหรับสัญญาณการเทรด Bullish Harami/Bearish Harami และ RSI
- สร้าง Expert Advisor ด้วย MQL5 Wizard สำหรับสัญญาณการเทรดด้วย Bullish/Bearish Meeting Lines + Stochastic