MQL5 Wizard เป็นเครื่องมือที่ช่วยให้เราสร้าง Expert Advisors (EA) ได้อย่างง่ายดายจากคลาสใน MQL5 ซึ่งมาพร้อมกับไลบรารีมาตรฐานที่จัดเตรียมไว้สำหรับ MetaTrader 5 (MT5)
คุณสามารถตรวจสอบไอเดียการเทรดของคุณได้อย่างรวดเร็วเพียงแค่สร้างคลาสสัญญาณการเทรดของคุณเอง โดยโครงสร้างของคลาสนี้และตัวอย่างการใช้งานสามารถดูได้ใน MQL5 Wizard: วิธีสร้างโมดูลสัญญาณการเทรด.
แนวคิดหลักคือการสร้างคลาสของสัญญาณการเทรดที่ได้จาก CExpertSignal ซึ่งหลังจากนั้นเราจะต้องทำการ override เมธอด LongCondition() และ ShortCondition() ด้วยเมธอดของเราเอง.
ในหนังสือ "กลยุทธ์ของนักเทรดที่ดีที่สุด" จะมีการพูดถึงกลยุทธ์การเทรดมากมาย เราจะมุ่งเน้นไปที่รูปแบบแท่งเทียนย้อนกลับที่ได้รับการยืนยันโดย Stochastic, CCI, MFI และ RSI.
การสร้างคลาสแยกสำหรับการตรวจสอบการสร้างรูปแบบแท่งเทียนจะเป็นวิธีที่ดีที่สุด โดยการยืนยันสัญญาณการเทรดที่เกิดจากรูปแบบแท่งเทียนนั้น เราสามารถสร้างคลาสที่ได้จาก CCandlePattern และเพิ่มฟีเจอร์ที่จำเป็น เช่น การยืนยันโดยออสซิลเลเตอร์.
1. รูปแบบแท่งเทียน 3 Black Crows และ 3 White Soldiers
1.1. รูปแบบแท่งเทียน 3 Black Crows
รูปแบบแท่งเทียนที่มีแนวโน้มขาลง ใช้ในการคาดการณ์การกลับตัวของแนวโน้มขาขึ้นในปัจจุบัน ประกอบด้วยแท่งเทียนยาว 3 แท่งที่ปิดที่ระดับต่ำกว่าวันก่อนหน้า โดยที่การเปิดของแต่ละเซสชั่นเกิดขึ้นภายในตัวแท่งเทียนของวันก่อนหน้า.

