Beranda Perdagangan Sistem Postingan

MQL5 Wizard: Membuat Expert Advisor Berdasarkan Pola Candlestick Hammer dan Hanging Man dengan CCI

Lampiran
315.zip (6.48 KB, Unduh 2 kali)

MQL5 Wizard adalah alat yang sangat berguna untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas pustaka standar yang disertakan bersama terminal klien. Dengan MQL5 Wizard, kamu bisa dengan cepat mengecek ide trading-mu hanya dengan membuat kelas sinyal trading milikmu sendiri. Struktur kelas ini dan contohnya dapat kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

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

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

Cara terbaik adalah dengan 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).

Dalam artikel ini, kita akan membahas sinyal yang didasarkan pada pola candlestick "Hammer/Hanging Man", yang dikonfirmasi oleh indikator CCI. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, dan ini adalah contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick.

1. Pola Candlestick "Hammer" dan "Hanging Man"

1.1. Hammer

"Hammer" adalah candlestick dengan tubuh kecil dan sumbu bawah yang panjang, terbentuk setelah pergerakan harga turun. Pola "Hammer" menunjukkan akhir dari tren bearish.

Warna tubuh candlestick tidak terlalu penting, namun hammer bullish menunjukkan potensi bullish yang lebih tinggi. Tubuh pola "Hammer" biasanya terbentuk dekat minimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek meningkatkan potensi pola pembalikan ini.

Fig. 1. Pola candlestick 'Hammer'

Fig. 1. Pola candlestick "Hammer"

Pengenalan pola "Hammer" diimplementasikan dalam metode CheckPatternHammer() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Hammer"                           |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- Hammer
   if((MidPoint(1)<CloseAvg(2))                                 && // down trend
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3
      (Close(1)<Close(2)) && (Open(1)<Open(2)))                    // body gap
      return(true);
//---
   return(false);
  }

Pola CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hammer".

1.2. Hanging Man

"Hanging Man" adalah candlestick dengan tubuh kecil dan sumbu bawah yang panjang, terbentuk setelah pergerakan harga naik. Pola "Hanging Man" menunjukkan akhir dari tren bullish.

Warna tubuh candlestick tidak terlalu penting, namun candle bearish menunjukkan potensi bearish yang lebih tinggi. Tubuh pola "Hanging Man" biasanya terbentuk dekat maksimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek meningkatkan potensi pola pembalikan ini.

Fig. 2. Pola candlestick 'Hanging Man'

Gambar 2. Pola candlestick "Hanging Man"

Pengenalan pola "Hanging Man" diimplementasikan dalam metode CheckPatternHangingMan() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Hanging Man"                        |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- Hanging Man
   if((MidPoint(1)>CloseAvg(2))                                && // up trend
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3
      (Close(1)>Close(2)) && (Open(1)>Open(2)))                  // body gap
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hanging Man".

2. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI

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

Penutupan posisi terbuka tergantung 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 pembalikan tidak dikonfirmasi (ketika CCI mencapai level berikut: -80 untuk posisi long dan 80 untuk posisi short)

Fig. 3. Pola 'Hammer' yang Dikonfirmasi oleh Indikator CCI

Gambar 3. Pola "Hammer", dikonfirmasi oleh indikator CCI

  • int CH_HM_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CH_HM_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 "Hammer" harus dikonfirmasi oleh indikator CCI: CCI(1)<-50 (nilai CCI dari bar yang telah diselesaikan terakhir harus kurang dari -50).

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

//+------------------------------------------------------------------+
//| 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 CH_HM_CCI::LongCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam kasus ini EA memeriksa kondisi trading pada setiap tick
//--- idx=1 - dalam kasus ini EA memeriksa kondisi trading hanya pada bar berita
   int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi long
//--- pembentukan pola Hammer dan CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (CCI(1)<-50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- persilangan 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;
//--- kembalikan hasil
   return(result);
  }

2.2. Membuka Posisi Short/Menutup Posisi Long

  1. Pembentukan pola "Hanging Man" harus dikonfirmasi oleh indikator CCI: CCI(1)>50 (nilai CCI dari bar yang telah diselesaikan terakhir 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 CH_HM_CCI::ShortCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam kasus ini EA memeriksa kondisi trading pada setiap tick
//--- idx=1 - dalam kasus ini EA memeriksa kondisi trading hanya pada bar berita
   int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi short
//--- pembentukan pola Hanging Man dan CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (CCI(1)>50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- persilangan 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;
//--- kembalikan hasil
   return(result);
  }

2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard

Kelas CH_HM_CCI tidak termasuk dalam kelas Pustaka Standar, jadi untuk menggunakannya, kamu perlu mengunduh file ach_hm_cci.mqh (lihat lampiran) dan menyimpannya di terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file candlepatterns.mqh. Kamu bisa 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 Expert Advisor

Fig. 5. Properti umum Expert Advisor

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

Fig. 6. Properti sinyal Expert Advisor

Fig. 6. Properti sinyal Expert Advisor

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

Menambahkan modul "Sinyal berdasarkan Hammer/Hanging Man yang dikonfirmasi oleh CCI":

Fig. 7. Properti sinyal Expert Advisor

Fig. 7. Properti sinyal Expert Advisor

Modul sinyal trading telah ditambahkan:

Fig. 8. Properti sinyal Expert Advisor

Fig. 8. Properti sinyal Expert Advisor

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

Fig. 9. Properti trailing Expert Advisor

Fig. 9. Properti trailing Expert Advisor

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

Fig. 10. Properti manajemen uang Expert Advisor

Fig. 10. Properti manajemen uang Expert Advisor

Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_AH_HM_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 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 metode LongCondition() dan ShortCondition() dari kelas sinyal trading kami 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() selalu mengembalikan 0.

Hasil suara dari modul utama juga digunakan dalam "rata-rata suara". Dalam kasus kami, kami memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta 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 diatur menjadi 0, yang berarti bahwa 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.16, PeriodCCI=25, MA_period=5).

Dalam pembuatan Expert Advisor, kami menggunakan volume tetap (Trading Volume Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Hasil pengujian Expert Advisor, berdasarkan Hammer/Hanging Man + CCI

Gambar 11. Hasil pengujian Expert Advisor, berdasarkan Hammer/Hanging Man + CCI


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

Kode Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam file expert_ah_hm_cci.mq5.

Postingan terkait

Komentar (0)