Membuat Expert Advisor Menggunakan MQL5 Wizard: Sinyal Perdagangan dari Bullish dan Bearish Engulfing dengan Stochastic

Mike 2011.03.10 19:54 103 0 0
Lampiran

MQL5 Wizard adalah alat yang sangat berguna bagi para trader yang ingin membuat Expert Advisor (EA) siap pakai berdasarkan kelas dari standar library. Dengan alat ini, kamu bisa dengan cepat memeriksa ide trading kamu, cukup dengan membuat kelas sinyal trading sendiri. Struktur kelas ini dan contoh penggunaannya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

Secara umum, ide dasarnya adalah kelas sinyal trading yang diturunkan dari CExpertSignal. Selanjutnya, kamu perlu menimpa metode LongCondition() dan ShortCondition() dengan metode milikmu sendiri.

Ada sebuah buku berjudul "Strategi Para Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Kali ini, 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 mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup tulis kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator).

Kita akan membahas sinyal yang berbasis pada pola candlestick pembalikan "Bullish Engulfing/Bearish Engulfing" 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 Engulfing" dan "Bearish Engulfing"

1.1. Bullish Engulfing

Pola "Bullish Engulfing" terbentuk di dalam tren menurun ketika candlestick hitam kecil diikuti oleh candlestick putih besar yang sepenuhnya menutupi ("menggenggam") candlestick dari hari sebelumnya. Bayangan (ekor) dari candlestick kecil tersebut pendek, sehingga tubuh candlestick besar dapat menutupi seluruh candlestick dari hari sebelumnya.

Fig. 1. Pola candlestick Bullish Engulfing

Fig. 1. Pola candlestick Bullish Engulfing

Pengenalan pola "Bullish Engulfing" diimplementasikan dalam metode CheckPatternBullishEngulfing() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bullish Engulfing" candlestick  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing
   if((Open(2)>Close(2))            &&  // candlestick sebelumnya bearish
      (Close(1)-Open(1)>AvgBody(1))  &&  // tubuh dari candlestick bullish lebih tinggi dari rata-rata 
      (Close(1)>Open(2))            &&  // harga penutupan dari candlestick bullish lebih tinggi dari harga pembukaan candlestick bearish
      (MidOpenClose(2)<CloseAvg(2))  &&  // tren menurun
      (Open(1)<Close(2)))                // harga pembukaan dari candlestick bullish lebih rendah dari harga penutupan candlestick bearish
      return(true);
//---
   return(false);
  }

Pola candlestick "Bullish Engulfing" diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) dari kelas CCandlePattern.


1.2. Bearish Engulfing

Pola "Bearish Engulfing" terbentuk di dalam tren naik ketika candlestick putih kecil diikuti oleh candlestick hitam besar yang sepenuhnya menutupi ("menggenggam") candlestick dari hari sebelumnya. Bayangan (ekor) dari candlestick kecil tersebut pendek, sehingga tubuh candlestick besar dapat menutupi seluruh candlestick dari hari sebelumnya.

Fig. 2. Pola candlestick Bearish Engulfing

Fig. 2. Pola candlestick Bearish Engulfing

Pengenalan pola "Bearish Engulfing" diimplementasikan dalam metode CheckPatternBearishEngulfing() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bearish Engulfing" candlestick  |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing
   if((Open(2)<Close(2))            &&  // candlestick sebelumnya bullish
      (Open(1)-Close(1)>AvgBody(1)) &&  // tubuh dari candlestick bearish lebih tinggi dari rata-rata
      (Close(1)<Open(2))            &&  // harga penutupan dari candlestick bearish lebih rendah dari harga pembukaan candlestick bullish
      (MidOpenClose(2)>CloseAvg(2)) &&  // tren naik
      (Open(1)>Close(2)))               // harga pembukaan dari candlestick bearish lebih tinggi dari harga penutupan candlestick bullish
      return(true);
//---
   return(false);
  }

Pola candlestick "Bearish Engulfing" diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) dari kelas CCandlePattern.


2. Sinyal Perdagangan yang Dikonfirmasi oleh Indikator Stochastic

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

Penutupan posisi yang dibuka bergantung pada nilai indikator %D. Hal ini dapat dilakukan dalam dua kasus:

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

Fig. 3. Pola Bullish Engulfing yang Dikonfirmasi oleh Indikator Stochastic

Fig. 3. Pola Bullish Engulfing yang Dikonfirmasi oleh Indikator Stochastic

Memeriksa kondisi perdagangan untuk masuk dan keluar diimplementasikan dalam dua metode:

  • int CBE_BE_Stoch::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CBE_BE_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 Engulfing" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)<30 (nilai dari garis sinyal indikator Stochastic pada bar terakhir yang selesai harus kurang dari 30).

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

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar |
//| 1) Masuk pasar (membuka posisi long, hasil=80) |
//| 2) Keluar pasar (menutup posisi short, hasil=40) |
//+------------------------------------------------------------------+
int CBE_BE_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 Engulfing dan garis sinyal<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (StochSignal(1)<30))
     result=80;
   //--- memeriksa kondisi untuk menutup posisi short
   //--- persilangan garis sinyal dari level jenuh beli/jenuh jual (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 Engulfing" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)>70 (nilai dari garis sinyal indikator Stochastic pada bar terakhir yang selesai harus lebih besar dari 70).

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

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar |
//| 1) Masuk pasar (membuka posisi short, hasil=80) |
//| 2) Keluar pasar (menutup posisi long, hasil=40) |
//+------------------------------------------------------------------+
int CBE_BE_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 Engulfing dan garis sinyal>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (StochSignal(1)>70))
     result=80;
   //--- memeriksa kondisi untuk menutup posisi long
   //--- persilangan garis sinyal dari level jenuh beli/jenuh jual (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 CBE_BE_Stoch tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kamu perlu mengunduh file acbe_be_stoch.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file candlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor.

Untuk membuat Expert Advisor, luncurkan 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 menggunakan satu modul sinyal trading.

Menambahkan modul "Sinyal berdasarkan Bullish Engulfing/Bearish Engulfing yang dikonfirmasi oleh Stochastic":

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

Kamu bisa memilih properti trailing apapun, 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_ABE_BE_Stoch.mq5, dan 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 menetapkan nilai tetap dari ambang:

  • Membuka posisi: 80;
  • Menutup 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, yang 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 perhitungan rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhatikan hal ini saat mengatur nilai ambang. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2.

Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi akan dilakukan hanya ketika kondisi penutupan terpenuhi.


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 Bullish/Bearish Engulfing + Stochastic

Fig. 11. Hasil Pengujian dari Expert Advisor Berdasarkan Bullish/Bearish Engulfing + 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 file expert_abe_be_stoch.mq5.

Daftar
Komentar 0