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

Fig. 1. รูปแบบแท่งเทียน "Hammer"
การรู้จำรูปแบบ "Hammer" จะถูกดำเนินการในเมธอด CheckPatternHammer() ของคลาส CCandlePattern:
//+------------------------------------------------------------------+ //| ตรวจสอบการเกิดรูปแบบ "Hammer" แท่งเทียน | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHammer() { //--- Hammer if((MidPoint(1)<CloseAvg(2)) && // แนวโน้มขาลง (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // ร่างกายใน 1/3 บน (Close(1)2)) && (Open(1) 2))) // ช่องว่างของร่างกาย return(true); //--- return(false); }
เมธอด CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) ของคลาส CCandlePattern ใช้เพื่อตรวจสอบการเกิดรูปแบบ "Hammer" แท่งเทียน.
1.2. Hanging Man
"Hanging Man" เป็นแท่งเทียนที่มีร่างกายเล็กและมีไส้ล่างยาว เกิดขึ้นหลังจากการเคลื่อนไหวของราคาขึ้น โดยรูปแบบ "Hanging Man" แสดงถึงการสิ้นสุดของแนวโน้มขาขึ้น.
สีของร่างกายแท่งเทียนไม่สำคัญ แต่ถ้าเป็น "bearish candle" จะชี้ให้เห็นถึงศักยภาพที่สูงขึ้นในด้านขาลง ร่างกายของรูปแบบ "Hanging Man" มักจะเกิดขึ้นใกล้กับจุดสูงสุดของแท่งเทียนก่อนหน้า ไส้ล่างที่ยาวและไส้บนที่สั้นทำให้มีศักยภาพสูงขึ้นในรูปแบบกลับตัว.

Fig. 2. รูปแบบแท่งเทียน "Hanging Man"
การรู้จำรูปแบบ "Hanging Man" จะถูกดำเนินการในเมธอด CheckPatternHangingMan() ของคลาส CCandlePattern:
//+------------------------------------------------------------------+ //| ตรวจสอบการเกิดรูปแบบ "Hanging Man" แท่งเทียน | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHangingMan() { //--- Hanging man if((MidPoint(1)>CloseAvg(2)) && // แนวโน้มขาขึ้น (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // ร่างกายใน 1/3 บน (Close(1)>Close(2)) && (Open(1)>Open(2)))) // ช่องว่างของร่างกาย return(true); //--- return(false); }
เมธอด CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) ของคลาส CCandlePattern ใช้เพื่อตรวจสอบการเกิดรูปแบบ "Hanging Man" แท่งเทียน.
2. สัญญาณการเทรดที่ได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic
สัญญาณการเทรดเพื่อเปิดตำแหน่งยาวหรือสั้นจะต้องได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic เส้น %D ต้องมากกว่าหรือน้อยกว่าระดับวิกฤติที่เกี่ยวข้อง (30 หรือ 70).
การปิดตำแหน่งที่เปิดอยู่ขึ้นอยู่กับค่าของออสซิลเลเตอร์ %D ซึ่งสามารถทำได้ใน 2 กรณี:
- ถ้าเส้น %D ถึงระดับวิกฤตที่ตรงข้าม (80 สำหรับตำแหน่งยาวและ 20 สำหรับตำแหน่งสั้น)
- ถ้าสัญญาณกลับตัวไม่ถูกยืนยัน (เมื่อเส้น %D ถึงระดับต่อไปคือ 20 สำหรับตำแหน่งยาวและ 80 สำหรับตำแหน่งสั้น)

