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

สร้างสัญญาณเทรดด้วย MQL5 Wizard: ใช้ Hammer/Hanging Man และ RSI สำหรับ MetaTrader 5

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

MQL5 Wizard เป็นเครื่องมือที่ช่วยให้เราสามารถสร้าง Expert Advisors (EA) ที่พร้อมใช้งานได้โดยอิงจากคลาสของ Standard Library ที่มากับ MetaTrader 5 (อ่านรายละเอียดเพิ่มเติมได้ที่ การสร้าง Expert Advisors ใน MQL5 Wizard). ด้วย MQL5 Wizard คุณสามารถตรวจสอบแนวคิดการเทรดของคุณได้อย่างรวดเร็วเพียงแค่สร้างคลาสสัญญาณการเทรดของคุณเอง โดยโครงสร้างของคลาสนี้และตัวอย่างสามารถดูได้จากบทความ MQL5 Wizard: วิธีการสร้างโมดูลสัญญาณการเทรด.

แนวคิดพื้นฐานคือ การสร้างคลาสสัญญาณการเทรดที่สืบทอดมาจาก CExpertSignal จากนั้นคุณต้องทำการ override เมธอด LongCondition() และ ShortCondition() ด้วยเมธอดของคุณเอง.

มีหนังสือชื่อ "กลยุทธ์ของนักเทรดที่ดีที่สุด" (เป็นภาษารัสเซีย) ที่มีหลายกลยุทธ์การเทรดที่น่าสนใจ โดยเราจะมุ่งเน้นไปที่รูปแบบแท่งเทียนกลับตัวที่ได้รับการยืนยันโดย Stochastic, CCI, MFI และ RSI.

วิธีที่ดีที่สุดคือการสร้างคลาสแยกต่างหากที่สืบทอดมาจาก CExpertSignal สำหรับการตรวจสอบการก่อตัวของรูปแบบแท่งเทียน โดยการยืนยันสัญญาณการเทรดที่เกิดจากรูปแบบแท่งเทียนเพียงแค่เขียนคลาสที่สืบทอดมาจาก CCandlePattern และเพิ่มฟีเจอร์ที่จำเป็น (เช่น การยืนยันโดยใช้ Oscillator).

ในที่นี้เราจะพิจารณาสัญญาณที่อิงจากรูปแบบแท่งเทียน "Hammer/Hanging Man" ที่ได้รับการยืนยันโดย CCI โดยโมดูลสัญญาณการเทรดจะอิงจากคลาส CCandlePattern ซึ่งเป็นตัวอย่างง่ายๆ ของการใช้งานในการสร้างสัญญาณการเทรดด้วยรูปแบบแท่งเทียน.

1. รูปแบบแท่งเทียนกลับตัว "Hammer" และ "Hanging Man"

1.1. Hammer

"Hammer" เป็นแท่งเทียนที่มีตัวแท่งเล็กและมีหางยาวที่ด้านล่าง, เกิดขึ้นหลังจากการเคลื่อนไหวของราคาในทิศทางลง รูปแบบ "Hammer" แสดงถึงการสิ้นสุดของแนวโน้มขาลง.

สีของตัวแท่งไม่สำคัญนัก แต่ "Hammer" ที่เป็นขาขึ้นจะแสดงถึงศักยภาพขาขึ้นที่สูงกว่า ตัวแท่งของรูปแบบ "Hammer" มักจะเกิดขึ้นใกล้จุดต่ำสุดของแท่งก่อนหน้า หางยาวที่ด้านล่างและหางที่ด้านบนสั้นส่งผลให้มีศักยภาพสูงในการกลับตัว.

Fig. 1. รูปแบบแท่งเทียน Hammer

Fig. 1. รูปแบบแท่งเทียน Hammer

การจดจำรูปแบบ "Hammer" จะถูกดำเนินการในเมธอด CheckPatternHammer() ของคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการก่อตัวของรูปแบบแท่งเทียน "Hammer"         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- Hammer
   if((MidPoint(1)<CloseAvg(2))                                 && // down trend
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3
      (Close(1)2)) && (Open(1)2)))                  // body gap
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) ของคลาส CCandlePattern ถูกใช้เพื่อตรวจสอบการก่อตัวของรูปแบบแท่งเทียน "Hammer".


1.2. Hanging Man

"Hanging Man" เป็นแท่งเทียนที่มีตัวแท่งเล็กและมีหางยาวที่ด้านล่าง, เกิดขึ้นหลังจากการเคลื่อนไหวของราคาในทิศทางขึ้น รูปแบบ "Hanging Man" แสดงถึงการสิ้นสุดของแนวโน้มขาขึ้น.

สีของตัวแท่งไม่สำคัญนัก แต่แท่งเทียนขาลงจะแสดงถึงศักยภาพขาลงที่สูงกว่า ตัวแท่งของรูปแบบ "Hanging Man" มักจะเกิดขึ้นใกล้จุดสูงสุดของแท่งก่อนหน้า หางยาวที่ด้านล่างและหางที่ด้านบนสั้นส่งผลให้มีศักยภาพสูงในการกลับตัว.

Fig. 2. รูปแบบแท่งเทียน Hanging Man

Fig. 2. รูปแบบแท่งเทียน Hanging Man

การจดจำรูปแบบ "Hanging Man" จะถูกดำเนินการในเมธอด CheckPatternHangingMan() ของคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการก่อตัวของรูปแบบแท่งเทียน "Hanging Man"         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- Hanging man
   if((MidPoint(1)>CloseAvg(2))                                && // up trend
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3
      (Close(1)>Close(2)) && (Open(1)>Open(2)))                  // body gap
      return(true);
