MQL5 Wizard memungkinkan kita untuk membuat kode Expert Advisor (EA) secara otomatis. Untuk lebih jelasnya, lihat Membuat Expert Advisors Siap Pakai di MQL5 Wizard.
Di sini, kita akan membahas strategi tren yang berbasis pada tiga moving average. Strategi ini dikenal dengan nama "Sinyal Berdasarkan Tiga EMA". Untuk menentukan tren, strategi ini menggunakan tiga exponential moving averages yang disebut: FastEMA, MediumEMA, dan SlowEMA.
Sinyal Trading:
- Sinyal Beli: FastEMA > MediumEMA > SlowEMA (tren naik).
- Sinyal Jual: FastEMA < MediumEMA < SlowEMA (tren turun).
Strategi ini diimplementasikan dalam kelas CSignal3EMA (file signal3ema.mqh harus diletakkan di terminal_data_folder\MQL5\Include\Expert\Signal\Signal3EMA.mqh).

Gambar 1. Sinyal trading berdasarkan tiga moving average
Sinyal Trading
Strategi trading ini diimplementasikan dalam kelas CSignal3EMA, yang memiliki beberapa metode terlindungi untuk mempermudah akses ke nilai dari tiga moving averages (Fast, Medium, Slow):
double FastEMA(int ind) // mengembalikan nilai Fast EMA dari bar double MediumEMA(int ind) // mengembalikan nilai Medium EMA dari bar double SlowEMA(int ind) // mengembalikan nilai Slow EMA dari bar
1. Buka posisi long
Tren naik ditentukan dengan kondisi berikut: FastEMA > MediumEMA > SlowEMA:
- FastEMA(1) > MediumEMA(1): Fast EMA lebih tinggi dari Medium EMA (bar terakhir yang sudah selesai);
- MediumEMA(2) > SlowEMA(1): Medium EMA lebih tinggi dari Slow EMA (bar terakhir yang sudah selesai);
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi long (beli) | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { double medium=MediumEMA(1); //--- price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- memeriksa tren naik (pada bar terakhir yang sudah selesai): FastEMA(1) > MediumEMA(1) > SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
2. Tutup posisi long
Tren turun ditentukan dengan kondisi berikut: FastEMA < MediumEMA < SlowEMA:
- FastEMA(1) < MediumEMA(1): Fast EMA lebih rendah dari Medium EMA (bar terakhir yang sudah selesai);
- MediumEMA(2) < SlowEMA(1): Medium EMA lebih rendah dari Slow EMA (bar terakhir yang sudah selesai);
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi long | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseLong(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- memeriksa tren turun (pada bar terakhir yang sudah selesai): FastEMA(1) < MediumEMA(1) < SlowEMA(1) return(FastEMA(1)<medium && medium<SlowEMA(1)); }
3. Buka posisi short
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk membuka posisi short (jual) | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { double medium=MediumEMA(1); //--- price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- memeriksa tren turun (pada bar terakhir yang sudah selesai): FastEMA(1) < MediumEMA(1) < SlowEMA(1) return(FastEMA(1)<medium && medium<SlowEMA(1)); }
4. Tutup posisi short
//+------------------------------------------------------------------+ //| Memeriksa kondisi untuk menutup posisi short | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseShort(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- memeriksa tren naik (pada bar terakhir yang sudah selesai): FastEMA(1) > MediumEMA(1) > SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
Anda dapat memperbaiki penutupan posisi short: tidak perlu menunggu tren naik, Anda dapat menutup posisi short ketika datar, yang dapat ditentukan dengan kondisi berikut: FastEMA > MediumEMA < SlowEMA.
Membuat Expert Advisor Menggunakan MQL5 Wizard
Untuk membuat robot trading berdasarkan strategi ini, Anda perlu memilih properti sinyal sebagai "Sinyal Berdasarkan Tiga EMA" dalam opsi "Membuat Expert Advisors Siap Pakai" di MQL5 Wizard:

Gambar 2. Pilih 'Sinyal Berdasarkan Tiga EMA' di MQL5 Wizard
Selanjutnya, Anda harus menentukan algoritma trailing stop yang diperlukan dan sistem manajemen uang dan risiko. Kode Expert Advisor akan dibuat secara otomatis, Anda bisa mengompilasinya dan mengujinya di Strategy Tester di terminal klien MetaTrader 5.
Hasil Pengujian
Mari kita pertimbangkan backtesting dari Expert Advisor ini pada data historis (EURUSD H1, periode pengujian: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).
Dalam pembuatan Expert Advisor, kami menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Gambar 3. Hasil backtesting historis dari Expert Advisor, berbasis tiga EMA
Lampiran: File Signal3EMA.mqh dengan kelas CSignal3EMA harus diletakkan di terminal_data_folder\MQL5\Include\Expert\Signal.
File threeema.mq5 berisi kode dari Expert Advisor yang dibuat menggunakan MQL5 Wizard.
Komentar 0