Menggunakan MQL5 Wizard untuk Membina EA Berdasarkan Pola Lilin dan Stochastic

Mike 2011.03.24 02:45 31 0 0
Lampiran

MQL5 Wizard adalah alat yang hebat untuk trader yang ingin mencipta Expert Advisors siap pakai. Dengan menggunakan kelas dari standard library, anda boleh menguji idea trading anda dengan cepat. Apa yang anda perlukan hanyalah mencipta kelas isyarat trading anda sendiri. Struktur kelas ini dan contoh boleh didapati dalam artikel MQL5 Wizard: Cara Membina Modul Isyarat Trading.

Idea asasnya adalah untuk mengembangkan kelas isyarat trading dari CExpertSignal, dan seterusnya, anda perlu mengubahsuai kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.

Ada sebuah buku yang menarik, "Strategi Trader Terbaik" (dalam bahasa Rusia), yang membincangkan pelbagai strategi trading. Dalam artikel ini, kita akan fokus kepada pola lilin pembalikan, yang disokong oleh indikator Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah dengan mencipta kelas terpisah, yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola lilin. Untuk mengesahkan isyarat trading yang dihasilkan oleh pola lilin, cukup untuk menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri yang diperlukan (contohnya, pengesahan oleh osilator).

Di sini, kita akan mempertimbangkan isyarat yang berdasarkan pola lilin "Bullish/Bearish Meeting Lines", yang disahkan oleh indikator Stochastic. Modul isyarat trading ini berdasarkan kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta isyarat trading dengan pola lilin.

1. Pola Lilin "Meeting Lines" Pembalikan

1.1. Bullish Meeting Lines

Pola ini terdiri daripada dua lilin (bearish dan bullish) dengan harga tutup yang sama (atau sangat dekat). Badan kedua-dua lilin harus lebih besar daripada purata panjang badan.

Pola "Bullish Meeting Lines" menunjukkan pembalikan arah trend menurun.

Fig. 1. Pola

Rajah 1. Pola "Bullish Meeting Lines"

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

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bullish Meeting Lines" lilin |            
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
//--- Bullish Meeting Lines
   if((Open(2)-Close(2)>AvgBody(1))              && // hitam panjang
     ((Close(1)-Open(1))>AvgBody(1))             && // putih panjang
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))   // doji tutup
      return(true);
//---
   return(false);
  }

Pola lilin "Bullish Meeting Lines" boleh diperiksa menggunakan kaedah CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) dari kelas CCandlePattern.

1.2. Bearish Meeting Lines

Pola ini terdiri daripada dua lilin (bullish dan bearish) dengan harga tutup yang sama (atau sangat dekat). Badan kedua-dua lilin harus lebih besar daripada purata panjang badan.

Pola "Bearish Meeting Lines" menunjukkan pembalikan arah trend menaik.

Rajah 2. Pola

Rajah 2. Pola "Bearish Meeting Lines"

Pengiktirafan pola "Bearish Meeting Lines" dilaksanakan dalam kaedah CheckPatternBearishMeetingLines() dari kelas CCandlePattern:

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bearish Meeting Lines" lilin |            
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishMeetingLines()
  {
//--- Bearish Meeting Lines
   if((Close(2)-Open(2)>AvgBody(1))             && // putih panjang
     ((Open(1)-Close(1))>AvgBody(1))             && // hitam panjang
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))  // doji tutup
      return(true);
//---
   return(false);
  }

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

2. Isyarat Trading yang Disahkan oleh Indikator Stochastic

Isyarat trading untuk membuka posisi long atau short mesti disahkan oleh osilator Stochastic. Garis isyarat %D mesti lebih besar/kecil daripada tahap kritikal yang bersesuaian (30 atau 70).

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

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

Rajah 3. Pola

