Hai trader! Kali ini kita nak bincangkan tentang MQL5 Wizard yang membolehkan kita mencipta Expert Advisor (EA) siap guna berdasarkan kelas dari Standard Library yang disertakan bersama terminal pelanggan. Dengan MQL5 Wizard, anda boleh menyemak idea perdagangan dengan cepat, hanya perlu mencipta kelas isyarat perdagangan sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Membina Modul Isyarat Perdagangan.
Idea asasnya adalah: kelas isyarat perdagangan diturunkan dari CExpertSignal. Seterusnya, anda perlu menggantikan kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.
Dalam buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia), banyak strategi perdagangan dibincangkan. Kita akan fokus pada corak lilin pembalikan, yang disahkan oleh Stochastic, CCI, MFI dan RSI osilator.
Cara terbaik adalah mencipta kelas berasingan, diturunkan dari CExpertSignal untuk memeriksa pembentukan corak lilin. Untuk pengesahan isyarat perdagangan yang dihasilkan oleh corak lilin, anda hanya perlu menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri yang diperlukan (contohnya, pengesahan oleh osilator).
Di sini kita akan mempertimbangkan isyarat yang berasaskan corak lilin "3 Black Crows/3 White Soldiers", yang disahkan oleh indikator Commodity Channel Index. Modul isyarat perdagangan adalah berdasarkan kelas CCandlePattern, ia adalah contoh mudah penggunaannya untuk mencipta isyarat perdagangan dengan corak lilin.
1. Corak Lilin "3 Black Crows" dan "3 White Soldiers"
1.1. 3 Black Crows
Corak lilin bearish ini digunakan untuk meramalkan pembalikan tren menaik semasa. Corak ini terdiri daripada tiga lilin bertubuh panjang yang berurutan, ditutup lebih rendah daripada hari sebelumnya, dengan setiap pembukaan sesi berlaku dalam tubuh lilin sebelumnya.

Fig. 1. Corak Lilin 3 Black Crows
Pengesanan corak "3 Black Crows" dilaksanakan dalam kaedah CheckPatternThreeBlackCrows dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan corak lilin "3 Black Crows" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 Black Crows 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); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan corak lilin "3 Black Crows".
1.2. 3 White Soldiers
Corak lilin bullish ini digunakan untuk meramalkan pembalikan tren menurun semasa. Corak ini terdiri daripada tiga lilin bertubuh panjang yang berurutan, ditutup lebih tinggi daripada hari sebelumnya, dengan setiap pembukaan sesi berlaku dalam tubuh lilin sebelumnya. Corak ini sah selagi candle hari kedua dibuka di separuh atas julat hari pertama. Pada akhir hari kedua, ia harus ditutup hampir dengan tinggi, meninggalkan bayangan atas yang sangat kecil atau tidak ada. Corak yang sama kemudian diulang pada hari ketiga.

Fig. 2. Corak Lilin 3 White Soldiers
Berikut adalah kaedah untuk pengenalan corak "3 White Soldiers":
//+------------------------------------------------------------------+ //| Memeriksa pembentukan corak lilin "3 White Soldiers" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 White Soldiers 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); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "3 White Soldiers".
2. Isyarat Perdagangan yang Disahkan oleh Indikator CCI
Isyarat perdagangan untuk membuka posisi long atau short mesti disahkan oleh indikator CCI. Nilai CCI mesti lebih besar/kecil daripada tahap kritikal (-50 untuk posisi long dan 50 untuk posisi short).
Penutupan posisi yang dibuka bergantung pada nilai CCI. Ia boleh dilakukan dalam 2 kes:
- jika garis CCI telah mencapai tahap kritikal yang bertentangan (80 untuk posisi long dan -80 untuk posisi short)
- jika isyarat pembalikan tidak disahkan (apabila CCI mencapai tahap berikutnya: -80 untuk posisi long dan 80 untuk posisi short)

