MQL5 Wizard adalah alat yang membolehkan trader mencipta Expert Advisor yang siap pakai berdasarkan kelas-kelas dalam Standard Library yang diberikan bersama terminal klien. Dengan alat ini, anda dapat memeriksa idea dagangan dengan cepat, hanya perlu mencipta kelas sinyal dagangan anda sendiri. Struktur kelas ini dan contoh dapat ditemukan dalam artikel MQL5 Wizard: Cara Mencipta Modul Sinyal Dagangan.
Idea umum adalah untuk mengembangkan kelas sinyal dagangan dari CExpertSignal. Kemudian, anda perlu menggantikan LongCondition() dan ShortCondition() dengan metode anda sendiri.
Dalam buku "Strategi Trader Terbaik" (dalam bahasa Rusia), terdapat banyak strategi dagangan yang dibahas. Kita akan fokus kepada pola candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI, dan RSI.
Cara terbaik adalah mencipta kelas berasingan yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengesahkan sinyal dagangan yang dihasilkan oleh pola candlestick, cukup untuk menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri yang diperlukan (contoh, pengesahan oleh osilator).
Di sini kita akan mempertimbangkan sinyal yang berdasarkan pola candlestick pembalikan "Hammer/Hanging Man" yang disahkan oleh MFI. Modul sinyal dagangan ini berdasarkan kelas CCandlePattern, ia adalah contoh yang mudah digunakan untuk mencipta sinyal dagangan dengan pola candlestick.
1. Pola Candlestick Pembalikan "Hammer" dan "Hanging Man"
1.1. Hammer
"Hammer" adalah candlestick dengan tubuh kecil dan sumbu bawah yang panjang, terbentuk selepas pergerakan harga menurun. Pola "Hammer" menunjukkan penghujung tren bearish.
Warna tubuh candlestick tidak penting, tetapi hammer bullish menunjukkan potensi bullish yang lebih tinggi. Tubuh pola "Hammer" sering terbentuk dekat dengan minimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek meningkatkan potensi pola pembalikan.

Fig. 1. Pola candlestick 'Hammer'
Pengenalan pola "Hammer" dilaksanakan dalam metode CheckPatternHammer() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Hammer" candlestick | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHammer() { //--- Hammer if((MidPoint(1)<CloseAvg(2)) && // tren menurun (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // tubuh di atas 1/3 (Close(1)<Close(2)) && (Open(1)<Open(2))) // jurang tubuh return(true); //--- return(false); }
Pola CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hammer".
1.2. Hanging Man
"Hanging Man" adalah candlestick dengan tubuh kecil dan sumbu bawah yang panjang, terbentuk selepas pergerakan harga menaik. Pola "Hanging Man" menunjukkan penghujung tren bullish.
Warna tubuh candlestick tidak penting, tetapi candlestick bearish menunjukkan potensi bearish yang lebih tinggi. Tubuh pola "Hanging Man" sering terbentuk dekat dengan maksimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek meningkatkan potensi pola pembalikan.

Fig. 2. Pola candlestick 'Hanging Man'
Pengenalan pola "Hanging Man" dilaksanakan dalam metode CheckPatternHangingMan() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Hanging Man" candlestick | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHangingMan() { //--- Hanging man if((MidPoint(1)>CloseAvg(2)) && // tren menaik (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // tubuh di atas 1/3 (Close(1)>Close(2)) && (Open(1)>Open(2)))) // jurang tubuh return(true); //--- return(false); }
Metode CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hanging Man".
2. Sinyal Dagangan yang Disahkan oleh Indikator MFI
Sinyal dagangan untuk membuka posisi long atau short mesti disahkan oleh MFI. Nilai indikator MFI mesti kurang dari 40 (untuk posisi long) atau lebih dari 60 (untuk posisi short).
Penutupan posisi yang dibuka bergantung pada nilai indikator MFI. Ia boleh dilakukan dalam 2 kes:
- jika MFI mencapai tahap kritikal yang bertentangan (70 untuk posisi long dan 30 untuk posisi short)
- jika sinyal pembalikan tidak disahkan (apabila indikator MFI mencapai tahap berikut: 30 untuk posisi long dan 70 untuk posisi short)

