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"
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"
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:
- jika RSI telah mencapai tahap kritikal yang bertentangan (70 untuk posisi panjang dan 30 untuk posisi pendek)
- 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
- 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
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).
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
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).
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
Mari kita tentukan nama Expert Advisor:

Fig. 5. Ciri umum Expert Advisor
Selepas itu, kita perlu memilih modul sinyal perdagangan yang digunakan.

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
Modul sinyal perdagangan telah ditambah:

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
Mengenai sifat pengurusan wang, kita akan menggunakan "Perdagangan dengan volum perdagangan tetap":

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
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
- Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI
- MQL5 Wizard: Cipta Sinyal Dagangan Menggunakan Pola Candlestick Hammer dan Hanging Man
- MQL5 Wizard: Cipta Isyarat Dagangan dengan Bullish dan Bearish Harami + MFI
- MQL5 Wizard: Cipta EA Berdasarkan Pola Bullish dan Bearish Engulfing dengan Stochastic
- MQL5 Wizard: Cipta EA Berdasarkan Pola Candlestick Bullish/Bearish Harami + Stochastic