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

MQL5 Wizard: ระบบเทรดสัญญาณจาก Hammer/Hanging Man + MFI บน MetaTrader 5

ไฟล์แนบ
316.zip (6.48 KB, ดาวน์โหลด 2 ครั้ง)

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

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

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

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

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

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

1.1. Hammer

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

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

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

รูปที่ 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" แสดงถึงการสิ้นสุดของแนวโน้มขาขึ้น.

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

รูปที่ 2. รูปแบบเทียน

รูปที่ 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. สัญญาณการเทรดที่ได้รับการยืนยันโดยออสซิลเลเตอร์ MFI

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

การปิดสถานะที่เปิดแล้วขึ้นอยู่กับค่าของออสซิลเลเตอร์ MFI สามารถทำได้ใน 2 กรณี:

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

รูปที่ 3. รูปแบบ

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

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

2.1. เปิดสถานะซื้อ/ปิดสถานะขาย

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

  2. สถานะขายต้องถูกปิดหาก MFI ข้ามขึ้นไปยังระดับวิกฤต (70 หรือ 30).

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


2.2. เปิดสถานะขาย/ปิดสถานะซื้อ

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

  2. สถานะซื้อจะต้องถูกปิดหาก MFI ข้ามขึ้นไปยังระดับวิกฤต (70 หรือ 30).

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


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

คลาส CH_HM_MFI ไม่ได้รวมอยู่ในคลาส Standard Library สำหรับการใช้งาน คุณต้องดาวน์โหลดไฟล์ ah_hm_mfi.mqh (ดูแนบ) และบันทึกลงใน client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. เช่นเดียวกันกับไฟล์ acandlepatterns.mqh. คุณสามารถใช้งานใน MQL5 Wizard หลังจากรีสตาร์ท MetaEditor.

เพื่อสร้าง Expert Advisor ให้เปิด MQL5 Wizard:

รูปที่ 4. การสร้าง Expert Advisor โดยใช้ MQL5 Wizard

รูปที่ 4. การสร้าง Expert Advisor โดยใช้ MQL5 Wizard

ให้ระบุชื่อ Expert Advisor:

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

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

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

รูปที่ 6. คุณสมบัติของสัญญาณของ Expert Advisor

รูปที่ 6. คุณสมบัติของสัญญาณของ Expert Advisor

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

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

รูปที่ 7. คุณสมบัติของสัญญาณของ Expert Advisor

รูปที่ 7. คุณสมบัติของสัญญาณของ Expert Advisor

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

รูปที่ 8. คุณสมบัติของสัญญาณของ Expert Advisor

รูปที่ 8. คุณสมบัติของสัญญาณของ Expert Advisor

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

รูปที่ 9. คุณสมบัติการ trailing ของ Expert Advisor

รูปที่ 9. คุณสมบัติการ trailing ของ Expert Advisor

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

รูปที่ 10. คุณสมบัติการบริหารเงินของ Expert Advisor

รูปที่ 10. คุณสมบัติการบริหารเงินของ Expert Advisor

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

ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (การเทรดด้วยปริมาณคงที่, 0.1) ไม่ได้ใช้กลยุทธ์ Trailing (ไม่ใช้ Trailing).

รูปที่ 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก Hammer/Hanging Man + MFI

รูปที่ 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก Hammer/Hanging Man + MFI


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

โค้ดของ Expert Advisor ที่สร้างขึ้นโดย MQL5 Wizard จะถูกแนบมาใน expert_ah_hm_mfi.mq5.

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

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