Membuat Expert Advisor dengan MQL5 Wizard: Sinyal Trading Berdasarkan Dark Cloud Cover dan Piercing Line

Mike 2011.02.25 02:06 81 0 0
Lampiran

MQL5 Wizard adalah alat hebat yang memungkinkan kita untuk membuat Expert Advisor siap pakai berdasarkan kelas yang ada di perpustakaan standar yang disertakan dengan terminal klien. Dengan alat ini, kita dapat dengan cepat memeriksa ide trading kita. Yang perlu kita lakukan adalah membuat kelas sinyal trading kita sendiri. Struktur kelas ini dan contohnya dapat ditemukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

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

Salah satu buku yang bisa dijadikan referensi adalah "Strategi Trader Terbaik" (dalam bahasa Rusia), yang membahas berbagai strategi trading. Dalam artikel ini, kita akan fokus pada pola lilin pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI.

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

Mari kita bahas sinyal-sinyal yang berbasis pada pola pembalikan "Dark Cloud Cover/Piercing Line" yang dikonfirmasi oleh indikator Stochastic. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola lilin.


1. Pola Pembalikan "Dark Cloud Cover" dan "Piercing Line"

1.1. Dark Cloud Cover

Pola ini adalah pembalikan bearish yang terjadi di akhir tren naik. Pada hari pertama terbentuk sebuah lilin putih panjang dan pada hari kedua terjadi gap ke atas. Namun, hari kedua ditutup di bawah titik tengah hari pertama.

Fig. 1. Pola lilin 'Dark Cloud Cover'

Gambar 1. Pola 'Dark Cloud Cover'

Pengenalan pola "Dark Cloud Cover" diimplementasikan dalam metode CheckPatternDarkCloudCover() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola lilin "Dark Cloud Cover"          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (lilin putih panjang)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (ditutup dalam body sebelumnya)
      (MidOpenClose(2)>CloseAvg(1))  && // (tren naik)
      (Open(1)>High(2)))                // (dibuka pada high baru)
      return(true);
//---
   return(false);
  }

Pola lilin "Dark Cloud Cover" dapat diperiksa menggunakan metode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) dari kelas CCandlePattern.


1.2. Piercing Line

Pada hari kedua terjadi gap ke bawah yang memperpanjang tren turun. Namun, penutupan hari kedua berada di atas titik tengah body hari pertama. Ini menunjukkan kepada trader bahwa kemungkinan ada pembalikan yang sedang terjadi. Aksi harga ini lebih terlihat jelas pada grafik candlestick dibanding grafik batang. Semakin dalam penutupan pada hari kedua ke dalam body hari pertama, semakin besar kemungkinan sinyal pembalikan akan berhasil.

Gambar 2. Pola lilin 'Piercing Line'

Gambar 2. Pola "Piercing Line"

Pengenalan pola "Piercing Line" diimplementasikan dalam metode CheckPatternPiercingLine() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola lilin "Piercing Line"          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (lilin putih panjang)
      (Open(2)-Close(2)>AvgBody(1)) && // (lilin hitam panjang)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (ditutup di dalam body sebelumnya) 
      (MidOpenClose(2)<CloseAvg(2)) && // (tren turun)
      (Open(1)<Low(2)))                // (dibuka lebih rendah dari Low sebelumnya) 
      return(true);
//---
   return(false);
  }

Pola lilin "Piercing Line" dapat diperiksa menggunakan metode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) dari kelas CCandlePattern.

2. Sinyal Trading yang Dikonfirmasi oleh Indikator Stochastic

Sinyal trading 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 terbuka tergantung pada nilai indikator %D. Penutupan posisi dapat dilakukan dalam 2 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)

Gambar 3. Pola 'Dark Cloud Cover' yang Dikonfirmasi oleh Indikator Stochastic

Gambar 3. Pola 'Dark Cloud Cover' yang Dikonfirmasi oleh Indikator Stochastic


2.1. Membuka Posisi Long/Menutup Posisi Short

  1. Pembentukan pola "Piercing Line" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)<30 (nilai garis sinyal indikator Stochastic dari batang terakhir yang telah 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 (buka posisi long, hasil=80)                      |
//| 2) Keluar pasar (tutup posisi short, hasil=40)                   |
//+------------------------------------------------------------------+
int CDC_PL_Stoch::LongCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada batang berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi long
//--- pembentukan pola Piercing Line dan garis sinyal<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (StochSignal(1)<30))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- persilangan 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 "Dark Cloud Cover" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)>70 (nilai garis sinyal indikator Stochastic dari batang terakhir yang telah selesai harus lebih 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 (buka posisi short, hasil=80)                    |
//| 2) Keluar pasar (tutup posisi long, hasil=40)                   |
//+------------------------------------------------------------------+
int CDC_PL_Stoch::ShortCondition()
  {
   int result=0;
//--- idx dapat digunakan untuk menentukan Expert Advisor work mode
//--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick
//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada batang berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi short
//--- pembentukan pola Dark Cloud Cover dan garis sinyal>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (StochSignal(1)>70))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- persilangan 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 CDC_PL_Stoch tidak termasuk dalam kelas Perpustakaan Standar, untuk menggunakannya, kita perlu mengunduh file adc_pl_stoch.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file candlepatterns.mqh. Kita dapat 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 Dark Cloud Cover/Piercing Line yang Dikonfirmasi oleh Stochastic:

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 apapun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Gambar 9. Properti Manajemen Uang dari Expert Advisor

Gambar 9. Properti Manajemen Uang dari Expert Advisor

Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume trading 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 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 dengan:

//--- 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 kita untuk menentukan level ambang untuk membuka dan menutup posisi.

Dalam kode 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, 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, 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 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 hanya akan dilakukan ketika kondisi penutupan terpenuhi.


2.4. Hasil Backtesting Sejarah

Mari kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.02.02, PeriodK=9, PeriodD=5, PeriodSlow=20, MA_period=27).

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

Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Dark Cloud Cover/Piercing Line + Stochastic

Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Dark Cloud Cover/Piercing Line + Stochastic

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

Kode Expert Advisor yang dibuat oleh MQL5 Wizard dilampirkan di expert_adc_pl_stoch.mq5.

Daftar
Komentar 0