Laman utama Perdagangan Sistem Siaran

Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI

Lampiran
307.zip (6.49 KB, Muat turun 2 kali)

MQL5 Wizard merupakan alat yang hebat untuk mencipta Expert Advisor sedia ada berdasarkan kelas Standard Library yang disertakan bersama terminal klien. Dengan MQL5 Wizard, anda dapat menguji idea dagangan anda dengan cepat, hanya perlu mencipta kelas isyarat dagangan anda sendiri. Struktur kelas ini dan contoh penggunaannya boleh dijumpai dalam artikel MQL5 Wizard: Cara Mencipta Modul Isyarat Dagangan.

Idea asasnya adalah: kelas isyarat dagangan diturunkan daripada CExpertSignal. Kemudian, anda perlu mengubahsuai kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.

Di dalam buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia), terdapat pelbagai strategi dagangan yang dibincangkan, tetapi kita akan fokus kepada pola candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah mencipta kelas berasingan yang diturunkan daripada CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengesahkan isyarat dagangan yang dijana oleh pola candlestick, cukup dengan menulis kelas yang diturunkan daripada CCandlePattern dan menambah ciri yang diperlukan (contohnya, pengesahan oleh osilator).

Di sini kita akan melihat isyarat yang berdasarkan pola candlestick "Bullish Engulfing/Bearish Engulfing" yang disahkan oleh indikator Market Facilitation Index (MFI). Modul isyarat dagangan ini adalah berdasarkan kelas CCandlePattern, yang merupakan contoh mudah untuk mencipta isyarat dagangan menggunakan pola candlestick.

1. Pola Candlestick "Bullish Engulfing" dan "Bearish Engulfing"

1.1. Bullish Engulfing

Pola "Bullish Engulfing" terbentuk dalam trend menurun apabila candlestick hitam kecil diikuti oleh candlestick putih besar yang sepenuhnya menutup ("engulf") candlestick hari sebelumnya. Bayangan (ekor) candlestick kecil adalah pendek, membolehkan badan candlestick besar menutupi keseluruhan candlestick hari sebelumnya.

Fig. 1. Pola candlestick Bullish Engulfing

Fig. 1. Pola candlestick Bullish Engulfing

Pengenalan pola "Bullish Engulfing" ini dilaksanakan dalam kaedah CheckPatternBullishEngulfing() kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "Bullish Engulfing"       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing
   if((Open(2)>Close(2))
             &&  // candlestick sebelumnya adalah bearish
      (Close(1)-Open(1)>AvgBody(1))  &&  // badan candlestick bullish lebih tinggi daripada purata badan
      (Close(1)>Open(2))             &&  // harga tutup candlestick bullish lebih tinggi daripada harga buka candlestick bearish
      (MidOpenClose(2)<CloseAvg(2))  &&  // trend menurun
      (Open(1)<Close(2)))                // harga buka candlestick bullish lebih rendah daripada harga tutup candlestick bearish
      return(true);
//---
   return(false);
  }

Panggilan kaedah CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) dalam kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bullish Engulfing".


1.2. Bearish Engulfing

Pola "Bearish Engulfing" terbentuk dalam trend menaik apabila candlestick putih kecil diikuti oleh candlestick hitam besar yang sepenuhnya menutup ("engulf") candlestick hari sebelumnya. Bayangan (ekor) candlestick kecil adalah pendek, membolehkan badan candlestick besar menutupi keseluruhan candlestick hari sebelumnya.

Fig. 2. Pola candlestick Bearish Engulfing

Fig. 2. Pola candlestick Bearish Engulfing


Pengenalan pola "Bearish Engulfing" ini dilaksanakan dalam kaedah CheckPatternBearishEngulfing() kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan pola candlestick "Bearish Engulfing"       |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing
   if((Open(2)<Close(2))
             &&  // candlestick sebelumnya adalah bullish
      (Open(1)-Close(1)>AvgBody(1)) &&  // badan candlestick lebih tinggi daripada purata badan
      (Close(1)<Open(2))            &&  // harga tutup candlestick bearish lebih rendah daripada harga buka candlestick bullish
      (MidOpenClose(2)>CloseAvg(2)) &&  // trend menaik
      (Open(1)>Close(2)))               // harga buka candlestick bearish lebih tinggi daripada harga tutup candlestick bullish
      return(true);
//---
   return(false);
  }

Panggilan kaedah CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) dalam kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bearish Engulfing".


2. Isyarat Dagangan, Disahkan oleh Indikator MFI

Isyarat dagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh indikator MFI. Nilai indikator MFI mesti lebih rendah daripada 40 (untuk posisi panjang) atau lebih tinggi daripada 60 (untuk posisi pendek).

Penutupan posisi terbuka bergantung kepada nilai indikator MFI. Ia boleh dilakukan dalam 2 keadaan:

  1. jika MFI telah mencapai paras kritikal bertentangan (70 untuk posisi panjang dan 30 untuk posisi pendek)
  2. jika isyarat terbalik tidak disahkan (apabila indikator MFI mencapai paras berikut: 30 untuk posisi panjang dan 70 untuk posisi pendek)

