MQL5 Wizard memungkinkan kita untuk membuat kode Expert Advisor secara otomatis. Lihat Membuat Expert Advisors Siap Pakai di MQL5 Wizard untuk detail lebih lanjut.
Di sini kita akan membahas strategi berdasarkan crossover harga dengan indikator Moving Average. Strategi ini disebut "Sinyal Berdasarkan Crossover Harga dengan MA" (saat membuat EA secara otomatis di MQL5 Wizard).
Sinyal trading:
- Beli: crossover harga ke atas dengan Moving Average.
- Jual: crossover harga ke bawah dengan Moving Average.
- Pengecekan peningkatan/penurunan MA digunakan untuk menyaring sinyal palsu.
Strategi ini diimplementasikan dalam kelas CSignalMA dari kelas Strategi Trading di MQL5 Standard Library (terletak di MQL5\Include\Expert\Signal\SignalMA.mqh).

Gambar 1. Sinyal trading berdasarkan crossover harga dengan Moving Average
Sinyal Trading
Strategi trading ini diimplementasikan dalam kelas CSignalMA, yang memiliki beberapa metode terlindungi untuk menyederhanakan akses ke indikator dan nilai harga:
double MA(int ind) // mengembalikan nilai moving average dari bar double Open(int ind) // mengembalikan harga pembukaan dari bar double Close(int ind) // mengembalikan harga penutupan dari bar double StateMA(int ind) // mengembalikan nilai positif jika rata-rata meningkat dan negatif jika menurun double StateOpen(int ind) // mengembalikan selisih antara harga pembukaan dan moving average double StateClose(int ind) // mengembalikan selisih antara harga penutupan dan moving average
1. Membuka posisi long
Kondisi untuk membuka posisi long (crossover harga dengan MA dan pengecekan peningkatan MA):
- Open(1)<MA(1): harga pembukaan lebih rendah dari moving average;
- Close(1)>MA(1): harga penutupan lebih tinggi dari moving average;
- MA(1)>MA(2): cek peningkatan moving average (untuk menyaring sinyal palsu).
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi long (beli) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- harga telah melintasi ke atas MA dan MA meningkat return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Menutup posisi long
Kondisi untuk menutup posisi long (crossover harga dengan MA dan pengecekan penurunan MA):
- Open(1)>MA(1): harga pembukaan lebih tinggi dari moving average;
- Close(1)<MA(1): harga penutupan lebih rendah dari moving average;
- MA(1)<MA(2): cek penurunan moving average (untuk menyaring sinyal palsu).
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi long | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- harga telah melintasi moving average ke bawah dan moving average menurun return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. Membuka posisi short
Kondisi untuk membuka posisi short sama dengan kondisi penutupan posisi long.
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi short (jual) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- harga telah melintasi moving average ke atas dan moving average menurun return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. Menutup posisi short
Kondisi untuk menutup posisi short sama dengan kondisi pembukaan posisi long.
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi short | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- harga telah melintasi moving average ke atas dan moving average meningkat return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
Membuat Expert Advisor Menggunakan MQL5 Wizard
Untuk membuat robot trading berdasarkan strategi ini, Anda perlu memilih properti sinyal sebagai "Sinyal Berdasarkan Crossover Harga dengan MA" dalam opsi "Membuat Expert Advisors Siap Pakai" di MQL5 Wizard:

Gambar 2. Pilih "Sinyal Berdasarkan Crossover Harga dengan MA" di MQL5 Wizard
Selanjutnya, Anda harus menentukan algoritma trailing stop yang dibutuhkan dan sistem manajemen uang dan risiko. Kode Expert Advisor akan dibuat secara otomatis, Anda bisa mengkompilasi dan mengujinya di Strategy Tester dari terminal klien MetaTrader 5.
Hasil Pengujian
Mari kita lihat pengujian ulang Expert Advisor pada data historis (EURUSD H1, periode kustom: 1.1.2010-05.01.2011, MA_period=12, MA_Shift=0).
Dalam pembuatan Expert Advisor, kami menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Gambar 3. Hasil pengujian ulang historis dari Expert Advisor, berdasarkan crossover harga dengan MA
Lampiran: SignalMA.mqh dengan kelas CSignalMA (termasuk dalam MQL5 Standard Library) terletak di folder MQL5\Include\Expert\Signal. File crossoverma.mq5 berisi kode Expert Advisor, yang dibuat menggunakan MQL5 Wizard.
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 Menggunakan MQL5 Wizard: Sinyal Perdagangan dari Bullish dan Bearish Engulfing dengan Stochastic
- MQL5 Wizard: Ciptakan Sinyal Trading dengan Bullish/Bearish Engulfing dan RSI
- Panduan Lengkap Membuat EA dengan MQL5 Wizard: Sinyal Trading Bullish dan Bearish Engulfing + MFI