รูปแบบแท่งเทียน 3 Black Crows
การตรวจสอบรูปแบบ "3 Black Crows" ดำเนินการในเมธอด CheckPatternThreeBlackCrows ของคลาส CCandlePattern:
bool CCandlePattern::CheckPatternThreeBlackCrows()
{
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
รูปแบบแท่งเทียนที่มีแนวโน้มขาขึ้น ใช้ในการคาดการณ์การกลับตัวของแนวโน้มขาลงในปัจจุบัน ประกอบด้วยแท่งเทียนยาว 3 แท่งที่ปิดที่ระดับสูงกว่าวันก่อนหน้า โดยที่การเปิดของแต่ละเซสชั่นเกิดขึ้นภายในตัวแท่งเทียนของวันก่อนหน้า.
รูปแบบจะถูกถือว่าถูกต้องตราบใดที่แท่งเทียนของวันสองเปิดในช่วงครึ่งบนของช่วงราคาของวันหนึ่ง ภายในสิ้นวันสองจะต้องปิดใกล้กับจุดสูงสุด โดยไม่มีเงาบนที่เหลืออยู่มากนัก จากนั้นรูปแบบเดียวกันจะถูกทำซ้ำในวันสาม.

รูปแบบแท่งเทียน 3 White Soldiers
นี่คือเมธอดสำหรับการตรวจสอบรูปแบบ "3 White Soldiers":
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
{
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. สัญญาณการเทรดที่ได้รับการยืนยันโดยออสซิลเลเตอร์ MFI
สัญญาณการเทรดเพื่อเปิดสถานะ Long หรือ Short ต้องได้รับการยืนยันโดยออสซิลเลเตอร์ MFI โดยค่าของ MFI ต้องต่ำกว่า 40 (สำหรับสถานะ Long) หรือมากกว่า 60 (สำหรับสถานะ Short).
การปิดสถานะขึ้นอยู่กับค่าของออสซิลเลเตอร์ MFI ซึ่งสามารถทำได้ใน 2 กรณี:
- เมื่อ MFI ถึงระดับวิกฤตตรงข้าม (70 สำหรับสถานะ Long และ 30 สำหรับสถานะ Short)
- หากไม่มีสัญญาณย้อนกลับยืนยัน (เมื่อออสซิลเลเตอร์ MFI ถึงระดับต่อไปนี้: 30 สำหรับสถานะ Long และ 70 สำหรับสถานะ Short)

รูปแบบ 3 Black Crows ยืนยันโดยออสซิลเลเตอร์ MFI
- int CBC_WS_MFI::LongCondition() - ตรวจสอบเงื่อนไขในการเปิดสถานะ Long (คืนค่า 80) และปิดสถานะ Short (คืนค่า 40);
- int CBC_WS_MFI::ShortCondition() - ตรวจสอบเงื่อนไขในการเปิดสถานะ Short (คืนค่า 80) และปิดสถานะ Long (คืนค่า 40).
2.1. เปิดสถานะ Long/ปิดสถานะ Short
-
การสร้างรูปแบบ "3 White Soldiers" ต้องได้รับการยืนยันโดยออสซิลเลเตอร์ MFI: MFi(1)<40 (ค่าของออสซิลเลเตอร์ MFI ของแท่งเทียนที่ปิดล่าสุดต้องน้อยกว่า 40).
-
สถานะ Short ต้องถูกปิดเมื่อออสซิลเลเตอร์ MFI ข้ามขึ้นไปยังระดับวิกฤต (70 หรือ 30).
int CBC_WS_MFI::LongCondition()
{
int result=0;
int idx =StartIndex();
if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40))
result=80;
if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
result=40;
return(result);
}
2.2. เปิดสถานะ Short/ปิดสถานะ Long
-
การสร้างรูปแบบ "3 Black Crows" ต้องได้รับการยืนยันโดยออสซิลเลเตอร์ MFI: MFI(1)>60 (ค่าของออสซิลเลเตอร์ MFI ของแท่งเทียนที่ปิดล่าสุดต้องมากกว่า 60).
-
สถานะ Long ต้องถูกปิดเมื่อออสซิลเลเตอร์ MFI ข้ามขึ้นไปยังระดับวิกฤต (70 หรือ 30).
int CBC_WS_MFI::ShortCondition()
{
int result=0;
int idx =StartIndex();
if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60))
result=80;
if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
result=40;
return(result);
} 2.3. สร้าง Expert Advisor โดยใช้ MQL5 Wizard
คลาส CBC_WS_MFI ไม่ได้รวมอยู่ในคลาสไลบรารีมาตรฐาน เพื่อใช้งาน จำเป็นต้องดาวน์โหลดไฟล์ abc_ws_mfi.mqh (ดูเอกสารแนบ) และบันทึกใน client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. ควรทำเช่นเดียวกันกับไฟล์ acandlepatterns.mqh คุณสามารถใช้มันใน MQL5 Wizard หลังจากรีสตาร์ท MetaEditor.
ในการสร้าง Expert Advisor ให้เปิด MQL5 Wizard:

การสร้าง Expert Advisor โดยใช้ MQL5 Wizard
ให้ระบุชื่อของ Expert Advisor:

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

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

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

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

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

คุณสมบัติการจัดการเงินของ Expert Advisor
โดยการกดปุ่ม "เสร็จสิ้น" เราจะได้รับโค้ดของ Expert Advisor ที่สร้างขึ้น ซึ่งจะถูกบันทึกใน Expert_ABC_WS_MFI.mq5 ที่อยู่ใน terminal_data_folder\MQL5\Experts\.
พารามิเตอร์เริ่มต้นของ Expert Advisor ที่สร้างขึ้น:
input int Signal_ThresholdOpen =10;
input int Signal_ThresholdClose =10;
input double Signal_PriceLevel =0.0
input double Signal_StopLevel =50.0
input double Signal_TakeLevel =50.0
ต้องถูกแทนที่ด้วย:
input int Signal_ThresholdOpen =40;
input int Signal_ThresholdClose =20;
input double Signal_PriceLevel =0.0
input double Signal_StopLevel =0.0
input double Signal_TakeLevel =0.0
พารามิเตอร์ 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.03.16, PeriodMFI=37, MA_period=13).
ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (Trading Fixed Lot, 0.1) และไม่ใช้ Trailing Stop (Trailing not used).

ผลการทดสอบของ Expert Advisor ที่ใช้ 3 Black Crows/3 White Soldiers + MFI
คุณสามารถค้นหาชุดพารามิเตอร์เริ่มต้นที่ดีที่สุดได้โดยใช้ Strategy Tester ของ MetaTrader 5.
โค้ดของ Expert Advisor ที่สร้างโดย MQL5 Wizard ถูกแนบไว้ใน expert_abc_ws_mfi.mq5.
โพสต์ที่เกี่ยวข้อง