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

สร้าง Expert Advisor ด้วย MQL5 Wizard สำหรับสัญญาณการเทรดด้วย Bullish/Bearish Meeting Lines + Stochastic

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

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

คุณสามารถตรวจสอบไอเดียการเทรดของคุณได้อย่างรวดเร็ว เพียงแค่สร้างคลาสสัญญาณการเทรดของคุณเอง โครงสร้างของคลาสนี้และตัวอย่างสามารถดูได้ในบทความ MQL5 Wizard: วิธีสร้างโมดูลสัญญาณการเทรด.

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

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

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

ในที่นี้เราจะพิจารณาสัญญาณที่อิงจาก "Bullish/Bearish Meeting Lines" แพทเทิร์นแท่งเทียนกลับตัว ซึ่งได้รับการยืนยันโดย Stochastic indicator. โมดูลของสัญญาณการเทรดจะอิงจาก CCandlePattern ซึ่งเป็นตัวอย่างง่าย ๆ สำหรับการสร้างสัญญาณการเทรดด้วยแพทเทิร์นแท่งเทียน.


1. แพทเทิร์นแท่งเทียน "Meeting Lines"

1.1. Bullish Meeting Lines

แพทเทิร์นนี้ประกอบด้วยแท่งเทียนสองตัว (แท่งเทียนขาลงและขาขึ้น) ที่มีราคาปิดใกล้เคียงกัน (หรือเท่ากัน) โดยตัวของแท่งเทียนทั้งสองต้องมีความยาวมากกว่าความยาวเฉลี่ยของแท่งเทียน.

แพทเทิร์น "Bullish Meeting Lines" ชี้ให้เห็นถึงการกลับตัวของแนวโน้มขาลง.

Fig. 1. แพทเทิร์น

รูปที่ 1. แพทเทิร์น "Bullish Meeting Lines"

การระบุแพทเทิร์น "Bullish Meeting Lines" จะถูกดำเนินการในเมธอด CheckPatternCheckPatternBullishMeetingLines() ของคลาส 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" ชี้ให้เห็นถึงการกลับตัวของแนวโน้มขาขึ้น.

Figure 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. สัญญาณการเทรด ที่ได้รับการยืนยันโดย Stochastic indicator

สัญญาณการเทรดในการเปิดตำแหน่งยาวหรือสั้นต้องได้รับการยืนยันโดย Stochastic oscillator. สัญญาณเส้น %D ต้องมากกว่าหรือต่ำกว่าระดับวิกฤตที่กำหนด (30 หรือ 70).

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

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

Fig. 3. แพทเทิร์น

รูปที่ 3. แพทเทิร์น "Bearish Meeting Lines" ที่ได้รับการยืนยันโดย Stochastic indicator

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

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

  1. การก่อตัวของแพทเทิร์น "Bullish Meeting Lines" ต้องได้รับการยืนยันโดย Stochastic indicator: StochSignal(1)<30 (ค่าของเส้นสัญญาณของ Stochastic indicator ของแท่งเทียนที่เสร็จสิ้นล่าสุดต้องน้อยกว่า 30).

  2. ตำแหน่งสั้นต้องปิดเมื่อเส้นสัญญาณของ Stochastic indicator ข้ามขึ้นไปที่ระดับ 20 หรือ 80.

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

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

  1. การก่อตัวของแพทเทิร์น "Bearish Meeting Lines" ต้องได้รับการยืนยันโดย Stochastic indicator: StochSignal(1)>70 (ค่าของเส้นสัญญาณของ Stochastic indicator ของแท่งเทียนที่เสร็จสิ้นล่าสุดต้องมากกว่า 70).

  2. ตำแหน่งยาวต้องปิดเมื่อเส้นสัญญาณของ Stochastic indicator ข้ามลงไปที่ระดับ 80 หรือ 20.

