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

รูปที่ 1. รูปแบบ "Bullish Meeting Lines"
การตรวจจับรูปแบบ "Bullish Meeting Lines" จะถูกดำเนินการในเมธอด CheckPatternBullishMeetingLines() ของคลาส CCandlePattern
//+--------------------------------------------------------------------+ //| ตรวจสอบการเกิดรูปแบบ "Bullish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines if((Open(2)-Close(2)>AvgBody(1)) && // แท่งเทียนขาลงยาว ((Close(1)-Open(1))>AvgBody(1)) && // แท่งเทียนขาขึ้นยาว (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // ปิดตำแหน่ง doji return(true); //--- return(false); }
เมธอด CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) ของคลาส CCandlePattern ถูกใช้ในการตรวจสอบการเกิดรูปแบบ "Bullish Meeting Lines"
1.2. Bearish Meeting Lines
รูปแบบนี้ประกอบด้วยแท่งเทียนสองแท่ง (แท่งเทียนขาขึ้นและขาลง) ที่มีราคาปิดใกล้เคียงกัน (หรือเท่ากัน) โดยร่างกายของแท่งเทียนทั้งสองต้องมีขนาดใหญ่กว่าความยาวเฉลี่ยของร่างกาย
รูปแบบ "Bearish Meeting Lines" บ่งบอกถึงการกลับตัวของแนวโน้มขาขึ้น

รูปที่ 2. รูปแบบ "Bearish Meeting Lines"
การตรวจจับรูปแบบ "Bearish Meeting Lines" จะถูกดำเนินการในเมธอด CheckPatternBearishMeetingLines() ของคลาส CCandlePattern
//+--------------------------------------------------------------------+ //| ตรวจสอบการเกิดรูปแบบ "Bearish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines if((Close(2)-Open(2)>AvgBody(1)) && // แท่งเทียนขาขึ้นยาว ((Open(1)-Close(1)>AvgBody(1)) && // แท่งเทียนขาลงยาว (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // ปิดตำแหน่ง doji return(true); //--- return(false); }
เมธอด CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) ของคลาส CCandlePattern ถูกใช้ในการตรวจสอบการเกิดรูปแบบ "Bearish Meeting Lines"
2. สัญญาณการเทรดที่ยืนยันโดยตัวชี้วัด CCI
สัญญาณการเทรดเพื่อเปิดตำแหน่งยาวหรือสั้นจะต้องได้รับการยืนยันโดย CCI ซึ่งค่าของ CCI ต้องสูงกว่าหรือต่ำกว่าระดับที่กำหนด (-50 สำหรับตำแหน่งยาว และ 50 สำหรับตำแหน่งสั้น)
การปิดตำแหน่งที่เปิดอยู่จะขึ้นอยู่กับค่าของ CCI ซึ่งสามารถทำได้ใน 2 กรณี:
- หากเส้น CCI ถึงระดับวิกฤติในทางตรงกันข้าม (80 สำหรับตำแหน่งยาว และ -80 สำหรับตำแหน่งสั้น)
- หากสัญญาณกลับไม่ถูกยืนยัน (เมื่อ CCI ถึงระดับต่อไป: -80 สำหรับตำแหน่งยาว และ 80 สำหรับตำแหน่งสั้น)

รูปที่ 3. รูปแบบ "Bullish Meeting Lines" ที่ยืนยันโดย CCI
- int CML_CCI::LongCondition() - ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งยาว (คืนค่า 80) และปิดตำแหน่งสั้น (คืนค่า 40);
- int CML_CCI::ShortCondition() - ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งสั้น (คืนค่า 80) และปิดตำแหน่งยาว (คืนค่า 40).
2.1. เปิดตำแหน่งยาว/ปิดตำแหน่งสั้น
การเกิดรูปแบบ "Bullish Meeting Lines" ต้องได้รับการยืนยันโดย CCI ตัวชี้วัด: CCI(1)<-50 (ค่าของ CCI ของแท่งที่เสร็จสิ้นล่าสุดต้องน้อยกว่า -50)
ตำแหน่งสั้นต้องถูกปิดหากตัวชี้วัด CCI ข้ามระดับวิกฤติ -80 ขึ้นไปหรือลงระดับวิกฤติ 80
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขสำหรับการเข้าตลาด | //| 1) การเข้าตลาด (เปิดตำแหน่งยาว, result=80) | //| 2) การออกตลาด (ปิดตำแหน่งสั้น, result=40) | //+------------------------------------------------------------------+ int CML_CCI::LongCondition() { int result=0; //--- idx สามารถใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่แต่ละ tick //--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะตอนข่าว int idx =StartIndex(); //--- การตรวจสอบเงื่อนไขในการเปิดตำแหน่งยาว //--- การเกิดรูปแบบ Bullish Meeting Lines และ CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (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 Meeting Lines" ต้องได้รับการยืนยันโดย CCI ตัวชี้วัด: CCI(1)>50 (ค่าของ CCI ของแท่งที่เสร็จสิ้นล่าสุดต้องมากกว่า 50)
ตำแหน่งยาวต้องถูกปิดหากตัวชี้วัด CCI ข้ามลงระดับ -80 หรือลงระดับ 80
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขสำหรับการเข้าตลาด | //| 1) การเข้าตลาด (เปิดตำแหน่งสั้น, result=80) | //| 2) การออกตลาด (ปิดตำแหน่งยาว, result=40) | //+------------------------------------------------------------------+ int CML_CCI::ShortCondition() { int result=0; //--- idx สามารถใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดที่แต่ละ tick //--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะตอนข่าว int idx =StartIndex(); //--- การตรวจสอบเงื่อนไขในการเปิดตำแหน่งสั้น //--- การเกิดรูปแบบ Bearish Meeting Lines และ CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (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
คลาส CML_CCI ไม่ได้รวมอยู่ในคลาสของ Standard Library ดังนั้นเพื่อใช้มัน คุณต้องดาวน์โหลดไฟล์ acml_cci.mqh (ดูไฟล์แนบ) และบันทึกลงในโฟลเดอร์ terminal_data_folder\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/Bearish Meeting Lines ที่ยืนยันโดย CCI" ของสัญญาณการเทรด:

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

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

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

รูปที่ 10. คุณสมบัติการจัดการเงินของ Expert Advisor
เมื่อกดปุ่ม "เสร็จสิ้น" เราจะได้รับโค้ดของ Expert Advisor ที่สร้างขึ้น ซึ่งจะถูกบันทึกใน Expert_AML_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 โมดูลของสัญญาณการเทรด ดังนั้นเราจึงต้องคำนึงถึงเรื่องนี้เมื่อตั้งค่าค่าธรณี เนื่องจากเหตุนี้ ค่าธรณีเปิดและปิดจะต้องตั้งไว้ที่ 40=(0+80)/2 และ 20=(0+40)/2
ค่าของพารามิเตอร์ Signal_StopLevel และ Signal_TakeLevel ถูกตั้งค่าเป็น 0 หมายความว่าการปิดตำแหน่งจะทำได้เฉพาะเมื่อเงื่อนไขการปิดเป็นจริง
2.4. ผลลัพธ์การทดสอบย้อนหลัง
มาดูการทดสอบย้อนหลังของ Expert Advisor บนข้อมูลประวัติศาสตร์ (EURUSD H1, ระยะเวลาทดสอบ: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3)
ในการสร้าง Expert Advisor เราใช้ขนาดล็อตที่คงที่ (การเทรดล็อตคงที่, 0.1) โดยไม่ใช้ Trailing Stop (Trailing ไม่ได้ใช้)

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