Laman utama Perdagangan Sistem Siaran

MQL5 Wizard: Cipta EA Berdasarkan Corak Lilin 3 Black Crows/3 White Soldiers dan Stochastic

Lampiran
283.zip (6.6 KB, Muat turun 0 kali)

MQL5 Wizard adalah alat yang membolehkan anda mencipta Expert Advisors (EA) siap pakai berdasarkan kelas-kelas dalam Standard library yang disertakan bersama terminal klien. Dengan MQL5 Wizard, anda boleh menyemak idea perdagangan anda dengan cepat; yang perlu anda lakukan adalah mencipta kelas isyarat perdagangan anda sendiri. Struktur kelas ini dan contoh penggunaannya boleh dirujuk dalam artikel MQL5 Wizard: Cara Mencipta Modul Isyarat Perdagangan.

Idea asas adalah seperti berikut: kelas isyarat perdagangan diturunkan daripada CExpertSignal. Selanjutnya, anda perlu menimpa kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.

Terdapat sebuah buku berjudul "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang membincangkan banyak strategi perdagangan. Di sini, kita akan fokus kepada corak lilin pembalikan, yang disahkan oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah dengan mencipta kelas tersendiri yang diturunkan dari CExpertSignal untuk menyemak pembentukan corak lilin. Untuk pengesahan isyarat perdagangan yang dijana oleh corak lilin, anda hanya perlu menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan oleh pengayun).

Di sini, kita akan mempertimbangkan isyarat yang berdasarkan corak pembalikan 3 Black Crows / 3 White Soldiers yang disahkan oleh indikator Stochastic. Modul isyarat perdagangan adalah berdasarkan kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta isyarat perdagangan menggunakan corak lilin.


1. Corak Pembalikan "3 Black Crows" dan "3 White Soldiers"

1.1. 3 Black Crows

Corak lilin bearish yang digunakan untuk meramalkan pembalikan trend menaik semasa. Corak ini terdiri daripada tiga lilin panjang berturut-turut yang ditutup lebih rendah daripada hari sebelumnya, dengan setiap sesi dibuka dalam badan lilin sebelumnya.

Figure 1. Corak lilin '3 Black Crows'

Gambar 1. Corak lilin "3 Black Crows"

Pengesanan corak "3 Black Crows" dilaksanakan dalam kaedah CheckPatternThreeBlackCrows dalam kelas CCandlePattern:

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

Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dalam kelas CCandlePattern digunakan untuk menyemak pembentukan corak "3 Black Crows".


1.2. Corak 3 White Soldiers

Corak lilin bullish yang digunakan untuk meramalkan pembalikan trend menurun semasa. Corak ini terdiri daripada tiga lilin panjang berturut-turut yang ditutup lebih tinggi daripada hari sebelumnya, dengan setiap sesi dibuka dalam badan lilin sebelumnya.

Corak ini sah selagi lilin pada hari kedua dibuka dalam separuh atas julat hari pertama. Menjelang akhir hari kedua, ia seharusnya ditutup hampir pada titik tertinggi, meninggalkan bayangan atas yang sangat kecil atau tiada. Corak yang sama diulang pada hari ketiga.

Gambar 2. Corak '3 White Soldiers'

Gambar 2. Corak lilin "3 White Soldiers"

Berikut adalah kaedah untuk pengenalan corak "3 White Soldiers":

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

Kaedah CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dalam kelas CCandlePattern digunakan untuk menyemak pembentukan corak "3 White Soldiers".


2. Isyarat Perdagangan yang Disahkan oleh Indikator Stochastic

Isyarat perdagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh pengayun Stochastic. Garis %D mesti lebih tinggi/rendah daripada tahap kritikal yang bersesuaian (30 atau 70).

Penutupan posisi yang dibuka bergantung kepada nilai indikator %D. Ini boleh dilakukan dalam 2 kes:

  1. jika garis %D mencapai tahap kritikal yang 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)

Gambar 3. Corak '3 White Soldiers' yang disahkan oleh indikator Stochastic

Gambar 3. Corak "3 White Soldiers" yang disahkan oleh indikator Stochastic

