MQL5 Wizard adalah alat yang membolehkan anda mencipta Expert Advisor (EA) siap pakai berdasarkan kelas Standard Library yang disertakan dengan terminal klien. Ia membolehkan anda menyemak idea perdagangan dengan cepat; yang anda perlukan hanyalah mencipta kelas signal perdagangan anda sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Membuat Modul Signal Perdagangan.
Idea asasnya adalah seperti berikut: kelas signal perdagangan diturunkan dari CExpertSignal. Seterusnya, anda perlu menimpa LongCondition() dan ShortCondition() kaedah maya dengan kaedah anda sendiri.
Dalam buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia), banyak strategi perdagangan yang dibincangkan di dalamnya. Kita akan fokus kepada pola candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI, dan RSI.
Cara terbaik adalah dengan membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengesahkan signal perdagangan yang dihasilkan oleh pola candlestick, cukup untuk menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri yang diperlukan (contohnya, pengesahan oleh osilator).
Di sini, kita akan mempertimbangkan signal yang berdasarkan pola candlestick pembalikan "3 Black Crows/3 White Soldiers" yang disahkan oleh indikator Relative Strength Index (RSI). Modul signal perdagangan ini berdasarkan kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta signal perdagangan dengan pola candlestick.
1. Pola Candlestick Pembalikan: "3 Black Crows" dan "3 White Soldiers"
1.1. 3 Black Crows
Pola candlestick bearish ini digunakan untuk meramalkan pembalikan tren menaik yang sedang berlaku. Pola ini terdiri dari tiga candlestick bertubuh panjang yang berturut-turut ditutup lebih rendah dari hari sebelumnya, dengan setiap sesi dibuka dalam tubuh candlestick sebelumnya.

Fig. 1. Pola candlestick '3 Black Crows'
Pengiktirafan pola "3 Black Crows" dilaksanakan dalam kaedah CheckPatternThreeBlackCrows dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 Black Crows" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 Black Crows if((Open(3)-Close(3)>AvgBody(1)) && // (long black) (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // (lower midpoints) (MidPoint(1)<MidPoint(2))) return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 Black Crows".
1.2. Pola 3 White Soldiers
Pola candlestick bullish ini digunakan untuk meramalkan pembalikan tren menurun yang sedang berlaku. Pola ini terdiri dari tiga candlestick bertubuh panjang yang ditutup lebih tinggi daripada hari sebelumnya, dengan setiap sesi dibuka dalam tubuh candlestick sebelumnya.
Pola ini sah selagi candlestick hari kedua membuka pada separuh atas julat hari pertama. Pada akhir hari kedua, ia harus ditutup hampir dengan harga tertinggi, meninggalkan bayangan atas yang sangat kecil atau tidak wujud. Pola yang sama kemudian diulang pada hari ketiga.

Fig. 2. Pola candlestick '3 White Soldiers'
Berikut adalah kaedah untuk mengenali pola "3 White Soldiers":
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 White Soldiers" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 White Soldiers if((Close(3)-Open(3)>AvgBody(1)) && // long white (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3)) && // higher midpoints (MidPoint(1)>MidPoint(2))) return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 White Soldiers".
2. Signal Perdagangan yang Disahkan oleh Indikator RSI
Signal perdagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh indikator RSI. Nilai RSI mesti lebih rendah/lebih tinggi daripada tahap kritikal (40 untuk posisi panjang dan 60 untuk posisi pendek).
Penutupan posisi yang dibuka bergantung kepada nilai RSI. Ini boleh dilakukan dalam 2 kes:
- jika RSI telah mencapai tahap kritikal yang bertentangan (70 untuk posisi panjang dan 30 untuk posisi pendek)
- jika signal pembalikan tidak disahkan (apabila RSI mencapai tahap berikut: 30 untuk posisi panjang dan 70 untuk posisi pendek)

Fig. 3. Pola '3 Black Crows', disahkan oleh indikator Stochastic
- int CML_RSI::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
- int CML_RSI::ShortCondition() - memeriksa syarat untuk membuka posisi pendek (mengembalikan 80) dan menutup posisi panjang (mengembalikan 40).
2.1. Membuka posisi panjang/Menutup posisi pendek
-
Pembentukan pola "3 White Soldiers" mesti disahkan oleh indikator RSI: RSI(1)<40 (nilai RSI bar yang telah selesai mesti kurang dari 40).
-
Posisi pendek mesti ditutup jika indikator RSI telah melintasi ke atas tahap kritikal 70 atau 30.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi panjang, hasil=80) | //| 2) Keluar pasaran (tutup posisi pendek, hasil=40) | //+------------------------------------------------------------------+ int CBC_WS_RSI::LongCondition() { int result=0; //--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor //--- idx=0 - dalam kes ini EA memeriksa syarat perdagangan pada setiap tick //--- idx=1 - dalam kes ini EA memeriksa syarat perdagangan hanya pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi panjang //--- pembentukan pola 3 White Soldiers dan RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (RSI(1)<40)) result=80; //--- memeriksa syarat untuk menutup posisi pendek //--- persilangan garis signal tahap overbought/oversold (ke atas 30, ke atas 70) if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70))) result=40; //--- kembalikan hasil return(result); }
2.2. Membuka posisi pendek/Menutup posisi panjang
-
Pembentukan pola "3 Black Crows" mesti disahkan oleh indikator RSI: RSI(1)>60 (nilai indikator RSI bar yang telah selesai mesti lebih dari 60).
-
Posisi panjang mesti ditutup jika indikator RSI telah melintasi ke bawah tahap kritikal 70 atau 30.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi pendek, hasil=80) | //| 2) Keluar pasaran (tutup posisi panjang, hasil=40) | //+------------------------------------------------------------------+ int CBC_WS_RSI::ShortCondition() { int result=0; //--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor //--- idx=0 - dalam kes ini EA memeriksa syarat perdagangan pada setiap tick //--- idx=1 - dalam kes ini EA memeriksa syarat perdagangan hanya pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi pendek //--- pembentukan pola 3 Black Crows dan RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60)) result=80; //--- memeriksa syarat untuk menutup posisi panjang //--- persilangan garis signal tahap overbought/oversold (ke bawah 70, ke bawah 30) if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30))) result=40; //--- kembalikan hasil return(result); }
2.3. Mencipta Expert Advisor menggunakan MQL5 Wizard
Kelas CML_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, anda perlu memuat turun fail acml_rsi.mqh (lihat lampiran) dan simpan ke dalam folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Perkara yang sama harus dilakukan dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard setelah memulakan semula MetaEditor.
Untuk mencipta Expert Advisor, lancarkan MQL5 Wizard:

