Laman utama Perdagangan Sistem Siaran

MQL5 Wizard: Isyarat Dagangan Berdasarkan Corak Candlestick Bullish/Bearish Meeting Lines + CCI

Lampiran
319.zip (6.47 KB, Muat turun 2 kali)

Dalam dunia perdagangan, menggunakan alat yang tepat adalah kunci kejayaan. Salah satu alat yang popular di kalangan pedagang adalah MQL5 Wizard yang membolehkan anda menghasilkan Expert Advisor (EA) siap pakai berdasarkan kelas dari pustaka standard yang disediakan bersama terminal klien. Dengan alat ini, anda dapat menguji idea perdagangan anda dengan cepat dengan hanya mencipta kelas isyarat perdagangan anda sendiri. Struktur kelas tersebut dan contoh penggunaannya boleh didapati dalam artikel MQL5 Wizard: Cara Mencipta Modul Isyarat Dagangan.

Idea asasnya adalah kelas isyarat dagangan diturunkan daripada CExpertSignal. Anda perlu menimpa kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.

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

Cara terbaik adalah dengan mencipta kelas berasingan yang diturunkan dari CExpertSignal untuk memeriksa pembentukan corak candlestick. Untuk pengesahan isyarat dagangan yang dihasilkan oleh corak candlestick, cukup untuk menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan menggunakan osilator).

Kita akan membincangkan isyarat yang berdasarkan corak candlestick pembalikan "Bullish/Bearish Meeting Lines" yang disahkan oleh indikator CCI (Commodity Channel Index). Modul isyarat dagangan ini dibina berdasarkan kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan corak candlestick.

1. Corak Candlestick Pembalikan "Meeting Lines"

1.1. Bullish Meeting Lines

Corak ini terdiri daripada dua candlestick (bearish dan bullish) dengan harga tutup yang sama (atau hampir sama). Badan kedua-dua candlestick mesti lebih besar daripada panjang badan purata.

Corak "Bullish Meeting Lines" menunjukkan pembalikan trend menurun.

Fig. 1. Corak Bullish Meeting Lines

Fig. 1. Corak "Bullish Meeting Lines"

Pengenalan corak "Bullish Meeting Lines" dilaksanakan dalam kaedah CheckPatternBullishMeetingLines() dari kelas CCandlePattern:

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

Kaedah CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "Bullish Meeting Lines".


1.2. Bearish Meeting Lines

Corak ini terdiri daripada dua candlestick (bullish dan bearish) dengan harga tutup yang sama (atau hampir sama). Badan kedua-dua candlestick mesti lebih besar daripada panjang badan purata.

Corak "Bearish Meeting Lines" menunjukkan pembalikan trend menaik.

Fig. 2. Corak Bearish Meeting Lines

Fig. 2. Corak "Bearish Meeting Lines"

Pengenalan corak "Bearish Meeting Lines" dilaksanakan dalam kaedah CheckPatternBearishMeetingLines() dari kelas CCandlePattern:

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

Kaedah CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "Bearish Meeting Lines".


2. Isyarat Dagangan, Disahkan oleh Indikator CCI

Isyarat dagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh indikator CCI. Nilai CCI mesti lebih besar/kecil daripada tahap kritikal (-50 untuk posisi panjang dan 50 untuk posisi pendek).

Penutupan posisi yang telah dibuka bergantung kepada nilai CCI. Ini dapat dilakukan dalam 2 kes:

  1. Jika garis CCI telah mencapai tahap kritikal bertentangan (80 untuk posisi panjang dan -80 untuk posisi pendek)
  2. Jika isyarat pembalikan tidak disahkan (apabila CCI mencapai tahap berikut: -80 untuk posisi panjang dan 80 untuk posisi pendek)

Fig. 3. Corak Bullish Meeting Lines, disahkan oleh indikator CCI

Fig. 3. Corak "Bullish Meeting Lines", disahkan oleh indikator CCI

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

