MQL5 Wizard adalah alat hebat yang memungkinkan kita untuk membuat Expert Advisors (EA) siap pakai berdasarkan kelas dari Standard Library yang disertakan dengan terminal klien. Dengan MQL5 Wizard, kita bisa mengecek ide trading dengan cepat, cukup dengan membuat kelas sinyal trading kita sendiri. Struktur kelas ini dan contohnya bisa ditemukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.
Ide umumnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kita perlu mengoverride metode virtual LongCondition() dan ShortCondition() dengan metode kita sendiri.
Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. 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 konfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator).
Di sini, kita akan membahas sinyal yang didasarkan pada pola candlestick pembalikan "Bullish Meeting Lines" yang dikonfirmasi oleh indikator RSI (Relative Strength Index). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick.
1. Pola Candlestick "Meeting Lines"
1.1. Bullish Meeting Lines
Pola ini terdiri dari dua candlestick (bearish dan bullish) dengan harga penutupan yang sama (atau sangat mendekati). Badan dari kedua candlestick harus lebih besar dari rata-rata panjang badan.
Pola "Bullish Meeting Lines" menunjukkan pembalikan dari tren turun.

Gambar 1. Pola 'Bullish Meeting Lines'
Pengenalan pola "Bullish Meeting Lines" diimplementasikan dalam metode CheckPatternBullishMeetingLines() dari kelas CCandlePattern:
//+--------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bullish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines if((Open(2) - Close(2) > AvgBody(1) && ((Close(1) - Open(1) > AvgBody(1) && (MathAbs(Close(1) - Close(2)) < 0.1 * AvgBody(1))) { return (true); } return (false); }
Pola candlestick "Bullish Meeting Lines" dapat diperiksa menggunakan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) dari kelas CCandlePattern.
1.2. Bearish Meeting Lines
Pola ini terdiri dari dua candlestick (bullish dan bearish) dengan harga penutupan yang sama (atau sangat mendekati). Badan dari kedua candlestick harus lebih besar dari rata-rata panjang badan.
Pola "Bearish Meeting Lines" menunjukkan pembalikan dari tren naik.

Gambar 2. Pola 'Bearish Meeting Lines'
Pengenalan pola "Bearish Meeting Lines" diimplementasikan dalam metode CheckPatternBearishMeetingLines() dari kelas CCandlePattern:
//+--------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bearish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines if((Close(2) - Open(2) > AvgBody(1) && ((Open(1) - Close(1) > AvgBody(1) && (MathAbs(Close(1) - Close(2)) < 0.1 * AvgBody(1))) { return (true); } return (false); }
Pola candlestick "Bearish Meeting Lines" dapat diperiksa menggunakan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) dari kelas CCandlePattern.
2. Sinyal Trading, Dikonfirmasi oleh Indikator RSI
Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus lebih rendah/lebih tinggi dari level kritis (40 untuk posisi long dan 60 untuk posisi short).
Penutupan posisi yang dibuka tergantung pada nilai RSI. Ini dapat dilakukan dalam 2 kasus:
- Jika RSI telah 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 'Bearish Meeting Lines' dikonfirmasi oleh indikator RSI
int CML_RSI::LongCondition()- memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);int CML_RSI::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 Meeting Lines" harus dikonfirmasi oleh indikator RSI: RSI(1) < 40 (nilai RSI dari bar terakhir yang 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 CML_RSI::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 Meeting Lines dan RSI < 30 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (RSI(1) < 40)) result = 80; //--- memeriksa kondisi untuk menutup posisi short //--- persilangan garis sinyal dari level overbought/oversold (ke atas 30, ke atas 70) if(((RSI(1) > 30) && (RSI(230)) || ((RSI(1) > 70) && (RSI(2) < 70))) result = 40; //--- mengembalikan hasil return (result); }
2.2. Membuka posisi short/Menutup posisi long
Pembentukan pola "Bearish Meeting Lines" harus dikonfirmasi oleh indikator RSI: RSI(1) > 60 (nilai RSI indikator dari bar terakhir yang selesai harus lebih besar 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 CML_RSI::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 Meeting Lines dan RSI > 60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (RSI(1) > 60)) result = 80; //--- memeriksa kondisi untuk menutup posisi long //--- persilangan garis sinyal dari level overbought/oversold (ke bawah 70, ke bawah 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 CML_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kita perlu mengunduh file acml_rsi.mqh (lihat lampiran) dan menyimpannya ke dalam folder data klien terminal di 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 dari Expert Advisor
Selanjutnya, kita perlu memilih modul sinyal trading yang digunakan.

Gambar 6. Properti sinyal dari Expert Advisor
Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading.
Menambahkan modul Sinyal Berdasarkan Bullish/Bearish Meeting Lines yang Dikonfirmasi oleh RSI:

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

Gambar 8. Properti sinyal dari Expert Advisor
Anda dapat memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

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

Gambar 10. Properti manajemen uang dari Expert Advisor
Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_AML_RSI.mq5, dan 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 ambang sinyal untuk membuka [0...100] input int Signal_ThresholdClose = 10; // Nilai ambang sinyal untuk menutup [0...100] input double Signal_PriceLevel = 0.0; // Level harga untuk mengeksekusi transaksi 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:
//--- input 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; // Level harga untuk mengeksekusi transaksi 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 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 dari ambang:
- Posisi buka: 80;
- Posisi tutup: 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() 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 memperhitungkan 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 dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi.
2.4. Hasil Backtesting Sejarah
Mari kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2000.01.01-2011.03.01, PeriodRSI=11, MA_period=3).
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/Bearish Meeting Lines + 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_aml_rsi.mq5.
Postingan terkait
- MQL5 Wizard: Membuat EA dengan Sinyal Trading Berdasarkan Pola Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Mengoptimalkan Sinyal Perdagangan dengan Morning/Evening Stars dan MFI
- MQL5 Wizard: Menggunakan Sinyal Trading Berbasis Morning/Evening Stars dan RSI untuk MetaTrader 5
- Menggunakan MQL5 Wizard untuk Sinyal Trading Berdasarkan Pola Candlestick dan CCI
- MQL5 Wizard: Membuat Expert Advisor dengan Sinyal Trading Bullish/Bearish Meeting Lines dan CCI