MQL5 Wizard adalah alat hebat yang membolehkan anda mencipta Expert Advisor (EA) siap pakai berdasarkan kelas Standard library yang disertakan bersama terminal klien MetaTrader. Dengan alat ini, anda boleh menguji idea dagangan anda dengan cepat. Apa yang anda perlukan adalah mencipta kelas isyarat dagangan anda sendiri. Struktur kelas ini serta contoh penggunaannya boleh didapati dalam artikel MQL5 Wizard: Cara Membuat Modul Isyarat Dagangan.
Konsep asasnya adalah seperti berikut: kelas isyarat dagangan adalah turunan daripada CExpertSignal. Anda perlu menggantikan kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.
Dalam buku "Strategi Trader Terbaik" (dalam bahasa Rusia), terdapat banyak strategi dagangan yang dibincangkan, tetapi kita akan fokus kepada pola candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI, dan RSI.
Kaedah terbaik adalah mencipta kelas berasingan yang diturunkan daripada CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengesahkan isyarat dagangan yang dihasilkan oleh pola candlestick, cukup untuk menulis kelas yang diturunkan daripada CCandlePattern dan menambah ciri yang diperlukan (seperti pengesahan oleh osilator).
Kita akan mempertimbangkan isyarat yang berdasarkan pola candlestick pembalikan "Bullish Engulfing/Bearish Engulfing" yang disahkan oleh Stochastic. Modul isyarat dagangan ini adalah berdasarkan kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan pola candlestick.
1. Pola Candlestick Pembalikan "Bullish Engulfing" dan "Bearish Engulfing"
1.1. Bullish Engulfing
Pola "Bullish Engulfing" terbentuk dalam trend menurun apabila candlestick hitam kecil diikuti oleh candlestick putih besar yang sepenuhnya menutupi ("mengambil") candlestick hari sebelumnya. Bayang-bayang (ekor) candlestick kecil adalah pendek, membolehkan badan candlestick besar menutupi keseluruhan candlestick dari hari sebelumnya.

Fig. 1. Pola candlestick 'Bullish Engulfing'
Pengiktirafan pola "Bullish Engulfing" dilaksanakan dalam kaedah CheckPatternBullishEngulfing() pada kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Bullish Engulfing" //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- Bullish Engulfing if((Open(2)>Close(2)) && // candlestick sebelumnya adalah bearish (Close(1)-Open(1)>AvgBody(1)) && // badan candlestick bullish lebih tinggi daripada purata (Close(1)>Open(2)) && // harga tutup candlestick bullish lebih tinggi daripada harga buka candlestick bearish (MidOpenClose(2)<CloseAvg(2)) && // dalam trend menurun (Open(1)<Close(2))) // harga buka candlestick bullish lebih rendah daripada harga tutup candlestick bearish return(true); //--- return(false); }
Panggilan CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) digunakan untuk memeriksa pembentukan pola "Bullish Engulfing".
1.2. Bearish Engulfing
Pola "Bearish Engulfing" terbentuk dalam trend menaik apabila candlestick putih kecil diikuti oleh candlestick hitam besar yang sepenuhnya menutupi ("mengambil") candlestick hari sebelumnya. Bayang-bayang (ekor) candlestick kecil adalah pendek, membolehkan badan candlestick besar menutupi keseluruhan candlestick dari hari sebelumnya.

Fig. 2. Pola candlestick 'Bearish Engulfing'
Pengiktirafan pola "Bearish Engulfing" dilaksanakan dalam kaedah CheckPatternBearishEngulfing() pada kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Bearish Engulfing" //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- Bearish Engulfing if((Open(2)<Close(2)) && // candlestick sebelumnya adalah bullish (Open(1)-Close(1)>AvgBody(1)) && // badan candlestick lebih tinggi daripada purata (Close(1)<Open(2)) && // harga tutup candlestick bearish lebih rendah daripada harga buka candlestick bullish (MidOpenClose(2)>CloseAvg(2)) && // dalam trend menaik (Open(1)>Close(2))) // harga buka candlestick bearish lebih tinggi daripada harga tutup candlestick bullish return(true); //--- return(false); }
Panggilan CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) digunakan untuk memeriksa pembentukan pola "Bearish Engulfing".
2. Isyarat Dagangan, Disahkan oleh Indikator Stochastic
Isyarat dagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh osilator Stochastic. Garis %D mesti lebih besar/kecil daripada tahap kritikal yang bersesuaian (30 atau 70).
Penutupan posisi yang dibuka bergantung kepada nilai indikator %D. Ia boleh dilakukan dalam 2 kes:
- jika garis %D telah mencapai tahap kritikal bertentangan (80 untuk posisi panjang dan 20 untuk posisi pendek)
- jika isyarat terbalik tidak disahkan (apabila garis %D mencapai tahap berikut: 20 untuk posisi panjang dan 80 untuk posisi pendek)

