Dalam dunia perdagangan, menggunakan alat yang tepat adalah kunci kejayaan. Salah satu alat yang popular di kalangan pedagang adalah MQL5 Wizard yang membolehkan anda menghasilkan Expert Advisor (EA) siap pakai berdasarkan kelas dari pustaka standard yang disediakan bersama terminal klien. Dengan alat ini, anda dapat menguji idea perdagangan anda dengan cepat dengan hanya mencipta kelas isyarat perdagangan anda sendiri. Struktur kelas tersebut dan contoh penggunaannya boleh didapati dalam artikel MQL5 Wizard: Cara Mencipta Modul Isyarat Dagangan.
Idea asasnya adalah kelas isyarat dagangan diturunkan daripada CExpertSignal. Anda perlu menimpa kaedah LongCondition() dan ShortCondition() dengan kaedah anda sendiri.
Terdapat sebuah buku yang berjudul "Strategi Pedagang Terbaik" (dalam bahasa Rusia) yang membincangkan banyak strategi perdagangan. Dalam artikel ini, kita akan fokus kepada corak candlestick pembalikan, yang disahkan oleh indikator Stochastic, CCI, MFI, dan RSI.
Cara terbaik adalah dengan mencipta kelas berasingan yang diturunkan dari CExpertSignal untuk memeriksa pembentukan corak candlestick. Untuk pengesahan isyarat dagangan yang dihasilkan oleh corak candlestick, cukup untuk menulis kelas yang diturunkan dari CCandlePattern dan menambah ciri-ciri yang diperlukan (contohnya, pengesahan menggunakan osilator).
Kita akan membincangkan isyarat yang berdasarkan corak candlestick pembalikan "Bullish/Bearish Meeting Lines" yang disahkan oleh indikator CCI (Commodity Channel Index). Modul isyarat dagangan ini dibina berdasarkan kelas CCandlePattern, yang merupakan contoh mudah penggunaannya untuk mencipta isyarat dagangan dengan corak candlestick.
1. Corak Candlestick Pembalikan "Meeting Lines"
1.1. Bullish Meeting Lines
Corak ini terdiri daripada dua candlestick (bearish dan bullish) dengan harga tutup yang sama (atau hampir sama). Badan kedua-dua candlestick mesti lebih besar daripada panjang badan purata.
Corak "Bullish Meeting Lines" menunjukkan pembalikan trend menurun.

Fig. 1. Corak "Bullish Meeting Lines"
Pengenalan corak "Bullish Meeting Lines" dilaksanakan dalam kaedah CheckPatternBullishMeetingLines() dari kelas CCandlePattern:
//+--------------------------------------------------------------------+ //| Memeriksa pembentukan corak candlestick "Bullish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines if((Open(2)-Close(2)>AvgBody(1)) && // candlestick bearish ((Close(1)-Open(1))>AvgBody(1)) && // candlestick bullish (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji close return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "Bullish Meeting Lines".
1.2. Bearish Meeting Lines
Corak ini terdiri daripada dua candlestick (bullish dan bearish) dengan harga tutup yang sama (atau hampir sama). Badan kedua-dua candlestick mesti lebih besar daripada panjang badan purata.
Corak "Bearish Meeting Lines" menunjukkan pembalikan trend menaik.

Fig. 2. Corak "Bearish Meeting Lines"
Pengenalan corak "Bearish Meeting Lines" dilaksanakan dalam kaedah CheckPatternBearishMeetingLines() dari kelas CCandlePattern:
//+--------------------------------------------------------------------+ //| Memeriksa pembentukan corak candlestick "Bearish Meeting Lines" | //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines if((Close(2)-Open(2)>AvgBody(1)) && // candlestick bullish ((Open(1)-Close(1)>AvgBody(1)) && // candlestick bearish (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji close return(true); //--- return(false); }
Kaedah CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan corak "Bearish Meeting Lines".
2. Isyarat Dagangan, Disahkan oleh Indikator CCI
Isyarat dagangan untuk membuka posisi panjang atau pendek mesti disahkan oleh indikator CCI. Nilai CCI mesti lebih besar/kecil daripada tahap kritikal (-50 untuk posisi panjang dan 50 untuk posisi pendek).
Penutupan posisi yang telah dibuka bergantung kepada nilai CCI. Ini dapat dilakukan dalam 2 kes:
- Jika garis CCI telah mencapai tahap kritikal bertentangan (80 untuk posisi panjang dan -80 untuk posisi pendek)
- Jika isyarat pembalikan tidak disahkan (apabila CCI mencapai tahap berikut: -80 untuk posisi panjang dan 80 untuk posisi pendek)

