MQL5 Wizard: Membuat EA Berdasarkan Pola Bullish/Bearish Harami dan Stochastic

Mike 2011.03.16 23:33 98 0 0
Lampiran

Halo, Sobat Trader! Di kesempatan kali ini, kita akan membahas tentang MQL5 Wizard, sebuah alat yang memungkinkan kita untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas-kelas dari Standard Library yang disertakan dengan terminal klien. Dengan ini, kita bisa dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading sendiri. Struktur kelas ini dan contoh penggunaannya bisa kita temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

Konsep dasarnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kita perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode kita sendiri.

Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk konfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup tulis kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator).

Di sini, kita akan membahas sinyal berdasarkan pola candlestick pembalikan "Bullish Harami/Bearish Harami" yang dikonfirmasi oleh indikator Stochastic. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick.


1. Pola Candlestick Pembalikan "Bullish Harami" dan "Bearish Harami"

1.1. Bullish Harami

Pola Bullish Harami terbentuk dalam tren turun ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak di dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren menurun mungkin akan berbalik, dan memberikan sinyal bahwa ini adalah waktu yang baik untuk masuk posisi long. Candlestick kedua dibuka dengan gap naik.

Semakin kecil candlestick kedua (putih), semakin besar kemungkinan terjadinya pembalikan.

Fig. 1. Pola candlestick Bullish Harami

Fig. 1. Pola candlestick Bullish Harami

Pengakuan pola "Bullish Harami" diimplementasikan dalam metode CheckPatternBullishHarami() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bullish Harami" candlestick         |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // bar terakhir yang selesai bullish (hari putih)
     ((Open(2)-Close(2)>AvgBody(1))  && // candlestick sebelumnya bearish, tubuhnya lebih besar dari rata-rata (hitam panjang)
     ((Close(1)<Open(2))              && // harga penutupan candlestick bullish lebih rendah dari harga pembukaan candlestick bearish 
      (Open(1)>Close(2)))             && // harga pembukaan candlestick bullish lebih tinggi dari harga penutupan candlestick bearish
      (MidPoint(2)<CloseAvg(2)))         // tren turun
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bullish Harami".


1.2. Bearish Harami

Pola Bearish Harami terbentuk dalam tren naik ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak di dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren naik mungkin akan berbalik, dan memberikan sinyal bahwa ini adalah waktu yang baik untuk masuk posisi short. Candlestick kedua dibuka dengan gap turun.

Semakin kecil candlestick kedua (hitam), semakin besar kemungkinan terjadinya pembalikan.

Fig. 2. Pola candlestick Bearish Harami

Fig. 2. Pola candlestick Bearish Harami

Pengakuan pola "Bearish Harami" diimplementasikan dalam metode CheckPatternBearishHarami() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bearish Harami" candlestick       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // bar terakhir yang selesai bearish (hari hitam)
     ((Close(2)-Open(2)>AvgBody(1))  && // candlestick sebelumnya bullish, tubuhnya lebih besar dari rata-rata (putih panjang)
     ((Close(1)>Open(2))              && // harga penutupan candlestick bearish lebih tinggi dari harga pembukaan candlestick bullish 
      (Open(1)<Close(2)))             && // harga pembukaan candlestick bearish lebih rendah dari harga penutupan candlestick bullish
      (MidPoint(2)>CloseAvg(2)))         // tren naik
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bearish Harami".


2. Sinyal Trading yang Dikonfirmasi oleh Indikator Stochastic

Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator Stochastic. Garis sinyal %D harus lebih besar/kecil dari level kritis yang sesuai (30 atau 70).

Penutupan posisi yang dibuka tergantung pada nilai indikator %D. Ini dapat dilakukan dalam 2 kasus:

  1. jika garis %D telah mencapai level kritis yang berlawanan (80 untuk posisi long dan 20 untuk posisi short)
  2. jika sinyal pembalikan tidak terkonfirmasi (ketika garis %D mencapai level berikutnya: 20 untuk posisi long dan 80 untuk posisi short)

Fig. 3. Pola Bearish Harami, dikonfirmasi oleh Stochastic

Gambar 3. Pola Bearish Harami, dikonfirmasi oleh indikator Stochastic

Pemeriksaan kondisi trading untuk entry dan exit diimplementasikan dalam dua metode:

  • int CBH_BH_Stoch::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CBH_BH_Stoch::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).