Fig. 3. Pola Bullish Engulfing, Disahkan oleh Indikator MFI

Fig. 3. Pola Bullish Engulfing, Disahkan oleh Indikator MFI


  • int CBE_BE_MFI::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
  • int CBE_BE_MFI::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 Engulfing" mesti disahkan oleh indikator MFI: MFI(1)<40 (nilai indikator MFI bagi bar yang telah selesai mesti kurang daripada 40).

  2. Posisi pendek mesti ditutup jika indikator MFI telah melintasi ke atas paras kritikal (70 atau 30).

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran                |
//| 1) Masuk pasaran (buka posisi panjang, hasil=80)                 |
//| 2) Keluar pasaran (tutup posisi pendek, hasil=40)                |
//+------------------------------------------------------------------+
int CBE_BE_MFI::LongCondition()
  {
   int result=0;
//--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor
//--- idx=0 - dalam kes ini EA memeriksa syarat dagangan pada setiap tick
//--- idx=1 - dalam kes ini EA memeriksa syarat dagangan hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa syarat untuk membuka posisi panjang
//--- pembentukan pola Bullish Engulfing dan MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (MFI(1)<40))
     result=80;
//--- memeriksa syarat untuk menutup posisi pendek
//--- persilangan garis isyarat paras terlebih beli/terlebih jual (ke atas 30, ke atas 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.2. Membuka Posisi Pendek/Menutup Posisi Panjang

  1. Pembentukan pola "Bearish Engulfing" mesti disahkan oleh indikator MFI : MFI(1)>60 (nilai indikator MFI bagi bar yang telah selesai mesti lebih daripada 60).

  2. Posisi panjang mesti ditutup jika indikator MFI telah melintasi ke atas paras kritikal (70 atau 30).

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran                |
//| 1) Masuk pasaran (buka posisi pendek, hasil=80)                  |
//| 2) Keluar pasaran (tutup posisi panjang, hasil=40)               |
//+------------------------------------------------------------------+
int CBE_BE_MFI::ShortCondition()
  {
   int result=0;
//--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor
//--- idx=0 - dalam kes ini EA memeriksa syarat dagangan pada setiap tick
//--- idx=1 - dalam kes ini EA memeriksa syarat dagangan hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa syarat untuk membuka posisi pendek
//--- pembentukan pola Bearish Engulfing dan MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (MFI(1)>60))
     result=80;
//--- memeriksa syarat untuk menutup posisi panjang
//--- persilangan garis isyarat paras terlebih beli/terlebih jual (ke atas 70, ke bawah 30)
   if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Kelas CBE_BE_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, anda perlu memuat turun fail abe_be_mfi.mqh (lihat lampiran) dan menyimpannya dalam folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Begitu juga dengan fail acandlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas memulakan 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

Mari kita tentukan nama Expert Advisor:

Fig. 5. Ciri umum Expert Advisor

Fig. 5. Ciri umum Expert Advisor

Setelah itu kita perlu memilih modul isyarat dagangan yang digunakan.

Fig. 6. Ciri isyarat Expert Advisor

Fig. 6. Ciri isyarat Expert Advisor

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

Menambah modul "Isyarat Berdasarkan Bullish Engulfing/Bearish Engulfing yang disahkan oleh MFI":

Fig. 7. Ciri isyarat Expert Advisor

Fig. 7. Ciri isyarat Expert Advisor

Modul isyarat dagangan telah 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 volum dagangan tetap":

Fig. 10. Ciri pengurusan wang Expert Advisor

Fig. 10. Ciri pengurusan wang Expert Advisor

Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dihasilkan, terletak dalam Expert_ABE_BE_MFI.mq5, yang akan disimpan dalam terminal_data_folder\MQL5\Experts\.

Parameter input default bagi Expert Advisor yang dihasilkan:

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

Perlu diganti kepada:

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

Parameter input Signal_ThresholdOpen/Signal_ThresholdClose membolehkan untuk menetapkan tahap ambang bagi pembukaan dan penutupan posisi.

Dalam kod kaedah LongCondition() dan ShortCondition() kelas isyarat dagangan, kita telah menetapkan nilai tetap untuk ambang:

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

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "undi" dari modul isyarat dagangan. Undi dari modul utama (sebagai kontainer, ia 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 dagangan, jadi kita perlu mengambil kira fakta ini semasa menetapkan nilai ambang. Oleh kerana fakta ini, ThresholdOpen dan ThresholdClose mesti ditetapkan sebagai 40=(0+80)/2 dan 20=(0+40)/2.

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


2.4. Keputusan Uji Kembali Sejarah

Mari kita lihat uji kembali Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=5).

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

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Bullish Engulfing/Bearish Engulfing + MFI

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Bullish Engulfing/Bearish Engulfing + MFI


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

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


Siaran berkaitan

Komen (0)