MQL5 Wizard adalah alat yang sangat berguna untuk trader yang ingin membuat Expert Advisor (EA) siap pakai berdasarkan kelas yang disediakan dalam MQL5 Wizard. Dengan alat ini, kamu bisa mengecek ide trading dengan cepat hanya dengan membuat kelas sinyal trading milikmu sendiri. Struktur dari kelas ini beserta contohnya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.
Ide umumnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kamu perlu mengoverride metode virtual LongCondition() dan ShortCondition() dengan metode milikmu sendiri.
Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Di sini, kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI.
Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, kamu cukup menulis kelas yang diturunkan dari CCandlePattern dan menambahkan fitur yang diperlukan (misalnya, konfirmasi dengan osilator).
Di sini, kita akan membahas sinyal yang berdasarkan pola candlestick pembalikan Bullish Harami dan Bearish Harami, yang dikonfirmasi oleh indikator Market Facilitation Index (MFI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick.
1. Pola Candlestick Bullish Harami dan Bearish Harami
1.1. Bullish Harami
Pola pembalikan Bullish Harami terbentuk dalam tren menurun ketika candlestick besar diikuti oleh candlestick kecil yang tubuhnya terletak dalam kisaran vertikal tubuh yang lebih besar. Pola ini menunjukkan bahwa tren menurun mungkin akan berbalik, dan mengisyaratkan bahwa ini adalah waktu yang baik untuk masuk ke posisi long. Candlestick kedua dibuka dengan gap ke atas.
Semakin kecil candlestick kedua (putih), semakin besar kemungkinan pembalikan terjadi.

Gambar 1. Pola Bullish Harami
Pengakuan pola "Bullish Harami" diterapkan dalam metode CheckPatternBullishHarami() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bullish Harami" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami() { //--- Bullish Harami if((Close(1)>Open(1)) && ((Open(2)-Close(2)>AvgBody(1)) && ((Close(1)<Open(2)) && (Open(1)>Close(2))) && (MidPoint(2)<CloseAvg(2))) return(true); //--- return(false); }
Metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bullish Harami".
1.2. Bearish Harami
Pola pembalikan Bearish Harami terbentuk dalam tren naik ketika candlestick besar diikuti oleh candlestick kecil yang tubuhnya terletak dalam kisaran vertikal tubuh yang lebih besar. Pola ini menunjukkan bahwa tren naik mungkin akan berbalik, dan mengisyaratkan bahwa ini adalah waktu yang baik untuk masuk ke posisi short. Candlestick kedua dibuka dengan gap ke bawah.
Semakin kecil candlestick kedua (hitam), semakin besar kemungkinan pembalikan terjadi.

Gambar 2. Pola Bearish Harami
Pengakuan pola "Bearish Harami" diterapkan dalam metode CheckPatternBearishHarami() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bearish Harami" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami() { //--- Bearish Harami if((Close(1)<Open(1)) && ((Close(2)-Open(2)>AvgBody(1)) && ((Close(1)>Open(2)) && (Open(1)<Close(2))) && (MidPoint(2)>CloseAvg(2))) return(true); //--- return(false); }
Metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bearish Harami".
2. Sinyal Trading yang Dikonfirmasi oleh Indikator MFI
Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator MFI. Nilai indikator MFI harus kurang dari 40 (untuk posisi long) atau lebih dari 60 (untuk posisi short).
Penutupan posisi yang dibuka tergantung pada nilai indikator MFI. Ini dapat dilakukan dalam 2 kasus:
- jika MFI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short)
- jika sinyal pembalikan tidak dikonfirmasi (ketika indikator MFI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short)

