Menggunakan MQL5 Wizard untuk Sinyal Trading Berdasarkan Pola Candlestick dan CCI

Mike 2011.03.28 21:23 108 0 0
Lampiran

Apakah Anda ingin menciptakan Expert Advisor yang efektif menggunakan MQL5 Wizard? Dengan alat ini, Anda dapat dengan mudah membuat EA berdasarkan kelas dari Standard Library yang tersedia bersama terminal klien. Di sini, kita akan membahas cara cepat untuk memeriksa ide trading Anda dengan membuat kelas sinyal trading sendiri.

Inti dari proses ini adalah menciptakan kelas sinyal trading yang diturunkan dari CExpertSignal. Anda perlu menyesuaikan metode LongCondition() dan ShortCondition() dengan metode Anda sendiri.

Salah satu buku yang menarik untuk dibaca adalah "Strategi Para Trader Terbaik" (dalam bahasa Rusia). Di dalamnya terdapat banyak strategi trading, namun 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 mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator).

Mari kita bahas sinyal yang didasarkan pada pola "Morning Star/Evening Star" (Morning Doji Star/Evening Doji Star) yang dikonfirmasi oleh indikator CCI. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick.

1. Pola Candlestick Pembalikan: Morning Star dan Evening Star

1.1. Morning Star

Pola ini menunjukkan pembalikan dari tren turun dan terdiri dari tiga candlestick (Gambar 1). Setelah candlestick hitam yang panjang, terdapat candlestick (warna tidak penting) dengan body kecil yang terletak di luar body candlestick hitam. Body kecil ini menunjukkan bahwa kekuatan bullish dan bearish seimbang dan pasar siap untuk berubah arah.

Candlestick ketiga dari pola ini adalah candlestick bullish, body-nya tidak tumpang tindih dengan body candlestick kedua, dan harga penutupan berada di dalam body candlestick pertama (bearish). Candlestick yang dihasilkan dari pola ini juga ditunjukkan pada Gambar 1.

Jika candlestick kedua adalah doji, maka pola ini disebut "Morning Doji Star".

Gambar 1. Pola Morning Star dan Morning Doji Star

Gambar 1. Pola "Morning Star" dan "Morning Doji Star"