Fig. 3. Corak "Bullish Meeting Lines", disahkan oleh indikator CCI
- int CML_CCI::LongCondition() - memeriksa syarat untuk membuka posisi panjang (mengembalikan 80) dan menutup posisi pendek (mengembalikan 40);
- int CML_CCI::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 indikator CCI: CCI(1)<-50 (nilai CCI bar terakhir mesti kurang daripada -50).
Posisi pendek mesti ditutup jika indikator CCI telah melintasi ke atas tahap kritikal -80 atau melintasi ke bawah tahap kritikal 80.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi panjang, hasil=80) | //| 2) Keluar dari pasaran (tutup posisi pendek, hasil=40) | //+------------------------------------------------------------------+ int CML_CCI::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 panjang //--- pembentukan corak Bullish Meeting Lines dan CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (CCI(1)<-50)) result=80; //--- memeriksa syarat untuk menutup posisi pendek //--- persilangan garis isyarat tahap overbought/oversold (ke bawah -80, ke bawah -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- mengembalikan hasil return(result); }
2.2. Membuka Posisi Pendek/Tutup Posisi Panjang
Pembentukan corak "Bearish Meeting Lines" mesti disahkan oleh indikator CCI: CCI(1)>50 (nilai indikator CCI bar terakhir mesti lebih besar daripada 50).
Posisi panjang mesti ditutup jika indikator CCI telah melintasi ke bawah tahap -80 atau 80.
//+------------------------------------------------------------------+ //| Memeriksa syarat untuk masuk dan keluar dari pasaran | //| 1) Masuk pasaran (buka posisi pendek, hasil=80) | //| 2) Keluar dari pasaran (tutup posisi panjang, hasil=40) | //+------------------------------------------------------------------+ int CML_CCI::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 pendek //--- pembentukan corak Bearish Meeting Lines dan CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (CCI(1)>50)) result=80; //--- memeriksa syarat untuk menutup posisi panjang //--- persilangan garis isyarat tahap overbought/oversold (ke bawah -80, ke bawah 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- mengembalikan hasil return(result); }
2.3. Mencipta Expert Advisor Menggunakan MQL5 Wizard
Kelas CML_CCI tidak termasuk dalam kelas Pustaka Standard. Untuk menggunakannya, anda perlu memuat turun fail acml_cci.mqh (lihat lampiran) dan simpan ke dalam folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Begitu juga dengan fail candlepatterns.mqh. Anda boleh menggunakannya dalam MQL5 Wizard setelah merestart MetaEditor.
Untuk mencipta Expert Advisor, jalankan MQL5 Wizard:

Fig. 4. Mencipta Expert Advisor menggunakan MQL5 Wizard
Mari kita tentukan nama Expert Advisor:

Fig. 5. Properties umum Expert Advisor
Setelah itu, kita perlu memilih modul isyarat dagangan yang digunakan.

Fig. 6. Properties isyarat Expert Advisor
Dalam kes kita, kita hanya menggunakan satu modul isyarat dagangan.
Menambah modul Isyarat Berdasarkan Bullish/Bearish Meeting Lines yang disahkan oleh CCI:

Fig. 7. Properties isyarat Expert Advisor
Modul isyarat dagangan telah ditambah:

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

Fig. 10. Properties pengurusan wang Expert Advisor
Dengan menekan butang "Selesai", kita akan mendapatkan kod EA yang dihasilkan, yang terletak di Expert_AML_CCI.mq5, ia akan disimpan di terminal_data_folder\MQL5\Experts\.
Parameter input lalai bagi Expert Advisor yang dihasilkan:
//--- input untuk isyarat utama input int Signal_ThresholdOpen =10; // Nilai ambang isyarat untuk dibuka [0...100] input int Signal_ThresholdClose =10; // Nilai ambang isyarat untuk ditutup [0...100] input double Signal_PriceLevel =0.0; // Tahap harga untuk melaksanakan urus niaga 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:
//--- input untuk isyarat utama input int Signal_ThresholdOpen =40; // Nilai ambang isyarat untuk dibuka [0...100] input int Signal_ThresholdClose =20; // Nilai ambang isyarat untuk ditutup [0...100] input double Signal_PriceLevel =0.0 // Tahap harga untuk melaksanakan urus niaga input double Signal_StopLevel =0.0 // Tahap Stop Loss (dalam poin) input double Signal_TakeLevel =0.0 // Tahap Take Profit (dalam poin)
Parameter Signal_ThresholdOpen/Signal_ThresholdClose membenarkan anda menentukan tahap ambang untuk membuka dan menutup posisi.
Dalam kod kaedah LongCondition() dan ShortCondition() dari kelas isyarat dagangan, 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 dagangan. Undi dari modul utama (sebagai kontena, 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 pengiraan purata undi. Dalam kes kita, terdapat modul utama + 1 modul isyarat dagangan, jadi kita perlu mengambil kira fakta ini ketika menetapkan nilai ambang. Oleh kerana fakta ini, ThresholdOpen dan ThresholdClose mesti ditetapkan kepada 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 Kembali
Mari kita pertimbangkan ujian kembali Expert Advisor pada data sejarah (EURUSD H1, tempoh ujian: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3).
Dalam penciptaan Expert Advisor, kita menggunakan volume 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 + CCI
Set parameter input terbaik boleh ditemui menggunakan Strategy Tester dari terminal klien MetaTrader 5.
Kod Expert Advisor yang dicipta oleh MQL5 Wizard disertakan dalam expert_aml_cci.mq5.
Siaran berkaitan
- MQL5 Wizard: Cipta Isyarat Dagangan Berasaskan Pola Hammer dan Hanging Man dengan CCI
- Mengenal MQL5 Wizard: Isyarat Dagangan Berdasarkan Pola Bullish dan Bearish Engulfing + MFI
- MQL5 Wizard: Cipta Isyarat Dagangan Berdasarkan Corak 'Dark Cloud Cover' dan 'Piercing Line' dengan CCI
- MQL5 Wizard: Cipta EA Berdasarkan Pola Bullish dan Bearish Engulfing dengan Stochastic
- MQL5 Wizard: Sinyal Dagangan Berdasarkan Corak Bintang Pagi/Malam + CCI untuk MetaTrader 5