Laman utama Perdagangan Sistem Siaran

MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Candlestick Dark Cloud Cover/Piercing Line + RSI

Lampiran
300.zip (6.5 KB, Muat turun 2 kali)

MQL5 Wizard membolehkan anda untuk mencipta Expert Advisor (EA) siap pakai berdasarkan kelas Standard Library yang disediakan bersama terminal klien. Ia memudahkan anda untuk memeriksa idea dagangan anda dengan cepat, hanya dengan mencipta kelas isyarat dagangan anda sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Membuat Modul Isyarat Dagangan.

Idea asasnya adalah seperti berikut: kelas isyarat dagangan diturunkan dari CExpertSignal. Seterusnya, anda perlu menimpa metode LongCondition() dan ShortCondition() dengan metode anda sendiri.

Terdapat satu buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang membincangkan banyak strategi dagangan. Dalam artikel ini, kita akan fokus pada pola candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah mencipta kelas terpisah yang diturunkan dari CExpertSignal untuk menyemak pembentukan pola candlestick. Bagi pengesahan isyarat dagangan yang dihasilkan oleh pola candlestick, anda hanya perlu menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan oleh osilator).

Di sini, kita akan mempertimbangkan isyarat yang berdasarkan pada pola candlestick pembalikan "Dark Cloud Cover/Piercing Line" yang disahkan oleh indikator RSI. Modul isyarat dagangan ini berdasarkan pada kelas CCandlePattern, dan ia adalah contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan pola candlestick.


1. Pola Candlestick "Dark Cloud Cover" dan "Piercing Line"

1.1. Dark Cloud Cover

Ini adalah pembalikan candlestick bearish yang berlaku di akhir uptrend. Candlestick putih panjang terbentuk pada hari pertama dan jurang naik muncul pada hari kedua. Walau bagaimanapun, hari kedua ditutup di bawah titik tengah hari pertama.

Fig. 1. Pola candlestick 'Dark Cloud Cover'

Gambar 1. Pola candlestick 'Dark Cloud Cover'

Pengesanan pola "Dark Cloud Cover" dilaksanakan dalam metode CheckPatternDarkCloudCover() dari kelas CCandlePattern:

//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Dark Cloud Cover" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() { //--- Dark Cloud Cover  if((Close(2)-Open(2)>AvgBody(1))  && // (putih panjang) (Close(1)<Close(2))            && //  (Close(1)>Open(2))             && // (tutup dalam badan sebelumnya) (MidOpenClose(2)>CloseAvg(1))  && // (uptrend) (Open(1)>High(2)))                // (buka di tahap tertinggi baru) return(true); //--- return(false); } 

Metode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Dark Cloud Cover".


1.2. Piercing Line

Jurang turun pada hari kedua meneruskan trend menurun. Namun, penutupan hari kedua adalah di atas titik tengah badan hari pertama. Ini memberi petunjuk kepada penjual bahawa mungkin satu dasar sedang terbentuk. Tindakan harga ini tidak begitu jelas menggunakan carta bar berbanding dengan carta candlestick. Semakin banyak penembusan penutupan pada hari kedua ke dalam badan hari pertama, semakin besar kemungkinan isyarat pembalikan akan berjaya.

Fig. 2. Pola candlestick 'Piercing Line'

Fig. 2. Pola candlestick 'Piercing Line'

Pengesanan pola "Piercing Line" dilaksanakan dalam metode CheckPatternPiercingLine() dari kelas CCandlePattern:

//+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Piercing Line" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() { //--- Piercing Line if((Close(1)-Open(1)>AvgBody(1)) && // (putih panjang) (Open(2)-Close(2)>AvgBody(1)) && // (hitam panjang) (Close(1)>Close(2))            && //  (Close(1)<Open(2))            && // (tutup dalam badan sebelumnya)  (MidOpenClose(2)<CloseAvg(2)) && // (downtrend) (Open(1)<Low(2)))                // (buka lebih rendah dari Low sebelumnya)  return(true); //--- return(false); } 

Metode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Piercing Line".


2. Isyarat Dagangan, Disahkan oleh Indikator RSI

Isyarat dagangan untuk membuka posisi long atau short mesti disahkan oleh indikator RSI. Nilai RSI mesti lebih rendah/lebih tinggi dari tahap kritikal (40 untuk posisi long dan 60 untuk posisi short).

Penutupan posisi yang dibuka bergantung pada nilai RSI. Ia boleh dilakukan dalam 2 kes:

  1. jika RSI telah mencapai tahap kritikal yang bertentangan (70 untuk posisi long dan 30 untuk posisi short)
  2. jika isyarat pembalikan tidak disahkan (apabila RSI mencapai tahap berikut: 30 untuk posisi long dan 70 untuk posisi short)

Fig. 3. Pola 'Dark Cloud Cover', disahkan oleh indikator RSI

Gambar 3. Pola 'Dark Cloud Cover', disahkan oleh indikator RSI


  • int CDC_PL_RSI::LongCondition() - memeriksa syarat untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CDC_PL_RSI::ShortCondition() - memeriksa syarat untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40).

