Laman utama Perdagangan Sistem Siaran

MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak Hammer/Hanging Man dan Stochastic

Lampiran
314.zip (6.58 KB, Muat turun 2 kali)

MQL5 Wizard membolehkan anda mencipta Expert Advisors yang sudah siap berdasarkan kelas perpustakaan standard yang disertakan dengan terminal klien (lihat Cipta Expert Advisors di MQL5 Wizard untuk maklumat lanjut). Alat ini membolehkan anda menyemak idea dagangan dengan cepat, yang perlu anda lakukan adalah mencipta kelas isyarat dagangan anda sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Mencipta Modul Isyarat Dagangan.

Idea umum adalah seperti berikut: kelas isyarat dagangan diambil dari CExpertSignal, seterusnya, anda perlu mengubahsuai kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.

Terdapat sebuah buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia), yang membincangkan pelbagai strategi dagangan, kita akan fokus pada corak candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI dan RSI.

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

Di sini kita akan mempertimbangkan isyarat yang berdasarkan corak candlestick pembalikan "Hammer/Hanging Man", yang disahkan oleh indikator Stochastic. Modul isyarat dagangan ini berdasarkan kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan corak candlestick.

1. Corak Candlestick Pembalikan: "Hammer" dan "Hanging Man"

1.1. Hammer

"Hammer" adalah candlestick dengan badan kecil dan sumbu bawah yang panjang, terbentuk selepas pergerakan harga menurun. Corak "Hammer" menunjukkan berakhirnya trend menurun.

Warna badan candlestick tidak penting, tetapi hammer bullish menunjukkan potensi bullish yang lebih tinggi. Badan corak "Hammer" sering terbentuk dekat dengan minimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek menunjukkan potensi pembalikan yang lebih tinggi.

Fig. 1. Corak candlestick 'Hammer'

Fig. 1. Corak candlestick 'Hammer'

Pengenalan corak "Hammer" dilaksanakan dalam kaedah CheckPatternHammer() dalam kelas CCandlePattern:

//+------------------------------------------------------------------+
//| Memeriksa pembentukan corak candlestick "Hammer"        |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHammer()
  {
//--- Hammer
   if((MidPoint(1)<CloseAvg(2))                                 && // trend menurun
      (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // badan dalam 1/3 atas
      (Close(1)<Close(2)) && (Open(1)<Open(2)))                     // jurang badan
      return(true);
//---
   return(false);
  }

Pengesahan corak candlestick (CANDLE_PATTERN_HAMMER) menggunakan kaedah CheckCandlestickPattern dalam kelas CCandlePattern.


1.2. Hanging Man

"Hanging Man" adalah candlestick dengan badan kecil dan sumbu bawah yang panjang, terbentuk selepas pergerakan harga menaik. Corak "Hanging Man" menunjukkan berakhirnya trend menaik.

Warna badan candlestick tidak penting, tetapi candle bearish menunjukkan potensi bearish yang lebih tinggi. Badan corak "Hanging Man" sering terbentuk dekat dengan maksimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek menunjukkan potensi pembalikan yang lebih tinggi.

Fig. 2. Corak candlestick 'Hanging Man'

Fig. 2. Corak candlestick 'Hanging Man'

Pengenalan corak "Hanging Man" dilaksanakan dalam kaedah CheckPatternHangingMan() dalam kelas CCandlePattern:

//+------------------------------------------------------------------+

//| Memeriksa pembentukan corak candlestick "Hanging Man"        |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternHangingMan()
  {
//--- Hanging man
   if((MidPoint(1)>CloseAvg(2))                                && // trend menaik
      (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // badan dalam 1/3 atas
      (Close(1)>Close(2)) && (Open(1)>Open(2))))                  // jurang badan
      return(true);
//---
   return(false);
  }

Pengesahan corak candlestick (CANDLE_PATTERN_HANGING_MAN) menggunakan kaedah CheckCandlestickPattern dalam kelas CCandlePattern.


2. Isyarat Dagangan, Disahkan oleh Indikator Stochastic

Isyarat dagangan untuk membuka posisi long atau short mesti disahkan oleh osilator Stochastic. Garis isyarat %D mesti lebih tinggi/rendah daripada tahap kritikal yang sesuai (30 atau 70).

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

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

Fig. 3. Corak 'Hammer', disahkan oleh indikator Stochastic

Fig. 3. Corak 'Hammer', disahkan oleh indikator Stochastic


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

2.1. Buka Posisi Long/Tutup Posisi Short

  1. Pembentukan corak "Hammer" mesti disahkan oleh indikator Stochastic: StochSignal(1)<30 (nilai garis isyarat indikator Stochastic bagi bar yang telah siap mesti kurang daripada 30).

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

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran                 |
//| 1) Masuk pasaran (buka posisi long, hasil=80)                  |
//| 2) Keluar pasaran (tutup posisi short, hasil=40)                  |
//+------------------------------------------------------------------+
int CH_HM_Stoch::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 long
//--- pembentukan corak Hammer dan garis isyarat<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (StochSignal(1)<30))
     result=80;
//--- memeriksa syarat untuk menutup posisi short
//--- melintasi garis isyarat tahap overbought/oversold (ke bawah 20, ke atas 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- mengembalikan hasil
   return(result);
  }

