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

สร้างระบบเทรดด้วย MQL5 Wizard: สัญญาณจากรูปแท่งเทียนและ Stochastic

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

รายละเอียด:

ด้วย MQL5 Wizard เทรดเดอร์สามารถ สร้างโค้ด Expert Advisor โดยอัตโนมัติ ตามประเภทสัญญาณการเทรด การติดตามตำแหน่ง และการจัดการเงิน ด้วยการใช้ คลาสสัญญาณการเทรด จาก Standard Library คุณสามารถพัฒนาและทดสอบระบบเทรดของคุณเองได้ เพียงแค่เขียน โมดูลของสัญญาณการเทรด.

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

การใช้รูปแท่งเทียนกลับตัวร่วมกับสัญญาณออสซิลเลเตอร์ช่วยลดจำนวนสัญญาณที่ผิดพลาดและเพิ่มประสิทธิภาพของระบบเทรด.

ในบทความก่อนหน้านี้ เราได้พิจารณาสัญญาณการเทรดที่อิงจากรูปแท่งเทียนที่มีการยืนยันจาก Stochastic:

  1. 3 Black Crows/3 White Soldiers
  2. Dark Cloud Cover/Piercing Line
  3. Bullish Engulfing/Bearish Engulfing
  4. Bullish Harami/Bearish Harami
  5. Hammer/Hanging Man
  6. Bullish/Bearish Meeting Lines
  7. Morning/Evening Stars

ในเอกสารนี้เราจะพิจารณาผลลัพธ์ของการใช้โมเดลเหล่านี้ร่วมกับสัญญาณของออสซิลเลเตอร์ Stochastic.


1. โมเดลแท่งเทียนขาขึ้นและขาลงและการตรวจจับ

CandlePattern class ยังมีฟังก์ชันสำหรับตรวจจับการเกิดขึ้นของโมเดลแท่งเทียนขาขึ้นและขาลงบางประเภท (ยกเว้นการรวมกันของ Hammer/Hanging Man).

การตรวจสอบการเกิดขึ้นของโมเดลแท่งเทียนขาลงจะใช้ฟังก์ชัน CheckPatternAllBullish():

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดขึ้นของโมเดลขาขึ้น                             |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternAllBullish()
  {
   return(CheckPatternThreeWhiteSoldiers()  || 
          CheckPatternPiercingLine()       || 
          CheckPatternMorningDoji()        || 
          CheckPatternBullishEngulfing()   || 
          CheckPatternBullishHarami()      || 
          CheckPatternMorningStar()        || 
          CheckPatternBullishMeetingLines());
  }

การตรวจสอบการเกิดขึ้นของโมเดลแท่งเทียนขาขึ้นจะใช้ฟังก์ชัน CheckPatternAllBearish():

//+------------------------------------------------------------------+
//| ตรวจสอบการเกิดขึ้นของโมเดลขาลง                             |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternAllBearish()
  {
   return(CheckPatternThreeBlackCrows()     || 
          CheckPatternDarkCloudCover()     || 
          CheckPatternEveningDoji()        || 
          CheckPatternBearishEngulfing()   || 
          CheckPatternBearishHarami()      || 
          CheckPatternEveningStar()        || 
          CheckPatternBearishMeetingLines());
  }

2. สัญญาณการเทรดที่รวมกับออสซิลเลเตอร์ Stochastic

การเปิดตำแหน่งขาย/ซื้อ จะเกิดขึ้นเมื่อมีการเกิดโมเดลขาขึ้น/ขาลง และมีการยืนยันจาก Stochastic oscillator. ค่าของเส้นสัญญาณ %D ควรอยู่เหนือหรือต่ำกว่าระดับที่กำหนด (30 และ 70).

สัญญาณการออกจะเกิดขึ้นในสองกรณี:

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

การตรวจสอบเงื่อนไขการเข้าและออกจากตลาดจะดำเนินการในวิธีการต่อไปนี้:

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

2.1. การเปิดตำแหน่งซื้อและปิดตำแหน่งขาย

  1. สัญญาณสำหรับการเปิดตำแหน่งซื้อต้องมีการเกิดโมเดลแท่งเทียนขาขึ้นและต้องเป็นไปตามเงื่อนไข StochSignal(1)<30 (ค่าของ Stochastic ที่เส้นสัญญาณในแท่งล่าสุดน้อยกว่า 30);

  2. สัญญาณสำหรับการปิดตำแหน่งขายคือการเกิดโมเดลแท่งเทียนขาขึ้นหนึ่งในโมเดลหรือกรณีที่เส้นออสซิลเลเตอร์ข้ามระดับ 20 (ขึ้นไป) หรือระดับ 80 (ขึ้นไป).

