Panduan Lengkap MQL5 Wizard untuk Isyarat Dagangan: Garisan Pertemuan Bullish/Bearish dan MFI

Mike 2011.03.24 20:15 85 0 0
Lampiran

MQL5 Wizard adalah alat yang hebat untuk trader yang ingin mencipta Expert Advisor siap pakai berdasarkan kepada kelas Standard library. Dengan MQL5 Wizard, anda boleh menguji idea dagangan dengan pantas hanya dengan mencipta kelas isyarat dagangan anda sendiri. Struktur dan contoh kelas ini boleh dirujuk dalam artikel MQL5 Wizard: Bagaimana untuk Membuat Modul Isyarat Dagangan.

Idea asasnya adalah untuk mencipta kelas isyarat dagangan yang diturunkan daripada CExpertSignal. Selanjutnya, anda perlu menulis semula kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.

Buku berjudul "Strategi Pedagang Terbaik" (dalam bahasa Rusia) membincangkan banyak strategi dagangan. Kali ini, kita akan fokus kepada pola candlestick pembalikan, yang disahkan oleh Stochastic, CCI, MFI, dan RSI.

Cara terbaik adalah dengan mencipta kelas terpisah yang diturunkan daripada CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengesahkan isyarat dagangan yang dihasilkan oleh pola candlestick, anda hanya perlu menulis kelas yang diturunkan daripada CCandlePattern dan menambah ciri yang diperlukan (contohnya, pengesahan menggunakan osilator).

Kami akan membincangkan isyarat berdasarkan pola candlestick "Bullish/Bearish Meeting Lines" yang disahkan oleh indikator MFI (Market Facilitation Index). Modul isyarat dagangan ini berdasarkan kepada kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan pola candlestick.


1. Pola Candlestick "Meeting Lines"

1.1. Bullish Meeting Lines

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

Pola "Bullish Meeting Lines" menunjukkan pembalikan daripada arah aliran menurun.

Rajah 1. Pola 'Bullish Meeting Lines'

Rajah 1. Pola 'Bullish Meeting Lines' 

Pengesahan pola "Bullish Meeting Lines" dilakukan dalam kaedah CheckPatternCheckPatternBullishMeetingLines() dalam kelas CCandlePattern:

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bullish Meeting Lines" candlestick    |            //+--------------------------------------------------------------------+
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 close
      return(true);
//---
   return(false);
  }

Panggilan CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) digunakan untuk memeriksa pembentukan pola "Bullish Meeting Lines".


1.2. Bearish Meeting Lines

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

Pola "Bearish Meeting Lines" menunjukkan pembalikan kepada arah aliran menurun.

Rajah 2. Pola 'Bearish Meeting Lines'

Rajah 2. Pola 'Bearish Meeting Lines'

Pengesahan pola "Bearish Meeting Lines" dilakukan dalam kaedah CheckPatternBearishMeetingLines() dalam kelas CCandlePattern:

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan pola "Bearish Meeting Lines" candlestick    |//+--------------------------------------------------------------------+
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 close
      return(true);
//---
   return(false);
  }

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


2. Isyarat Dagangan, Disahkan oleh Indikator MFI

Isyarat dagangan untuk membuka posisi long atau short mesti disahkan oleh indikator MFI. Nilai indikator MFI mesti kurang daripada 40 (untuk posisi long) atau lebih daripada 60 (untuk posisi short).

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

  • jika MFI telah mencapai tahap kritikal yang bertentangan (70 untuk posisi long dan 30 untuk posisi short)
  • jika isyarat terbalik tidak disahkan (apabila indikator MFI mencapai tahap berikut: 30 untuk posisi long dan 70 untuk posisi short)

Rajah 3. Pola 'Bearish Meeting Lines', disahkan oleh indikator MFI

Rajah 3. Pola 'Bearish Meeting Lines', disahkan oleh indikator MFI


  • int CML_MFI::LongCondition() - memeriksa syarat untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40);
  • int CML_MFI::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 MFI: MFi(1)<40 (nilai indikator MFI pada bar terakhir mesti kurang daripada 40).

  2. Posisi short mesti ditutup jika indikator MFI telah melintasi tahap kritikal ke atas (70 atau 30).

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran                 |
//| 1) Masuk ke pasaran (buka posisi long, hasil=80)                  |
//| 2) Keluar dari pasaran (tutup posisi short, hasil=40)                 |
//+------------------------------------------------------------------+
int CML_MFI::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 pola Bullish Meeting Lines dan MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (MFI(1)<40))
     result=80;