2.2. Buka Posisi Short/Tutup Posisi Long

  1. Pembentukan corak "Hanging Man" mesti disahkan oleh indikator Stochastic: StochSignal(1)>70 (nilai garis isyarat indikator Stochastic bagi bar yang telah siap mesti lebih daripada 70).

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

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran                 |
//| 1) Masuk pasaran (buka posisi short, hasil=80)                 |
//| 2) Keluar pasaran (tutup posisi long, hasil=40)                   |
//+------------------------------------------------------------------+
int CH_HM_Stoch::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 short
//--- pembentukan corak Hanging Man dan garis isyarat>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (StochSignal(1)>70))
     result=80;
//--- memeriksa syarat untuk menutup posisi long
//--- melintasi garis isyarat tahap overbought/oversold (ke bawah 80, ke atas 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 CH_HM_Stoch tidak termasuk dalam kelas Perpustakaan Standard, untuk menggunakannya, anda perlu memuat turun fail ach_hm_stoch.mqh (lihat lampiran) dan simpan dalam folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Perkara yang sama perlu dilakukan dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard setelah memulakan semula MetaEditor.

Untuk mencipta Expert Advisor, jalankan MQL5 Wizard:

Fig. 4. Membuat Expert Advisor menggunakan MQL5 Wizard

Fig. 4. Membuat Expert Advisor menggunakan MQL5 Wizard

Mari tetapkan nama Expert Advisor:

Fig. 5. Properties umum Expert Advisor

Fig. 5. Properties umum Expert Advisor

Seterusnya, 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 Hammer/Hanging Man disahkan oleh Stochastic" dagangan:

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

Berkenaan dengan properties pengurusan wang, kita akan menggunakan "Dagangan dengan jumlah dagangan tetap":

Fig. 10. Properties pengurusan wang Expert Advisor

Fig. 10. Properties pengurusan wang Expert Advisor

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

Parameter input lalai bagi Expert Advisor yang dijana:

//--- 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 dagangan
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 dagangan
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 menentukan tahap ambang untuk membuka dan menutup posisi.

Dalam kod kaedah LongCondition() dan ShortCondition() bagi kelas isyarat dagangan, kita telah menentukan nilai tetap bagi 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 modul utama (sebagai kontena, ia terdiri daripada semua modul yang ditambahkan) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition()nya sentiasa mengembalikan 0.

Keputusan undi 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, yang bermaksud bahawa penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.


2.4. Keputusan Uji Kembali Sejarah

Mari kita pertimbangkan ujian kembali Expert Advisor menggunakan data sejarah (EURUSD H1, tempoh ujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

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


Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Hammer/Hanging Man + Stochastic

Fig. 11. Keputusan ujian Expert Advisor, berdasarkan Hammer/Hanging Man + Stochastic


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

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


Siaran berkaitan

Komen (0)