Gambar 3. Pola Bullish Harami, Dikonfirmasi oleh Indikator MFI
- int CBH_BH_MFI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
- int CBH_BH_MFI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).
2.1. Membuka posisi long/Menutup posisi short
Pembentukan pola "Bullish Harami" harus dikonfirmasi oleh MFI indikator: MFi(1)<40 (nilai indikator MFI dari bar yang telah selesai harus kurang dari 40).
Posisi short harus ditutup jika MFI indikator telah melewati level kritis ke atas (70 atau 30).
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi long, hasil=80) | //| 2) Keluar pasar (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_MFI::LongCondition() { int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita int idx =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Bullish Harami dan MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (MFI(1)<40)) result=80; //--- memeriksa kondisi untuk menutup posisi short //--- persilangan garis sinyal dari level 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 short/Menutup posisi long
Pembentukan pola "Bearish Harami" harus dikonfirmasi oleh MFI indikator: MFI(1)>60 (nilai indikator MFI dari bar yang telah selesai harus lebih dari 60).
Posisi long harus ditutup jika MFI indikator telah melewati level kritis ke atas (70 atau 30).
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi short, hasil=80) | //| 2) Keluar pasar (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_MFI::ShortCondition() { int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita int idx =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Bearish Harami dan MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (MFI(1)>60)) result=80; //--- memeriksa kondisi untuk menutup posisi long //--- persilangan garis sinyal dari level 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. Membuat Expert Advisor Menggunakan MQL5 Wizard
Kelas CBH_BH_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu mengunduh file abh_bh_mfi.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama perlu dilakukan dengan file acandlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor.
Untuk membuat Expert Advisor, luncurkan MQL5 Wizard:

Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard
Mari kita tentukan nama Expert Advisor:

Gambar 5. Properti Umum Expert Advisor
Setelah itu kita perlu memilih modul sinyal trading yang digunakan.

Gambar 6. Properti Sinyal Expert Advisor
Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading.
Menambahkan modul "Sinyal Berdasarkan Bullish Harami/Bearish Harami yang Dikonfirmasi oleh MFI":

Gambar 7. Properti Sinyal Expert Advisor
Modul sinyal trading telah ditambahkan:

Gambar 8. Properti Sinyal Expert Advisor
Kamu bisa memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Gambar 9. Properti Trailing Expert Advisor
Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap":

Gambar 10. Properti Manajemen Uang Expert Advisor
Dengan menekan tombol "Finish", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, terletak di Expert_ABH_BH_MFI.mq5, yang akan disimpan di terminal_data_folder\MQL5\Experts\.
Parameter input default dari Expert Advisor yang dihasilkan:
//--- input untuk sinyal utama input int Signal_ThresholdOpen =10; // Nilai threshold sinyal untuk membuka [0...100] input int Signal_ThresholdClose =10; // Nilai threshold sinyal untuk menutup [0...100] input double Signal_PriceLevel =0.0; // Level harga untuk mengeksekusi deal input double Signal_StopLevel =50.0 // Level Stop Loss (dalam poin) input double Signal_TakeLevel =50.0 // Level Take Profit (dalam poin)
harus diganti menjadi:
//--- inputs untuk sinyal utama input int Signal_ThresholdOpen =40; // Nilai threshold sinyal untuk membuka [0...100] input int Signal_ThresholdClose =20 // Nilai threshold sinyal untuk menutup [0...100] input double Signal_PriceLevel =0.0 // Level harga untuk mengeksekusi deal input double Signal_StopLevel =0.0 // Level Stop Loss (dalam poin) input double Signal_TakeLevel =0.0 // Level Take Profit (dalam poin)
Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level threshold untuk membuka dan menutup posisi.
Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading kita telah menentukan nilai tetap dari threshold:
- Membuka posisi: 80;
- Menutup posisi: 40.
Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() dari modul utama selalu mengembalikan 0.
Hasil suara dari modul utama juga digunakan dalam "rata-rata suara". Dalam kasus kita, terdapat modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini saat menetapkan nilai threshold. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2.
Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan benar.
2.4. Hasil Backtesting Historis
Mari kita pertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=11).
Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan Bullish Harami/Bearish Harami + MFI
Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5.
Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_abh_bh_mfi.mq5.
Komentar 0