//--- memeriksa syarat untuk menutup posisi short
//--- persilangan garis isyarat tahap overbought/oversold (ke atas 30, ke atas 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.2. Membuka Posisi Short/Menutup Posisi Long

  1. Pembentukan pola "Bearish Meeting Lines" mesti disahkan oleh indikator MFI: MFI(1)>60 (nilai indikator MFI pada bar terakhir mesti lebih daripada 60).

  2. Posisi long mesti ditutup jika indikator MFI telah melintasi tahap kritikal ke atas/bawah (70 atau 30).

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran                 |
//| 1) Masuk ke pasaran (buka posisi short, hasil=80)                 |
//| 2) Keluar dari pasaran (tutup posisi long, hasil=40)                  |
//+------------------------------------------------------------------+
int CML_MFI::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 pola Bearish Meeting Lines dan MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (MFI(1)>60))
     result=80;
//--- memeriksa syarat untuk menutup posisi long
//--- persilangan garis isyarat tahap overbought/oversold (ke atas 70, ke bawah 30)
   if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- mengembalikan hasil
   return(result);
  }


2.3. Membuat Expert Advisor menggunakan MQL5 Wizard

Kelas CML_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, anda perlu memuat turun fail aml_mfi.mqh (lihat lampiran) dan simpan ke dalam folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Begitu juga dengan fail acandlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas memulakan semula MetaEditor.

Untuk mencipta Expert Advisor, lancarkan MQL5 Wizard:

Rajah 4. Membuat Expert Advisor menggunakan MQL5 Wizard

Rajah 4. Membuat Expert Advisor menggunakan MQL5 Wizard

Mari kita tetapkan nama Expert Advisor:

Rajah 5. Ciri umum Expert Advisor

Rajah 5. Ciri umum Expert Advisor

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

Rajah 6. Ciri isyarat Expert Advisor

Rajah 6. Ciri isyarat Expert Advisor

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

Menambah modul "Isyarat berdasarkan Garisan Pertemuan Bullish/Bearish oleh MFI":

Rajah 7. Ciri isyarat Expert Advisor

Rajah 7. Ciri isyarat Expert Advisor

Modul isyarat dagangan ditambah:

Rajah 8. Ciri isyarat Expert Advisor

Rajah 8. Ciri isyarat Expert Advisor

Anda boleh memilih sebarang ciri trailing, tetapi kami akan menggunakan "Trailing Stop tidak digunakan":

Rajah 9. Ciri pengurusan wang Expert Advisor

Rajah 9. Ciri pengurusan wang Expert Advisor

Mengenai ciri pengurusan wang, kami akan menggunakan "Dagangan dengan jumlah dagangan tetap":

Rajah 10. Ciri pengurusan wang Expert Advisor

Rajah 10. Ciri pengurusan wang Expert Advisor

Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dihasilkan, yang terletak di Expert_AML_MFI.mq5 dan 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 ditukar kepada:

//--- 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 membuka dan menutup posisi.

Dalam kod kaedah LongCondition() dan ShortCondition() bagi kelas isyarat dagangan, kami telah menetapkan nilai tetap untuk ambang:

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

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

Hasil undian modul utama juga digunakan dalam "purata" undian. Dalam kes kami, terdapat 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 bermakna penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.


2.4. Hasil Ujian Sejarah

Kita akan membincangkan ujian Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2000.01.01-2011.03.16, PeriodMFI=12, MA_period=4).

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

Rajah 11. Hasil ujian Expert Advisor, berdasarkan Garisan Pertemuan Bullish/Bearish + MFI

Rajah 11. Hasil ujian Expert Advisor, berdasarkan Garisan Pertemuan Bullish/Bearish + MFI


Set parameter input terbaik boleh dijumpai menggunakan Strategy Tester dalam terminal klien MetaTrader 5.

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


Senarai
Komen 0