Fig. 3. รูปแบบ "Hammer" ที่ได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic
- int CH_HM_Stoch::LongCondition() - ตรวจสอบเงื่อนไขการเปิดตำแหน่งยาว (ส่งคืน 80) และปิดตำแหน่งสั้น (ส่งคืน 40);
- int CH_HM_Stoch::ShortCondition() - ตรวจสอบเงื่อนไขการเปิดตำแหน่งสั้น (ส่งคืน 80) และปิดตำแหน่งยาว (ส่งคืน 40).
2.1. เปิดตำแหน่งยาว/ปิดตำแหน่งสั้น
การเกิดรูปแบบ "Hammer" ต้องได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic: StochSignal(1)<30 (ค่าของเส้นสัญญาณของออสซิลเลเตอร์ Stochastic ของแท่งที่แล้วต้องน้อยกว่า 30).
ตำแหน่งสั้นจะต้องปิดลงเมื่อเส้นสัญญาณของ Stochastic ข้ามขึ้นไปที่ระดับ 20 หรือ 80.
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขสำหรับการเข้าหรือออกจากตลาด | //| 1) เข้าตลาด (เปิดตำแหน่งยาว, ผลลัพธ์=80) | //| 2) ออกจากตลาด (ปิดตำแหน่งสั้น, ผลลัพธ์=40) | //+------------------------------------------------------------------+ int CH_HM_Stoch::LongCondition() { int result=0; //--- idx ใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA ตรวจสอบเงื่อนไขการเทรดที่แต่ละที //--- idx=1 - ในกรณีนี้ EA ตรวจสอบเงื่อนไขการเทรดเฉพาะที่แท่งข่าว int idx =StartIndex(); //--- ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งยาว //--- การเกิดรูปแบบ Hammer และเส้นสัญญาณ<30 if (CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (StochSignal(1)<30)) result=80; //--- ตรวจสอบเงื่อนไขเพื่อปิดตำแหน่งสั้น //--- การข้ามระดับของเส้นสัญญาณที่ต่ำเกินไป/สูงเกินไป (ลง 20, ขึ้น 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- ส่งคืนผลลัพธ์ return(result); }
2.2. เปิดตำแหน่งสั้น/ปิดตำแหน่งยาว
การเกิดรูปแบบ "Hanging Man" ต้องได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic: StochSignal(1)>70 (ค่าของเส้นสัญญาณของออสซิลเลเตอร์ Stochastic ของแท่งที่แล้วต้องมากกว่า 70).
ตำแหน่งยาวจะต้องปิดลงเมื่อเส้นสัญญาณของ Stochastic ข้ามลงมาที่ระดับ 80 หรือ 20.
//+------------------------------------------------------------------+ //| ตรวจสอบเงื่อนไขสำหรับการเข้าหรือออกจากตลาด | //| 1) เข้าตลาด (เปิดตำแหน่งสั้น, ผลลัพธ์=80) | //| 2) ออกจากตลาด (ปิดตำแหน่งยาว, ผลลัพธ์=40) | //+------------------------------------------------------------------+ int CH_HM_Stoch::ShortCondition() { int result=0; //--- idx ใช้เพื่อกำหนดโหมดการทำงานของ Expert Advisor //--- idx=0 - ในกรณีนี้ EA ตรวจสอบเงื่อนไขการเทรดที่แต่ละที //--- idx=1 - ในกรณีนี้ EA ตรวจสอบเงื่อนไขการเทรดเฉพาะที่แท่งข่าว int idx =StartIndex(); //--- ตรวจสอบเงื่อนไขเพื่อเปิดตำแหน่งสั้น //--- การเกิดรูปแบบ Hanging Man และเส้นสัญญาณ>70 if (CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (StochSignal(1)>70)) result=80; //--- ตรวจสอบเงื่อนไขเพื่อปิดตำแหน่งยาว //--- การข้ามระดับของเส้นสัญญาณที่ต่ำเกินไป/สูงเกินไป (ลง 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
คลาส CH_HM_Stoch ไม่รวมอยู่ในคลาสของไลบรารีมาตรฐาน ดังนั้นต้องดาวน์โหลดไฟล์ ach_hm_stoch.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
ในกรณีของเราใช้เพียงโมดูลสัญญาณการเทรดเดียว.
เพิ่มโมดูล "สัญญาณจาก Hammer/Hanging Man ที่ได้รับการยืนยันโดย Stochastic" ของสัญญาณการเทรด:

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

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

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

Fig. 10. คุณสมบัติการจัดการเงินของ Expert Advisor
เมื่อกดปุ่ม "Finish" คุณจะได้รับรหัสของ Expert Advisor ที่สร้างขึ้น ซึ่งจะถูกบันทึกใน Expert_AH_HM_Stoch.mq5 ใน terminal_data_folder\MQL5\Experts\.
พารามิเตอร์เริ่มต้นของ Expert Advisor ที่สร้างขึ้น:
//--- inputs สำหรับสัญญาณหลัก 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 สำหรับสัญญาณหลัก 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.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).
ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (การเทรดด้วย Lot คงที่, 0.1), ไม่มีการใช้ Trailing Stop (ไม่ใช้ Trailing).

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