Laman utama Perdagangan Sistem Siaran

MQL5 Wizard: Sinyal Perdagangan Berdasarkan Corak Candlestick Bullish/Bearish Meeting Lines dan RSI

Lampiran
321.zip (6.77 KB, Muat turun 0 kali)

MQL5 Wizard adalah alat hebat yang membolehkan anda mencipta Expert Advisors (EA) siap pakai berdasarkan kelas Standard library yang disertakan bersama terminal klien. Dengan MQL5 Wizard, anda dapat menguji idea perdagangan anda dengan cepat, hanya perlu mencipta kelas sinyal perdagangan anda sendiri. Struktur kelas ini dan contoh boleh dirujuk dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Perdagangan.

Konsep umum adalah: kelas sinyal perdagangan diturunkan dari CExpertSignal. Selanjutnya, kita perlu mengubah suai kaedah LongCondition() dan ShortCondition() dengan kaedah kita sendiri.

Terdapat buku "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang mempertimbangkan banyak strategi perdagangan, namun kita akan fokus kepada corak candlestick pembalikan yang disahkan oleh Stochastic, CCI, MFI dan RSI.

Cara terbaik adalah dengan mencipta kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan corak candlestick. Untuk mengesahkan sinyal perdagangan yang dihasilkan oleh corak candlestick, cukup untuk menulis kelas yang diturunkan dari CCandlePattern dan menambah fungsi yang diperlukan (contohnya, pengesahan oleh osilator).

Di sini kita akan membincangkan sinyal yang berdasarkan corak candlestick "Bullish Meeting Lines" yang disahkan oleh RSI (Indeks Kekuatan Relatif). Modul sinyal perdagangan ini berdasarkan kelas CCandlePattern, yang merupakan contoh ringkas penggunaannya untuk mencipta sinyal perdagangan menggunakan corak candlestick.

1. Corak Candlestick "Meeting Lines" Pembalikan

1.1. Bullish Meeting Lines

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

Corak "Bullish Meeting Lines" menunjukkan pembalikan daripada trend penurunan.

Fig. 1. Corak Bullish Meeting Lines

Fig. 1. Corak "Bullish Meeting Lines"

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

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan corak candlestick "Bullish Meeting Lines" |
//+--------------------------------------------------------------------+
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);
} 

Pengesahan corak CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) digunakan untuk memeriksa pembentukan corak "Bullish Meeting Lines".


1.2. Bearish Meeting Lines

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

Corak "Bearish Meeting Lines" menunjukkan pembalikan daripada trend kenaikan.

Fig. 2. Corak Bearish Meeting Lines

Fig. 2. Corak "Bearish Meeting Lines"

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

//+--------------------------------------------------------------------+
//| Memeriksa pembentukan corak candlestick "Bearish Meeting Lines" |
//+--------------------------------------------------------------------+
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);
} 

Pengesahan corak CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) digunakan untuk memeriksa pembentukan corak "Bearish Meeting Lines".



2. Sinyal Perdagangan yang Disahkan oleh Indikator RSI

Sinyal perdagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh RSI indikator. Nilai RSI mesti lebih rendah/lebih tinggi daripada tahap kritikal (40 untuk posisi panjang dan 60 untuk posisi pendek).

Penutupan posisi yang dibuka bergantung pada nilai RSI. Ini boleh dilakukan dalam 2 kes:

  1. jika RSI telah mencapai tahap kritikal yang bertentangan (70 untuk posisi panjang dan 30 untuk posisi pendek)
  2. jika sinyal pembalikan tidak disahkan (apabila RSI mencapai tahap berikut: 30 untuk posisi panjang dan 70 untuk posisi pendek)

Fig. 3. Corak Bearish Meeting Lines, disahkan oleh indikator RSI

