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

สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจากรูปแบบราคาที่กลับตัว

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

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. รูปแบบ

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

รูปที่ 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 กรณี:

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

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

รูปที่ 3. รูปแบบ "Bullish Meeting Lines" ที่ยืนยันโดย CCI

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

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

  1. การเกิดรูปแบบ "Bullish Meeting Lines" ต้องได้รับการยืนยันโดย CCI ตัวชี้วัด: CCI(1)<-50 (ค่าของ CCI ของแท่งที่เสร็จสิ้นล่าสุดต้องน้อยกว่า -50)

  2. ตำแหน่งสั้นต้องถูกปิดหากตัวชี้วัด 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. เปิดตำแหน่งสั้น/ปิดตำแหน่งยาว

  1. การเกิดรูปแบบ "Bearish Meeting Lines" ต้องได้รับการยืนยันโดย CCI ตัวชี้วัด: CCI(1)>50 (ค่าของ CCI ของแท่งที่เสร็จสิ้นล่าสุดต้องมากกว่า 50)

  2. ตำแหน่งยาวต้องถูกปิดหากตัวชี้วัด 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

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

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

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

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

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

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

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

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

เพิ่มโมดูล "สัญญาณที่อิงจาก Bullish/Bearish Meeting Lines ที่ยืนยันโดย CCI" ของสัญญาณการเทรด:

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

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

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

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

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

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

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

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

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

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

รูปที่ 11. ผลการทดสอบ Expert Advisor ที่ใช้ Bullish/Bearish Meeting Lines + CCI


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

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


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

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