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
การรู้จำรูปแบบ "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
ต่อไปนี้คือวิธีการสำหรับการรู้จำรูปแบบ "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 กรณี:
- ถ้าเส้น %D ถึงระดับสำคัญตรงข้าม (80 สำหรับตำแหน่งยาว และ 20 สำหรับตำแหน่งสั้น)
- ถ้าสัญญาณย้อนกลับไม่ได้รับการยืนยัน (เมื่อเส้น %D ถึงระดับถัดไป: 20 สำหรับตำแหน่งยาว และ 80 สำหรับตำแหน่งสั้น)

รูปที่ 3. รูปแบบ 3 White Soldiers ที่ได้รับการยืนยันโดย Stochastic indicator
การตรวจสอบเงื่อนไขการซื้อขายสำหรับการเข้าและออกนั้นทำได้ในสองวิธี:
- int CBC_WS_Stoch::LongCondition() - ตรวจสอบเงื่อนไขสำหรับการเปิดตำแหน่งยาว (คืนค่า 80) และการปิดตำแหน่งสั้น (คืนค่า 40);
- int CBC_WS_Stoch::ShortCondition() - ตรวจสอบเงื่อนไขสำหรับการเปิดตำแหน่งสั้น (คืนค่า 80) และการปิดตำแหน่งยาว (คืนค่า 40).
2.1. เปิดตำแหน่งยาว/ปิดตำแหน่งสั้น
การสร้างรูปแบบ "Three White Soldiers" ต้องได้รับการยืนยันจาก Stochastic indicator: StochSignal(1)<30 (ค่าของเส้นสัญญาณของตัวบ่งชี้ Stochastic ของบาร์ที่เสร็จสมบูรณ์ล่าสุดต้องน้อยกว่า 30).
ต้องปิดตำแหน่งสั้นถ้าเส้นสัญญาณของ 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. เปิดตำแหน่งสั้น/ปิดตำแหน่งยาว
การสร้างรูปแบบ "Three Black Crows" ต้องได้รับการยืนยันจาก Stochastic indicator: StochSignal(1)>70 (ค่าของเส้นสัญญาณของตัวบ่งชี้ Stochastic ของบาร์ที่เสร็จสมบูรณ์ล่าสุดต้องมากกว่า 70).
ต้องปิดตำแหน่งยาวถ้าเส้นสัญญาณของ 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
Let's specify the name of the Expert Advisor:

รูปที่ 5. คุณสมบัติทั่วไปของ Expert Advisor
จากนั้นเราต้องเลือกโมดูลของสัญญาณการซื้อขายที่ใช้

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

รูปที่ 7. คุณสมบัติของ Expert Advisor
โมดูลของสัญญาณการซื้อขายได้ถูกเพิ่มแล้ว:

รูปที่ 8. คุณสมบัติของ Expert Advisor
คุณสามารถเลือกคุณสมบัติการติดตามได้ แต่เราจะใช้ "Trailing Stop ไม่ใช้":

รูปที่ 9. คุณสมบัติการติดตามของ 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
ชุดของพารามิเตอร์ที่ดีที่สุดสามารถพบได้โดยใช้ Strategy Tester ของเทอร์มินัล MetaTrader 5.
รหัสของ Expert Advisor ที่สร้างโดย MQL5 Wizard ได้แนบมาที่ expert_abc_ws_stoch.mq5.
โพสต์ที่เกี่ยวข้อง
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก Morning/Evening Stars + MFI
- การสร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจาก Morning/Evening Stars + RSI
- สร้างสัญญาณการซื้อขายด้วย MQL5 Wizard: เทคนิค Hammer/Hanging Man และ CCI
- ใช้ MQL5 Wizard สร้าง Expert Advisor ด้วยสัญญาณเทรด Morning/Evening Stars + Stochastic
- สร้างสัญญาณการซื้อขายด้วย MQL5 Wizard: การใช้ EMA และกรองเวลาภายใน