Semakan syarat perdagangan untuk kemasukan dan keluar dilaksanakan dalam dua kaedah:

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

2.1. Membuka posisi panjang/Tutup posisi pendek

  1. Pembentukan corak "Three White Soldiers" mesti disahkan oleh indikator Stochastic: StochSignal(1) < 30 (nilai garis isyarat indikator Stochastic bagi bar yang telah selesai terakhir mesti kurang daripada 30).

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

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk kemasukan dan keluar dari pasaran         |
//| 1) Kemasukan pasaran (membuka posisi panjang, hasil=80)        |
//| 2) Keluar dari pasaran (menutup posisi pendek, hasil=40)       |
//+------------------------------------------------------------------+
int CBC_WS_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();
//--- semakan syarat untuk membuka posisi panjang
//--- pembentukan corak 3 White Soldiers dan garis isyarat <30
    if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1) < 30))
       result=80;
//--- semakan syarat untuk menutup posisi pendek
//--- persilangan garis isyarat daripada tahap overbought/oversold (ke bawah 20, ke atas 80)
    if((((StochSignal(1) > 20) && (StochSignal(2) < 20)) ||
       ((StochSignal(1) > 80) && (StochSignal(2) < 80))))
     result=40;
//--- kembalikan hasil
     return(result);
  }

2.2. Membuka posisi pendek/Tutup posisi panjang

  1. Pembentukan corak "Three Black Crows" mesti disahkan oleh indikator Stochastic: StochSignal(1) > 70 (nilai garis isyarat indikator Stochastic bagi bar yang telah selesai terakhir mesti lebih besar daripada 70).

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

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk kemasukan dan keluar dari pasaran         |
//| 1) Kemasukan pasaran (membuka posisi pendek, hasil=80)        |
//| 2) Keluar dari pasaran (menutup posisi panjang, hasil=40)     |
//+------------------------------------------------------------------+
int CBC_WS_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();
//--- semakan syarat untuk membuka posisi pendek
//--- pembentukan corak 3 Black Crows dan garis isyarat >70
    if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1) > 70))
       result=80;

//--- semakan syarat untuk menutup posisi panjang
//--- persilangan garis isyarat daripada tahap overbought/oversold (ke bawah 80, ke atas 20)
    if((((StochSignal(1) < 80) && (StochSignal(2) > 80)) ||
       ((StochSignal(1) < 20) && (StochSignal(2) > 20))))
     result=40;
//--- kembalikan hasil
     return(result);
  }


2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard

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

Untuk mencipta Expert Advisor, lancarkan MQL5 Wizard:

Gambar 4. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Gambar 4. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Mari kita tentukan nama Expert Advisor:

Gambar 5. Ciri umum Expert Advisor

Gambar 5. Ciri umum Expert Advisor

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

Gambar 6. Ciri isyarat Expert Advisor

Gambar 6. Ciri isyarat Expert Advisor

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

Menambah modul Isyarat Berdasarkan 3 Black Crows/3 White Soldiers yang Disahkan oleh Stochastic:

Gambar 7. Ciri isyarat Expert Advisor

Gambar 7. Ciri isyarat Expert Advisor

Modul isyarat perdagangan telah ditambah:

Gambar 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":

Gambar 9. Ciri trailing Expert Advisor

Gambar 9. Ciri trailing Expert Advisor

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

Gambar 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, yang terletak di Expert_ABC_WS_Stoch.mq5, ia akan disimpan dalam 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 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 digantikan dengan:

//--- 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 anda menetapkan tahap ambang untuk pembukaan dan penutupan posisi.

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

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

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

Hasil undian 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 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, ini bermakna bahawa penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.


2.4. Keputusan Ujian Kembali Sejarah

Kita akan mempertimbangkan ujian kembali Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

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


Gambar 11. Keputusan ujian Expert Advisor berdasarkan 3 Black Crows/3 White Soldiers + Stochastic

Gambar 11. Keputusan ujian Expert Advisor berdasarkan 3 Black Crows/3 White Soldiers + Stochastic


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

Kod Expert Advisor yang dicipta oleh MQL5 Wizard disertakan dalam expert_abc_ws_stoch.mq5.


Siaran berkaitan

Komen (0)