หน้าแรก การเทรดด้วยระบบ โพสต์

สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Hammer/Hanging Man + Stochastic

ไฟล์แนบ
314.zip (6.58 KB, ดาวน์โหลด 0 ครั้ง)

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. รูปแบบแท่งเทียน

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. รูปแบบแท่งเทียน

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 กรณี:

  1. ถ้าเส้น %D ถึงระดับวิกฤตที่ตรงข้าม (80 สำหรับตำแหน่งยาวและ 20 สำหรับตำแหน่งสั้น)
  2. ถ้าสัญญาณกลับตัวไม่ถูกยืนยัน (เมื่อเส้น %D ถึงระดับต่อไปคือ 20 สำหรับตำแหน่งยาวและ 80 สำหรับตำแหน่งสั้น)

Fig. 3. รูปแบบ

Fig. 3. รูปแบบ "Hammer" ที่ได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic


  • int CH_HM_Stoch::LongCondition() - ตรวจสอบเงื่อนไขการเปิดตำแหน่งยาว (ส่งคืน 80) และปิดตำแหน่งสั้น (ส่งคืน 40);
  • int CH_HM_Stoch::ShortCondition() - ตรวจสอบเงื่อนไขการเปิดตำแหน่งสั้น (ส่งคืน 80) และปิดตำแหน่งยาว (ส่งคืน 40).

2.1. เปิดตำแหน่งยาว/ปิดตำแหน่งสั้น

  1. การเกิดรูปแบบ "Hammer" ต้องได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic: StochSignal(1)<30 (ค่าของเส้นสัญญาณของออสซิลเลเตอร์ Stochastic ของแท่งที่แล้วต้องน้อยกว่า 30).

  2. ตำแหน่งสั้นจะต้องปิดลงเมื่อเส้นสัญญาณของ 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. เปิดตำแหน่งสั้น/ปิดตำแหน่งยาว

  1. การเกิดรูปแบบ "Hanging Man" ต้องได้รับการยืนยันโดยออสซิลเลเตอร์ Stochastic: StochSignal(1)>70 (ค่าของเส้นสัญญาณของออสซิลเลเตอร์ Stochastic ของแท่งที่แล้วต้องมากกว่า 70).

  2. ตำแหน่งยาวจะต้องปิดลงเมื่อเส้นสัญญาณของ 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

Fig. 4. การสร้าง Expert Advisor ด้วย MQL5 Wizard

ให้กำหนดชื่อของ Expert Advisor:

Fig. 5. คุณสมบัติทั่วไปของ Expert Advisor

Fig. 5. คุณสมบัติทั่วไปของ Expert Advisor

จากนั้นเราต้องเลือกโมดูลของสัญญาณการเทรดที่ใช้.

Fig. 6. คุณสมบัติของสัญญาณ Expert Advisor

Fig. 6. คุณสมบัติของสัญญาณ Expert Advisor

ในกรณีของเราใช้เพียงโมดูลสัญญาณการเทรดเดียว.

เพิ่มโมดูล "สัญญาณจาก Hammer/Hanging Man ที่ได้รับการยืนยันโดย Stochastic" ของสัญญาณการเทรด:

Fig. 7. คุณสมบัติของสัญญาณ Expert Advisor

Fig. 7. คุณสมบัติของสัญญาณ Expert Advisor

โมดูลของสัญญาณการเทรดยังไม่ได้ถูกเพิ่ม:

Fig. 8. คุณสมบัติของสัญญาณ Expert Advisor

Fig. 8. คุณสมบัติของสัญญาณ Expert Advisor

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

Fig. 9. คุณสมบัติการ trailing ของ Expert Advisor

Fig. 9. คุณสมบัติการ trailing ของ Expert Advisor

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

Fig. 10. คุณสมบัติการจัดการเงินของ 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

Fig. 11. ผลการทดสอบของ Expert Advisor ที่สร้างจาก Hammer/Hanging Man + Stochastic


ค่าพารามิเตอร์ที่ดีที่สุดสามารถค้นหาได้โดยใช้ Strategy Tester ของเทอร์มินัล MetaTrader 5.

โค้ดของ Expert Advisor ที่สร้างโดย MQL5 Wizard ถูกแนบไว้ใน expert_ah_hm_stoch.mq5.

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)