MQL5 Wizard membolehkan anda mencipta Expert Advisor siap pakai berdasarkan kelas Standard library yang disertakan bersama terminal klien. Ia membolehkan anda memeriksa idea dagangan dengan cepat, hanya perlu mencipta kelas isyarat dagangan anda sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Mencipta Modul Isyarat Dagangan.
Idea umumnya adalah seperti berikut: kelas isyarat dagangan diturunkan daripada CExpertSignal. Seterusnya, anda perlu menggantikan kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.
Terdapat sebuah buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang membincangkan banyak strategi dagangan. Kita akan fokus pada corak candlestick pembalikan, yang disahkan oleh Stochastic, CCI, MFI, dan RSI oscillator.
Cara terbaik adalah untuk mencipta kelas berasingan yang diturunkan daripada CExpertSignal untuk memeriksa pembentukan corak candlestick. Untuk mengesahkan isyarat dagangan yang dihasilkan oleh corak candlestick, anda hanya perlu menulis kelas yang diturunkan daripada CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan oleh oscillator).
Di sini kita akan mempertimbangkan isyarat yang berdasarkan pada corak pembalikan "Dark Cloud Cover/Piercing Line" yang disahkan oleh CCI. Modul isyarat dagangan ini berdasar pada kelas CCandlePattern, ia adalah contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan corak candlestick.
1. Corak Pembalikan 'Dark Cloud Cover' dan 'Piercing Line'
1.1. Dark Cloud Cover
Ia adalah pembalikan candlestick bearish yang berlaku di penghujung trend menaik. Candlestick putih panjang terbentuk pada hari pertama dan terdapat jurang ke atas pada hari kedua. Walau bagaimanapun, hari kedua ditutup di bawah titik tengah hari pertama.