2.1. Membuka posisi long/Menutup posisi short

  1. Pembentukan pola "Piercing Line" mesti disahkan oleh indikator RSI: RSI(1)<40 (nilai RSI bar yang telah selesai mesti kurang dari 40).

  2. Posisi short mesti ditutup jika indikator RSI telah melintasi tahap kritikal 70 atau 30 ke arah atas.

//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi long, hasil=80) | //| 2) Keluar pasaran (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::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 kondisi dagangan hanya pada bar berita int idx   =StartIndex(); //--- memeriksa syarat untuk membuka posisi long //--- pembentukan pola Piercing Line dan RSI<30 if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (RSI(1)<40)) result=80; //--- memeriksa syarat untuk menutup posisi short //--- persilangan garis isyarat tahap overbought/oversold (ke atas 30, ke atas 70) if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70))) result=40; //--- kembalikan hasil return(result); } 

2.2. Membuka posisi short/Menutup posisi long

  1. Pembentukan pola "Dark Cloud Cover" mesti disahkan oleh indikator RSI: RSI(1)>60 (nilai RSI bar yang telah selesai mesti lebih besar dari 60).

  2. Posisi long mesti ditutup jika indikator RSI telah melintasi tahap kritikal 70 atau 30 ke arah bawah.

//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi short, hasil=80) | //| 2) Keluar pasaran (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::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 kondisi dagangan hanya pada bar berita int idx   =StartIndex(); //--- memeriksa syarat untuk membuka posisi short //--- pembentukan pola Dark Cloud Cover dan RSI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1)>60)) result=80; //--- memeriksa syarat untuk menutup posisi long //--- persilangan garis isyarat tahap overbought/oversold (ke bawah 70, ke bawah 30) if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30))) result=40; //--- kembalikan hasil return(result); } 


2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Kelas CDC_PL_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, anda perlu memuat turun fail adc_pl_rsi.mqh (lihat lampiran) dan simpan ke dalam client_terminal_data older\MQL5\\Include\Expert\Signal\MySignals. Hal yang sama juga perlu dilakukan dengan fail acandlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas memulakan semula MetaEditor.

Untuk mencipta Expert Advisor, luncurkan MQL5 Wizard:

Fig. 4. Mencipta Expert Advisor menggunakan MQL5 Wizard

Gambar 4. Mencipta Expert Advisor menggunakan MQL5 Wizard

Mari kita tentukan nama Expert Advisor:

Fig. 5. Ciri umum Expert Advisor

Gambar 5. Ciri umum Expert Advisor

Selepas itu, kita perlu memilih modul isyarat dagangan yang digunakan.

Fig. 6. Ciri isyarat Expert Advisor

Gambar 6. Ciri isyarat Expert Advisor

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

Menambah modul Isyarat berdasarkan Dark Cloud Cover/Piercing Line disahkan oleh RSI:

Fig. 7. Ciri isyarat Expert Advisor

Gambar 7. Ciri isyarat Expert Advisor

Modul isyarat dagangan telah ditambah:

Fig. 8. Ciri isyarat Expert Advisor

Gambar 8. Ciri isyarat Expert Advisor

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

Fig. 9. Ciri pengurusan wang Expert Advisor

Gambar 9. Ciri pengurusan wang Expert Advisor

Mengenai ciri pengurusan wang, kita akan menggunakan "Dagangan dengan volum dagangan tetap":

Fig. 10. Ciri pengurusan wang Expert Advisor

Gambar 10. Ciri pengurusan wang Expert Advisor

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

Parameter input lalai untuk Expert Advisor yang dihasilkan:

//--- input untuk isyarat utama input int            Signal_ThresholdOpen   =10;     // Nilai ambang isyarat untuk dibuka [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 titik) input double         Signal_TakeLevel       =50.0 // Tahap Take Profit (dalam titik)

perlu digantikan kepada:

//--- input untuk isyarat utama input int            Signal_ThresholdOpen   =40;     // Nilai ambang isyarat untuk dibuka [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 titik) input double         Signal_TakeLevel       =0.0    // Tahap Take Profit (dalam titik)

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

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

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

Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul isyarat dagangan. Suara dari modul utama (sebagai kontena, ia terdiri daripada semua modul yang ditambah) juga digunakan, tetapi metode LongCondition() dan ShortCondition()nya sentiasa mengembalikan 0.

Hasil suara dari modul utama juga digunakan dalam purata "suara". Dalam kes kita, kita mempunyai: modul utama + 1 modul isyarat dagangan, jadi kita perlu mengambil kira fakta ini ketika 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, yang bermaksud penutupan posisi hanya akan dilakukan apabila syarat penutup adalah benar.


2.4. Keputusan Ujian Sejarah

Kita akan mempertimbangkan ujian Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14).

Dalam penciptaan Expert Advisor, kita menggunakan volum tetap (Dagangan Lot Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan).

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Dark Cloud Cover/Piercing Line + RSI

Gambar 11. Keputusan ujian Expert Advisor, berdasarkan Dark Cloud Cover/Piercing Line + RSI


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

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


Siaran berkaitan

Komen (0)