MQL5 Wizard adalah alat yang membolehkan anda mencipta Expert Advisors siap pakai berdasarkan kelas-kelas dalam perpustakaan standard yang disertakan bersama terminal klien. Alat ini membolehkan anda menguji idea dagangan dengan cepat, dan anda hanya perlu mencipta kelas signal dagangan anda sendiri. Struktur kelas ini serta contoh penggunaannya boleh didapati dalam artikel MQL5 Wizard: Cara Mencipta Modul Signal Dagangan.
Idea asasnya adalah untuk mencipta kelas signal dagangan yang diturunkan daripada CExpertSignal. Selepas itu, anda perlu mengubahsuai kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.
Salah satu buku yang menarik adalah "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang membincangkan pelbagai strategi dagangan. Fokus kami adalah pada corak candlestick pembalikan, yang disahkan oleh Stochastic, CCI, MFI, dan RSI.
Cara terbaik adalah mencipta kelas terpisah yang diturunkan daripada CExpertSignal untuk memeriksa pembentukan corak candlestick. Untuk mengesahkan signal dagangan yang dihasilkan oleh corak candlestick, anda hanya perlu menulis kelas yang diturunkan daripada CCandlePattern dan menambah ciri yang diperlukan (seperti pengesahan oleh osilator).
Di sini, kami akan membincangkan signal yang berasaskan corak pembalikan candlestick "3 Hitam" dan "3 Putih" yang disahkan oleh indeks fasilitasi pasaran (MFI). Modul signal dagangan ini berasaskan kelas CCandlePattern, dan ia merupakan contoh mudah penggunaannya untuk mencipta signal dagangan dengan corak candlestick.
1. Corak Pembalikan Candlestick "3 Hitam" dan "3 Putih"
1.1. 3 Hitam
Corak candlestick menurun ini digunakan untuk meramalkan pembalikan trend menaik semasa. Corak ini terdiri daripada tiga candlestick bertubuh panjang yang berturut-turut ditutup lebih rendah dari hari sebelumnya, dengan setiap sesi dibuka dalam tubuh candlestick sebelumnya.

Fig. 1. Corak candlestick "3 Hitam"
Pengenalan corak "3 Hitam" dilaksanakan dalam kaedah CheckPatternThreeBlackCrows dalam kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan corak candlestick "3 Hitam" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() { //--- 3 Hitam if((Open(3)-Close(3)>AvgBody(1)) && // (hitam panjang) (Open(2)-Close(2)>AvgBody(1)) && (Open(1)-Close(1)>AvgBody(1)) && (MidPoint(2)<MidPoint(3)) && // (titik tengah lebih rendah) (MidPoint(1)<MidPoint(2))) return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dalam kelas CCandlePattern digunakan untuk memeriksa pembentukan corak candlestick "3 Hitam".
1.2. Corak 3 Putih
Corak candlestick menaik ini digunakan untuk meramalkan pembalikan trend menurun semasa. Corak ini terdiri daripada tiga candlestick bertubuh panjang yang berturut-turut ditutup lebih tinggi dari hari sebelumnya, dengan setiap sesi dibuka dalam tubuh candlestick sebelumnya.
Corak ini sah selagi candlestick hari kedua dibuka di bahagian atas julat hari pertama. Menjelang akhir hari kedua, ia harus ditutup dekat dengan tinggi, meninggalkan bayangan atas yang sangat kecil atau tidak ada. Corak yang sama akan diulang pada hari ketiga.

Fig. 2. Corak candlestick "3 Putih"
Berikut adalah kaedah untuk pengenalan corak "3 Putih":
//+------------------------------------------------------------------+ //| Memeriksa pembentukan corak candlestick "3 Putih" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() { //--- 3 Putih if((Close(3)-Open(3)>AvgBody(1)) && // putih panjang (Close(2)-Open(2)>AvgBody(1)) && (Close(1)-Open(1)>AvgBody(1)) && (MidPoint(2)>MidPoint(3))& && // titik tengah lebih tinggi (MidPoint(1)>MidPoint(2))) return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dalam kelas CCandlePattern digunakan untuk memeriksa pembentukan corak candlestick "3 Putih".
2. Signal Dagangan, Disahkan oleh Indikator MFI
Signal dagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh indeks fasilitasi pasaran (MFI). Nilai indikator MFI mesti lebih rendah daripada 40 (untuk posisi panjang) atau lebih tinggi daripada 60 (untuk posisi pendek).
Penutupan posisi yang dibuka bergantung pada nilai indikator MFI. Ini boleh dilakukan dalam 2 kes:
- jika MFI telah mencapai tahap kritikal bertentangan (70 untuk posisi panjang dan 30 untuk posisi pendek)
- jika isyarat pembalikan tidak disahkan (apabila indikator MFI mencapai tahap berikut: 30 untuk posisi panjang dan 70 untuk posisi pendek)

Fig. 3. Corak "3 Hitam", disahkan oleh indikator MFI
- int CBC_WS_MFI::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
- int CBC_WS_MFI::ShortCondition() - memeriksa syarat untuk membuka posisi pendek (mengembalikan 80) dan menutup posisi panjang (mengembalikan 40).
2.1. Buka posisi panjang/Tutup posisi pendek
-
Pembentukan corak "3 Putih" mesti disahkan oleh MFI indikator: MFi(1)<40 (nilai indikator MFI bar terakhir yang telah diselesaikan 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 CBC_WS_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 3 Putih dan MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40)) result=80; //--- memeriksa syarat untuk menutup posisi pendek //--- persilangan garis isyarat 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. Buka posisi pendek/Tutup posisi panjang
-
Pembentukan corak "3 Hitam" mesti disahkan oleh MFI indikator: MFI(1)>60 (nilai indikator MFI bar terakhir yang telah diselesaikan 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 CBC_WS_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 3 Hitam dan MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60)) result=80; //--- memeriksa syarat untuk menutup posisi panjang //--- persilangan garis isyarat 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 CBC_WS_MFI tidak termasuk dalam kelas Perpustakaan Standard, untuk menggunakannya, anda perlu memuat turun fail abc_ws_mfi.mqh (lihat lampiran) dan simpan di dalam folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Anda juga perlu melakukan perkara yang sama 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. Properties umum Expert Advisor
Setelah itu, kita perlu memilih modul signal dagangan yang digunakan.