Rajah 3. Pola "Bearish Meeting Lines" yang disahkan oleh indikator Stochastic

  • int CML_Stoch::LongCondition() - memeriksa syarat untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CML_Stoch::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 "Bullish Meeting Lines" mesti disahkan oleh indikator Stochastic: StochSignal(1)<30 (nilai garis isyarat indikator Stochastic pada bar yang telah selesai 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 dari pasaran (tutup posisi short, hasil=40) |
//+------------------------------------------------------------------+
int CML_Stoch::LongCondition()
  {
   int result=0;
//--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor
//--- idx=0 - dalam kes ini EA memeriksa syarat trading pada setiap tick
//--- idx=1 - dalam kes ini EA memeriksa syarat trading hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa syarat untuk membuka posisi long
//--- pembentukan pola Bullish Meeting Lines dan garis isyarat<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (StochSignal(1)<30))
     result=80;
//--- memeriksa syarat untuk menutup posisi short
//--- persilangan garis isyarat dari tahap overbought/oversold (ke bawah 20, ke atas 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- pulangkan hasil
   return(result);
  }

2.2. Membuka posisi short/menutup posisi long

  1. Pembentukan pola "Bearish Meeting Lines" mesti disahkan oleh indikator Stochastic: StochSignal(1)>70 (nilai garis isyarat indikator Stochastic pada bar yang telah selesai 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 dari pasaran (tutup posisi long, hasil=40) |
//+------------------------------------------------------------------+
int CML_Stoch::ShortCondition()
  {
   int result=0;
//--- idx boleh digunakan untuk menentukan mod kerja Expert Advisor
//--- idx=0 - dalam kes ini EA memeriksa syarat trading pada setiap tick
//--- idx=1 - dalam kes ini EA memeriksa syarat trading hanya pada bar berita
  int idx   =StartIndex();
//--- memeriksa syarat untuk membuka posisi short
//--- pembentukan pola Bearish Meeting Lines dan garis isyarat>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (StochSignal(1)>70))
     result=80;
//--- memeriksa syarat untuk menutup posisi long
//--- persilangan garis isyarat dari tahap overbought/oversold (ke bawah 80, ke atas 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- pulangkan hasil
   return(result);
  }

2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Kelas CML_Stoch tidak termasuk dalam kelas Standard Library, untuk menggunakannya, anda perlu memuat turun fail acml_stoch.mqh (lihat lampiran) dan simpan di dalam folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Anda juga perlu melakukan perkara yang sama dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas memulakan semula MetaEditor.

Untuk mencipta Expert Advisor, lancarkan MQL5 Wizard:

Rajah 4. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Rajah 4. Mencipta Expert Advisor Menggunakan MQL5 Wizard

Mari kita tentukan nama Expert Advisor:

Rajah 5. Ciri umum Expert Advisor

Rajah 5. Ciri umum Expert Advisor

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

Rajah 6. Ciri isyarat Expert Advisor

Rajah 6. Ciri isyarat Expert Advisor

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

Menambah modul Isyarat Berdasarkan Bullish/Bearish Meeting Lines yang Disahkan oleh Stochastic:

Rajah 7. Ciri isyarat Expert Advisor

Rajah 7. Ciri isyarat Expert Advisor

Modul isyarat trading telah ditambah:

Rajah 8. Ciri isyarat Expert Advisor

Rajah 8. Ciri isyarat Expert Advisor

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

Rajah 9. Ciri trailing Expert Advisor

Rajah 9. Ciri trailing Expert Advisor

Mengenai ciri pengurusan wang, kita akan menggunakan "Trading dengan volume tetap":

Rajah 10. Ciri pengurusan wang Expert Advisor

Rajah 10. Ciri pengurusan wang Expert Advisor

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

Parameter input lalai Expert Advisor yang dihasilkan:

//--- inputs untuk isyarat utama
input int            Signal_ThresholdOpen   =10;     // Nilai ambang isyarat untuk buka [0...100]
input int            Signal_ThresholdClose  =10     // Nilai ambang isyarat untuk tutup [0...100]
input double         Signal_PriceLevel      =0.0    // Tahap harga untuk melaksanakan transaksi
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:

//--- inputs untuk isyarat utama
input int            Signal_ThresholdOpen   =40;     // Nilai ambang isyarat untuk buka [0...100]
input int            Signal_ThresholdClose  =20     // Nilai ambang isyarat untuk tutup [0...100]
input double         Signal_PriceLevel      =0.0    // Tahap harga untuk melaksanakan transaksi
input double         Signal_StopLevel       =0.0    // Tahap Stop Loss (dalam poin)
input double         Signal_TakeLevel       =0.0    // Tahap Take Profit (dalam poin)

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

Dalam kod kaedah LongCondition() dan ShortCondition() dari kelas isyarat trading, 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 trading. Undi dari modul utama (sebagai kontainer, 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 perataan "undi". Dalam kes kita, terdapat modul utama + 1 modul isyarat trading, jadi kita perlu mengambil kira fakta ini semasa menetapkan nilai ambang. Oleh kerana itu, 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 penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.


2.4. Keputusan ujian sejarah

Mari kita pertimbangkan ujian Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2005.01.01-2010.03.16, PeriodK=6, PeriodD=3, PeriodSlow=36, MA_period=3).

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

Rajah 11. Keputusan ujian Expert Advisor yang berdasarkan Bullish/Bearish Meeting Lines + Stochastic

Rajah 11. Keputusan ujian Expert Advisor yang berdasarkan Bullish/Bearish Meeting Lines + Stochastic


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

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

Senarai
Komen 0