MQL5 Wizard membolehkan anda menghasilkan kod untuk Sistem Trading secara automatik. Untuk maklumat lanjut, lihat Membuat Sistem Trading Sedia Ada dengan MQL5 Wizard.
Di sini, kita akan membincangkan strategi yang berasaskan crossover dua Moving Averages yang dismooth secara eksponensial (EMA cepat dan EMA lambat). Strategi ini dikenali sebagai "Signals berdasarkan crossover dua EMA" (apabila menghasilkan EA secara automatik dalam MQL5 Wizard).
Isyarat Trading:
- Beli: EMA cepat crossover ke atas EMA lambat
- Jual: EMA cepat crossover ke bawah EMA lambat
Strategi ini dilaksanakan dalam kelas CSignalCrossEMA.

Rajah 1. Isyarat trading berdasarkan crossover dua moving averages yang dismooth secara eksponensial
Isyarat Trading
Strategi trading ini dilaksanakan dalam kelas CSignalCrossEMA, yang mempunyai beberapa kaedah dilindungi untuk memudahkan akses kepada nilai indikator:
double FastEMA(int ind) // mengembalikan nilai moving average cepat bar double SlowEMA(int ind) // mengembalikan nilai moving average lambat bar double StateEMA(int ind) // mengembalikan perbezaan antara moving averages cepat dan lambat bar
1. Membuka posisi long
Keadaan untuk membuka posisi long:
- StateEMA(1)>0 dan StateEMA(2)<0: EMA cepat telah crossover ke atas EMA lambat pada bar yang terakhir diselesaikan.
//+------------------------------------------------------------------+ //| Memeriksa keadaan untuk membuka posisi long (beli) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
2. Menutup posisi long
Keadaan untuk menutup posisi long:
- StateEMA(1)<0 dan StateEMA(2)>0: EMA cepat telah crossover ke bawah EMA lambat pada bar yang terakhir diselesaikan.
//+------------------------------------------------------------------+ //| Memeriksa keadaan untuk menutup posisi long | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseLong(double& price) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; //--- return(true); }
3. Membuka posisi short
Keadaan untuk membuka posisi short adalah sama dengan keadaan menutup posisi long.
//+------------------------------------------------------------------+ //| Memeriksa keadaan untuk membuka posisi short (jual) | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
4. Menutup posisi short
Keadaan untuk menutup posisi short adalah sama dengan keadaan membuka posisi long.
//+------------------------------------------------------------------+ //| Memeriksa keadaan untuk menutup posisi short | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseShort(double& price) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; //--- return(true); }
Membuat Sistem Trading menggunakan MQL5 Wizard
Untuk membuat robot trading berdasarkan strategi ini, anda perlu memilih ciri isyarat sebagai "Signals berdasarkan crossover dua EMA" dalam pilihan "Membuat Sistem Trading Sedia Ada" dalam MQL5 Wizard:

Rajah 2. Pilih isyarat berdasarkan crossover dua EMA dalam MQL5 Wizard
Seterusnya, anda perlu menentukan algoritma trailing stop yang diperlukan dan sistem pengurusan wang dan risiko. Kod Sistem Trading akan dihasilkan secara automatik, anda boleh menyusunnya dan mengujinya dalam Strategy Tester dalam terminal klien MetaTrader 5.
Selain itu, kelas Standard library mengandungi "Signals berdasarkan crossover dua MA", yang dilaksanakan dalam kelas CSignalCrossMA. Idea trading adalah serupa, tetapi ia menyediakan banyak ciri tambahan (menentukan jenis, pergeseran dan kaedah purata serta penggunaan tahap Take Profit dan Stop Loss).

Rajah 3. Isyarat berdasarkan crossover dua MA dalam MQL5 Wizard
Keputusan Ujian
Marilah kita mempertimbangkan ujian balik Sistem Trading ini menggunakan data sejarah (EURUSD H1, tempoh ujian: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).
Dalam penciptaan Sistem Trading ini, kami menggunakan volum tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Rajah 4. Keputusan ujian balik sejarah Sistem Trading berdasarkan crossover dua EMA
Lampiran: Fail SignalCrossEMA.mqh dengan kelas CSignalCrossEMA mesti diletakkan di folder terminal_data_folder\MQL5\Include\Expert\Signal.
Fail crossover_2ema.mq5 mengandungi kod Sistem Trading, yang dihasilkan menggunakan MQL5 Wizard.
Siaran berkaitan
- MQL5 Wizard: Cipta Sistem Trading Berdasarkan Pola Morning/Evening Star dan RSI
- Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan Berdasarkan Morning/Evening Stars dan Stochastic
- MQL5 Wizard: Cipta Isyarat Dagangan Menggunakan Corak Morning/Evening Star dan MFI
- Menggunakan MQL5 Wizard untuk Signal Perdagangan '3 Black Crows/3 White Soldiers' + RSI
- MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak Hammer/Hanging Man dan Stochastic