Beranda Perdagangan Sistem Postingan

MQL5 Wizard: Ciptakan Sinya Trading Berdasarkan Bullish Harami/Bearish Harami dan CCI

Lampiran
311.zip (6.48 KB, Unduh 0 kali)

MQL5 Wizard adalah alat yang memungkinkan kita untuk menciptakan Expert Advisor (EA) siap pakai berdasarkan kelas-kelas dari Standard Library yang disediakan bersama terminal klien. Dengan MQL5 Wizard, kita bisa dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading sendiri. Struktur kelas ini beserta contohnya dapat ditemukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

Secara umum, ide dasarnya adalah: kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kita perlu mengoverride metode LongCondition() dan ShortCondition() dengan metode kita sendiri.

Ada sebuah buku berjudul "Strategi Para Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Fokus kita kali ini adalah pola candlestick pembalikan, yang dikonfirmasi oleh indikator Stochastic, CCI, MFI, dan RSI.

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

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

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

1.1. Bullish Harami

Pola Bullish Harami terbentuk dalam tren menurun, ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren menurun mungkin sedang berbalik, dan menandakan waktu yang baik untuk masuk posisi long. Candlestick kedua dibuka dengan gap ke atas. Semakin kecil candlestick kedua (putih), semakin besar kemungkinan terjadinya pembalikan.

Pola Pembalikan Bullish Harami

Gambar 1. Pola Candlestick "Bullish Harami"

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

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

Pola candlestick "Bullish Harami" dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern.


1.2. Bearish Harami

Pola Bearish Harami terbentuk dalam tren naik, ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren naik mungkin sedang berbalik, dan menandakan waktu yang baik untuk masuk posisi short. Candlestick kedua dibuka dengan gap ke bawah. Semakin kecil candlestick kedua (hitam), semakin besar kemungkinan terjadinya pembalikan.

Pola Pembalikan Bearish Harami

Gambar 2. Pola Candlestick "Bearish Harami"

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

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

Pola candlestick "Bearish Harami" dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern.


2. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI

Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator CCI. Nilai dari CCI harus lebih besar/kecil dari level kritis (-50 untuk posisi long dan 50 untuk posisi short).

Penutupan posisi yang dibuka bergantung pada nilai CCI. Ini dapat dilakukan dalam 2 kasus:

  • jika garis CCI telah mencapai level kritis yang berlawanan (80 untuk posisi long dan -80 untuk posisi short)
  • jika sinyal revers tidak terkonfirmasi (ketika CCI mencapai level berikut: -80 untuk posisi long dan 80 untuk posisi short)

Gambar 3. Pola

Gambar 3. Pola "Bullish Harami", dikonfirmasi oleh indikator CCI

  • int CBH_BH_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CBH_BH_CCI::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 CCI: CCI(1)<-50 (nilai CCI dari bar terakhir yang selesai harus kurang dari -50).

  2. Posisi short harus ditutup jika indikator CCI telah melintasi ke atas level kritis -80 atau melintasi ke bawah level kritis 80.

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar                |
//| 1) Masuk pasar (buka posisi long, hasil=80)                     |
//| 2) Keluar pasar (tutup posisi short, hasil=40)                 |
//+------------------------------------------------------------------+
int CBH_BH_CCI::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 CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- crossover garis sinyal dari level overbought/oversold (ke bawah -80, ke bawah -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(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 CCI: CCI(1)>50 (nilai dari indikator CCI dari bar terakhir yang selesai harus lebih dari 50).

  2. Posisi long harus ditutup jika indikator CCI telah melintasi ke bawah level -80 atau 80.

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar                |
//| 1) Masuk pasar (buka posisi short, hasil=80)                    |
//| 2) Keluar pasar (tutup posisi long, hasil=40)                   |
//+------------------------------------------------------------------+
int CBH_BH_CCI::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 CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- crossover garis sinyal dari level overbought/oversold (ke bawah -80, ke bawah 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard

Kelas CBH_BH_CCI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kita perlu mengunduh file acbh_bh_cci.mqh (lihat lampiran) dan menyimpannya di folder terminal_data_client\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file candlepatterns.mqh. Kita bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor.

Untuk membuat Expert Advisor, jalankan MQL5 Wizard:

Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard

Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard

Mari kita tentukan nama Expert Advisor:

Gambar 5. Properti Umum dari Expert Advisor

Gambar 5. Properti Umum dari Expert Advisor

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

Gambar 6. Properti Sinyal dari Expert Advisor

Gambar 6. Properti Sinyal dari Expert Advisor

Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading.

Menambahkan modul Sinyal Berdasarkan Bullish Harami/Bearish Harami yang Dikonfirmasi oleh CCI:

Gambar 7. Properti Sinyal dari Expert Advisor

Gambar 7. Properti Sinyal dari Expert Advisor

Modul sinyal trading telah ditambahkan:

Gambar 8. Properti Sinyal dari Expert Advisor

Gambar 8. Properti Sinyal dari Expert Advisor

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

Gambar 9. Properti Trailing dari Expert Advisor

Gambar 9. Properti Trailing dari Expert Advisor

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

Gambar 10. Properti Manajemen Uang dari Expert Advisor

Gambar 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_CCI.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 deal
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 deal
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() kelas sinyal trading, kita telah menetapkan nilai tetap untuk ambang:

  • Posisi Buka: 80;
  • Posisi Tutup: 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() selalu mengembalikan 0.

Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, terdapat: modul utama + 1 modul sinyal trading, sehingga 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 parameter input Signal_StopLevel dan Signal_TakeLevel diset ke 0, artinya penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi.


2.4. Hasil Backtesting Sejarah

Kita akan mempertimbangkan backtesting Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5).

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

Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Bullish Harami/Bearish Harami + CCI

Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Bullish Harami/Bearish Harami + CCI


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

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


Postingan terkait

Komentar (0)