//+------------------------------------------------------------------+
//| วิธีการตรวจสอบว่ามีการเกิดโมเดลทางการตลาด               |
//| ตรวจสอบเงื่อนไขสำหรับ                                            |
//| เข้า (เปิดตำแหน่งขาย, m_pattern_0)                         |
//| ออก  (ปิดตำแหน่งซื้อ, m_pattern_1)                         |
//+------------------------------------------------------------------+
int CCP_Stoch::LongCondition()
  {
   int res=0;
//---- ตรวจสอบเงื่อนไขสำหรับเปิดตำแหน่งขาย
//---- การเกิดโมเดลขาขึ้นและเส้นสัญญาณของ Stochastic<30 
   if(CheckPatternAllBullish() && (StochSignal(1)<30)) res=m_pattern_0; // สัญญาณเพื่อเปิดตำแหน่งซื้อ 

//--- ตรวจสอบเงื่อนไขของการปิดตำแหน่งขาย
//--- การเกิดโมเดลขาลงหรือการตัดผ่านของเส้นสัญญาณ (ขึ้น 20, ขึ้น 80)
   if(CheckPatternAllBullish() ||
      ((StochSignal(1)>20) && (StochSignal(2)<20)) || 
      ((StochSignal(1)>80) && (StochSignal(2)<80)))    res=m_pattern_1; // สัญญาณเพื่อปิดตำแหน่งขาย
//---
   return(res);
  }

2.2. การเปิดตำแหน่งขายและปิดตำแหน่งซื้อ

  1. สัญญาณสำหรับการเปิดตำแหน่งขายคือการเกิดโมเดลแท่งเทียนขาลงหนึ่งในโมเดลและต้องเป็นไปตามเงื่อนไข StochSignal(1)>70 (ค่าของ Stochastic เส้นสัญญาณในแท่งล่าสุดมากกว่า 70):

  2. สัญญาณสำหรับการปิดตำแหน่งซื้อต้องมีการเกิดโมเดลแท่งเทียนขาลงหนึ่งในโมเดลหรือกรณีที่เส้นออสซิลเลเตอร์ข้ามระดับ 80 (ลงไป) หรือระดับ 20 (ลงไป).

//+------------------------------------------------------------------+
//| วิธีการตรวจสอบว่ามีการเกิดโมเดลทางการตลาด               |
//| ตรวจสอบเงื่อนไขสำหรับ                                            | 
//| เข้า (เปิดตำแหน่งขาย, m_pattern_0)                          |
//| ออก  (ปิดตำแหน่งซื้อ, m_pattern_1)                         |
//+------------------------------------------------------------------+
int CCP_Stoch::ShortCondition()
  {
   int res=0;
//--- ตรวจสอบเงื่อนไขสำหรับเปิดตำแหน่งขาย
//---- การเกิดโมเดลขาลงและเส้นสัญญาณของ Stochastic>70
   if(CheckPatternAllBearish() && (StochSignal(1)>70)) res=m_pattern_0; // สัญญาณเพื่อเปิดตำแหน่งขาย 

//--- ตรวจสอบเงื่อนไขของการปิดตำแหน่งซื้อ 
//---- การเกิดโมเดลขาลงหรือ การตัดผ่านของเส้นสัญญาณ (ลง 80, ลง 20)
   if(CheckPatternAllBearish() || 
      ((StochSignal(1)<80) && (StochSignal(2)>80)) || 
      ((StochSignal(1)<20) && (StochSignal(2)>20)))    res=m_pattern_1; // สัญญาณเพื่อปิดตำแหน่งซื้อ 
//---
   return(res);
  }

2.3. สร้าง Expert Advisor โดยอิงจากสัญญาณการเทรดของ "รูปแท่งเทียน+Stochastic" โดยใช้ MQL5 Wizard

คลาส CCP_Stoch ไม่ได้รวมอยู่ใน Standard Library ของสัญญาณการเทรด ดังนั้นให้ดาวน์โหลดไฟล์ ccp_stoch.mqh (แนบมาด้วย) และบันทึกลงใน \terminal_folder\Include\Expert\Signal\MySignals เพื่อใช้งาน ไฟล์ candlepatterns.mqh ควรคัดลอกไปยังไดเรกทอรีเดียวกันกับ ccp_stoch.mqh หลังจากนั้นให้รีสตาร์ท MetaEditor เพื่อให้สามารถใช้งานไฟล์ใน MQL5 Wizard.

เพื่อสร้างหุ่นยนต์เทรดตามกลยุทธ์นี้ผ่าน MQL5 Wizard ให้เลือกประเภทสัญญาณ "สัญญาณจากรูปแท่งเทียน+Stochastic" ในขั้นตอนที่สอง:

Fig. 1. Selecting

Fig. 1. เลือก "สัญญาณจากรูปแท่งเทียน+Stochastic" ใน MQL5 Wizard

ในขั้นตอนถัดไป ให้ระบุประเภท Trailing Stop และระบบ Money Management ที่ต้องการ โค้ดของ Expert Advisor จะถูกสร้างโดยอัตโนมัติ จากนั้นต้องทำการคอมไพล์เพื่อเริ่มการทดสอบ.


2.4. ผลการทดสอบ

ผลการทดสอบ Expert Advisor บนข้อมูลย้อนหลัง (EURUSD H1, ช่วงเวลาทดสอบ: 1.1.2000-02.02.2011, PeriodK=33, PeriodD=37, PeriodSlow=30, MA_period=25).

Expert Advisor นี้ใช้โมดูลสำหรับการเทรดปริมาณคงที่ 0.1 ล็อต (Trading Fixed Lot). ไม่มีการใช้ Trailing Stop (Trailing ไม่ได้ใช้).

Fig. 2. ผลการทดสอบ Expert Advisor

Fig. 2. ผลการทดสอบ Expert Advisor ที่สร้างจาก "สัญญาณจากรูปแท่งเทียน+Stochastic"

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

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


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

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