Fig. 6. Properties signal Expert Advisor
Dalam kes kami, kami hanya menggunakan satu modul signal dagangan.
Menambah modul "Signal berdasarkan 3 Hitam/3 Putih disahkan oleh MFI":

Fig. 7. Properties signal Expert Advisor
Modul signal dagangan telah ditambah:

Fig. 8. Properties signal Expert Advisor
Anda boleh memilih sebarang ciri trailing, tetapi kami akan menggunakan "Trailing Stop tidak digunakan":

Fig. 9. Properties trailing Expert Advisor
Berkenaan dengan ciri pengurusan wang, kami akan menggunakan "Dagangan dengan volum tetap":

Fig. 10. Properties pengurusan wang Expert Advisor
Dengan menekan butang "Selesai", kami akan mendapatkan kod Expert Advisor yang dijana, yang terletak dalam Expert_ABC_WS_MFI.mq5, ia akan disimpan dalam terminal_data_folder\MQL5\Experts\.
Parameter input lalai bagi Expert Advisor yang dijana:
//--- inputs untuk isyarat utama input int Signal_ThresholdOpen =10; // Nilai ambang isyarat untuk dibuka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang isyarat untuk ditutup [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)
perlu digantikan kepada:
//--- inputs untuk isyarat utama input int Signal_ThresholdOpen =40; // Nilai ambang isyarat untuk dibuka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang isyarat untuk ditutup [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 menentukan tahap ambang untuk membuka dan menutup posisi.
Dalam kod kaedah LongCondition() dan ShortCondition() dalam kelas signal dagangan, kami 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 "undi" dari modul signal dagangan. Undi dari modul utama (sebagai kontena, terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition() modul utama sentiasa mengembalikan 0.
Keputusan undi modul utama juga digunakan dalam purata undi. Dalam kes kami, kami mempunyai: modul utama + 1 modul signal dagangan, jadi kami 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 parameter input Signal_StopLevel dan Signal_TakeLevel ditetapkan kepada 0, yang bermaksud bahawa penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.
2.4. Keputusan ujian sejarah
Kita akan mempertimbangkan ujian Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=13).
Dalam penciptaan Expert Advisor, kami menggunakan volum tetap (Dagangan Volum Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan 3 Hitam/3 Putih + MFI
Set parameter input terbaik boleh didapati menggunakan Strategy Tester dari terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard dilampirkan dalam expert_abc_ws_mfi.mq5.
Siaran berkaitan
- MQL5 Wizard: Cipta Signal Dagangan Berdasarkan Corak Candlestick Dark Cloud Cover dan Piercing Line + MFI
- MQL5 Wizard: Cipta Isyarat Dagangan Menggunakan Corak Morning/Evening Star dan MFI
- MQL5 Wizard: Cipta Isyarat Dagangan dengan Bullish dan Bearish Harami + MFI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan: Garisan Pertemuan Bullish/Bearish dan MFI
- Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI