MQL5 Wizard เป็นเครื่องมือที่ช่วยให้เราสร้าง Expert Advisors ที่พร้อมใช้งานตามแนวทางการเทรดของเรา ใช้งานได้ง่ายมาก แค่เราสร้างคลาสสัญญาณการเทรดของเราเอง ซึ่งจะช่วยให้เราสามารถตรวจสอบไอเดียการเทรดได้อย่างรวดเร็ว อ่านเพิ่มเติมเกี่ยวกับการสร้าง Expert Advisors ที่พร้อมใช้งานใน MQL5 Wizard
แนวคิดโดยรวมคือการสร้างคลาสสัญญาณการเทรดที่สืบทอดมาจาก CExpertSignal จากนั้นเราต้องทำการเขียนฟังก์ชัน LongCondition() และ ShortCondition() ด้วยวิธีการของเราเอง
ในบทความนี้เราจะมาพูดถึงสัญญาณที่สร้างจากรูปแบบเทียน "Morning Star" และ "Evening Star" พร้อมการยืนยันจาก CCI โดยโมดูลสัญญาณการเทรดนี้จะอิงจากคลาส CCandlePattern ซึ่งเราจะใช้ตัวอย่างง่ายๆ ในการสร้างสัญญาณการเทรดจากรูปแบบเทียน
1. รูปแบบเทียน "Morning Star" และ "Evening Star"
1.1. Morning Star
รูปแบบนี้จะบ่งบอกถึงการกลับตัวของแนวโน้มขาลง โดยมี 3 เทียน (ดูภาพที่ 1) หลังจากที่มีเทียนดำยาว เทียนถัดไปจะต้องมีขนาดเล็ก (สีไม่สำคัญ) ซึ่งอยู่ภายนอกตัวเทียนดำ เทียนขนาดเล็กนี้หมายความว่ากำลังของกระทิงและหมีเท่ากัน และตลาดเตรียมที่จะเปลี่ยนแนวโน้ม
เทียนที่สามของรูปแบบนี้จะเป็นเทียนกระทิง โดยตัวของมันจะไม่ทับกับตัวของเทียนที่สอง และราคาปิดจะอยู่ภายในตัวของเทียนแรก (ซึ่งเป็นเทียนหมี) ภาพที่เกิดขึ้นจากรูปแบบนี้จะแสดงในภาพที่ 1
ในกรณีที่เทียนที่สองเป็นเทียนแบบ Doji จะเรียกว่า "Morning Doji Star"

Fig. 1. รูปแบบเทียน Morning Star และ Morning Doji Star
การตรวจสอบรูปแบบ "Morning Star" สามารถทำได้ในฟังก์ชัน CheckPatternMorningStar() และ CheckPatternMorningDoji() ของคลาส CCandlePattern:
//+------------------------------------------------------------------+ //| ตรวจสอบการสร้างรูปแบบ Morning Star | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternMorningStar() { //--- Morning Star if((Open(3)-Close(3)>AvgBody(1)) && // เทียนหมี, ตัวใหญ่กว่าเฉลี่ย (MathAbs(Close(2)-Open(2)<AvgBody(1*0.5) && // เทียนที่สองมีขนาดเล็กกว่า (Close(2)<Close(3)) && // ปิดของเทียนที่สองต่ำกว่าปิดของเทียนแรก (Open(2)<Open(3)) && // เปิดของเทียนที่สองต่ำกว่าของเทียนแรก (Close(1)>MidOpenClose(3))) return(true); //--- return(false); }
ฟังก์ชัน CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) และ CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) ใช้ในการตรวจสอบการสร้างรูปแบบ "Morning Star" และ "Morning Doji Star"
1.2. Evening Star
รูปแบบนี้จะแสดงถึงการกลับตัวของแนวโน้มขาขึ้น มี 3 เทียน (ดูภาพที่ 2) หลังจากที่มีเทียนขาวยาว เทียนถัดไปจะต้องมีขนาดเล็ก (สีไม่สำคัญ) ซึ่งอยู่ภายนอกตัวเทียนขาว เทียนขนาดเล็กนี้หมายความว่ากำลังของกระทิงและหมีเท่ากัน และตลาดเตรียมที่จะเปลี่ยนแนวโน้ม
เทียนที่สามจะเป็นเทียนหมี โดยตัวของมันจะไม่ทับกับตัวของเทียนที่สอง และราคาปิดจะอยู่ภายในตัวของเทียนแรก (ซึ่งเป็นเทียนกระทิง) ภาพที่เกิดขึ้นจากรูปแบบนี้จะแสดงในภาพที่ 2
ในกรณีที่เทียนที่สองเป็นเทียนแบบ Doji จะเรียกว่า "Evening Doji Star"

Fig. 2. รูปแบบเทียน Evening Star และ Evening Doji Star
นี่คือฟังก์ชันสำหรับการตรวจสอบการสร้างรูปแบบ "Evening Star" และ "Evening Doji Star":
//+------------------------------------------------------------------+ //| ตรวจสอบการสร้างรูปแบบ Evening Star | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternEveningStar() { //--- Evening Star if((Close(3)-Open(3)>AvgBody(1)) && // เทียนกระทิง, ตัวใหญ่กว่าเฉลี่ย (MathAbs(Close(2)-Open(2)<AvgBody(1*0.5) && // เทียนที่สองมีขนาดเล็ก (Close(2)>Close(3)) && // ปิดของเทียนที่สองสูงกว่าปิดของเทียนแรก (Open(2)>Open(3)) && // เปิดของเทียนที่สองสูงกว่าของเทียนแรก (Close(1)<MidOpenClose(3))) return(true); //--- return(false); }
ฟังก์ชัน CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) และ CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) ใช้ในการตรวจสอบการสร้างรูปแบบ "Evening Star" และ "Evening Doji Star"
2. สัญญาณการเทรดที่ยืนยันโดย CCI
สัญญาณการเทรดเพื่อเปิดตำแหน่งยาวหรือตำแหน่งสั้นจะต้องได้รับการยืนยันจาก CCI โดยค่า CCI จะต้องสูงหรือต่ำกว่าระดับสำคัญ (-50 สำหรับตำแหน่งยาวและ 50 สำหรับตำแหน่งสั้น)
การปิดตำแหน่งที่เปิดอยู่จะขึ้นอยู่กับค่าของ CCI โดยสามารถทำได้ใน 2 กรณี:
- หากเส้น CCI ข้ามไปถึงระดับสำคัญตรงข้าม (80 สำหรับตำแหน่งยาวและ -80 สำหรับตำแหน่งสั้น)
- หากสัญญาณกลับตัวไม่ได้รับการยืนยัน (เมื่อ CCI ถึงระดับถัดไป: -80 สำหรับตำแหน่งยาวและ 80 สำหรับตำแหน่งสั้น)

Fig. 3. รูปแบบ Evening Star ที่ยืนยันโดย CCI
- int CMS_ES_CCI::LongCondition() - ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งยาว (คืนค่า 80) และปิดตำแหน่งสั้น (คืนค่า 40);
- int CMS_ES_CCI::ShortCondition() - ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งสั้น (คืนค่า 80) และปิดตำแหน่งยาว (คืนค่า 40).
2.1. เปิดตำแหน่งยาว/ปิดตำแหน่งสั้น
การสร้างรูปแบบ "Morning Star" ต้องได้รับการยืนยันจาก CCI: CCI(1)<-50 (ค่าของ CCI ของบาร์ที่เสร็จสมบูรณ์ล่าสุดต้องน้อยกว่า -50)
ต้องปิดตำแหน่งสั้นหาก CCI ข้ามขึ้นไปที่ระดับสำคัญ -80 หรือข้ามลงที่ระดับ 80
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขสำหรับเข้าตลาดและออกจากตลาด | //| 1) เข้าตลาด (เปิดตำแหน่งยาว, ผลลัพธ์=80) | //| 2) ออกตลาด (ปิดตำแหน่งสั้น, ผลลัพธ์=40) | //+------------------------------------------------------------------+ int CMS_ES_CCI::LongCondition() { int result=0; //--- idx สามารถใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA เช็คเงื่อนไขการเทรดที่ทุกติ๊ก //--- idx=1 - ในกรณีนี้ EA เช็คเงื่อนไขการเทรดเฉพาะที่บาร์ข่าว int idx =StartIndex(); //--- ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งยาว //--- การสร้างรูปแบบ Morning Star และ CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (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. เปิดตำแหน่งสั้น/ปิดตำแหน่งยาว
การสร้างรูปแบบ "Evening Star" ต้องได้รับการยืนยันจาก CCI: CCI(1)>50 (ค่าของ CCI ของบาร์ที่เสร็จสมบูรณ์ล่าสุดต้องมากกว่า 50)
ต้องปิดตำแหน่งยาวหาก CCI ข้ามลงที่ระดับ -80 หรือ 80
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขสำหรับเข้าตลาดและออกจากตลาด | //| 1) เข้าตลาด (เปิดตำแหน่งสั้น, ผลลัพธ์=80) | //| 2) ออกตลาด (ปิดตำแหน่งยาว, ผลลัพธ์=40) | //+------------------------------------------------------------------+ int CMS_ES_CCI::ShortCondition() { int result=0; //--- idx สามารถใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA เช็คเงื่อนไขการเทรดที่ทุกติ๊ก //--- idx=1 - ในกรณีนี้ EA เช็คเงื่อนไขการเทรดเฉพาะที่บาร์ข่าว int idx =StartIndex(); //--- ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งสั้น //--- การสร้างรูปแบบ Evening Star และ CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (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
คลาส CMS_ES_CCI ไม่ได้รวมอยู่ในคลาส Standard Library ดังนั้นต้องดาวน์โหลดไฟล์ acms_es_cci.mqh (ดูแนบ) และบันทึกที่ client_terminal_data_folder\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
ในกรณีนี้เราใช้เพียงโมดูลเดียวของสัญญาณการเทรด
เพิ่มโมดูล สัญญาณที่อิงจาก Morning/Evening Stars ที่ได้รับการยืนยันโดย CCI:

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

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

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

Fig. 10. คุณสมบัติการจัดการเงินของ Expert Advisor
กดปุ่ม "เสร็จสิ้น" เราจะได้โค้ดของ Expert Advisor ที่สร้างขึ้น ซึ่งจะถูกบันทึกที่ 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, ระยะเวลาทดสอบ: 2009.01.01-2011.03.16, PeriodCCI=25, MA_period=5)
ในการสร้าง Expert Advisor เราใช้ปริมาณการคงที่ (Trading Fixed Lot, 0.1) และไม่ใช้อัลกอริธึม Trailing Stop (Trailing not used).

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