MQL5 Wizard membolehkan anda untuk mencipta Expert Advisor (EA) siap pakai berdasarkan kelas Standard Library yang disediakan bersama terminal klien. Ia memudahkan anda untuk memeriksa idea dagangan anda dengan cepat, hanya dengan mencipta kelas isyarat dagangan anda sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Membuat Modul Isyarat Dagangan.
Idea asasnya adalah seperti berikut: kelas isyarat dagangan diturunkan dari CExpertSignal. Seterusnya, anda perlu menimpa metode LongCondition() dan ShortCondition() dengan metode anda sendiri.
Terdapat satu buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang membincangkan banyak strategi dagangan. Dalam artikel ini, kita akan fokus pada pola candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI, dan RSI.
Cara terbaik adalah mencipta kelas terpisah yang diturunkan dari CExpertSignal untuk menyemak pembentukan pola candlestick. Bagi pengesahan isyarat dagangan yang dihasilkan oleh pola candlestick, anda hanya perlu menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan oleh osilator).
Di sini, kita akan mempertimbangkan isyarat yang berdasarkan pada pola candlestick pembalikan "Dark Cloud Cover/Piercing Line" yang disahkan oleh indikator RSI. Modul isyarat dagangan ini berdasarkan pada kelas CCandlePattern, dan ia adalah contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan pola candlestick.
1. Pola Candlestick "Dark Cloud Cover" dan "Piercing Line"
1.1. Dark Cloud Cover
Ini adalah pembalikan candlestick bearish yang berlaku di akhir uptrend. Candlestick putih panjang terbentuk pada hari pertama dan jurang naik muncul pada hari kedua. Walau bagaimanapun, hari kedua ditutup di bawah titik tengah hari pertama.

Gambar 1. Pola candlestick 'Dark Cloud Cover'
Pengesanan pola "Dark Cloud Cover" dilaksanakan dalam metode CheckPatternDarkCloudCover() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Dark Cloud Cover" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- Dark Cloud Cover if((Close(2)-Open(2)>AvgBody(1)) && // (putih panjang) (Close(1)<Close(2)) && // (Close(1)>Open(2)) && // (tutup dalam badan sebelumnya) (MidOpenClose(2)>CloseAvg(1)) && // (uptrend) (Open(1)>High(2))) // (buka di tahap tertinggi baru) return(true); //--- return(false); }
Metode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Dark Cloud Cover".
1.2. Piercing Line
Jurang turun pada hari kedua meneruskan trend menurun. Namun, penutupan hari kedua adalah di atas titik tengah badan hari pertama. Ini memberi petunjuk kepada penjual bahawa mungkin satu dasar sedang terbentuk. Tindakan harga ini tidak begitu jelas menggunakan carta bar berbanding dengan carta candlestick. Semakin banyak penembusan penutupan pada hari kedua ke dalam badan hari pertama, semakin besar kemungkinan isyarat pembalikan akan berjaya.

Fig. 2. Pola candlestick 'Piercing Line'
Pengesanan pola "Piercing Line" dilaksanakan dalam metode CheckPatternPiercingLine() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Piercing Line" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line if((Close(1)-Open(1)>AvgBody(1)) && // (putih panjang) (Open(2)-Close(2)>AvgBody(1)) && // (hitam panjang) (Close(1)>Close(2)) && // (Close(1)<Open(2)) && // (tutup dalam badan sebelumnya) (MidOpenClose(2)<CloseAvg(2)) && // (downtrend) (Open(1)<Low(2))) // (buka lebih rendah dari Low sebelumnya) return(true); //--- return(false); }
Metode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Piercing Line".
2. Isyarat Dagangan, Disahkan oleh Indikator RSI
Isyarat dagangan untuk membuka posisi long atau short mesti disahkan oleh indikator RSI. Nilai RSI mesti lebih rendah/lebih tinggi dari tahap kritikal (40 untuk posisi long dan 60 untuk posisi short).
Penutupan posisi yang dibuka bergantung pada nilai RSI. Ia boleh dilakukan dalam 2 kes:
- jika RSI telah mencapai tahap kritikal yang bertentangan (70 untuk posisi long dan 30 untuk posisi short)
- jika isyarat pembalikan tidak disahkan (apabila RSI mencapai tahap berikut: 30 untuk posisi long dan 70 untuk posisi short)

