MQL5 Wizard membolehkan anda menghasilkan kod untuk EA secara automatik. Lihat Membuat EA Sedia Ada Menggunakan MQL5 Wizard untuk maklumat lanjut.
Dalam artikel ini, kita akan bincangkan strategi tren yang berasaskan tiga purata bergerak. Strategi ini dikenali sebagai "Isyarat Berdasarkan Tiga EMA". Untuk menentukan tren, ia menggunakan tiga purata bergerak yang diekspresikan secara eksponen: FastEMA, MediumEMA dan SlowEMA.
Isyarat Perdagangan:
- Isyarat Beli: FastEMA > MediumEMA > SlowEMA (tren menaik).
- Isyarat Jual: FastEMA < MediumEMA < SlowEMA (tren menurun).
Strategi ini diimplementasikan dalam kelas CSignal3EMA (fail signal3ema.mqh mesti diletakkan di terminal_data_folder\MQL5\Include\Expert\Signal\Signal3EMA.mqh).

Gambar 1. Isyarat perdagangan berdasarkan tiga purata bergerak
Isyarat Perdagangan
Strategi perdagangan ini diimplementasikan dalam kelas CSignal3EMA, yang mempunyai beberapa kaedah terlindung untuk memudahkan akses kepada nilai tiga purata bergerak (Fast, Medium, Slow):
double FastEMA(int ind) // mengembalikan nilai Fast EMA bar double MediumEMA(int ind) // mengembalikan nilai Medium EMA bar double SlowEMA(int ind) // mengembalikan nilai Slow EMA bar
1. Membuka posisi panjang
Tren menaik ditentukan dengan syarat berikut: FastEMA > MediumEMA > SlowEMA:
- FastEMA(1) > MediumEMA(1): Fast EMA lebih tinggi daripada Medium EMA (bar terakhir yang lengkap);
- MediumEMA(2) > SlowEMA(1): Medium EMA lebih tinggi daripada Slow EMA (bar terakhir yang lengkap);
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk membuka posisi panjang (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 untuk tren menaik (pada bar terakhir yang lengkap): FastEMA(1) > MediumEMA(1) > SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
2. Menutup posisi panjang
Tren menurun ditentukan dengan syarat berikut: FastEMA < MediumEMA < SlowEMA:
- FastEMA(1) < MediumEMA(1): Fast EMA lebih rendah daripada Medium EMA (bar terakhir yang lengkap);
- MediumEMA(2) < SlowEMA(1): Medium EMA lebih rendah daripada Slow EMA (bar terakhir yang lengkap);
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk menutup posisi panjang | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseLong(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- memeriksa untuk tren menurun (pada bar terakhir yang lengkap): FastEMA(1) < MediumEMA(1) < SlowEMA(1) return(FastEMA(1)1)); }
3. Membuka posisi pendek
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk membuka posisi pendek (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 untuk tren menurun (pada bar terakhir yang lengkap): FastEMA(1) < MediumEMA(1) < SlowEMA(1) return(FastEMA(1)1)); }
4. Menutup posisi pendek
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk menutup posisi pendek | //+------------------------------------------------------------------+ bool CSignal3EMA::CheckCloseShort(double& price) { double medium=MediumEMA(1); //--- price=0.0; //--- memeriksa untuk tren menaik (pada bar terakhir yang lengkap): FastEMA(1) > MediumEMA(1) > SlowEMA(1) return(FastEMA(1)>medium && medium>SlowEMA(1)); }
Anda boleh meningkatkan penutupan posisi pendek: tidak perlu menunggu tren menaik, anda boleh menutup posisi pendek ketika datar, yang boleh ditentukan dengan syarat: FastEMA > MediumEMA < SlowEMA.
Membuat EA Menggunakan MQL5 Wizard
Untuk membuat robot perdagangan berdasarkan strategi ini, anda perlu memilih ciri isyarat sebagai "Isyarat Berdasarkan Tiga EMA" dalam pilihan "Membuat EA Sedia Ada" di MQL5 Wizard:

Gambar 2. Pilih 'Isyarat Berdasarkan Tiga EMA' dalam MQL5 Wizard
Seterusnya, anda perlu menentukan algoritma trailing stop yang diperlukan dan sistem pengurusan risiko dan wang. Kod EA akan dihasilkan secara automatik, anda boleh menyusunnya dan menguji dalam Strategy Tester dalam terminal klien MetaTrader 5.
Keputusan Ujian
Jom kita lihat ujian semula EA pada data sejarah (EURUSD H1, tempoh ujian: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).
Dalam penciptaan EA, kami menggunakan volum tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Gambar 3. Keputusan ujian semula EA, berdasarkan tiga EMA
Lampiran: Fail Signal3EMA.mqh dengan kelas CSignal3EMA mesti diletakkan di terminal_data_folder\MQL5\Include\Expert\Signal.
Fail threeema.mq5 mengandungi kod EA yang dihasilkan menggunakan MQL5 Wizard.
Komen 0