Beranda Perdagangan Sistem Postingan

MQL5 Wizard: Sinyal Trading dengan Crossover Harga dan Indikator Moving Average

Lampiran
248.zip (3.15 KB, Unduh 0 kali)

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

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
Nilai harga dan indikator dari bar ke-0 (yang belum selesai) dapat berubah, jadi perlu melakukan pengecekan kondisi trading menggunakan data bar yang sudah selesai.

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

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).

Crossover dengan Moving Average

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

Komentar (0)