Fig. 3. Corak 3 Black Crows, Disahkan oleh Indikator CCI
- int CBC_WS_CCI::LongCondition() - memeriksa syarat untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
- int CBC_WS_CCI::ShortCondition() - memeriksa syarat untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).
2.1. Buka Posisi Long/Tutup Posisi Short
Pembentukan corak "3 Black Crows" mesti disahkan oleh indikator CCI: CCI(1)<-50 (nilai CCI bagi bar yang telah siap mesti kurang daripada -50).
T posisi short mesti ditutup jika indikator CCI telah melintasi ke atas tahap kritikal -80 atau melintasi ke bawah tahap kritikal 80.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi long, hasil=80) | //| 2) Keluar pasaran (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::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 long //--- pembentukan corak 3 White Soldiers dan CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (CCI(1)<-50)) result=80; //--- memeriksa syarat untuk menutup posisi short //--- lintasan garis isyarat tahap dibeli/terjual berlebihan (ke bawah -80, ke bawah -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- kembalikan hasil return(result); }
2.2. Buka Posisi Short/Tutup Posisi Long
Pembentukan corak "3 White Soldiers" mesti disahkan oleh indikator CCI: CCI(1)>50 (nilai indikator CCI bagi bar yang telah siap mesti lebih daripada 50).
Posisi long mesti ditutup jika indikator CCI telah melintasi ke bawah tahap -80 atau 80.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi short, hasil=80) | //| 2) Keluar pasaran (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::ShortCondition() { int result=0; //--- idx boleh digunakan untuk menentukan Expert Advisor kerja mod //--- 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 short //--- pembentukan corak 3 Black Crows dan CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (CCI(1)>50)) result=80; //--- memeriksa syarat untuk menutup posisi long //--- lintasan garis isyarat tahap dibeli/terjual berlebihan (ke bawah -80, ke bawah 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- kembalikan hasil return(result); }
2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard
Kelas CBC_WS_CCI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu memuat turun fail acbc_ws_cci.mqh (lihat lampiran) dan simpan ke dalam folder terminal_pelanggan_data\MQL5\Include\Expert\Signal\MySignals. Begitu juga dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard setelah memulakan semula MetaEditor.
Untuk mencipta Expert Advisor, jalankan 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 perdagangan yang digunakan.

Fig. 6. Ciri Isyarat Expert Advisor
Dalam kes kita, kita hanya menggunakan satu modul isyarat perdagangan.
Menambah modul "Isyarat Berdasarkan 3 Black Crows/3 White Soldiers yang Disahkan oleh CCI" untuk isyarat perdagangan:

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

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

Fig. 9. Ciri Properties Trailing Expert Advisor
Mengenai ciri pengurusan wang, kita akan gunakan "Perdagangan dengan volum tetap":

Fig. 10. Ciri Pengurusan Wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dijana, terletak di Expert_ABC_WS_CCI.mq5, ia akan disimpan di terminal_data_folder\MQL5\Experts\.
Parameter input lalai untuk Expert Advisor yang dijana:
//--- inputs untuk isyarat utama input int Signal_ThresholdOpen =10; // Nilai ambang isyarat untuk membuka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang isyarat 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 digantikan kepada:
//--- inputs untuk isyarat utama input int Signal_ThresholdOpen =40; // Nilai ambang isyarat untuk membuka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang isyarat 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() dari kelas isyarat perdagangan, kita telah menetapkan nilai tetap untuk ambang:
- Buka posisi: 80;
- Tutup posisi: 40.
Expert Advisor yang dijana oleh MQL5 Wizard akan membuka dan menutup posisi menggunakan "undian" dari modul isyarat perdagangan. Undian dari modul utama (sebagai kontena, yang terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition() selalu mengembalikan 0.
Hasil undian dari modul utama juga digunakan dalam purata "undian". Dalam kes kita, kita ada: modul utama + 1 modul isyarat perdagangan, jadi kita perlu mengambil kira 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 Signal_StopLevel dan Signal_TakeLevel parameter input ditetapkan kepada 0, ini bermakna penutupan posisi akan dilakukan hanya apabila syarat penutupan adalah benar.
2.4. Hasil Backtesting Sejarah
Kita akan melihat backtesting Expert Advisor pada data sejarah (EURUSD H1, tempoh pengujian: 2010.01.01-2011.03.16, PeriodCCI=37, MA_period=13).
Dalam penciptaan Expert Advisor, kita menggunakan volum tetap (Perdagangan Volum Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Hasil Pengujian Expert Advisor, Berdasarkan 3 Black Crows/3 White Soldiers + CCI
Set parameter input yang terbaik boleh ditemui menggunakan Strategy Tester dari terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard dilampirkan dalam expert_abc_ws_cci.mq5.
Siaran berkaitan
- Menggunakan MQL5 Wizard untuk Signal Perdagangan '3 Black Crows/3 White Soldiers' + RSI
- MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak 'Dark Cloud Cover' dan 'Piercing Line' dengan CCI
- MQL5 Wizard: Cipta Isyarat Dagangan Berasaskan Pola Hammer dan Hanging Man dengan CCI
- MQL5 Wizard: Isyarat Dagangan Berdasarkan Corak Candlestick Bullish/Bearish Meeting Lines + CCI
- MQL5 Wizard: Cipta EA Berdasarkan Pola Candlestick Bullish/Bearish Harami + CCI