Fig. 1. Corak candlestick 'Dark Cloud Cover'
Pengesahan corak "Dark Cloud Cover" dilaksanakan dalam kaedah CheckPatternDarkCloudCover() pada kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan corak candlestick "Dark Cloud Cover" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- Dark Cloud Cover if((Close(2)-Open(2)>AvgBody(1)) && // (candlestick putih panjang) (Close(1)<Close(2)) && // (Close(1)>Open(2)) && // (tutup dalam badan sebelumnya) (MidOpenClose(2)>CloseAvg(1)) && // (trend menaik) (Open(1)>High(2))) // (buka pada paras tinggi baru) return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) pada kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "Dark Cloud Cover".
1.2. Piercing Line
Jurang ke bawah pada hari kedua mengekalkan trend menurun. Walau bagaimanapun, penutupan hari kedua adalah di atas titik tengah badan hari pertama. Ini menunjukkan kepada pelabur bahawa mungkin terbentuk bahagian bawah. Aksi harga ini tidak begitu jelas jika menggunakan carta bar berbanding dengan carta candlestick. Semakin dalam penutupan pada hari kedua ke dalam badan hari pertama, semakin tinggi kemungkinan isyarat pembalikan akan berjaya.

Fig. 2. Corak candlestick 'Piercing Line'
Pengesahan corak "Piercing Line" dilaksanakan dalam kaedah CheckPatternPiercingLine() pada kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan corak candlestick "Piercing Line" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line if((Close(1)-Open(1)>AvgBody(1)) && // (candlestick putih panjang) (Open(2)-Close(2)>AvgBody(1)) && // (candlestick hitam panjang) (Close(1)>Close(2)) && // (Close(1)<Open(2)) && // (tutup dalam badan sebelumnya) (MidOpenClose(2)<CloseAvg(2)) && // (trend menurun) (Open(1)<Low(2))) // (buka lebih rendah daripada paras rendah sebelumnya) return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) pada kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "Piercing Line".
2. Isyarat Dagangan, Disahkan oleh Indikator CCI
Isyarat dagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh CCI. Nilai CCI mesti lebih besar/kecil daripada paras kritikal (-50 untuk posisi panjang dan 50 untuk posisi pendek).
Penutupan posisi terbuka bergantung pada nilai CCI. Ia boleh dilakukan dalam 2 kes:
- jika garis CCI telah mencapai paras kritikal yang bertentangan (80 untuk posisi panjang dan -80 untuk posisi pendek)
- jika isyarat pembalikan tidak disahkan (apabila CCI mencapai paras berikut: -80 untuk posisi panjang dan 80 untuk posisi pendek)

Fig. 3. Corak 'Dark Cloud Cover', disahkan oleh indikator CCI
- int CDC_PL_CCI::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
- int CDC_PL_CCI::ShortCondition() - memeriksa syarat untuk membuka posisi pendek (mengembalikan 80) dan menutup posisi panjang (mengembalikan 40).
2.1. Membuka posisi panjang/Menutup posisi pendek
Pembentukan corak "Piercing Line" mesti disahkan oleh CCI indikator: CCI(1)<-50 (nilai CCI bar yang telah selesai mesti kurang daripada -50).
Posisi pendek mesti ditutup jika indikator CCI telah melintasi ke atas paras kritikal -80 atau melintasi ke bawah paras kritikal 80.
//+------------------------------------------------------------------+ //| 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 CDC_PL_CCI::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 syarat dagangan hanya pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi panjang //--- pembentukan corak Piercing Line dan CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (CCI(1)<-50)) result=80; //--- memeriksa syarat untuk menutup posisi pendek //--- pelintasan garis isyarat paras overbought/oversold (ke bawah -80, ke bawah -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- mengembalikan hasil return(result); }
2.2. Membuka posisi pendek/Menutup posisi panjang
Pembentukan corak "Dark Cloud Cover" mesti disahkan oleh CCI indikator: CCI(1)>50 (nilai indikator CCI bar yang telah selesai mesti lebih besar daripada 50).
Posisi panjang mesti ditutup jika indikator CCI telah melintasi ke bawah paras -80 atau 80.
//+------------------------------------------------------------------+ //| 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 CDC_PL_CCI::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 syarat dagangan hanya pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi pendek //--- pembentukan corak Dark Cloud Cover dan CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (CCI(1)>50)) result=80; //--- memeriksa syarat untuk menutup posisi panjang //--- pelintasan garis isyarat paras overbought/oversold (ke bawah -80, ke atas 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- mengembalikan hasil return(result); }
2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard
Kelas CDC_PL_CCI tidak termasuk dalam kelas Standard Library. Untuk menggunakannya, perlu memuat turun fail acdc_pl_cci.mqh (lihat lampiran) dan simpan ke dalam folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Perkara yang sama juga perlu dilakukan dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas memulakan semula MetaEditor.
Untuk mencipta Expert Advisor, lancarkan MQL5 Wizard:

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

Fig. 5. Harta umum Expert Advisor
Selepas itu kita perlu memilih modul isyarat dagangan yang digunakan.

Fig. 6. Harta isyarat Expert Advisor
Dalam kes kita, kita hanya menggunakan satu modul isyarat dagangan.
Menambah modul Isyarat Berdasarkan Dark Cloud Cover/Piercing Line yang Disahkan oleh CCI:

Fig. 7. Harta isyarat Expert Advisor
Modul isyarat dagangan ditambah:

Fig. 8. Harta isyarat Expert Advisor
Anda boleh memilih sebarang harta trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Fig. 9. Harta trailing Expert Advisor
Berkenaan dengan harta pengurusan wang, kita akan menggunakan "Perdagangan dengan jumlah dagangan tetap":

Fig. 10. Harta pengurusan wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dijana, terletak di Expert_ADC_PL_CCI.mq5. Ia akan disimpan di terminal_data_folder\MQL5\Experts\.
Parameter input lalai 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 mata) input double Signal_TakeLevel =50.0 // Tahap Take Profit (dalam mata)
mesti diganti 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 mata) input double Signal_TakeLevel =0.0 // Tahap Take Profit (dalam mata)
Parameter input Signal_ThresholdOpen/Signal_ThresholdClose membolehkan anda menetapkan paras ambang untuk membuka dan menutup posisi.
Dalam kod kaedah LongCondition() dan ShortCondition() pada kelas isyarat dagangan, kita telah menetapkan nilai tetap bagi ambang:
- Buka posisi: 80;
- Tutup posisi: 40.
Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "undian" dari modul isyarat dagangan. Undian modul utama (sebagai wadah, ia terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition()nya sentiasa mengembalikan 0.
Keputusan undian modul utama juga digunakan dalam "purata" undian. Dalam kes kita, modul utama + 1 modul isyarat dagangan, jadi kita perlu mengambil kira fakta ini ketika menetapkan nilai ambang. Oleh kerana 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, ini bermakna penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.
2.4. Keputusan Backtesting Sejarah
Mari kita lihat backtesting Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.03.16, 2010.01.01-2011.03.16, PeriodCCI=15, MA_period=19).
Dalam penciptaan Expert Advisor, kita menggunakan volume tetap (Perdagangan Lot Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Hasil ujian Expert Advisor, berdasarkan Dark Cloud Cover/Piercing Line + CCI
Set parameter input terbaik boleh ditemui menggunakan Strategy Tester dalam terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard dilampirkan dalam expert_adc_pl_cci.mq5.
Siaran berkaitan
- MQL5 Wizard: Cipta EA Berdasarkan Corak Bullish dan Bearish Engulfing + CCI
- MQL5 Wizard: Cipta Isyarat Dagangan Berasaskan Pola Hammer dan Hanging Man dengan CCI
- 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: Isyarat Dagangan Berdasarkan Corak Candlestick Bullish/Bearish Meeting Lines + CCI