2.1. Membuka Posisi Panjang/Tutup Posisi Pendek

  1. Pembentukan corak "Bullish Meeting Lines" mesti disahkan oleh indikator CCI: CCI(1)<-50 (nilai CCI bar terakhir mesti kurang daripada -50).

  2. Posisi pendek mesti ditutup jika indikator CCI telah melintasi ke atas tahap kritikal -80 atau melintasi ke bawah tahap kritikal 80.

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran     |
//| 1) Masuk pasaran (buka posisi panjang, hasil=80)     |
//| 2) Keluar dari pasaran (tutup posisi pendek, hasil=40)    |
//+------------------------------------------------------------------+
int CML_CCI::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 corak Bullish Meeting Lines dan CCI<-50
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (CCI(1)<-50))
    result=80;
  //--- memeriksa syarat untuk menutup posisi pendek
  //--- persilangan garis isyarat tahap overbought/oversold (ke bawah -80, ke bawah -80)
  if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
    result=40;
  //--- mengembalikan hasil
  return(result);
}

2.2. Membuka Posisi Pendek/Tutup Posisi Panjang

  1. Pembentukan corak "Bearish Meeting Lines" mesti disahkan oleh indikator CCI: CCI(1)>50 (nilai indikator CCI bar terakhir mesti lebih besar daripada 50).

  2. Posisi panjang mesti ditutup jika indikator CCI telah melintasi ke bawah tahap -80 atau 80.

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran     |
//| 1) Masuk pasaran (buka posisi pendek, hasil=80)     |
//| 2) Keluar dari pasaran (tutup posisi panjang, hasil=40)    |
//+------------------------------------------------------------------+
int CML_CCI::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 corak Bearish Meeting Lines dan CCI>50
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (CCI(1)>50))
    result=80;
  //--- memeriksa syarat untuk menutup posisi panjang
  //--- persilangan garis isyarat tahap overbought/oversold (ke bawah -80, ke bawah 80)
  if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
    result=40;
  //--- mengembalikan hasil
  return(result);
}


2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Kelas CML_CCI tidak termasuk dalam kelas Pustaka Standard. Untuk menggunakannya, anda perlu memuat turun fail acml_cci.mqh (lihat lampiran) dan simpan ke dalam folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Begitu juga dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard setelah merestart 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. Properties umum Expert Advisor

Fig. 5. Properties umum Expert Advisor

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

Fig. 6. Properties isyarat Expert Advisor

Fig. 6. Properties isyarat Expert Advisor

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

Menambah modul Isyarat Berdasarkan Bullish/Bearish Meeting Lines yang disahkan oleh CCI:

Fig. 7. Properties isyarat Expert Advisor

Fig. 7. Properties isyarat Expert Advisor

Modul isyarat dagangan telah ditambah:

Fig. 8. Properties isyarat Expert Advisor

Fig. 8. Properties isyarat Expert Advisor

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

Fig. 9. Properties trailing Expert Advisor

Fig. 9. Properties trailing Expert Advisor

Mengenai properties pengurusan wang, kita akan menggunakan "Perdagangan dengan volume perdagangan tetap":

Fig. 10. Properties pengurusan wang Expert Advisor

Fig. 10. Properties pengurusan wang Expert Advisor

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

Parameter input lalai bagi 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 ditutup [0...100]
input double         Signal_PriceLevel      =0.0;    // Tahap harga untuk melaksanakan urus niaga
input double         Signal_StopLevel       =50.0;   // Tahap Stop Loss (dalam poin)
input double         Signal_TakeLevel       =50.0  // Tahap Take Profit (dalam poin)

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 ditutup [0...100]
input double         Signal_PriceLevel      =0.0    // Tahap harga untuk melaksanakan urus niaga
input double         Signal_StopLevel       =0.0    // Tahap Stop Loss (dalam poin)
input double         Signal_TakeLevel       =0.0    // Tahap Take Profit (dalam poin)

Parameter Signal_ThresholdOpen/Signal_ThresholdClose membenarkan anda menentukan tahap ambang untuk membuka dan menutup posisi.

Dalam kod kaedah LongCondition() dan ShortCondition() dari 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 kontena, ia terdiri daripada semua modul yang ditambah) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition() sentiasa mengembalikan 0.

Keputusan undi dari modul utama juga digunakan dalam pengiraan purata undi. Dalam kes kita, terdapat 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 kepada 40=(0+80)/2 dan 20=(0+40)/2.

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


2.4. Keputusan Ujian Kembali

Mari kita pertimbangkan ujian kembali Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3).

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

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Bullish/Bearish Meeting Lines + CCI

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Bullish/Bearish Meeting Lines + CCI


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

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


Siaran berkaitan

Komen (0)