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

สร้าง EA บน MQL5 Wizard ด้วยสัญญาณการซื้อขายจากแท่งเทียน 3 Black Crows/3 White Soldiers + Stochastic

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

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

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

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

1. รูปแบบแท่งเทียนย้อนกลับ "3 Black Crows" และ "3 White Soldiers"

1.1. รูปแบบ "3 Black Crows"

เป็นรูปแบบแท่งเทียนขาลงที่ใช้ในการทำนายการย้อนกลับของแนวโน้มขาขึ้นปัจจุบัน โดยรูปแบบนี้ประกอบด้วยแท่งเทียนยาวสามแท่งติดต่อกันที่ปิดต่ำกว่าค่าของวันก่อน โดยที่การเปิดแต่ละเซสชันจะเกิดขึ้นภายในช่วงของแท่งเทียนก่อนหน้า

รูปที่ 1. รูปแบบแท่งเทียน 3 Black Crows

รูปที่ 1. รูปแบบแท่งเทียน 3 Black Crows

การรู้จำรูปแบบ "3 Black Crows" ถูกดำเนินการในวิธี CheckPatternThreeBlackCrows ของคลาส CCandlePattern:

//+------------------------------------------------------------------+
//| ตรวจสอบการสร้างรูปแบบแท่งเทียน "3 Black Crows" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Black Crows 
   if((Open(3)-Close(3)>AvgBody(1)) && // (ยาวสีดำ)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) && 
      (MidPoint(2)<MidPoint(3))     && // (จุดกึ่งกลางต่ำกว่า)
      (MidPoint(1)<MidPoint(2)))       
      return(true);
//---
   return(false);
  }

วิธี CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) ของคลาส CCandlePattern ถูกใช้เพื่อตรวจสอบการสร้างรูปแบบ "3 Black Crows"


1.2. รูปแบบแท่งเทียน "3 White Soldiers"

เป็นรูปแบบแท่งเทียนขาขึ้นที่ใช้ในการทำนายการย้อนกลับของแนวโน้มขาลงปัจจุบัน โดยรูปแบบนี้ประกอบด้วยแท่งเทียนยาวสามแท่งติดต่อกันที่ปิดสูงกว่าค่าของวันก่อน โดยการเปิดแต่ละเซสชันจะเกิดขึ้นภายในช่วงของแท่งเทียนก่อนหน้า

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

รูปที่ 2. รูปแบบแท่งเทียน 3 White Soldiers

รูปที่ 2. รูปแบบแท่งเทียน 3 White Soldiers

ต่อไปนี้คือวิธีการสำหรับการรู้จำรูปแบบ "3 White Soldiers":

//+------------------------------------------------------------------+
//| ตรวจสอบการสร้างรูปแบบแท่งเทียน "3 White Soldiers" |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 White Soldiers
   if((Close(3)-Open(3)>AvgBody(1)) && // ยาวสีขาว
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // สูงกว่าจุดกึ่งกลาง
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

วิธี CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) ของคลาส CCandlePattern ถูกใช้เพื่อตรวจสอบการสร้างรูปแบบ "3 White Soldiers"


2. สัญญาณการซื้อขายที่ได้รับการยืนยันโดย Stochastic indicator

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

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

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

รูปที่ 3. รูปแบบ 3 White Soldiers ที่ได้รับการยืนยันโดย Stochastic indicator

รูปที่ 3. รูปแบบ 3 White Soldiers ที่ได้รับการยืนยันโดย Stochastic indicator

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

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

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

  1. การสร้างรูปแบบ "Three White Soldiers" ต้องได้รับการยืนยันจาก Stochastic indicator: StochSignal(1)<30 (ค่าของเส้นสัญญาณของตัวบ่งชี้ Stochastic ของบาร์ที่เสร็จสมบูรณ์ล่าสุดต้องน้อยกว่า 30).

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

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

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

  1. การสร้างรูปแบบ "Three Black Crows" ต้องได้รับการยืนยันจาก Stochastic indicator: StochSignal(1)>70 (ค่าของเส้นสัญญาณของตัวบ่งชี้ Stochastic ของบาร์ที่เสร็จสมบูรณ์ล่าสุดต้องมากกว่า 70).

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

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

คลาส CBC_WS_Stoch ไม่ได้รวมอยู่ในคลาสไลบรารีมาตรฐาน เพื่อที่จะใช้งานได้ จะต้องดาวน์โหลดไฟล์ acbc_ws_stoch.mqh (ดูไฟล์แนบ) และบันทึกไปยัง client_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

Let's specify the name of the Expert Advisor:

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

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

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

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

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

ในกรณีของเราใช้เพียงโมดูลเดียวของสัญญาณการซื้อขาย
เพิ่มโมดูล "สัญญาณที่อิงจาก 3 Black Crows/3 White Soldiers ที่ได้รับการยืนยันโดย Stochastic":

รูปที่ 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_ABC_WS_Stoch.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 (ในจุด)

พารามิเตอร์ Input 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.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (การซื้อขายปริมาณคงที่, 0.1) และไม่ใช้กลยุทธ์ Trailing Stop (ไม่ใช้ Trailing).


รูปที่ 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก 3 Black Crows/3 White Soldiers + Stochastic

รูปที่ 11. ผลการทดสอบของ Expert Advisor ที่อิงจาก 3 Black Crows/3 White Soldiers + Stochastic


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

รหัสของ Expert Advisor ที่สร้างโดย MQL5 Wizard ได้แนบมาที่ expert_abc_ws_stoch.mq5.


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

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