Fig. 4. Mencipta Expert Advisor menggunakan MQL5 Wizard
Mari kita tentukan nama Expert Advisor:

Fig. 5. Ciri-ciri umum Expert Advisor
Setelah itu, kita perlu memilih modul signal perdagangan yang digunakan.

Fig. 6. Ciri-ciri signal Expert Advisor
Dalam kes kita, kita hanya menggunakan satu modul signal perdagangan.
Menambah modul Signal berdasarkan 3 Black Crows/3 White Soldiers:

Fig. 7. Ciri-ciri signal Expert Advisor
Modul signal perdagangan telah ditambah:

Fig. 8. Ciri-ciri signal Expert Advisor
Anda boleh memilih sebarang ciri trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Fig. 9. Ciri-ciri trailing Expert Advisor
Mengenai ciri pengurusan wang, kita akan menggunakan "Perdagangan dengan volume perdagangan tetap":

Fig. 10. Ciri-ciri pengurusan wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod EA yang dihasilkan, yang terletak di Expert_ABC_WS_RSI.mq5, ia akan disimpan dalam terminal_data_folder\MQL5\Experts\.
Parameter input lalai untuk Expert Advisor yang dihasilkan:
//--- inputs untuk signal utama input int Signal_ThresholdOpen =10; // Nilai ambang signal untuk membuka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang signal untuk menutup [0...100] input double Signal_PriceLevel =0.0; // Tahap harga untuk melaksanakan transaksi input double Signal_StopLevel =50.0; // Tahap Stop Loss (dalam poin) input double Signal_TakeLevel =50.0 // Tahap Take Profit (dalam poin)
perlu diganti kepada:
//--- inputs untuk signal utama input int Signal_ThresholdOpen =40; // Nilai ambang signal untuk membuka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang signal untuk menutup [0...100] input double Signal_PriceLevel =0.0 // Tahap harga untuk melaksanakan transaksi input double Signal_StopLevel =0.0 // Tahap Stop Loss (dalam poin) input double Signal_TakeLevel =0.0 // Tahap Take Profit (dalam poin)
Parameter input Signal_ThresholdOpen/Signal_ThresholdClose membolehkan anda menentukan tahap ambang untuk membuka dan menutup posisi.
Dalam kod kaedah LongCondition() dan ShortCondition() kelas signal perdagangan, kita telah menetapkan nilai tetap untuk ambang:
- Membuka posisi: 80;
- Menutup posisi: 40.
Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "undian" dari modul signal perdagangan. Undian dari modul utama (sebagai kontainer, yang terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition()nya sentiasa mengembalikan 0.
Keputusan undian dari modul utama juga digunakan dalam purata undian. Dalam kes kita, kita mempunyai: modul utama + 1 modul signal perdagangan, jadi kita perlu mengambilkira fakta ini semasa menetapkan nilai ambang. Oleh kerana fakta ini, ThresholdOpen dan ThresholdClose mesti ditetapkan sebagai 40=(0+80)/2 dan 20=(0+40)/2.
Nilai parameter input Signal_StopLevel dan Signal_TakeLevel ditetapkan kepada 0, bermakna penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.
2.4. Keputusan backtesting sejarah
Kita akan mempertimbangkan backtesting Expert Advisor ini pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.02.02, PeriodRSI=37, MA_period=51).
Dalam penciptaan Expert Advisor, kita menggunakan volume tetap (Perdagangan Volume Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan '3 Black Crows/3 White Soldiers' + RSI
Set terbaik parameter input boleh didapati menggunakan Strategy Tester dari terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard dilampirkan dalam expert_abc_ws_rsi.mq5.
Siaran berkaitan
- MQL5 Wizard: Cipta Expert Advisor Berdasarkan Corak Lilin 3 Black Crows/3 White Soldiers dengan CCI
- MQL5 Wizard: Cipta EA Berdasarkan Corak Lilin 3 Black Crows/3 White Soldiers dan Stochastic
- MQL5 Wizard: Cipta Sistem Trading Berdasarkan Pola Morning/Evening Star dan RSI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan Berdasarkan Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Cipta EA Berdasarkan Pola Bullish dan Bearish Engulfing dengan Stochastic