MQL5 Wizard: Membuat Expert Advisor dengan Pola Candlestick 3 Black Crows/3 White Soldiers dan RSI

Mike 2011.02.18 22:08 95 0 0
Lampiran

MQL5 Wizard adalah alat yang sangat membantu untuk membuat Expert Advisor (EA) yang siap pakai berdasarkan kelas-kelas di Standard Library yang terintegrasi dalam terminal klien. Dengan MQL5 Wizard, kamu bisa dengan cepat mengecek ide trading-mu, 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 diturunkan dari CExpertSignal. Setelah itu, kamu perlu mengoverride metode LongCondition() dan ShortCondition() dengan metode yang kamu buat sendiri.

Sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) membahas berbagai strategi trading, tetapi kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh indikator Stochastic, CCI, MFI, dan RSI.

Sebaiknya, buatlah kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup tulis kelas baru yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator).

Di sini kita akan membahas sinyal berdasarkan pola candlestick pembalikan "3 Black Crows/3 White Soldiers" yang dikonfirmasi oleh indikator Relative Strength Index (RSI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick.


1. Pola Candlestick "3 Black Crows" dan "3 White Soldiers"

1.1. 3 Black Crows

Pola candlestick bearish ini digunakan untuk memprediksi pembalikan dari tren naik saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih rendah dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya.

Fig. 1. Pola candlestick '3 Black Crows'

Fig. 1. Pola candlestick '3 Black Crows'

Pengenalan pola "3 Black Crows" ini diimplementasikan dalam metode CheckPatternThreeBlackCrows dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "3 Black Crows"          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Black Crows 
   if((Open(3)-Close(3)>AvgBody(1)) && // (candlestick hitam panjang)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) && 
      (MidPoint(2)<MidPoint(3))     && // (midpoints lebih rendah)
      (MidPoint(1)<MidPoint(2)))       
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 Black Crows".


1.2. Pola 3 White Soldiers

Pola candlestick bullish ini digunakan untuk memprediksi pembalikan dari tren turun saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih tinggi dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya.

Pola ini sah selama candlestick pada hari kedua dibuka di bagian atas rentang hari pertama. Di akhir hari kedua, harus ditutup mendekati puncaknya, meninggalkan bayangan atas yang sangat kecil atau tidak ada sama sekali. Pola yang sama kemudian diulang pada hari ketiga.

Fig. 2. Pola candlestick '3 White Soldiers'

Fig. 2. Pola candlestick '3 White Soldiers'

Berikut adalah metode untuk mengenali pola "3 White Soldiers":

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "3 White Soldiers"       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 White Soldiers
   if((Close(3)-Open(3)>AvgBody(1)) && // candlestick putih panjang
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // midpoints lebih tinggi
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 White Soldiers".


2. Sinyal Trading yang Dikonfirmasi oleh Indikator RSI

Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus lebih rendah/lebih tinggi dari level kritis (40 untuk posisi long dan 60 untuk posisi short).

Penutupan posisi yang dibuka tergantung pada nilai RSI. Ini dapat dilakukan dalam 2 kasus:

  1. jika RSI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short)
  2. jika sinyal pembalikan tidak terkonfirmasi (ketika RSI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short)

Fig. 3. Pola '3 Black Crows', dikonfirmasi oleh indikator Stochastic

Fig. 3. Pola '3 Black Crows', dikonfirmasi oleh indikator Stochastic


  • int CML_RSI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CML_RSI::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 "3 White Soldiers" harus dikonfirmasi oleh indikator RSI: RSI(1)<40 (nilai RSI dari bar yang telah selesai harus kurang dari 40).

  2. Posisi short harus ditutup jika indikator RSI telah melintasi ke atas level kritis 70 atau 30.

//+------------------------------------------------------------------+
//| 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 CBC_WS_RSI::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 bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi long
//--- pembentukan pola 3 White Soldiers dan RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (RSI(1)<40))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- crossover garis sinyal level overbought/oversold (naik 30, naik 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }

2.2. Membuka Posisi Short/ Menutup Posisi Long

  1. Pembentukan pola "3 Black Crows" harus dikonfirmasi oleh indikator RSI: RSI(1)>60 (nilai RSI dari bar yang telah selesai harus lebih besar dari 60).

  2. Posisi long harus ditutup jika indikator RSI telah melintasi ke bawah level kritis 70 atau 30.

//+------------------------------------------------------------------+
//| 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 CBC_WS_RSI::ShortCondition()
  {
   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 bar berita
  int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi short
//--- pembentukan pola 3 Black Crows dan RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (RSI(1)>60))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- crossover garis sinyal level overbought/oversold (ke bawah 70, ke bawah 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard

Kelas CML_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kamu perlu mengunduh file acml_rsi.mqh (lihat lampiran) dan menyimpannya di folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file candlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah me-restart 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 kita, kita hanya menggunakan satu modul sinyal trading.

Menambahkan modul Sinyal Berdasarkan 3 Black Crows/3 White Soldiers:

Fig. 7. Properti sinyal Expert Advisor

Fig. 7. Properti sinyal Expert Advisor

Modul sinyal trading ditambahkan:

Fig. 8. Properti sinyal Expert Advisor

Fig. 8. Properti sinyal Expert Advisor

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

Fig. 9. Properti manajemen uang Expert Advisor

Fig. 9. Properti manajemen uang 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, terletak di Expert_ABC_WS_RSI.mq5, akan disimpan di folder 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;    // Tingkat harga untuk mengeksekusi transaksi
input double         Signal_StopLevel       =50.0;   // Tingkat Stop Loss (dalam poin)
input double         Signal_TakeLevel       =50.0    // Tingkat 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    // Tingkat harga untuk mengeksekusi transaksi
input double         Signal_StopLevel       =0.0    // Tingkat Stop Loss (dalam poin)
input double         Signal_TakeLevel       =0.0    // Tingkat Take Profit (dalam poin)

Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi.

Di 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 kontainer, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() dari modul ini 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 memperhitungkan fakta ini ketika menetapkan 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 hanya akan dilakukan ketika kondisi penutupan benar.


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, PeriodRSI=37, MA_period=51).

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 Expert Advisor berbasis 3 Black Crows/3 White Soldiers + RSI

Fig. 11. Hasil pengujian Expert Advisor berbasis 3 Black Crows/3 White Soldiers + RSI


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 expert_abc_ws_rsi.mq5.


Daftar
Komentar 0