Laman utama Perdagangan Sistem Siaran

MQL5 Wizard: Cipta EA Berdasarkan Pola Candlestick Bullish/Bearish Harami + Stochastic

Lampiran
310.zip (6.59 KB, Muat turun 2 kali)

Mungkin anda pernah dengar tentang MQL5 Wizard. Ia adalah alat yang sangat berguna untuk mencipta Expert Advisor (EA) siap guna berdasarkan kelas-kelas dalam Standard Library yang disertakan dengan terminal klien. Dengan MQL5 Wizard, anda boleh memeriksa idea perdagangan dengan cepat, hanya dengan mencipta kelas isyarat perdagangan anda sendiri. Struktur kelas ini dan contoh boleh ditemui dalam artikel MQL5 Wizard: Cara Mencipta Modul Isyarat Perdagangan.

Idea asasnya adalah seperti berikut: kelas isyarat perdagangan diturunkan dari CExpertSignal. Kemudian, anda perlu mengubahsuai kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.

Dalam buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia), terdapat banyak strategi perdagangan yang dibincangkan. Kali ini, kita akan fokus pada pola candlestick pembalikan, yang disahkan oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah dengan mencipta kelas berasingan, yang diturunkan dari CExpertSignal, untuk memeriksa pembentukan pola candlestick. Untuk mengesahkan isyarat perdagangan yang dijana oleh pola candlestick, anda hanya perlu menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan oleh osilator).

Dalam artikel ini, kita akan membincangkan isyarat yang berdasarkan pola pembalikan "Bullish Harami/Bearish Harami", yang disahkan oleh Stochastic. Modul isyarat perdagangan ini berasaskan kelas CCandlePattern, yang merupakan contoh mudah untuk digunakan dalam penciptaan isyarat perdagangan dengan pola candlestick.

1. Pola Candlestick Bullish Harami dan Bearish Harami

1.1. Bullish Harami

Pola Bullish Harami terbentuk dalam trend menurun apabila candlestick besar diikuti oleh candlestick kecil yang badannya berada dalam julat vertikal badan candlestick yang lebih besar. Pola ini menunjukkan bahawa trend menurun mungkin akan berbalik, dan menandakan bahawa ini adalah masa yang baik untuk masuk ke posisi panjang. Candlestick kedua dibuka dengan jurang ke atas.

Semakin kecil candlestick kedua (putih), semakin besar kemungkinan pembalikan akan berlaku.

Fig. 1. Pola Candlestick Bullish Harami

Fig. 1. Pola Candlestick Bullish Harami

Pengenalan pola "Bullish Harami" dilaksanakan dalam kaedah CheckPatternBullishHarami() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bullish Harami" candlestick       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // bar terakhir yang selesai adalah bullish (hari putih)
     ((Open(2)-Close(2)>AvgBody(1))  && // candlestick sebelumnya adalah bearish, badannya lebih besar dari purata (hitam panjang)
     ((Close(1)<Open(2))              && // harga tutup candlestick bullish lebih rendah dari harga buka candlestick bearish
      (Open(1)>Close(2)))             && // harga buka candlestick bullish lebih tinggi dari harga tutup candlestick bearish
      (MidPoint(2)<CloseAvg(2)))         // trend menurun
      return(true);
//---
   return(false);
  }

Pemeriksaan pola candlestick (CANDLE_PATTERN_BULLISH_HARAMI) dilakukan melalui kaedah CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern.


1.2. Bearish Harami

Pola Bearish Harami terbentuk dalam trend menaik apabila candlestick besar diikuti oleh candlestick kecil yang badannya berada dalam julat vertikal badan candlestick yang lebih besar. Pola ini menunjukkan bahawa trend menaik mungkin akan berbalik, dan menandakan bahawa ini adalah masa yang baik untuk masuk ke posisi pendek. Candlestick kedua dibuka dengan jurang ke bawah.

Semakin kecil candlestick kedua (hitam), semakin besar kemungkinan pembalikan akan berlaku.

Fig. 2. Pola Candlestick Bearish Harami

Fig. 2. Pola Candlestick Bearish Harami

Pengenalan pola "Bearish Harami" dilaksanakan dalam kaedah CheckPatternBearishHarami() dari kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bearish Harami" candlestick       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // bar terakhir yang selesai adalah bearish (hari hitam)
     ((Close(2)-Open(2)>AvgBody(1))  && // candlestick sebelumnya adalah bullish, badannya lebih besar dari purata (putih panjang)
     ((Close(1)>Open(2))              && // harga tutup candlestick bearish lebih tinggi dari harga buka candlestick bullish
     (Open(1)<Close(2)))             && // harga buka candlestick bearish lebih rendah dari harga tutup candlestick bullish
      (MidPoint(2)>CloseAvg(2)))         // trend menaik
      return(true);