Gambar 3. Pola 'Dark Cloud Cover', disahkan oleh indikator RSI
- int CDC_PL_RSI::LongCondition() - memeriksa syarat untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
- int CDC_PL_RSI::ShortCondition() - memeriksa syarat untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).
2.1. Membuka posisi long/Menutup posisi short
Pembentukan pola "Piercing Line" mesti disahkan oleh indikator RSI: RSI(1)<40 (nilai RSI bar yang telah selesai mesti kurang dari 40).
Posisi short mesti ditutup jika indikator RSI telah melintasi tahap kritikal 70 atau 30 ke arah atas.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi long, hasil=80) | //| 2) Keluar pasaran (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::LongCondition() { int result=0; //--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor //--- idx=0 - dalam kes ini EA memeriksa syarat dagangan pada setiap tick //--- idx=1 - dalam kes ini EA memeriksa kondisi dagangan hanya pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi long //--- pembentukan pola Piercing Line dan RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (RSI(1)<40)) result=80; //--- memeriksa syarat untuk menutup posisi short //--- persilangan garis isyarat 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 short/Menutup posisi long
Pembentukan pola "Dark Cloud Cover" mesti disahkan oleh indikator RSI: RSI(1)>60 (nilai RSI bar yang telah selesai mesti lebih besar dari 60).
Posisi long mesti ditutup jika indikator RSI telah melintasi tahap kritikal 70 atau 30 ke arah bawah.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi short, hasil=80) | //| 2) Keluar pasaran (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::ShortCondition() { int result=0; //--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor //--- idx=0 - dalam kes ini EA memeriksa syarat dagangan pada setiap tick //--- idx=1 - dalam kes ini EA memeriksa kondisi dagangan hanya pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi short //--- pembentukan pola Dark Cloud Cover dan RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1)>60)) result=80; //--- memeriksa syarat untuk menutup posisi long //--- persilangan garis isyarat 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 CDC_PL_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, anda perlu memuat turun fail adc_pl_rsi.mqh (lihat lampiran) dan simpan ke dalam client_terminal_dataolder\MQL5\\Include\Expert\Signal\MySignals. Hal yang sama juga perlu dilakukan dengan fail acandlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas memulakan semula MetaEditor.
Untuk mencipta Expert Advisor, luncurkan MQL5 Wizard:

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

Gambar 5. Ciri umum Expert Advisor
Selepas itu, kita perlu memilih modul isyarat dagangan yang digunakan.

Gambar 6. Ciri isyarat Expert Advisor
Dalam kes kita, kita hanya menggunakan satu modul isyarat dagangan.
Menambah modul Isyarat berdasarkan Dark Cloud Cover/Piercing Line disahkan oleh RSI:

Gambar 7. Ciri isyarat Expert Advisor
Modul isyarat dagangan telah ditambah:

Gambar 8. Ciri isyarat Expert Advisor
Anda boleh memilih mana-mana ciri trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Gambar 9. Ciri pengurusan wang Expert Advisor
Mengenai ciri pengurusan wang, kita akan menggunakan "Dagangan dengan volum dagangan tetap":

Gambar 10. Ciri pengurusan wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dihasilkan, terletak di Expert_ADC_PL_RSI.mq5, ia akan disimpan di terminal_data_folder\MQL5\Experts\.
Parameter input lalai untuk Expert Advisor yang dihasilkan:
//--- input untuk isyarat utama input int Signal_ThresholdOpen =10; // Nilai ambang isyarat untuk dibuka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang isyarat untuk menutup [0...100] input double Signal_PriceLevel =0.0 // Tahap harga untuk melaksanakan urus niaga input double Signal_StopLevel =50.0 // Tahap Stop Loss (dalam titik) input double Signal_TakeLevel =50.0 // Tahap Take Profit (dalam titik)
perlu digantikan kepada:
//--- input untuk isyarat utama input int Signal_ThresholdOpen =40; // Nilai ambang isyarat untuk dibuka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang isyarat untuk menutup [0...100] input double Signal_PriceLevel =0.0 // Tahap harga untuk melaksanakan urus niaga input double Signal_StopLevel =0.0 // Tahap Stop Loss (dalam titik) input double Signal_TakeLevel =0.0 // Tahap Take Profit (dalam titik)
Parameter input Signal_ThresholdOpen/Signal_ThresholdClose membolehkan anda untuk menetapkan tahap ambang untuk membuka dan menutup posisi.
Dalam kod metode LongCondition() dan ShortCondition() dari kelas isyarat dagangan, kita telah menetapkan nilai tetap untuk ambang tersebut:
- Buka posisi: 80;
- Tutup posisi: 40.
Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul isyarat dagangan. Suara dari modul utama (sebagai kontena, ia terdiri daripada semua modul yang ditambah) juga digunakan, tetapi metode LongCondition() dan ShortCondition()nya sentiasa mengembalikan 0.
Hasil suara dari modul utama juga digunakan dalam purata "suara". Dalam kes kita, kita mempunyai: modul utama + 1 modul isyarat dagangan, jadi kita perlu mengambil kira fakta ini ketika 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, yang bermaksud penutupan posisi hanya akan dilakukan apabila syarat penutup adalah benar.
2.4. Keputusan Ujian Sejarah
Kita akan mempertimbangkan ujian Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14).
Dalam penciptaan Expert Advisor, kita menggunakan volum tetap (Dagangan Lot Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Gambar 11. Keputusan ujian Expert Advisor, berdasarkan Dark Cloud Cover/Piercing Line + RSI
Set input parameter yang terbaik boleh ditemui menggunakan Strategy Tester di terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard dilampirkan dalam expert_ad_pl_rsi.mq5.
Siaran berkaitan
- MQL5 Wizard: Cipta EA Berdasarkan Pola Candlestick Bullish/Bearish Harami + Stochastic
- MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak Hammer/Hanging Man dan Stochastic
- MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak 'Dark Cloud Cover' dan 'Piercing Line' dengan CCI
- MQL5 Wizard: Cipta EA Berdasarkan Pola Bullish dan Bearish Engulfing dengan Stochastic
- MQL5 Wizard: Cipta Sistem Trading Berdasarkan Pola Morning/Evening Star dan RSI