//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขสำหรับการเข้าสู่ตลาด                     |
//| 1) การเข้าสู่ตลาด (เปิดตำแหน่งสั้น, ผลลัพธ์=80)                 |
//| 2) การออกจากตลาด (ปิดตำแหน่งยาว, ผลลัพธ์=40)                   |
//+------------------------------------------------------------------+
int CML_Stoch::ShortCondition()
  {
    int result=0;
//--- idx ใช้เพื่อระบุโหมดการทำงานของ Expert Advisor
//--- idx=0 - ในกรณีนี้ EA ตรวจสอบเงื่อนไขการเทรดที่แต่ละ tick
//--- idx=1 - ในกรณีนี้ EA ตรวจสอบเงื่อนไขการเทรดเฉพาะที่มีข่าว
    int idx   =StartIndex();
//--- ตรวจสอบเงื่อนไขในการเปิดตำแหน่งสั้น
//--- การก่อตัวของแพทเทิร์น Bearish Meeting Lines และเส้นสัญญาณ>70
    if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (StochSignal(1)>70))
         result=80;
//--- ตรวจสอบเงื่อนไขในการปิดตำแหน่งยาว
//--- เส้นสัญญาณข้ามระดับ overbought/oversold (ลง 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

คลาส CML_Stoch ไม่ได้รวมอยู่ในคลาส Standard Library เพื่อใช้งาน คุณจำเป็นต้องดาวน์โหลดไฟล์ acml_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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

เมื่อกดปุ่ม "Finish" เราจะได้โค้ดของ Expert Advisor ที่สร้างขึ้นอยู่ใน Expert_AML_Stoch.mq5 ซึ่งจะถูกบันทึกใน terminal_data_folder\MQL5\Experts\.

พารามิเตอร์นำเข้าพื้นฐานของ Expert Advisor ที่สร้างขึ้น:

//--- inputs for main signal
input int            Signal_ThresholdOpen   =10;     // ค่า Threshold สัญญาณในการเปิด [0...100]
input int            Signal_ThresholdClose  =10;     // ค่า Threshold สัญญาณในการปิด [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;     // ค่า Threshold สัญญาณในการเปิด [0...100]
input int            Signal_ThresholdClose  =20;     // ค่า Threshold สัญญาณในการปิด [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 จะช่วยให้คุณสามารถกำหนดระดับ Threshold สำหรับการเปิดและปิดตำแหน่ง.

ในโค้ดของเมธอด LongCondition() และ ShortCondition() ของคลาสสัญญาณการเทรด เราได้กำหนดค่าคงที่ของ Threshold:

  • เปิดตำแหน่ง: 80;
  • ปิดตำแหน่ง: 40.

Expert Advisor ที่สร้างขึ้นโดย MQL5 Wizard จะเปิดและปิดตำแหน่งโดยใช้ "คะแนนเสียง" จากโมดูลของสัญญาณการเทรด คะแนนเสียงของโมดูลหลัก (ซึ่งเป็นคอนเทนเนอร์ที่ประกอบด้วยโมดูลทั้งหมดที่เพิ่มเข้ามา) ก็จะถูกนำไปใช้เช่นกัน แต่เมธอด LongCondition() และ ShortCondition() ของมันจะคืนค่าเป็น 0 เสมอ.

ผลคะแนนเสียงของโมดูลหลักจะถูกนำไปใช้ในการเฉลี่ยคะแนนเสียง. ในกรณีของเราเรามี: โมดูลหลัก + 1 โมดูลของสัญญาณการเทรด ดังนั้นเราจึงต้องคำนึงถึงสิ่งนี้ในการตั้งค่าค่าของระดับ Threshold. ด้วยเหตุนี้ ThresholdOpen และ ThresholdClose จึงต้องตั้งค่าเป็น 40=(0+80)/2 และ 20=(0+40)/2.

ค่าของพารามิเตอร์นำเข้า Signal_StopLevel และ Signal_TakeLevel ถูกตั้งค่าเป็น 0 ซึ่งหมายความว่าการปิดตำแหน่งจะเกิดขึ้นก็ต่อเมื่อเงื่อนไขการปิดเป็นจริง.


2.4. ผลการทดสอบย้อนหลัง

เรามาพิจารณาผลการทดสอบย้อนหลังของ Expert Advisor บนข้อมูลในอดีต (EURUSD H1, ระยะเวลาทดสอบ: 2005.01.01-2010.03.16, PeriodK=6, PeriodD=3, PeriodSlow=36, MA_period=3).

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

Fig. 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก Bullish/Bearish Meeting Lines + Stochastic

รูปที่ 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก Bullish/Bearish Meeting Lines + Stochastic


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

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


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

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