//---
   return(false);
  }

เมธอด CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) ของคลาส CCandlePattern ถูกใช้เพื่อตรวจสอบการก่อตัวของรูปแบบแท่งเทียน "Hanging Man".


2. สัญญาณการเทรดที่ได้รับการยืนยันโดย RSI

สัญญาณการเทรดเพื่อเปิดตำแหน่งยาวหรือสั้นต้องได้รับการยืนยันโดย RSI โดยค่าของ RSI ต้องต่ำกว่าหรือสูงกว่าระดับวิกฤต (40 สำหรับตำแหน่งยาวและ 60 สำหรับตำแหน่งสั้น).

การปิดตำแหน่งที่เปิดอยู่ขึ้นอยู่กับค่าของ RSI โดยสามารถทำได้ใน 2 กรณี:

  1. หาก RSI ถึงระดับวิกฤตตรงข้าม (70 สำหรับตำแหน่งยาวและ 30 สำหรับตำแหน่งสั้น)
  2. หากสัญญาณกลับตัวไม่ได้รับการยืนยัน (เมื่อ RSI ถึงระดับต่อไปนี้: 30 สำหรับตำแหน่งยาวและ 70 สำหรับตำแหน่งสั้น)

Fig. 3. รูปแบบ Harami ที่ได้รับการยืนยันโดย RSI

Fig. 3. รูปแบบ Harami ที่ได้รับการยืนยันโดย RSI


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

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

  1. การก่อตัวของรูปแบบ "Hammer" ต้องได้รับการยืนยันโดย RSI: RSI(1)<40 (ค่าของ RSI ของแท่งที่เสร็จสมบูรณ์ล่าสุดต้องน้อยกว่า 40).

  2. ตำแหน่งสั้นต้องถูกปิดหาก RSI ข้ามขึ้นระดับวิกฤต 70 หรือ 30.

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการเข้าและออกจากตลาด                 |
//| 1) การเข้าตลาด (เปิดตำแหน่งยาว, ผลลัพธ์=80)                  |
//| 2) การออกตลาด (ปิดตำแหน่งสั้น, ผลลัพธ์=40)                  |
//+------------------------------------------------------------------+
int CH_HM_RSI::LongCondition()
  {
   int result=0;
//--- idx สามารถใช้เพื่อระบุโหมดการทำงานของ Expert Advisor
//--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดในแต่ละ tick
//--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะที่บาร์ข่าว
  int idx   =StartIndex();
//--- การตรวจสอบเงื่อนไขในการเปิดตำแหน่งยาว
//--- การก่อตัวของรูปแบบ Hammer และ RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (RSI(1)<40))
     result=80;
//--- การตรวจสอบเงื่อนไขในการปิดตำแหน่งสั้น
//--- สัญญาณเลนข้ามระดับที่ซื้อมากเกินไป/ขายมากเกินไป (ขึ้น 30, ขึ้น 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- คืนค่าผลลัพธ์
   return(result);
  }

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

  1. การก่อตัวของรูปแบบ "Hanging Man" ต้องได้รับการยืนยันโดย RSI: RSI(1)>60 (ค่าของ RSI ของแท่งที่เสร็จสมบูรณ์ล่าสุดต้องมากกว่า 60).

  2. ตำแหน่งยาวต้องถูกปิดหาก RSI ข้ามลงระดับวิกฤต 70 หรือ 30.

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการเข้าและออกจากตลาด                 |
//| 1) การเข้าไปในตลาด (เปิดตำแหน่งสั้น, ผลลัพธ์=80)                 |
//| 2) การออกจากตลาด (ปิดตำแหน่งยาว, ผลลัพธ์=40)                  |
//+------------------------------------------------------------------+
int CH_HM_RSI::ShortCondition()
  {
   int result=0;
//--- idx สามารถใช้เพื่อระบุโหมดการทำงานของ Expert Advisor
//--- idx=0 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดในแต่ละ tick
//--- idx=1 - ในกรณีนี้ EA จะตรวจสอบเงื่อนไขการเทรดเฉพาะที่บาร์ข่าว
  int idx   =StartIndex();
//--- การตรวจสอบเงื่อนไขในการเปิดตำแหน่งสั้น
//--- การก่อตัวของรูปแบบ Hanging Man และ RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (RSI(1)>60))
     result=80;
//--- การตรวจสอบเงื่อนไขในการปิดตำแหน่งยาว
//--- สัญญาณเลนข้ามระดับที่ซื้อมากเกินไป/ขายมากเกินไป (ลง 70, ลง 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- คืนค่าผลลัพธ์
   return(result);
  }


2.3. การสร้าง Expert Advisor โดยใช้ MQL5 Wizard

คลาส CH_HM_RSI ไม่ได้รวมอยู่ในคลาส Standard Library เพื่อที่จะใช้มัน, คุณต้องดาวน์โหลดไฟล์ ach_hm_rsi.mqh (ดูไฟล์แนบ) และบันทึกลงในโฟลเดอร์ client_terminal_data\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 ที่ได้รับการยืนยันโดย RSI" ของสัญญาณการเทรด:

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

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

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

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

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

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

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

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

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

Fig. 10. คุณสมบัติการจัดการเงินของ Expert Advisor

Fig. 10. คุณสมบัติการจัดการเงินของ Expert Advisor

โดยการกดปุ่ม "เสร็จสิ้น" เราจะได้รับโค้ดของ Expert Advisor ที่สร้างขึ้นซึ่งอยู่ใน Expert_AH_HM_RSI.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 เสมอ.

ผลคะแนนเสียงของโมดูลหลักจะถูกใช้ในการ

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

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