MQL5 Wizard: Membuat Expert Advisor dengan Sinyal Trading Bullish/Bearish Meeting Lines dan CCI

Mike 2011.03.24 03:05 75 0 0
Lampiran

Selamat datang di dunia MQL5! Kali ini kita akan membahas MQL5 Wizard, alat yang memungkinkan kita untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas dari Standard Library yang disertakan dalam terminal klien. Dengan ini, kita dapat dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading sendiri. Struktur kelas ini beserta contohnya bisa ditemukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading.

Ide dasarnya adalah menjadikan kelas sinyal trading sebagai turunan dari CExpertSignal. Selanjutnya, kita perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode kita sendiri.

Dalam buku "Strategi Trader Terbaik" (dalam bahasa Rusia), banyak strategi trading yang dibahas. Fokus kita kali ini adalah pola candlestick pembalikan, yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah 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 lihat sinyal yang didasarkan pada pola candlestick pembalikan "Bullish/Bearish Meeting Lines", yang dikonfirmasi oleh indikator CCI (Commodity Channel Index). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick.


1. Pola Candlestick "Meeting Lines" Pembalikan

1.1. Bullish Meeting Lines

Pola ini terdiri dari dua candlestick (bearish dan bullish) dengan harga penutupan yang sama (atau sangat mendekati). Badan kedua candlestick harus lebih besar dari panjang badan rata-rata.

Pola "Bullish Meeting Lines" menunjukkan pembalikan dari tren menurun.

Fig. 1. Pola

Fig. 1. Pola "Bullish Meeting Lines"

Pengakuan pola "Bullish Meeting Lines" diimplementasikan dalam metode CheckPatternBullishMeetingLines() dari kelas CCandlePattern:

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "Bullish Meeting Lines"    |            
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
//--- Bullish Meeting Lines
   if((Open(2)-Close(2)>AvgBody(1))              && // panjang hitam
     ((Close(1)-Open(1))>AvgBody(1))             && // panjang putih
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))   // doji close
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola candlestick "Bullish Meeting Lines".


1.2. Bearish Meeting Lines

Pola ini terdiri dari dua candlestick (bullish dan bearish) dengan harga penutupan yang sama (atau sangat mendekati). Badan kedua candlestick harus lebih besar dari panjang badan rata-rata.

Pola "Bearish Meeting Lines" menunjukkan pembalikan dari tren naik.

Fig. 2. Pola

Fig. 2. Pola "Bearish Meeting Lines"

Pengakuan pola "Bearish Meeting Lines" diimplementasikan dalam metode CheckPatternBearishMeetingLines() dari kelas CCandlePattern:

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "Bearish Meeting Lines"    |//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishMeetingLines()
  {
//--- Bearish Meeting Lines
   if((Close(2)-Open(2)>AvgBody(1))             && // panjang putih
     ((Open(1)-Close(1)>AvgBody(1))             && // panjang hitam
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))  // doji close
      return(true);
//---
   return(false);
  }

Metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola candlestick "Bearish Meeting Lines".


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 yang telah dibuka tergantung pada nilai CCI. Ini dapat dilakukan dalam 2 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 berikut: -80 untuk posisi long dan 80 untuk posisi short)

Fig. 3. Pola

Fig. 3. Pola "Bullish Meeting Lines" yang dikonfirmasi oleh indikator CCI

  • int CML_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CML_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 Meeting Lines" harus dikonfirmasi oleh indikator CCI: CCI(1)<-50 (nilai CCI dari bar terakhir yang telah ditutup 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 (membuka posisi long, hasil=80)                  |
//| 2) Keluar pasar (menutup posisi short, hasil=40)                 |
//+------------------------------------------------------------------+
int CML_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 di bar berita
   int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi long
//--- pembentukan pola Bullish Meeting Lines dan CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (CCI(1)<-50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi short
//--- crossover garis sinyal 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 "Bearish Meeting Lines" harus dikonfirmasi oleh indikator CCI: CCI(1)>50 (nilai dari indikator CCI pada bar terakhir yang telah ditutup harus lebih besar 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 (membuka posisi short, hasil=80)                   |
//| 2) Keluar pasar (menutup posisi long, hasil=40)                  |
//+------------------------------------------------------------------+
int CML_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 di bar berita
   int idx   =StartIndex();
//--- memeriksa kondisi untuk membuka posisi short
//--- pembentukan pola Bearish Meeting Lines dan CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (CCI(1)>50))
     result=80;
//--- memeriksa kondisi untuk menutup posisi long
//--- crossover garis sinyal level overbought/oversold (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 CML_CCI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu mengunduh file acml_cci.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan file candlepatterns.mqh. Setelah itu, Anda dapat menggunakannya di MQL5 Wizard setelah me-restart MetaEditor.

Untuk membuat Expert Advisor, luncurkan 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 Bullish/Bearish Meeting Lines yang Dikonfirmasi oleh CCI:

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

Anda dapat memilih properti trailing apa 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 "Finish", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_AML_CCI.mq5, 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 kita telah menentukan nilai tetap untuk ambang:

  • Membuka posisi: 80;
  • Menutup posisi: 40.

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi dengan 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() dari modul ini selalu mengembalikan 0.

Hasil suara dari modul utama juga digunakan dalam perhitungan rata-rata suara. Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat menetapkan nilai ambang. 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, artinya penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi.


2.4. Hasil Backtesting Sejarah

Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3).

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, berdasarkan Bullish/Bearish Meeting Lines + CCI

Fig. 11. Hasil pengujian Expert Advisor, berdasarkan Bullish/Bearish Meeting Lines + CCI


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

Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard dilampirkan dalam file expert_aml_cci.mq5.


Daftar
Komentar 0