Fig. 3. Pola 'Bullish Engulfing', Disahkan oleh Indikator Stochastic
Memeriksa syarat dagangan untuk kemasukan dan keluar dilaksanakan dalam dua kaedah:
- int CBE_BE_Stoch::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
- int CBE_BE_Stoch::ShortCondition() - memeriksa syarat untuk membuka posisi pendek (mengembalikan 80) dan menutup posisi panjang (mengembalikan 40).
2.1. Buka Posisi Panjang/Tutup Posisi Pendek
Pembentukan pola "Bullish Engulfing" mesti disahkan oleh Stochastic: StochSignal(1)<30 (nilai garis isyarat osilator Stochastic pada bar terakhir yang telah selesai mesti kurang daripada 30).
Posisi pendek mesti ditutup jika garis isyarat osilator Stochastic telah melintasi ke atas tahap 20 atau 80.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk kemasukan dan keluar dari pasaran //| 1) Kemasukan pasaran (buka posisi panjang, hasil=80) //| 2) Keluar pasaran (tutup posisi pendek, hasil=40) //+------------------------------------------------------------------+ int CBE_BE_Stoch::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 hanya memeriksa syarat dagangan pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi panjang //--- pembentukan pola Bullish Engulfing dan garis isyarat<30 if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (StochSignal(1)<30)) result=80; //--- memeriksa syarat untuk menutup posisi pendek //--- persilangan garis isyarat tahap terlebih beli/terlebih jual (ke bawah 20, ke atas 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(2)<80)))) result=40; //--- pulangkan hasil return(result); }
2.2. Buka Posisi Pendek/Tutup Posisi Panjang
Pembentukan pola "Bearish Engulfing" mesti disahkan oleh Stochastic: StochSignal(1)>70 (nilai garis isyarat osilator pada bar terakhir yang telah selesai mesti lebih daripada 70).
Posisi panjang mesti ditutup jika garis isyarat osilator Stochastic telah melintasi ke bawah tahap 80 atau 20.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk kemasukan dan keluar dari pasaran //| 1) Kemasukan pasaran (buka posisi pendek, hasil=80) //| 2) Keluar pasaran (tutup posisi panjang, hasil=40) //+------------------------------------------------------------------+ int CBE_BE_Stoch::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 hanya memeriksa syarat dagangan pada bar berita int idx =StartIndex(); //--- memeriksa syarat untuk membuka posisi pendek //--- pembentukan pola Bearish Engulfing dan garis isyarat>70 if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (StochSignal(1)>70)) result=80; //--- memeriksa syarat untuk menutup posisi panjang //--- persilangan garis isyarat tahap terlebih beli/terlebih jual (ke bawah 80, ke atas 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- pulangkan hasil return(result); }
2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard
Kelas CBE_BE_Stoch tidak termasuk dalam kelas Standard Library, untuk menggunakannya, anda perlu memuat turun fail acbe_be_stoch.mqh dan menyimpannya ke dalam folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Begitu juga 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 tentukan nama Expert Advisor:

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

Fig. 6. Ciri Isyarat Expert Advisor
Dalam kes kita, kita hanya menggunakan satu modul isyarat dagangan.
Menambah modul Isyarat Berdasarkan Bullish Engulfing/Bearish Engulfing Disahkan oleh Stochastic:

Fig. 7. Ciri Isyarat Expert Advisor
Modul isyarat dagangan telah ditambah:

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

Fig. 9. Sifat Trailing Expert Advisor
Mengenai sifat pengurusan wang, kita akan menggunakan "Dagangan dengan jumlah dagangan tetap":

Fig. 10. Sifat Pengurusan Wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dihasilkan, terletak di Expert_ABE_BE_Stoch.mq5, yang akan disimpan di terminal_data_folder\MQL5\Experts\.
Parameter input default untuk Expert Advisor yang dihasilkan:
//--- input untuk isyarat utama input int Signal_ThresholdOpen =10; // Nilai ambang isyarat untuk buka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang isyarat untuk tutup [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:
//--- input untuk isyarat utama input int Signal_ThresholdOpen =40; // Nilai ambang isyarat untuk buka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang isyarat untuk tutup [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 menetapkan tahap ambang untuk buka dan tutup posisi.
Dalam kod kaedah LongCondition() dan ShortCondition() bagi kelas isyarat dagangan, kita telah menetapkan nilai tetap bagi ambang:
- Posisi buka: 80;
- Posisi tutup: 40.
Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "undian" dari modul isyarat dagangan. Undian modul utama (sebagai kontena, ia terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition()nya sentiasa mengembalikan 0.
Hasil undian modul utama juga digunakan dalam purata "undian". Dalam kes kita, kita mempunyai: modul utama + 1 modul isyarat dagangan, jadi kita perlu mengambil kira perkara 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, ini bermakna penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.
2.4. Hasil Uji Kembali Sejarah
Mari kita pertimbangkan ujian kembali Expert Advisor ke atas data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).
Dalam mencipta Expert Advisor, kita menggunakan volum tetap (Dagangan Lot Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Hasil Ujian Expert Advisor berdasarkan Bullish/Bearish Engulfing + Stochastic
Set parameter input terbaik boleh ditemui menggunakan Strategy Tester pada terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard disertakan dalam expert_abe_be_stoch.mq5.
Siaran berkaitan
- Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI
- MQL5 Wizard: Cipta Signals Dagangan Berdasarkan Bullish Engulfing/Bearish Engulfing + RSI
- MQL5 Wizard: Cipta EA Berdasarkan Corak Bullish dan Bearish Engulfing + CCI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan Berdasarkan Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Cipta Isyarat Dagangan Menggunakan Corak Morning/Evening Star dan MFI