Fig. 3. Corak "Bearish Meeting Lines", disahkan oleh indikator RSI


  • int CML_RSI::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
  • int CML_RSI::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 RSI indikator: RSI(1)<40 (nilai RSI dari bar yang telah diselesaikan terakhir mesti kurang daripada 40).

  2. Posisi pendek mesti ditutup jika RSI indikator telah melintasi ke atas tahap kritikal 70 atau 30.

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran              |
//| 1) Masuk pasaran (buka posisi panjang, hasil=80)                |
//| 2) Keluar pasaran (tutup posisi pendek, hasil=40)              |
//+------------------------------------------------------------------+
int CML_RSI::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();
   //--- memeriksa syarat untuk membuka posisi panjang
   //--- pembentukan corak Bullish Meeting Lines dan RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (RSI(1)<40))
     result=80;
   //--- memeriksa syarat untuk menutup posisi pendek
   //--- persilangan garis sinyal pada tahap terlebih beli/terlebih jual (naik 30, naik 70)
  if(((RSI(1)>30) && (RSI(2<30)) || ((RSI(1)>70) && (RSI(2<70)))
     result=40;
   //--- mengembalikan hasil
   return(result);
}

2.2. Membuka posisi pendek/Tutup posisi panjang

  1. Pembentukan corak "Bearish Meeting Lines" mesti disahkan oleh RSI indikator: RSI(1)>60 (nilai RSI indikator dari bar yang telah diselesaikan terakhir mesti lebih daripada 60).

  2. Posisi panjang mesti ditutup jika RSI indikator telah melintasi ke bawah tahap kritikal 70 atau 30.

//+------------------------------------------------------------------+
//| Memeriksa syarat untuk masuk dan keluar dari pasaran              |
//| 1) Masuk pasaran (buka posisi pendek, hasil=80)                |
//| 2) Keluar pasaran (tutup posisi panjang, hasil=40)              |
//+------------------------------------------------------------------+
int CML_RSI::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();
   //--- memeriksa syarat untuk membuka posisi pendek
   //--- pembentukan corak Bearish Meeting Lines dan RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (RSI(1)>60))
     result=80;
   //--- memeriksa syarat untuk menutup posisi panjang
   //--- persilangan garis sinyal pada tahap terlebih beli/terlebih jual (ke bawah 70, ke bawah 30)
  if(((RSI(1)<70) && (RSI(2>70)) || ((RSI(1)<30) && (RSI(2>30)))
     result=40;
   //--- mengembalikan hasil
   return(result);
}


2.3. Mencipta Expert Advisor menggunakan MQL5 Wizard

Kelas CML_RSI tidak termasuk dalam kelas Pustaka Standard, oleh itu, untuk menggunakannya, anda perlu memuat turun fail acml_rsi.mqh (lihat lampiran) dan menyimpannya ke dalam folder data_terminal_klien\MQL5\Include\Expert\Signal\MySignals. Hal yang sama perlu dilakukan dengan fail acandlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard selepas memulakan semula MetaEditor.

Untuk mencipta Expert Advisor, laksanakan 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. Ciri umum Expert Advisor

Fig. 5. Ciri umum Expert Advisor

Selepas itu, kita perlu memilih modul sinyal perdagangan yang digunakan.

Fig. 6. Ciri sinyal Expert Advisor

Fig. 6. Ciri sinyal Expert Advisor

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

Menambah modul Sinyal Berdasarkan Bullish/Bearish Meeting Lines yang Disahkan oleh RSI:

Fig. 7. Ciri sinyal Expert Advisor

Fig. 7. Ciri sinyal Expert Advisor

Modul sinyal perdagangan telah ditambah:

Fig. 8. Ciri sinyal Expert Advisor

Fig. 8. Ciri sinyal Expert Advisor

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

Fig. 9. Ciri sifat trailing Expert Advisor

Fig. 9. Ciri sifat trailing Expert Advisor

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

Fig. 10. Ciri pengurusan wang Expert Advisor

Fig. 10. Ciri pengurusan wang Expert Advisor

Dengan menekan butang "Selesai", kita akan mendapatkan kod Expert Advisor yang dihasilkan, disimpan dalam Expert_AML_RSI.mq5, yang akan disimpan dalam terminal_data_folder\MQL5\Experts\.

Parameter input default bagi Expert Advisor yang dihasilkan:

//--- inputs untuk sinyal utama
input int Signal_ThresholdOpen =10; // Nilai ambang sinyal untuk membuka [0...100]
input int Signal_ThresholdClose =10; // Nilai ambang sinyal untuk menutup [0...100]
input double Signal_PriceLevel =0.0; // Tahap harga untuk melaksanakan transaksi
input double Signal_StopLevel =50.0; // Tahap Stop Loss (dalam titik)
input double Signal_TakeLevel =50.0; // Tahap Take Profit (dalam titik)

harus digantikan dengan:

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

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

Dalam kod kaedah LongCondition() dan ShortCondition() bagi kelas sinyal perdagangan, 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 sinyal perdagangan. Undian dari modul utama (sebagai kontainer, ia terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi kaedah LongCondition() dan ShortCondition()nya selalu mengembalikan 0.

Keputusan undian dari modul utama juga digunakan dalam purata "undi". Dalam kes ini, kita mempunyai: modul utama + 1 modul sinyal 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 penutupan posisi hanya akan dilakukan apabila syarat penutupan adalah benar.


2.4. Keputusan ujian sejarah

Kita akan melihat ujian Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2000.01.01-2011.03.01, PeriodRSI=11, MA_period=3).

Dalam penciptaan Expert Advisor, kita menggunakan volum 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 + RSI

Fig. 11. Keputusan ujian Expert Advisor, Berdasarkan Bullish/Bearish Meeting Lines + RSI


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

Kod Expert Advisor yang dibuat oleh MQL5 Wizard dilampirkan dalam expert_aml_rsi.mq5.


Siaran berkaitan

Komen (0)