Identifikasi pola "Morning Star" dilakukan melalui metode CheckPatternMorningStar() dan CheckPatternMorningDoji() dari kelas CCandlePattern.

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Morning Star"                          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternMorningStar()
  {
//--- Morning Star
   if((Open(3)-Close(3)>AvgBody(1))
                          && // candlestick bearish, body-nya lebih besar dari rata-rata body
      (MathAbs(Close(2)-Open(2)<AvgBody(1)*0.5) && // candlestick kedua memiliki body kecil (kurang dari setengah rata-rata body)
      (Close(2)<Close(3))
                                    && // close dari candlestick kedua lebih rendah dari close candlestick pertama
      (Open(2)<Open(3))
                                         && // open dari candlestick kedua lebih rendah dari open candlestick pertama
      (Close(1)>MidOpenClose(3)))
                                         // close dari candlestick terakhir lebih tinggi dari tengah candlestick pertama
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+

Metode CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) dan CheckCandlestickPattern(CANDLE_PATTERN_MORNING_DOJI) digunakan untuk memeriksa pembentukan pola "Morning Star" dan "Morning Doji Star".

1.2. Evening Star

Pola ini menunjukkan pembalikan dari tren naik dan juga terdiri dari tiga candlestick (Gambar 2). Setelah candlestick putih panjang, terdapat candlestick (warna tidak penting) dengan body kecil yang terletak di luar body candlestick putih. Body kecil ini menandakan bahwa kekuatan bullish dan bearish seimbang, dan pasar siap untuk berbalik arah.

Candlestick ketiga dari pola ini adalah candlestick bearish, body-nya tidak tumpang tindih dengan body candlestick kedua, dan harga penutupan berada di dalam body candlestick pertama (bullish). Candlestick yang dihasilkan dari pola ini juga ditunjukkan pada Gambar 2.

Jika candlestick kedua adalah doji, maka pola ini disebut "Evening Doji Star".

Gambar 2. Pola Evening Star dan Evening Doji Star

Gambar 2. Pola "Evening Star" dan "Evening Doji Star"

Berikut adalah metode untuk mengidentifikasi pola "Evening Star" dan "Evening Doji Star":

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Evening Star"                        |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternEveningStar()
  {
//--- Evening Star
   if((Close(3)-Open(3)>AvgBody(1))
                          && // candlestick bullish dengan body yang lebih tinggi dari rata-rata body
      (MathAbs(Close(2)-Open(2)<AvgBody(1)*0.5) && // candlestick kedua memiliki body kecil (kurang dari setengah rata-rata)
      (Close(2)>Close(3))
                                         && // close dari candlestick kedua lebih tinggi dari close candlestick pertama
      (Open(2)>Open(3))
                                         && // open dari candlestick kedua lebih tinggi dari open candlestick pertama
      (Close(1)<MidOpenClose(3)))
                                         // close dari candlestick terakhir lebih rendah dari tengah candlestick pertama
      return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+

Metode CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) dan CheckCandlestickPattern(CANDLE_PATTERN_EVENING_DOJI) digunakan untuk memeriksa pembentukan pola "Evening Star" dan "Evening Doji Star".

2. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI

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

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

  1. Jika garis CCI telah mencapai level kritis yang berlawanan (80 untuk posisi long dan -80 untuk posisi short)
  2. Jika sinyal pembalikan tidak terkonfirmasi (ketika CCI mencapai level berikutnya: -80 untuk posisi long dan 80 untuk posisi short)

Gambar 3. Pola Evening Star yang Dikonfirmasi oleh Indikator CCI

Gambar 3. Pola "Evening Star" yang Dikonfirmasi oleh Indikator CCI

  • int CMS_ES_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CMS_ES_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 "Morning Star" harus dikonfirmasi oleh indeks CCI: CCI(1)<-50 (nilai CCI dari bar yang telah selesai terakhir harus kurang dari -50).

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

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar                |
//| 1) Masuk pasar (membuka posisi long, hasil=80)                   |
//| 2) Keluar dari pasar (menutup posisi short, hasil=40)            |
//+------------------------------------------------------------------+
int CMS_ES_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 Morning Star dan CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_MORNING_STAR) && (CCI(1)<-50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- crossover garis sinyal level jenuh beli/jenuh jual (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 "Evening Star" harus dikonfirmasi oleh indeks CCI: CCI(1)>50 (nilai CCI dari bar yang telah selesai terakhir harus lebih dari 50).

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

//+------------------------------------------------------------------+
//| Memeriksa kondisi untuk masuk dan keluar dari pasar                |
//| 1) Masuk pasar (membuka posisi short, hasil=80)                  |
//| 2) Keluar dari pasar (menutup posisi long, hasil=40)             |
//+------------------------------------------------------------------+
int CMS_ES_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 Evening Star dan CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_EVENING_STAR) && (CCI(1)>50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- crossover garis sinyal level jenuh beli/jenuh jual (ke bawah -80, ke atas 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 CMS_ES_CCI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, Anda perlu mengunduh file acms_es_cci.mqh (lihat lampiran) dan simpan di folder_data_terminal_klien\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file candlepatterns.mqh. Anda dapat menggunakannya di MQL5 Wizard setelah me-restart 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 hal ini, kita hanya menggunakan satu modul sinyal trading.

Menambahkan modul "Sinyal Berdasarkan Morning/Evening Stars 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

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 terletak di Expert_AMS_ES_CCI.mq5, 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 Anda untuk menentukan level ambang untuk membuka dan menutup posisi.

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

  • Posisi terbuka: 80;
  • Posisi tertutup: 40.

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai kontainer, 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, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan 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 dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi akan dilakukan hanya ketika kondisi penutupan menjadi benar.


2.4. Hasil Backtesting Sejarah

Kita akan membahas backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2009.01.01-2011.03.16, PeriodCCI=25, 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 Morning/Evening Stars + CCI

Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Morning/Evening Stars + CCI


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

Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir di expert_ams_es_cci.mq5.

Daftar
Komentar 0