MQL5 Wizard membolehkan anda mencipta Expert Advisor siap pakai berdasarkan kelas Standard Library yang disertakan bersama terminal klien. Dengan alat ini, anda boleh semak idea dagangan dengan cepat; semua yang anda perlukan adalah untuk mencipta kelas signal dagangan anda sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Mencipta Modul Signal Dagangan.
Idea umum adalah seperti berikut: kelas signal dagangan diturunkan dari CExpertSignal. Anda perlu menimpa kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.
Terdapat sebuah buku berjudul "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang membincangkan banyak strategi dagangan. Di sini kita akan fokus kepada corak candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI, dan RSI.
Cara terbaik adalah mencipta kelas berasingan yang diturunkan dari CExpertSignal untuk memeriksa pembentukan corak candlestick. Untuk mengesahkan signal dagangan yang dihasilkan oleh corak candlestick, memadai untuk menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan oleh osilator).
Dalam artikel ini, kita akan melihat signal yang berasaskan corak candlestick "Dark Cloud Cover/Piercing Line" yang disahkan oleh Market Facilitation Index (MFI). Modul signal dagangan ini berdasarkan kelas CCandlePattern, dan merupakan contoh mudah tentang cara mencipta signal dagangan dengan corak candlestick.
1. Corak Candlestick Pembalikan: "Dark Cloud Cover" dan "Piercing Line"
1.1. Dark Cloud Cover
Ini adalah pembalikan candlestick bearish yang berlaku pada akhir uptrend. Candlestick putih yang panjang terbentuk pada hari pertama dan ada jurang naik yang dicipta pada hari kedua. Namun, 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)) && // (uptrend) (Open(1)>High(2))) // (dibuka 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 turun pada hari kedua meneruskan aliran menurun. Namun, penutupan hari kedua adalah di atas titik tengah badan hari pertama. Ini menunjukkan kepada pelabur bahawa mungkin akan terbentuk satu bahagian bawah. Tindakan 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 besar kemungkinan signal 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)) && // (downtrend) (Open(1)<Low(2))) // (dibuka lebih rendah daripada Low sebelumnya) return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) pada kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "Piercing Line".
2. Signal Dagangan, Disahkan oleh Indikator MFI
Signal dagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh MFI. Nilai indikator MFI mesti kurang daripada 40 (untuk posisi panjang) atau lebih daripada 60 (untuk posisi pendek).
Penutupan posisi yang dibuka bergantung kepada nilai indikator MFI. Ini boleh dilakukan dalam 2 kes:
- jika MFI telah mencapai tahap kritikal yang bertentangan (70 untuk posisi panjang dan 30 untuk posisi pendek)
- jika signal pembalikan tidak disahkan (apabila indikator MFI mencapai tahap berikutnya: 30 untuk posisi panjang dan 70 untuk posisi pendek)

Fig. 3. Corak "Dark Cloud Cover" yang disahkan oleh indikator MFI
- int CDC_PL_MFI::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
- int CDC_PL_MFI::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 "Morning Star" mesti disahkan oleh MFI indikator: MFi(1)<40 (nilai indikator MFI bar terakhir yang siap mesti kurang daripada 40).
Posisi pendek mesti ditutup jika MFI indikator 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 CDC_PL_MFI::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 MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (MFI(1)<40)) result=80; //--- memeriksa syarat untuk menutup posisi pendek //--- lintasan garis signal tahap overbought/oversold (ke atas 30, ke atas 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- mengembalikan hasil return(result); }
2.2. Membuka posisi pendek/Menutup posisi panjang
Pembentukan corak "Dark Cloud Cover" mesti disahkan oleh MFI indikator: MFI(1)>60 (nilai indikator MFI bar terakhir yang siap mesti lebih daripada 60).
Posisi panjang mesti ditutup jika MFI indikator telah melintasi ke atas 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 CDC_PL_MFI::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 MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (MFI(1)>60)) result=80; //--- memeriksa syarat untuk menutup posisi panjang //--- lintasan garis signal tahap overbought/oversold (ke atas 70, ke bawah 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- mengembalikan hasil return(result); }
2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard
Kelas CDC_PL_MFI tidak termasuk dalam kelas Standard Library. Untuk menggunakannya, anda perlu memuat turun fail adc_pl_mfi.mqh (lihat lampiran) dan simpan ke dalam folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Begitu juga dengan fail acandlepatterns.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-ciri umum Expert Advisor
Setelah itu, kita perlu memilih modul signal dagangan yang digunakan.

Fig. 6. Ciri-ciri signal Expert Advisor
Dalam kes kita, kita hanya menggunakan satu modul signal dagangan.
Menambah modul Signal berdasarkan Dark Cloud Cover/Piercing Line yang disahkan oleh MFI:

Fig. 7. Ciri-ciri signal Expert Advisor
Modul signal dagangan 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
Berkenaan dengan ciri pengurusan wang, kita akan menggunakan "Dagangan dengan volume dagangan tetap":

Fig. 10. Ciri-ciri pengurusan wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dihasilkan, yang terletak dalam Expert_ADC_PL_MFI.mq5, ia akan disimpan dalam terminal_data_folder\MQL5\Experts\.
Parameter input lalai bagi Expert Advisor yang dihasilkan:
//--- input untuk signal utama input int Signal_ThresholdOpen =10; // Nilai ambang signal untuk dibuka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang signal untuk ditutup [0...100] input double Signal_PriceLevel =0.0; // Paras 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 signal utama input int Signal_ThresholdOpen =40; // Nilai ambang signal untuk dibuka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang signal untuk ditutup [0...100] input double Signal_PriceLevel =0.0 // Paras 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 membuka dan menutup posisi.
Dalam kod kaedah LongCondition() dan ShortCondition() pada kelas signal dagangan, kita telah menetapkan nilai tetap untuk ambang:
- Buka posisi: 80;
- Tutup posisi: 40.
Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "undi" dari modul signal dagangan. Undi dari modul utama (sebagai kontena, ia terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition() sentiasa mengembalikan 0.
Keputusan undi dari modul utama juga digunakan dalam purata "undi". Dalam kes kita, kita ada: modul utama + 1 modul signal dagangan, jadi kita perlu mengambil kira fakta ini ketika menetapkan nilai ambang. Oleh kerana fakta ini, ThresholdOpen dan ThresholdClose perlu ditetapkan sebagai 40=(0+80)/2 dan 20=(0+40)/2.
Nilai-nilai parameter input Signal_StopLevel dan Signal_TakeLevel ditetapkan kepada 0, yang bermakna bahawa penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.
2.4. Keputusan Uji Sejarah
Kita akan mempertimbangkan ujian Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11).
Dalam penciptaan Expert Advisor, kita menggunakan volume tetap (Dagangan Lot Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Keputusan ujian Expert Advisor berdasarkan Dark Cloud Cover/Piercing Line + MFI
Set parameter input terbaik boleh ditemui menggunakan Strategy Tester terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard disertakan dalam expert_adc_pl_mfi.mq5.
Siaran berkaitan
- MQL5 Wizard: Cipta Isyarat Dagangan dengan Bullish dan Bearish Harami + MFI
- Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI
- MQL5 Wizard: Cipta Signal Dagangan Berdasarkan Corak Lilin 3 Hitam dan 3 Putih + MFI
- MQL5 Wizard: Cipta Sinyal Dagangan Menggunakan Pola Candlestick Hammer dan Hanging Man
- MQL5 Wizard: Cipta Isyarat Dagangan Menggunakan Corak Morning/Evening Star dan MFI