MQL5 Wizard adalah alat yang sangat membantu dalam membuat Expert Advisor (EA) siap pakai berdasarkan kelas yang disediakan dalam Standard Library. Dengan alat ini, kita bisa dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading kita sendiri. Struktur kelas ini dan contohnya dapat ditemukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.
Secara umum, kelas sinyal trading diturunkan dari CExpertSignal. Kita perlu menimpa metode LongCondition() dan ShortCondition() dengan metode kita sendiri.
Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading, tetapi kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh RSI, Stochastic, CCI, dan MFI.
Langkah terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, kita cukup menulis kelas yang diturunkan dari CCandlePattern dan menambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator).
Dalam artikel ini, kita akan membahas sinyal yang didasarkan pada pola candlestick pembalikan "Dark Cloud Cover/Piercing Line" yang dikonfirmasi oleh indikator RSI. Modul sinyal trading ini didasarkan pada kelas CCandlePattern yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick.
1. Pola Candlestick Pembalikan: "Dark Cloud Cover" dan "Piercing Line"
1.1. Dark Cloud Cover
"Dark Cloud Cover" adalah pola pembalikan bearish yang terjadi di akhir tren naik. Pada hari pertama, terbentuk candlestick putih panjang, dan pada hari kedua terjadi gap up. Namun, hari kedua ditutup di bawah titik tengah hari pertama.

Gambar 1. Pola Candlestick "Dark Cloud Cover"
Pengenalan pola "Dark Cloud Cover" diimplementasikan dalam metode CheckPatternDarkCloudCover() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola 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 tubuh sebelumnya) (MidOpenClose(2)>CloseAvg(1)) && // (tren naik) (Open(1)>High(2))) // (dibuka di high baru) return(true); //--- return(false); }
Metode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Dark Cloud Cover".
1.2. Piercing Line
Pada hari kedua, terjadi gap down yang melanjutkan tren turun. Namun, penutupan pada hari kedua berada di atas titik tengah tubuh hari pertama. Ini menunjukkan kepada para bearish bahwa mungkin terjadi pembalikan. Aksi harga ini tidak begitu jelas terlihat menggunakan grafik batang dibandingkan dengan grafik candlestick. Semakin dalam penutupan pada hari kedua ke tubuh hari pertama, semakin besar kemungkinan sinyal pembalikan tersebut berhasil.

Gambar 2. Pola Candlestick "Piercing Line"
Pengenalan pola "Piercing Line" diimplementasikan dalam metode CheckPatternPiercingLine() dari kelas CCandlePattern:
//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola 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 tubuh sebelumnya) (MidOpenClose(2)<CloseAvg(2)) && // (tren turun) (Open(1)<Low(2))) // (dibuka lebih rendah dari Low sebelumnya) return(true); //--- return(false); }
Metode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Piercing Line".
2. Sinyal Trading yang Dikonfirmasi oleh Indikator RSI
Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus lebih rendah atau lebih tinggi dari level kritis (40 untuk posisi long dan 60 untuk posisi short).
Penutupan posisi terbuka bergantung pada nilai RSI. Ini dapat dilakukan dalam 2 kasus:
- Jika RSI sudah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short)
- Jika sinyal pembalikan tidak dikonfirmasi (ketika RSI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short)

Gambar 3. Pola "Dark Cloud Cover" yang Dikonfirmasi oleh Indikator RSI
- int CDC_PL_RSI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
- int CDC_PL_RSI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).
2.1. Memperoleh Posisi Long/Menutup Posisi Short
Pembentukan pola "Piercing Line" harus dikonfirmasi oleh indikator RSI: RSI(1)<40 (nilai RSI dari bar yang sudah selesai harus kurang dari 40).
Posisi short harus ditutup jika indikator RSI telah melintasi level kritis 70 atau 30 ke atas.
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::LongCondition() { int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA hanya memeriksa kondisi trading pada bar berita int idx =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Piercing Line dan RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (RSI(1)<40)) result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover sinyal level overbought/oversold (naik 30, naik 70) if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70))) result=40; //--- mengembalikan hasil return(result); }
2.2. Memperoleh Posisi Short/Menutup Posisi Long
Pembentukan pola "Dark Cloud Cover" harus dikonfirmasi oleh indikator RSI: RSI(1)>60 (nilai dari indikator RSI bar yang sudah selesai harus lebih dari 60).
Posisi long harus ditutup jika indikator RSI telah melintasi level kritis 70 atau 30 ke bawah.
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::ShortCondition() { int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA hanya memeriksa kondisi trading pada bar berita int idx =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Dark Cloud Cover dan RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1)>60)) result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover sinyal level overbought/oversold (turun 70, turun 30) if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30))) result=40; //--- mengembalikan hasil return(result); }
2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard
Kelas CDC_PL_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kita perlu mengunduh file adc_pl_rsi.mqh (lihat lampiran) dan menyimpannya ke dalam folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file acandlepatterns.mqh. Kita bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor.
Untuk membuat Expert Advisor, jalankan 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 hal ini, kita hanya menggunakan satu modul sinyal trading.
Menambahkan modul Sinyal Berdasarkan Dark Cloud Cover/Piercing Line yang Dikonfirmasi oleh RSI:

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

Gambar 8. Properti Sinyal Expert Advisor
Kita 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 tetap":

Gambar 10. Properti Manajemen Uang Expert Advisor
Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ADC_PL_RSI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\.
Parameter input default dari Expert Advisor yang dihasilkan:
//--- masukan untuk sinyal utama input int Signal_ThresholdOpen =10; // Nilai ambang sinyal untuk membuka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang sinyal untuk menutup [0...100] input double Signal_PriceLevel =0.0; // Tingkat harga untuk mengeksekusi transaksi input double Signal_StopLevel =50.0; // Tingkat Stop Loss (dalam poin) input double Signal_TakeLevel =50.0; // Tingkat Take Profit (dalam poin)
harus diganti menjadi:
//--- masukan untuk sinyal utama input int Signal_ThresholdOpen =40; // Nilai ambang sinyal untuk membuka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang sinyal untuk menutup [0...100] input double Signal_PriceLevel =0.0; // Tingkat harga untuk mengeksekusi transaksi input double Signal_StopLevel =0.0; // Tingkat Stop Loss (dalam poin) input double Signal_TakeLevel =0.0 // Tingkat Take Profit (dalam poin)
Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan kita untuk menentukan level ambang untuk membuka dan menutup posisi.
Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap untuk ambangnya:
- 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 kontainer, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition()nya selalu mengembalikan 0.
Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diset menjadi 40=(0+80)/2 dan 20=(0+40)/2.
Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diset ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi.
2.4. Hasil Backtesting Sejarah
Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14).
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 Dark Cloud Cover/Piercing Line + RSI
Set terbaik dari parameter input dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5.
Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_ad_pl_rsi.mq5.
Postingan terkait
- MQL5 Wizard: Mengoptimalkan Sinyal Perdagangan dengan Morning/Evening Stars dan MFI
- MQL5 Wizard: Membuat EA dengan Sinyal Trading Berdasarkan Pola Morning/Evening Stars dan Stochastic
- Membuat Expert Advisor dengan MQL5 Wizard: Sinyal Trading Berdasarkan Dark Cloud Cover dan Piercing Line
- Menggunakan MQL5 Wizard untuk Sinyal Perdagangan: Pola Hammer/Hanging Man dan RSI
- MQL5 Wizard: Menggunakan Sinyal Trading Berbasis Morning/Evening Stars dan RSI untuk MetaTrader 5