Strategi Trading Menggunakan Tiga Moving Average dengan MQL5 Wizard

Mike 2011.01.10 19:41 19 0 0
Lampiran

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

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
Nilai indikator dari bar ke-0 (belum selesai) dapat berubah, jadi penting untuk memeriksa kondisi trading menggunakan data bar yang sudah selesai (terbentuk).

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));
  }
Anda dapat memperbaiki penutupan posisi long: tidak perlu menunggu tren turun, Anda dapat menutup posisi long ketika datar, yang dapat ditentukan dengan kondisi berikut: FastEMA < MediumEMA > SlowEMA.


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

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

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.


Daftar
Komentar 0