MQL5 Wizard membolehkan kita mencipta kod untuk Sistem Trading secara automatik. Untuk maklumat lanjut, lihat Mencipta Sistem Trading Sedia Ada dalam MQL5 Wizard.
Dalam artikel ini, kita akan membincangkan strategi yang berasaskan crossover harga dengan indikator Moving Average. Strategi ini dikenali sebagai "Isyarat Berdasarkan Crossover Harga dengan MA" (ketika mencipta EA secara automatik dalam MQL5 Wizard).
Isyarat perdagangan:
- Beli: crossover menaik harga dengan Moving Average.
- Jual: crossover menurun harga dengan Moving Average.
- Pemeriksaan peningkatan/penurunan MA digunakan untuk menapis isyarat palsu.
Strategi ini dilaksanakan dalam CSignalMA kelas dalam kelas Strategi Trading dalam Perpustakaan Standard MQL5 (terletak di MQL5\Include\Expert\Signal\SignalMA.mqh).

Rajah 1. Isyarat perdagangan berdasarkan crossover harga dengan Moving Average
Isyarat Perdagangan
Strategi perdagangan ini dilaksanakan dalam CSignalMA kelas, ia mempunyai beberapa kaedah terpelihara untuk memudahkan akses kepada petunjuk dan nilai harga:
double MA(int ind) // mengembalikan nilai moving average bar double Open(int ind) // mengembalikan harga pembukaan bar double Close(int ind) // mengembalikan harga penutupan bar double StateMA(int ind) // mengembalikan nilai positif jika purata meningkat dan negatif jika menurun double StateOpen(int ind) // mengembalikan perbezaan antara harga pembukaan dan moving average double StateClose(int ind) // mengembalikan perbezaan antara harga penutupan dan moving average
1. Membuka posisi panjang
Syarat untuk membuka posisi panjang (crossover harga dengan MA dan pemeriksaan peningkatan MA):
- Open(1)<MA(1): harga pembukaan lebih rendah daripada moving average;
- Close(1)>MA(1): harga penutupan lebih tinggi daripada moving average;
- MA(1)>MA(2): periksa peningkatan moving average (untuk menapis isyarat palsu).
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk membuka posisi panjang (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 panjang
Syarat untuk menutup posisi panjang (crossover harga dengan MA dan pemeriksaan penurunan MA):
- Open(1)>MA(1): harga pembukaan lebih tinggi daripada moving average;
- Close(1)<MA(1): harga penutupan lebih rendah daripada moving average;
- MA(1)<MA(2): periksa penurunan moving average (untuk menapis isyarat palsu).
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk menutup posisi panjang | //+------------------------------------------------------------------+ 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 pendek
Syarat untuk membuka posisi pendek adalah sama dengan syarat menutup posisi panjang.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk membuka posisi pendek (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 pendek
Syarat untuk menutup posisi pendek adalah sama dengan syarat membuka posisi panjang.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk menutup posisi pendek | //+------------------------------------------------------------------+ 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); } //+------------------------------------------------------------------+
Mencipta Sistem Trading Menggunakan MQL5 Wizard
Untuk mencipta robot perdagangan berdasarkan strategi ini, anda perlu memilih ciri isyarat sebagai "Isyarat Berdasarkan Crossover Harga dengan MA" dalam pilihan "Mencipta Sistem Trading Sedia Ada" di MQL5 Wizard:

Rajah 2. Pilih "Isyarat Berdasarkan Crossover Harga dengan MA" dalam MQL5 Wizard
Seterusnya, anda perlu menentukan algoritma trailing stop yang diperlukan dan sistem pengurusan wang dan risiko. Kod Sistem Trading akan dicipta secara automatik, anda boleh mengkompilasinya dan menguji dalam Strategy Tester dalam terminal klien MetaTrader 5.
Keputusan Ujian
Mari kita lihat backtesting Sistem Trading di data sejarah (EURUSD H1, tempoh khusus: 1.1.2010-05.01.2011, MA_period=12, MA_Shift=0).
Dalam penciptaan Sistem Trading ini, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Rajah 3. Keputusan backtesting sejarah Sistem Trading, berdasarkan crossover harga dengan MA
Lampiran: SignalMA.mqh dengan CSignalMA kelas (termasuk dalam Perpustakaan Standard MQL5) terletak di folder MQL5\Include\Expert\Signal. Fail crossoverma.mq5 mengandungi kod Sistem Trading, yang dicipta 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 Berdasarkan Corak Hammer/Hanging Man dan Stochastic
- MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Candlestick Dark Cloud Cover/Piercing Line + RSI
- MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak 'Dark Cloud Cover' dan 'Piercing Line' dengan CCI