Fig. 3. Pola 'Hammer' disahkan oleh indikator MFI
- int CH_HM_MFI::LongCondition() - memeriksa syarat untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
- int CH_HM_MFI::ShortCondition() - memeriksa syarat untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).
2.1. Buka Posisi Long/Tutup Posisi Short
Pembentukan pola "Hammer" mesti disahkan oleh MFI indikator: MFI(1)<40 (nilai indikator MFI bar yang telah selesai mesti kurang dari 40).
Posisi short mesti ditutup jika MFI indikator telah melintasi tahap kritikal ke atas (70 atau 30).
//+------------------------------------------------------------------+ //| 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 CH_HM_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 long //--- pembentukan pola Hammer dan MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (MFI(1)<40)) result=80; //--- memeriksa syarat untuk menutup posisi short //--- persilangan garis sinyal tahap overbought/oversold (ke atas 30, ke atas 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- pulangkan hasil return(result); }
2.2. Buka Posisi Short/Tutup Posisi Long
Pembentukan pola "Hanging Man" mesti disahkan oleh MFI indikator: MFI(1)>60 (nilai indikator MFI bar yang telah selesai mesti lebih dari 60).
Posisi long mesti ditutup jika MFI indikator telah melintasi tahap kritikal ke atas (70 atau 30).
//+------------------------------------------------------------------+ //| 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 CH_HM_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 short //--- pembentukan pola Hanging Man dan MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (MFI(1)>60)) result=80; //--- memeriksa syarat untuk menutup posisi long //--- persilangan garis sinyal tahap overbought/oversold (ke atas 70, ke bawah 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- pulangkan hasil return(result); }
2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard
Kelas CH_HM_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu memuat turun fail ah_hm_mfi.mqh (lihat lampiran) dan simpan di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Perkara yang sama perlu dilakukan dengan fail acandlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas 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. Atribut umum Expert Advisor
Setelah itu, kita perlu memilih modul sinyal dagangan yang digunakan.

Fig. 6. Atribut sinyal Expert Advisor
Dalam kes ini, kita hanya menggunakan satu modul sinyal dagangan.
Menambah modul Sinyal berdasarkan Hammer/Hanging Man disahkan oleh MFI:

Fig. 7. Atribut sinyal Expert Advisor
Modul sinyal dagangan telah ditambah:

Fig. 8. Atribut sinyal Expert Advisor
Anda boleh memilih mana-mana atribut trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Fig. 9. Atribut trailing Expert Advisor
Berkaitan dengan atribut pengurusan wang, kita akan menggunakan "Dagangan dengan volume dagangan tetap":

Fig. 10. Atribut pengurusan wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dihasilkan, terletak dalam Expert_AH_HM_MFI.mq5, ia akan disimpan dalam folder terminal_data_folder\MQL5\Experts.
Parameter input lalai dari Expert Advisor yang dihasilkan:
//--- input untuk sinyal utama input int Signal_ThresholdOpen =10; // Nilai ambang sinyal untuk buka [0...100] input int Signal_ThresholdClose =10 // Nilai ambang sinyal 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 titik) input double Signal_TakeLevel =50.0 // Tahap Take Profit (dalam titik)
perlu digantikan kepada:
//--- input untuk sinyal utama input int Signal_ThresholdOpen =40; // Nilai ambang sinyal untuk buka [0...100] input int Signal_ThresholdClose =20 // Nilai ambang sinyal 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 titik) input double Signal_TakeLevel =0.0 // Tahap Take Profit (dalam titik)
Parameter input Signal_ThresholdOpen/Signal_ThresholdClose membolehkan anda menetapkan tahap ambang untuk membuka dan menutup posisi.
Dalam kod metode LongCondition() dan ShortCondition() dari kelas sinyal 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 sinyal dagangan. Undi dari modul utama (sebagai kontainer, ia terdiri daripada semua modul yang ditambah) juga digunakan, tetapi metode LongCondition() dan ShortCondition() sentiasa mengembalikan 0.
Keputusan undi dari modul utama juga digunakan dalam purata "undi". Dalam kes kita, kita mempunyai: modul utama + 1 modul sinyal dagangan, jadi kita perlu mengambil kira fakta ini semasa menetapkan nilai ambang. Oleh kerana ini, ThresholdOpen dan ThresholdClose mesti ditetapkan kepada 40=(0+80)/2 dan 20=(0+40)/2.
Nilai parameter input Signal_StopLevel dan Signal_TakeLevel ditetapkan kepada 0, yang bermakna penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.
2.4. Keputusan Ujian Kembali
Mari kita pertimbangkan ujian kembali Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.03.16, PeriodMFI=47, MA_period=5).
Dalam penciptaan Expert Advisor, kita menggunakan volume tetap (Dagangan Volume Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Hammer/Hanging Man + MFI
Set terbaik parameter input boleh ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard dilampirkan dalam expert_ah_hm_mfi.mq5.
Siaran berkaitan
- Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI
- MQL5 Wizard: Cipta EA Berdasarkan Pola Bullish dan Bearish Engulfing dengan Stochastic
- 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
- MQL5 Wizard: Cipta Sistem Trading Berdasarkan Pola Morning/Evening Star dan RSI