//---
   return(false);
  }

Pemeriksaan pola candlestick (CANDLE_PATTERN_BEARISH_HARAMI) dilakukan melalui kaedah CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern.


2. Isyarat Perdagangan yang Disahkan oleh Indikator Stochastic

Isyarat perdagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh osilator Stochastic. Garis isyarat %D mesti lebih besar/kecil daripada tahap kritikal yang bersesuaian (30 atau 70).

Penutupan posisi terbuka bergantung kepada nilai indikator %D. Ia boleh dilakukan dalam 2 kes:

  1. jika garis %D telah mencapai tahap kritikal bertentangan (80 untuk posisi panjang dan 20 untuk posisi pendek)
  2. jika isyarat pembalikan tidak disahkan (apabila garis %D mencapai tahap berikut: 20 untuk posisi panjang dan 80 untuk posisi pendek)

Fig. 3. Pola Bearish Harami disahkan oleh indikator stochastic

Fig. 3. Pola Bearish Harami disahkan oleh indikator Stochastic

Pemeriksaan syarat untuk masuk dan keluar dilaksanakan melalui dua kaedah:

  • int CBH_BH_Stoch::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
  • int CBH_BH_Stoch::ShortCondition() - memeriksa syarat untuk membuka posisi pendek (mengembalikan 80) dan menutup posisi panjang (mengembalikan 40).

2.1. Membuka Posisi Panjang / Menutup Posisi Pendek

  1. Pembentukan pola "Bullish Harami" mesti disahkan oleh Indikator Stochastic: StochSignal(1)<30 (nilai garis isyarat indikator Stochastic pada bar terakhir yang selesai mesti kurang daripada 30).

  2. Posisi pendek mesti ditutup jika garis isyarat indikator Stochastic telah melepasi tahap 20 atau 80 ke atas.

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran              |
//| 1) Masuk ke pasaran (buka posisi panjang, hasil=80)             |
//| 2) Keluar dari pasaran (tutup posisi pendek, hasil=40)          |
//+------------------------------------------------------------------+
int CBH_BH_Stoch::LongCondition()
  {
   int result=0;
//--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor
//--- idx=0 - dalam kes ini EA memeriksa syarat perdagangan pada setiap tick
//--- idx=1 - dalam kes ini EA memeriksa syarat perdagangan hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa syarat untuk membuka posisi panjang
//--- pembentukan pola Bullish Harami dan garis isyarat<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30))
     result=80;
//--- memeriksa syarat untuk menutup posisi pendek
//--- crossover garis isyarat pada tahap overbought/oversold (turun 20, naik 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- mengembalikan hasil
   return(result);
  }

2.2. Membuka Posisi Pendek / Menutup Posisi Panjang

  1. Pembentukan pola "Bearish Harami" mesti disahkan oleh Indikator Stochastic: StochSignal(1)>70 (nilai garis isyarat indikator Stochastic pada bar terakhir yang selesai mesti lebih daripada 70).

  2. Posisi panjang mesti ditutup jika garis isyarat indikator Stochastic telah melepasi tahap 80 atau 20 ke bawah.

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran               |
//| 1) Masuk ke pasaran (buka posisi pendek, hasil=80)              |
//| 2) Keluar dari pasaran (tutup posisi panjang, hasil=40)         |
//+------------------------------------------------------------------+
int CBH_BH_Stoch::ShortCondition()
  {
   int result=0;
//--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor
//--- idx=0 - dalam kes ini EA memeriksa syarat perdagangan pada setiap tick
//--- idx=1 - dalam kes ini EA memeriksa syarat perdagangan hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa syarat untuk membuka posisi pendek
//--- pembentukan pola Bearish Harami dan garis isyarat>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70))
     result=80;
//--- memeriksa syarat untuk menutup posisi panjang
//--- crossover garis isyarat pada tahap overbought/oversold (turun 80, naik 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- mengembalikan hasil
   return(result);
  }

2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Kelas CBH_BH_Stoch tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu memuat turun fail acbh_bh_stoch.mqh (lihat lampiran) dan simpan ke dalam folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas menutup dan membuka semula MetaEditor.

Untuk mencipta Expert Advisor, jalankan MQL5 Wizard:

Fig. 4. Mencipta Expert Advisor menggunakan MQL5 Wizard

Fig. 4. Mencipta Expert Advisor menggunakan MQL5 Wizard

Kita perlu menetapkan nama Expert Advisor:

Fig. 5. Ciri umum Expert Advisor

Fig. 5. Ciri umum Expert Advisor

Setelah itu, kita perlu memilih modul isyarat perdagangan yang akan digunakan.

Fig. 6. Ciri isyarat Expert Advisor

Fig. 6. Ciri isyarat Expert Advisor

Dalam kes kita, kita hanya menggunakan satu modul isyarat perdagangan.

Menambah modul "Isyarat berdasarkan Bullish Harami/Bearish Harami disahkan oleh Stochastic" isyarat perdagangan:

Fig. 7. Ciri isyarat Expert Advisor

Fig. 7. Ciri isyarat Expert Advisor

Modul isyarat perdagangan ditambah:

Fig. 8. Ciri isyarat Expert Advisor

Fig. 8. Ciri isyarat Expert Advisor

Anda boleh memilih sebarang ciri trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Fig. 9. Ciri trailing Expert Advisor

Fig. 9. Ciri trailing Expert Advisor

Mengenai ciri pengurusan wang, kita akan menggunakan "Perdagangan dengan jumlah perdagangan tetap":

Fig. 10. Ciri pengurusan wang Expert Advisor

Fig. 10. Ciri pengurusan wang Expert Advisor

Dengan menekan butang "Selesai", kita akan mendapatkan kod EA yang dijana, yang terletak di Expert_ABH_BH_Stoch.mq5, ia akan disimpan dalam terminal_data_folder\MQL5\Experts\.

Parameter input lalai untuk EA yang dijana:

//--- input untuk isyarat utama
input int            Signal_ThresholdOpen   =10;     // Nilai threshold isyarat untuk membuka [0...100]
input int            Signal_ThresholdClose  =10;     // Nilai threshold isyarat untuk menutup [0...100]
input double         Signal_PriceLevel      =0.0;    // Tahap harga untuk melaksanakan transaksi
input double         Signal_StopLevel       =50.0;   // Tahap Stop Loss (dalam poin)
input double         Signal_TakeLevel       =50.0     // Tahap Take Profit (dalam poin)

harus diganti kepada:

//--- input untuk isyarat utama
input int            Signal_ThresholdOpen   =40;     // Nilai threshold isyarat untuk membuka [0...100]
input int            Signal_ThresholdClose  =20;     // Nilai threshold isyarat untuk menutup [0...100]
input double         Signal_PriceLevel      =0.0;    // Tahap harga untuk melaksanakan transaksi
input double         Signal_StopLevel       =0.0    // Tahap Stop Loss (dalam poin)
input double         Signal_TakeLevel       =0.0    // Tahap Take Profit (dalam poin)

Parameter input Signal_ThresholdOpen/Signal_ThresholdClose membolehkan anda menetapkan tahap threshold untuk membuka dan menutup posisi.

Dalam kod kaedah LongCondition() dan ShortCondition() dari kelas isyarat perdagangan, kita telah menetapkan nilai tetap untuk threshold:

  • Buka posisi: 80;
  • Tutup posisi: 40.

Expert Advisor yang dijana oleh MQL5 Wizard akan membuka dan menutup posisi menggunakan "undi" dari modul isyarat perdagangan. Undi dari modul utama (sebagai kontainer, terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition()nya sentiasa mengembalikan 0.

Keputusan undi dari modul utama juga digunakan dalam purata "undi". Dalam kes kita, kita mempunyai: modul utama + 1 modul isyarat perdagangan, jadi kita perlu mengambil kira fakta ini semasa menetapkan nilai threshold. Oleh kerana fakta ini, ThresholdOpen dan ThresholdClose mesti ditetapkan kepada 40=(0+80)/2 dan 20=(0+40)/2.

Nilai parameter input Signal_StopLevel dan Signal_TakeLevel ditetapkan kepada 0, yang bermaksud bahawa penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.


2.4. Keputusan Uji Kembali Sejarah

Mari kita lihat uji kembali Expert Advisor pada data sejarah (EURUSD H1, tempoh pengujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

Dalam penciptaan Expert Advisor ini, kita menggunakan volume tetap (Perdagangan Volume Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Keputusan uji Expert Advisor berdasarkan Bullish/Bearish Harami + Stochastic

Fig. 11. Keputusan uji Expert Advisor berdasarkan Bullish/Bearish Harami + Stochastic


Set parameter input terbaik boleh ditemui menggunakan Strategy Tester dalam terminal klien MetaTrader 5.

Kod Expert Advisor yang dicipta oleh MQL5 Wizard dilampirkan dalam expert_abh_bh_stoch.mq5.

Siaran berkaitan

Komen (0)