2.1. Membuka posisi long/Menutup posisi short

  1. Pembentukan pola "Bullish Harami" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)<30 (nilai garis sinyal indikator Stochastic dari bar terakhir yang selesai harus kurang dari 30).

  2. Posisi short harus ditutup jika garis sinyal indikator Stochastic telah melintasi ke atas level 20 atau 80.

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk entry dan exit dari pasar               |
//| 1) Market entry (membuka posisi long, hasil=80)                |
//| 2) Market exit (menutup posisi short, hasil=40)               |
//+------------------------------------------------------------------+
int CBH_BH_Stoch::LongCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi long
//--- pembentukan pola Bullish Harami dan garis sinyal<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- crossover garis sinyal level overbought/oversold (ke bawah 20, ke atas 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- mengembalikan hasil
   return(result);
  }

2.2. Membuka posisi short/Menutup posisi long

  1. Pembentukan pola "Bearish Harami" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)>70 (nilai garis sinyal indikator Stochastic dari bar terakhir yang selesai harus lebih dari 70).

  2. Posisi long harus ditutup jika garis sinyal indikator Stochastic telah melintasi ke bawah level 80 atau 20.

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk entry dan exit dari pasar               |
//| 1) Market entry (membuka posisi short, hasil=80)               |
//| 2) Market exit (menutup posisi long, hasil=40)                |
//+------------------------------------------------------------------+
int CBH_BH_Stoch::ShortCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi short
//--- pembentukan pola Bearish Harami dan garis sinyal>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- crossover garis sinyal level overbought/oversold (ke bawah 80, ke atas 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- mengembalikan hasil
   return(result);
  }

2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard

Kelas CBH_BH_Stoch tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu mengunduh file acbh_bh_stoch.mqh (lihat lampiran) dan simpan di client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan file candlepatterns.mqh. Anda dapat menggunakannya di MQL5 Wizard setelah merestart MetaEditor.

Untuk membuat Expert Advisor, jalankan MQL5 Wizard:

Fig. 4. Membuat Expert Advisor menggunakan MQL5 Wizard

Fig. 4. Membuat Expert Advisor menggunakan MQL5 Wizard

Mari kita tentukan nama Expert Advisor:

Fig. 5. Properti umum dari Expert Advisor

Fig. 5. Properti umum dari Expert Advisor

Setelah itu, kita perlu memilih modul sinyal trading yang digunakan.

Fig. 6. Properti sinyal dari Expert Advisor

Fig. 6. Properti sinyal dari Expert Advisor

Dalam kasus kita, hanya satu modul sinyal trading yang digunakan.

Menambahkan modul "Sinyal Berdasarkan Bullish Harami/Bearish Harami Dikonfirmasi oleh Stochastic" dari sinyal trading:

Fig. 7. Properti sinyal dari Expert Advisor

Fig. 7. Properti sinyal dari Expert Advisor

Modul sinyal trading telah ditambahkan:

Fig. 8. Properti sinyal dari Expert Advisor

Fig. 8. Properti sinyal dari Expert Advisor

Anda dapat memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Fig. 9. Properti trailing dari Expert Advisor

Fig. 9. Properti trailing dari Expert Advisor

Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap":

Fig. 10. Properti manajemen uang dari Expert Advisor

Fig. 10. Properti manajemen uang dari Expert Advisor

Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABH_BH_Stoch.mq5, yang akan disimpan di terminal_data_folder\MQL5\Experts\.

Parameter input default dari Expert Advisor yang dihasilkan:

//--- input untuk sinyal utama
input int            Signal_ThresholdOpen   =10;     // Nilai ambang sinyal untuk membuka [0...100]
input int            Signal_ThresholdClose  =10     // Nilai ambang sinyal untuk menutup [0...100]
input double         Signal_PriceLevel      =0.0    // Level harga untuk mengeksekusi transaksi
input double         Signal_StopLevel       =50.0   // Level Stop Loss (dalam poin)
input double         Signal_TakeLevel       =50.0    // Level Take Profit (dalam poin)

harus diganti menjadi:

//--- input untuk sinyal utama
input int            Signal_ThresholdOpen   =40;     // Nilai ambang sinyal untuk membuka [0...100]
input int            Signal_ThresholdClose  =20     // Nilai ambang sinyal untuk menutup [0...100]
input double         Signal_PriceLevel      =0.0    // Level harga untuk mengeksekusi transaksi
input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin)
input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin)

Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi.

Dalam kode dari metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap dari ambang:

  • Buka posisi: 80;
  • Tutup posisi: 40.

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() nya selalu mengembalikan 0.

Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, ada: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2.

Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, artinya penutupan posisi hanya akan dilakukan ketika kondisi penutupan menjadi benar.


2.4. Hasil Backtesting Sejarah

Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

Dalam pembuatan Expert Advisor kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Hasil pengujian dari Expert Advisor, berdasarkan

Fig. 11. Hasil pengujian dari Expert Advisor, berdasarkan "Bullish/Bearish Harami + Stochastic"


Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5.

Kode dari Expert Advisor, yang dibuat oleh MQL5 Wizard terlampir dalam expert_abh_bh_stoch.mq5.


Daftar
Komentar 0