Perdagangan Sistem

MQL5 Wizard: Membuat Expert Advisor Berdasarkan Pola Candlestick Hammer dan Hanging Man dengan CCI
MetaTrader5
MQL5 Wizard: Membuat Expert Advisor Berdasarkan Pola Candlestick Hammer dan Hanging Man dengan CCI

MQL5 Wizard adalah alat yang sangat berguna untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas pustaka standar yang disertakan bersama terminal klien. Dengan MQL5 Wizard, kamu bisa dengan cepat mengecek ide trading-mu hanya dengan membuat kelas sinyal trading milikmu sendiri. Struktur kelas ini dan contohnya dapat kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide dasarnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kamu perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode milikmu sendiri. Ada sebuah buku berjudul "Strategi Trader Terbaik" yang membahas banyak strategi trading. Kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah dengan membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Dalam artikel ini, kita akan membahas sinyal yang didasarkan pada pola candlestick "Hammer/Hanging Man", yang dikonfirmasi oleh indikator CCI. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, dan ini adalah contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick "Hammer" dan "Hanging Man" 1.1. Hammer "Hammer" adalah candlestick dengan tubuh kecil dan sumbu bawah yang panjang, terbentuk setelah pergerakan harga turun. Pola "Hammer" menunjukkan akhir dari tren bearish. Warna tubuh candlestick tidak terlalu penting, namun hammer bullish menunjukkan potensi bullish yang lebih tinggi. Tubuh pola "Hammer" biasanya terbentuk dekat minimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek meningkatkan potensi pola pembalikan ini. Fig. 1. Pola candlestick "Hammer" Pengenalan pola "Hammer" diimplementasikan dalam metode CheckPatternHammer() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Hammer" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHammer()   { //--- Hammer    if((MidPoint(1)<CloseAvg(2))                                && // down trend       (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3       (Close(1)<Close(2)) && (Open(1)<Open(2)))                    // body gap       return(true); //---    return(false);   } Pola CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hammer". 1.2. Hanging Man "Hanging Man" adalah candlestick dengan tubuh kecil dan sumbu bawah yang panjang, terbentuk setelah pergerakan harga naik. Pola "Hanging Man" menunjukkan akhir dari tren bullish. Warna tubuh candlestick tidak terlalu penting, namun candle bearish menunjukkan potensi bearish yang lebih tinggi. Tubuh pola "Hanging Man" biasanya terbentuk dekat maksimum candlestick sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek meningkatkan potensi pola pembalikan ini. Gambar 2. Pola candlestick "Hanging Man" Pengenalan pola "Hanging Man" diimplementasikan dalam metode CheckPatternHangingMan() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Hanging Man" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHangingMan()   { //--- Hanging Man    if((MidPoint(1)>CloseAvg(2))                                && // up trend       (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // body in upper 1/3       (Close(1)>Close(2)) && (Open(1)>Open(2)))                  // body gap       return(true); //---    return(false);   } Metode CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hanging Man". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator CCI. Nilai CCI harus lebih besar/kecil dari level kritis (-50 untuk posisi long dan 50 untuk posisi short). Penutupan posisi terbuka tergantung pada nilai CCI. Ini dapat dilakukan dalam 2 kasus: Jika garis CCI telah mencapai level kritis yang berlawanan (80 untuk posisi long dan -80 untuk posisi short) Jika sinyal pembalikan tidak dikonfirmasi (ketika CCI mencapai level berikut: -80 untuk posisi long dan 80 untuk posisi short) Gambar 3. Pola "Hammer", dikonfirmasi oleh indikator CCI int CH_HM_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CH_HM_CCI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Hammer" harus dikonfirmasi oleh indikator CCI: CCI(1)<-50 (nilai CCI dari bar yang telah diselesaikan terakhir harus kurang dari -50). Posisi short harus ditutup jika indikator CCI telah melintasi level kritis -80 ke atas atau melintasi level kritis 80 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CH_HM_CCI::LongCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam kasus ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam kasus ini EA memeriksa kondisi trading hanya pada bar berita    int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Hammer dan CCI<-50    if(CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (CCI(1)<-50))      result=80; //--- memeriksa kondisi untuk menutup posisi short //--- persilangan garis sinyal dari level overbought/oversold (ke bawah -80, ke bawah -80)    if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))      result=40; //--- kembalikan hasil    return(result);   } 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "Hanging Man" harus dikonfirmasi oleh indikator CCI: CCI(1)>50 (nilai CCI dari bar yang telah diselesaikan terakhir harus lebih dari 50). Posisi long harus ditutup jika indikator CCI telah melintasi ke bawah level -80 atau 80. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CH_HM_CCI::ShortCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam kasus ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam kasus ini EA memeriksa kondisi trading hanya pada bar berita    int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Hanging Man dan CCI>50    if(CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (CCI(1)>50))      result=80; //--- memeriksa kondisi untuk menutup posisi long //--- persilangan garis sinyal dari level overbought/oversold (ke bawah -80, ke bawah 80)    if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))      result=40; //--- kembalikan hasil    return(result);   } 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CH_HM_CCI tidak termasuk dalam kelas Pustaka Standar, jadi untuk menggunakannya, kamu perlu mengunduh file ach_hm_cci.mqh (lihat lampiran) dan menyimpannya di terminal_data_folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file candlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Fig. 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Fig. 5. Properti umum Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti sinyal Expert Advisor Dalam kasus ini, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul "Sinyal berdasarkan Hammer/Hanging Man yang dikonfirmasi oleh CCI": Fig. 7. Properti sinyal Expert Advisor Modul sinyal trading telah ditambahkan: Fig. 8. Properti sinyal Expert Advisor Kamu bisa memilih properti trailing mana pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Fig. 9. Properti trailing Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume tetap": Fig. 10. Properti manajemen uang Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_AH_HM_CCI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =50.0   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0   // Level Take Profit (dalam poin) harus diganti menjadi: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading kami telah menentukan nilai tetap dari ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam "rata-rata suara". Dalam kasus kami, kami memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini saat mengatur nilai ambang. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan menjadi benar. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodCCI=25, MA_period=5). Dalam pembuatan Expert Advisor, kami menggunakan volume tetap (Trading Volume Tetap, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil pengujian Expert Advisor, berdasarkan Hammer/Hanging Man + CCI Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam file expert_ah_hm_cci.mq5.

2011.03.21
MQL5 Wizard: Menghasilkan Sinyal Trading dari Pola Hammer/Hanging Man dan Stochastic
MetaTrader5
MQL5 Wizard: Menghasilkan Sinyal Trading dari Pola Hammer/Hanging Man dan Stochastic

MQL5 Wizard adalah alat yang sangat berguna untuk trader yang ingin membuat Expert Advisor (EA) dengan cepat. Dengan menggunakan MQL5 Wizard, Anda dapat menciptakan EA yang sudah jadi berdasarkan kelas Perpustakaan Standar yang disertakan dalam terminal klien MetaTrader 5. Ini sangat memudahkan untuk mengecek ide trading Anda dengan cepat, dan yang Anda perlukan hanyalah membuat kelas sinyal trading sendiri. Struktur kelas ini dan contohnya dapat Anda temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Konsep dasarnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, Anda perlu mengoverride metode virtual LongCondition() dan ShortCondition() dengan metode Anda sendiri. Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia), yang membahas banyak strategi trading, di sini kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup menulis kelas yang diturunkan dari CCandlePattern dan menambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Di sini kita akan membahas sinyal yang berdasarkan pola candlestick "Hammer/Hanging Man" yang dikonfirmasi oleh indikator Stochastic. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick. 1. Pola Candlestick "Hammer" dan "Hanging Man" 1.1. Hammer "Hammer" adalah candlestick dengan badan kecil dan sumbu bawah yang panjang, terbentuk setelah pergerakan harga menurun. Pola "Hammer" menunjukkan akhir dari tren bearish. Warna badan candlestick tidak terlalu penting, tetapi hammer bullish menunjukkan potensi bullish yang lebih tinggi. Badan pola "Hammer" biasanya terbentuk dekat dengan minimum candle sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek mengarah pada potensi pembalikan yang lebih tinggi. Gambar 1. Pola Candlestick "Hammer" Pengenalan pola "Hammer" diimplementasikan dalam metode CheckPatternHammer() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Hammer" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHammer()   { //--- Hammer    if((MidPoint(1)<CloseAvg(2))                                && // tren turun       (MathMin(Open(1),Close(1))>(High(1)-(High(1)-Low(1))/3.0)) && // badan di 1/3 atas       (Close(1)<Close(2)) && (Open(1)<Open(2)))                    // celah badan       return(true); //---    return(false);   } Pola CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hammer". 1.2. Hanging Man "Hanging Man" adalah candlestick dengan badan kecil dan sumbu bawah yang panjang, terbentuk setelah pergerakan harga naik. Pola "Hanging Man" menunjukkan akhir dari tren bullish. Warna badan candlestick juga tidak terlalu penting, tetapi candle bearish menunjukkan potensi bearish yang lebih tinggi. Badan pola "Hanging Man" biasanya terbentuk dekat dengan maksimum candle sebelumnya. Sumbu bawah yang lebih panjang dan sumbu atas yang lebih pendek mengarah pada potensi pembalikan yang lebih tinggi. Gambar 2. Pola Candlestick "Hanging Man" Pengenalan pola "Hanging Man" diimplementasikan dalam metode CheckPatternHangingMan() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Hanging Man" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternHangingMan()   { //--- Hanging Man    if((MidPoint(1)>CloseAvg(2))                                && // tren naik       (MathMin(Open(1),Close(1)>(High(1)-(High(1)-Low(1))/3.0)) && // badan di 1/3 atas       (Close(1)>Close(2)) && (Open(1)>Open(2))))                  // celah badan       return(true); //---    return(false);   } Pola CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Hanging Man". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator Stochastic Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh osilator Stochastic. Garis %D harus lebih besar/kecil dari level kritis yang sesuai (30 atau 70). Penutupan posisi terbuka tergantung pada nilai indikator %D. Ini dapat dilakukan dalam 2 kasus: jika garis %D telah mencapai level kritis yang berlawanan (80 untuk posisi long dan 20 untuk posisi short) jika sinyal pembalikan tidak dikonfirmasi (ketika garis %D mencapai level berikut: 20 untuk posisi long dan 80 untuk posisi short) Gambar 3. Pola "Hammer" yang Dikonfirmasi oleh Indikator Stochastic int CH_HM_Stoch::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CH_HM_Stoch::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Hammer" harus dikonfirmasi oleh Indikator Stochastic: StochSignal(1)<30 (nilai garis sinyal dari indikator Stochastic pada bar terakhir yang selesai harus kurang dari 30). Posisi short harus ditutup jika garis sinyal dari Indikator Stochastic telah melintasi level 20 atau 80 ke atas. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi long, hasil=80) | //| 2) Keluar pasar (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CH_HM_Stoch::LongCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita   int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Hammer dan garis sinyal<30   if (CheckCandlestickPattern(CANDLE_PATTERN_HAMMER) && (StochSignal(1)<30))      result=80; //--- memeriksa kondisi untuk menutup posisi short //--- silang garis sinyal dari level overbought/oversold (turun 20, naik 80)    if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||        ((StochSignal(1)>80) && (StochSignal(2)<80))))      result=40; //--- mengembalikan hasil    return(result);   } 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "Hanging Man" harus dikonfirmasi oleh Indikator Stochastic: StochSignal(1)>70 (nilai garis sinyal dari indikator Stochastic pada bar terakhir yang selesai harus lebih besar dari 70). Posisi long harus ditutup jika garis sinyal dari Indikator Stochastic telah melintasi level 80 atau 20 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi short, hasil=80) | //| 2) Keluar pasar (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CH_HM_Stoch::ShortCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita   int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Hanging Man dan garis sinyal>70   if (CheckCandlestickPattern(CANDLE_PATTERN_HANGING_MAN) && (StochSignal(1)>70))      result=80; //--- memeriksa kondisi untuk menutup posisi long //--- silang garis sinyal dari level overbought/oversold (turun 80, naik 20)    if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||        ((StochSignal(1)<20) && (StochSignal(2)>20))))      result=40; //--- mengembalikan hasil    return(result);   } 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CH_HM_Stoch tidak termasuk dalam kelas Perpustakaan Standar, untuk menggunakannya, Anda perlu mengunduh file ach_hm_stoch.mqh (lihat lampiran) dan menyimpannya di terminal_klien_data\folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan file candlepatterns.mqh. Anda dapat menggunakannya di MQL5 Wizard setelah me-restart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Gambar 4. Membuat Expert Advisor menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal berdasarkan Hammer/Hanging Man yang Dikonfirmasi oleh Stochastic: Gambar 7. Properti Sinyal Expert Advisor Modul sinyal trading ditambahkan: Gambar 8. Properti Sinyal Expert Advisor Anda dapat memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap": Gambar 10. Properti Manajemen Uang Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode Expert Advisor yang dihasilkan, yang terletak di Expert_AH_HM_Stoch.mq5, dan akan disimpan di folder terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =50.0   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0  // Level Take Profit (dalam poin)harus diganti dengan: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap untuk ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() dari modul ini selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, artinya penutupan posisi hanya akan dilakukan ketika kondisi penutupan benar. 2.4. Hasil Backtesting Sejarah Mari kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan Hammer/Hanging Man + Stochastic Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_ah_hm_stoch.mq5.

2011.03.21
Mengenal MQL5 Wizard: Menggunakan Sinyal Bullish Harami/Bearish Harami dan RSI untuk Trading
MetaTrader5
Mengenal MQL5 Wizard: Menggunakan Sinyal Bullish Harami/Bearish Harami dan RSI untuk Trading

MQL5 Wizard adalah alat yang sangat berguna untuk para trader yang ingin membuat Expert Advisor (EA) dengan mudah. Dengan MQL5 Wizard, kamu bisa membuat EA berdasarkan kelas perpustakaan standar yang sudah disediakan. Alat ini memungkinkan kamu untuk menguji ide trading dengan cepat, cukup dengan membuat kelas sinyal trading sendiri. Struktur dan contoh kelas ini bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Dasar dari ide ini adalah kelas sinyal trading yang diturunkan dari CExpertSignal. Selanjutnya, kamu perlu mengoverride metode LongCondition() dan ShortCondition() dengan metode kamu sendiri. Ada sebuah buku yang berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Namun, di sini kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh indikator RSI. 1. Pola Candlestick Bullish Harami dan Bearish Harami 1.1. Bullish Harami Pola Bullish Harami terbentuk dalam tren menurun ketika candlestick besar diikuti oleh candlestick lebih kecil yang bodynya berada di dalam rentang vertikal bodi yang lebih besar. Pola ini menandakan bahwa tren turun mungkin akan berbalik, sehingga menjadi waktu yang baik untuk masuk posisi long. Candlestick kedua dibuka dengan gap naik. Gambar 1. Pola Candlestick Bullish Harami Pengenalan pola Bullish Harami diterapkan dalam metode CheckPatternBullishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick Bullish Harami | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))              && // bar terakhir bullish      ((Open(2)-Close(2))>AvgBody(1))  && // candlestick sebelumnya bearish      ((Close(1)<Open(2))              && // harga penutupan candle bullish lebih rendah dari harga pembukaan candle bearish       (Open(1)>Close(2)))              && // harga pembukaan candle bullish lebih tinggi dari harga penutupan candle bearish       (MidPoint(2)<CloseAvg(2)))         // tren turun       return(true); //---    return(false);   } Metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola Bullish Harami. 1.2. Bearish Harami Pola Bearish Harami terbentuk dalam tren naik ketika candlestick besar diikuti oleh candlestick lebih kecil yang bodynya berada di dalam rentang vertikal bodi yang lebih besar. Pola ini menandakan bahwa tren naik mungkin akan berbalik, dan menjadi waktu yang baik untuk masuk posisi short. Candlestick kedua dibuka dengan gap turun. Gambar 2. Pola Candlestick Bearish Harami Pengenalan pola Bearish Harami diterapkan dalam metode CheckPatternBearishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick Bearish Harami | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))              && // bar terakhir bearish      ((Close(2)-Open(2))>AvgBody(1))  && // candlestick sebelumnya bullish      ((Close(1)>Open(2))              && // harga penutupan candle bearish lebih tinggi dari harga pembukaan candle bullish       (Open(1)<Close(2)))              && // harga pembukaan candle bearish lebih rendah dari harga penutupan candle bullish       (MidPoint(2)>CloseAvg(2)))         // tren naik       return(true); //---    return(false);   } Metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola Bearish Harami. 2. Sinyal Trading yang Dikonfirmasi oleh Indikator RSI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus lebih rendah/lebih tinggi dari level kritis (40 untuk posisi long dan 60 untuk posisi short). Penutupan posisi yang terbuka tergantung pada nilai RSI. Penutupan bisa dilakukan dalam 2 kasus: jika RSI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) jika sinyal balik tidak terkonfirmasi (ketika RSI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Gambar 3. Pola Bullish Harami, Dikonfirmasi oleh Indikator RSI int CBH_BH_RSI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBH_BH_RSI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Buka Posisi Long/Tutup Posisi Short Pembentukan pola "Bullish Harami" harus dikonfirmasi oleh indikator RSI: RSI(1)<40 (nilai RSI dari bar yang diselesaikan terakhir harus kurang dari 40). Posisi short harus ditutup jika indikator RSI telah melewati level kritis 70 atau 30 ke atas. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_RSI::LongCondition()   {    int result=0;    //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor    //--- idx=0 - EA memeriksa kondisi trading pada setiap tick    //--- idx=1 - EA memeriksa kondisi trading hanya pada bar berita    int idx   =StartIndex();    //--- memeriksa kondisi untuk membuka posisi long    //--- pembentukan pola Bullish Harami dan RSI<30   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (RSI(1)<40))      result=80;    //--- memeriksa kondisi untuk menutup posisi short    //--- crossover garis sinyal level jenuh beli/jenuh jual (ke atas 30, ke atas 70)   if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))      result=40;    //--- mengembalikan hasil    return(result);   } 2.2. Buka Posisi Short/Tutup Posisi Long Pembentukan pola "Bearish Harami" harus dikonfirmasi oleh indikator RSI: RSI(1)>60 (nilai RSI dari bar yang diselesaikan terakhir harus lebih besar dari 60). Posisi long harus ditutup jika indikator RSI telah melewati level kritis 70 atau 30 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_RSI::ShortCondition()   {    int result=0;    //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor    //--- idx=0 - EA memeriksa kondisi trading pada setiap tick    //--- idx=1 - EA memeriksa kondisi trading hanya pada bar berita    int idx   =StartIndex();    //--- memeriksa kondisi untuk membuka posisi short    //--- pembentukan pola Bearish Harami dan RSI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (RSI(1)>60))      result=80;    //--- memeriksa kondisi untuk menutup posisi long    //--- crossover garis sinyal level jenuh beli/jenuh 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. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBH_BH_RSI tidak termasuk dalam kelas Perpustakaan Standar, untuk menggunakannya, kamu perlu mengunduh berkas acml_rsi.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk berkas acandlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah me-restart MetaEditor. Untuk membuat Expert Advisor, luncurkan MQL5 Wizard: Gambar 4. Membuat Expert Advisor dengan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal Berdasarkan Bullish Harami/Bearish Harami yang Dikonfirmasi oleh RSI: Gambar 7. Properti Sinyal Expert Advisor Modul sinyal trading telah ditambahkan: Gambar 8. Properti Sinyal Expert Advisor Kamu bisa memilih properti trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume tetap": Gambar 10. Properti Manajemen Uang Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, disimpan di Expert_ABH_BH_RSI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari 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;    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =50.0;   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0;  // Level Take Profit (dalam poin) harus diganti menjadi: //--- 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;    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =0.0;    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menetapkan nilai tetap dari ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() dari modul utama selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam "rata-rata suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.11, PeriodRSI=37, MA_period=7). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan Bullish Harami/Bearish Harami + RSI Set parameter input terbaik bisa ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_aml_rsi.mq5.

2011.03.17
Menggunakan MQL5 Wizard untuk Menghasilkan Expert Advisor Berdasarkan Pola Bullish/Bearish Harami dan MFI
MetaTrader5
Menggunakan MQL5 Wizard untuk Menghasilkan Expert Advisor Berdasarkan Pola Bullish/Bearish Harami dan MFI

MQL5 Wizard adalah alat yang sangat berguna untuk trader yang ingin membuat Expert Advisor (EA) siap pakai berdasarkan kelas yang disediakan dalam MQL5 Wizard. Dengan alat ini, kamu bisa mengecek ide trading dengan cepat hanya dengan membuat kelas sinyal trading milikmu sendiri. Struktur dari kelas ini beserta contohnya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide umumnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kamu perlu mengoverride metode virtual LongCondition() dan ShortCondition() dengan metode milikmu sendiri. Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Di sini, kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, kamu cukup menulis kelas yang diturunkan dari CCandlePattern dan menambahkan fitur yang diperlukan (misalnya, konfirmasi dengan osilator). Di sini, kita akan membahas sinyal yang berdasarkan pola candlestick pembalikan Bullish Harami dan Bearish Harami, yang dikonfirmasi oleh indikator Market Facilitation Index (MFI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick. 1. Pola Candlestick Bullish Harami dan Bearish Harami 1.1. Bullish Harami Pola pembalikan Bullish Harami terbentuk dalam tren menurun ketika candlestick besar diikuti oleh candlestick kecil yang tubuhnya terletak dalam kisaran vertikal tubuh yang lebih besar. Pola ini menunjukkan bahwa tren menurun mungkin akan berbalik, dan mengisyaratkan bahwa ini adalah waktu yang baik untuk masuk ke posisi long. Candlestick kedua dibuka dengan gap ke atas. Semakin kecil candlestick kedua (putih), semakin besar kemungkinan pembalikan terjadi. Gambar 1. Pola Bullish Harami Pengakuan pola "Bullish Harami" diterapkan dalam metode CheckPatternBullishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bullish Harami" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami     if((Close(1)>Open(1))              &&     ((Open(2)-Close(2)>AvgBody(1))  &&     ((Close(1)<Open(2))              &&       (Open(1)>Close(2)))              &&       (MidPoint(2)<CloseAvg(2)))       return(true); //---     return(false);   } Metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bullish Harami". 1.2. Bearish Harami Pola pembalikan Bearish Harami terbentuk dalam tren naik ketika candlestick besar diikuti oleh candlestick kecil yang tubuhnya terletak dalam kisaran vertikal tubuh yang lebih besar. Pola ini menunjukkan bahwa tren naik mungkin akan berbalik, dan mengisyaratkan bahwa ini adalah waktu yang baik untuk masuk ke posisi short. Candlestick kedua dibuka dengan gap ke bawah. Semakin kecil candlestick kedua (hitam), semakin besar kemungkinan pembalikan terjadi. Gambar 2. Pola Bearish Harami Pengakuan pola "Bearish Harami" diterapkan dalam metode CheckPatternBearishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bearish Harami" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami     if((Close(1)<Open(1))              &&     ((Close(2)-Open(2)>AvgBody(1))  &&     ((Close(1)>Open(2))              &&       (Open(1)<Close(2)))              &&       (MidPoint(2)>CloseAvg(2)))       return(true); //---     return(false);   } Metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bearish Harami". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator MFI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator MFI. Nilai indikator MFI harus kurang dari 40 (untuk posisi long) atau lebih dari 60 (untuk posisi short). Penutupan posisi yang dibuka tergantung pada nilai indikator MFI. Ini dapat dilakukan dalam 2 kasus: jika MFI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) jika sinyal pembalikan tidak dikonfirmasi (ketika indikator MFI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Gambar 3. Pola Bullish Harami, Dikonfirmasi oleh Indikator MFI int CBH_BH_MFI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBH_BH_MFI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka posisi long/Menutup posisi short Pembentukan pola "Bullish Harami" harus dikonfirmasi oleh MFI indikator: MFi(1)<40 (nilai indikator MFI dari bar yang telah selesai harus kurang dari 40). Posisi short harus ditutup jika MFI indikator telah melewati level kritis ke atas (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi long, hasil=80) | //| 2) Keluar pasar (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_MFI::LongCondition()   {     int result=0;     //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor     //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick     //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita     int idx   =StartIndex();     //--- memeriksa kondisi untuk membuka posisi long     //--- pembentukan pola Bullish Harami dan MFI<40     if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (MFI(1)<40))        result=80;     //--- memeriksa kondisi untuk menutup posisi short     //--- persilangan garis sinyal dari level 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 Pembentukan pola "Bearish Harami" harus dikonfirmasi oleh MFI indikator: MFI(1)>60 (nilai indikator MFI dari bar yang telah selesai harus lebih dari 60). Posisi long harus ditutup jika MFI indikator telah melewati level kritis ke atas (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi short, hasil=80) | //| 2) Keluar pasar (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_MFI::ShortCondition()   {     int result=0;     //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor     //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick     //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita     int idx   =StartIndex();     //--- memeriksa kondisi untuk membuka posisi short     //--- pembentukan pola Bearish Harami dan MFI>60     if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (MFI(1)>60))        result=80;     //--- memeriksa kondisi untuk menutup posisi long     //--- persilangan garis sinyal dari level 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 CBH_BH_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu mengunduh file abh_bh_mfi.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama perlu dilakukan dengan file acandlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, luncurkan MQL5 Wizard: Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum Expert Advisor Setelah itu kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul "Sinyal Berdasarkan Bullish Harami/Bearish Harami yang Dikonfirmasi oleh MFI": Gambar 7. Properti Sinyal Expert Advisor Modul sinyal trading telah ditambahkan: Gambar 8. Properti Sinyal Expert Advisor Kamu bisa memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap": Gambar 10. Properti Manajemen Uang Expert Advisor Dengan menekan tombol "Finish", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, terletak di Expert_ABH_BH_MFI.mq5, yang akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input untuk sinyal utama input int            Signal_ThresholdOpen   =10;     // Nilai threshold sinyal untuk membuka [0...100] input int            Signal_ThresholdClose  =10;     // Nilai threshold sinyal untuk menutup [0...100] input double         Signal_PriceLevel      =0.0;    // Level harga untuk mengeksekusi deal input double         Signal_StopLevel       =50.0   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0   // Level Take Profit (dalam poin) harus diganti menjadi: //--- inputs untuk sinyal utama input int            Signal_ThresholdOpen   =40;     // Nilai threshold sinyal untuk membuka [0...100] input int            Signal_ThresholdClose  =20     // Nilai threshold sinyal untuk menutup [0...100] input double         Signal_PriceLevel      =0.0    // Level harga untuk mengeksekusi deal input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level threshold untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading kita telah menentukan nilai tetap dari threshold: Membuka posisi: 80; Menutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() dari modul utama selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam "rata-rata suara". Dalam kasus kita, terdapat modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini saat menetapkan nilai threshold. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan benar. 2.4. Hasil Backtesting Historis Mari kita pertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=11). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan Bullish Harami/Bearish Harami + MFI Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_abh_bh_mfi.mq5.

2011.03.17
MQL5 Wizard: Ciptakan Sinya Trading Berdasarkan Bullish Harami/Bearish Harami dan CCI
MetaTrader5
MQL5 Wizard: Ciptakan Sinya Trading Berdasarkan Bullish Harami/Bearish Harami dan CCI

MQL5 Wizard adalah alat yang memungkinkan kita untuk menciptakan Expert Advisor (EA) siap pakai berdasarkan kelas-kelas dari Standard Library yang disediakan bersama terminal klien. Dengan MQL5 Wizard, kita bisa dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading sendiri. Struktur kelas ini beserta contohnya dapat ditemukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Secara umum, ide dasarnya adalah: kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kita perlu mengoverride metode LongCondition() dan ShortCondition() dengan metode kita sendiri. Ada sebuah buku berjudul "Strategi Para Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Fokus kita kali ini adalah pola candlestick pembalikan, yang dikonfirmasi oleh indikator Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Di sini, kita akan membahas sinyal yang didasarkan pada pola candlestick pembalikan "Bullish Harami/Bearish Harami", yang dikonfirmasi oleh indikator CCI. Modul sinyal trading ini berbasis pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick. 1. Pola Candlestick Pembalikan: "Bullish Harami" dan "Bearish Harami" 1.1. Bullish Harami Pola Bullish Harami terbentuk dalam tren menurun, ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren menurun mungkin sedang berbalik, dan menandakan waktu yang baik untuk masuk posisi long. Candlestick kedua dibuka dengan gap ke atas. Semakin kecil candlestick kedua (putih), semakin besar kemungkinan terjadinya pembalikan. Gambar 1. Pola Candlestick "Bullish Harami" Pengenalan pola "Bullish Harami" diimplementasikan dalam metode CheckPatternBullishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bullish Harami" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))       && // bar terakhir yang selesai adalah bullish (hari putih)      ((Open(2)-Close(2)>AvgBody(1))       && // candle sebelumnya bearish, tubuhnya lebih besar dari rata-rata (hitam panjang)      ((Close(1)<Open(2))       && // harga penutupan candle bullish lebih rendah dari harga pembukaan candle bearish       (Open(1)>Close(2)))       && // harga pembukaan candle bullish lebih tinggi dari harga penutupan candle bearish       (MidPoint(2)<CloseAvg(2)))       return(true); //---    return(false);   } Pola candlestick "Bullish Harami" dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern. 1.2. Bearish Harami Pola Bearish Harami terbentuk dalam tren naik, ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren naik mungkin sedang berbalik, dan menandakan waktu yang baik untuk masuk posisi short. Candlestick kedua dibuka dengan gap ke bawah. Semakin kecil candlestick kedua (hitam), semakin besar kemungkinan terjadinya pembalikan. Gambar 2. Pola Candlestick "Bearish Harami" Pengenalan pola "Bearish Harami" diimplementasikan dalam metode CheckPatternBearishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bearish Harami" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))       && // bar terakhir yang selesai adalah bearish (hari hitam)      ((Close(2)-Open(2)>AvgBody(1))       && // candle sebelumnya bullish, tubuhnya lebih besar dari rata-rata (putih panjang)      ((Close(1)>Open(2))       && // harga penutupan candle bearish lebih tinggi dari harga pembukaan candle bullish       (Open(1)<Close(2)))       && // harga pembukaan candle bearish lebih rendah dari harga penutupan candle bullish       (MidPoint(2)>CloseAvg(2)))       return(true); //---    return(false);   } Pola candlestick "Bearish Harami" dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern. 2. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator CCI. Nilai dari CCI harus lebih besar/kecil dari level kritis (-50 untuk posisi long dan 50 untuk posisi short). Penutupan posisi yang dibuka bergantung pada nilai CCI. Ini dapat dilakukan dalam 2 kasus: jika garis CCI telah mencapai level kritis yang berlawanan (80 untuk posisi long dan -80 untuk posisi short) jika sinyal revers tidak terkonfirmasi (ketika CCI mencapai level berikut: -80 untuk posisi long dan 80 untuk posisi short) Gambar 3. Pola "Bullish Harami", dikonfirmasi oleh indikator CCI int CBH_BH_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBH_BH_CCI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Bullish Harami" harus dikonfirmasi oleh indikator CCI: CCI(1)<-50 (nilai CCI dari bar terakhir yang selesai harus kurang dari -50). Posisi short harus ditutup jika indikator CCI telah melintasi ke atas level kritis -80 atau melintasi ke bawah level kritis 80. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_CCI::LongCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita    int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Bullish Harami dan CCI<-50    if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (CCI(1)<-50))      result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal dari level 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 Short/Menutup Posisi Long Pembentukan pola "Bearish Harami" harus dikonfirmasi oleh indikator CCI: CCI(1)>50 (nilai dari indikator CCI dari bar terakhir yang selesai harus lebih dari 50). Posisi long harus ditutup jika indikator CCI telah melintasi ke bawah level -80 atau 80. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_CCI::ShortCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita    int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Bearish Harami dan CCI>50    if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (CCI(1)>50))      result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal dari level 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. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBH_BH_CCI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kita perlu mengunduh file acbh_bh_cci.mqh (lihat lampiran) dan menyimpannya di folder terminal_data_client\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file candlepatterns.mqh. Kita bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum dari Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal dari Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal Berdasarkan Bullish Harami/Bearish Harami yang Dikonfirmasi oleh CCI: Gambar 7. Properti Sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Gambar 8. Properti Sinyal dari Expert Advisor Anda dapat memilih properti trailing mana pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing dari Expert Advisor Terkait dengan properti manajemen uang, kita akan menggunakan "Trading dengan volume tetap": Gambar 10. Properti Manajemen Uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABH_BH_CCI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input 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;    // Level harga untuk mengeksekusi deal input double         Signal_StopLevel       =50.0;   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0   // Level Take Profit (dalam poin)harus diganti menjadi: //--- input 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    // Level harga untuk mengeksekusi deal input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode dari metode LongCondition() dan ShortCondition() kelas sinyal trading, kita telah menetapkan nilai tetap untuk ambang: Posisi Buka: 80; Posisi Tutup: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, yang terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, terdapat: modul utama + 1 modul sinyal trading, sehingga kita perlu memperhatikan hal ini saat mengatur nilai ambang. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diset ke 0, artinya penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodCCI=11, MA_period=5). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Bullish Harami/Bearish Harami + CCI Set parameter input terbaik dapat ditemukan dengan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_abh_bh_cci.mq5.

2011.03.17
MQL5 Wizard: Membuat EA Berdasarkan Pola Bullish/Bearish Harami dan Stochastic
MetaTrader5
MQL5 Wizard: Membuat EA Berdasarkan Pola Bullish/Bearish Harami dan Stochastic

Halo, Sobat Trader! Di kesempatan kali ini, kita akan membahas tentang MQL5 Wizard, sebuah alat yang memungkinkan kita untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas-kelas dari Standard Library yang disertakan dengan terminal klien. Dengan ini, kita bisa dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading sendiri. Struktur kelas ini dan contoh penggunaannya bisa kita temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Konsep dasarnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kita perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode kita sendiri. Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk konfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup tulis kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Di sini, kita akan membahas sinyal berdasarkan pola candlestick pembalikan "Bullish Harami/Bearish Harami" yang dikonfirmasi oleh indikator Stochastic. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick Pembalikan "Bullish Harami" dan "Bearish Harami" 1.1. Bullish Harami Pola Bullish Harami terbentuk dalam tren turun ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak di dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren menurun mungkin akan berbalik, dan memberikan sinyal bahwa ini adalah waktu yang baik untuk masuk posisi long. Candlestick kedua dibuka dengan gap naik. Semakin kecil candlestick kedua (putih), semakin besar kemungkinan terjadinya pembalikan. Fig. 1. Pola candlestick Bullish Harami Pengakuan pola "Bullish Harami" diimplementasikan dalam metode CheckPatternBullishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Bullish Harami" candlestick | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishHarami()   { //--- Bullish Harami    if((Close(1)>Open(1))              && // bar terakhir yang selesai bullish (hari putih)      ((Open(2)-Close(2)>AvgBody(1))  && // candlestick sebelumnya bearish, tubuhnya lebih besar dari rata-rata (hitam panjang)      ((Close(1)<Open(2))              && // harga penutupan candlestick bullish lebih rendah dari harga pembukaan candlestick bearish       (Open(1)>Close(2)))             && // harga pembukaan candlestick bullish lebih tinggi dari harga penutupan candlestick bearish       (MidPoint(2)<CloseAvg(2)))         // tren turun       return(true); //---    return(false);   } Metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bullish Harami". 1.2. Bearish Harami Pola Bearish Harami terbentuk dalam tren naik ketika candlestick besar diikuti oleh candlestick lebih kecil yang tubuhnya terletak di dalam rentang vertikal dari tubuh yang lebih besar. Pola ini menunjukkan bahwa tren naik mungkin akan berbalik, dan memberikan sinyal bahwa ini adalah waktu yang baik untuk masuk posisi short. Candlestick kedua dibuka dengan gap turun. Semakin kecil candlestick kedua (hitam), semakin besar kemungkinan terjadinya pembalikan. Fig. 2. Pola candlestick Bearish Harami Pengakuan pola "Bearish Harami" diimplementasikan dalam metode CheckPatternBearishHarami() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Bearish Harami" candlestick | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishHarami()   { //--- Bearish Harami    if((Close(1)<Open(1))              && // bar terakhir yang selesai bearish (hari hitam)      ((Close(2)-Open(2)>AvgBody(1))  && // candlestick sebelumnya bullish, tubuhnya lebih besar dari rata-rata (putih panjang)      ((Close(1)>Open(2))              && // harga penutupan candlestick bearish lebih tinggi dari harga pembukaan candlestick bullish      (Open(1)<Close(2)))             && // harga pembukaan candlestick bearish lebih rendah dari harga penutupan candlestick bullish       (MidPoint(2)>CloseAvg(2)))         // tren naik       return(true); //---    return(false);   } Metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Bearish Harami". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator Stochastic Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator Stochastic. Garis sinyal %D harus lebih besar/kecil dari level kritis yang sesuai (30 atau 70). Penutupan posisi yang dibuka tergantung pada nilai indikator %D. Ini dapat dilakukan dalam 2 kasus: jika garis %D telah mencapai level kritis yang berlawanan (80 untuk posisi long dan 20 untuk posisi short) jika sinyal pembalikan tidak terkonfirmasi (ketika garis %D mencapai level berikutnya: 20 untuk posisi long dan 80 untuk posisi short) Gambar 3. Pola Bearish Harami, dikonfirmasi oleh indikator StochasticPemeriksaan kondisi trading untuk entry dan exit diimplementasikan dalam dua metode: int CBH_BH_Stoch::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBH_BH_Stoch::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka posisi long/Menutup posisi short Pembentukan pola "Bullish Harami" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)<30 (nilai garis sinyal indikator Stochastic dari bar terakhir yang selesai harus kurang dari 30). Posisi short harus ditutup jika garis sinyal indikator Stochastic telah melintasi ke atas level 20 atau 80. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk entry dan exit dari pasar | //| 1) Market entry (membuka posisi long, hasil=80) | //| 2) Market exit (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_Stoch::LongCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita   int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Bullish Harami dan garis sinyal<30   if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (StochSignal(1)<30))      result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal level overbought/oversold (ke bawah 20, ke atas 80)    if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||        ((StochSignal(1)>80) && (StochSignal(2)<80))))      result=40; //--- mengembalikan hasil    return(result);   } 2.2. Membuka posisi short/Menutup posisi long Pembentukan pola "Bearish Harami" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)>70 (nilai garis sinyal indikator Stochastic dari bar terakhir yang selesai harus lebih dari 70). Posisi long harus ditutup jika garis sinyal indikator Stochastic telah melintasi ke bawah level 80 atau 20. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk entry dan exit dari pasar | //| 1) Market entry (membuka posisi short, hasil=80) | //| 2) Market exit (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBH_BH_Stoch::ShortCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita   int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Bearish Harami dan garis sinyal>70   if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (StochSignal(1)>70))      result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal level overbought/oversold (ke bawah 80, ke atas 20)    if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||        ((StochSignal(1)<20) && (StochSignal(2)>20))))      result=40; //--- mengembalikan hasil    return(result);   } 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBH_BH_Stoch tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu mengunduh file acbh_bh_stoch.mqh (lihat lampiran) dan simpan di client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan file candlepatterns.mqh. Anda dapat menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Fig. 4. Membuat Expert Advisor menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Fig. 5. Properti umum dari Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti sinyal dari Expert Advisor Dalam kasus kita, hanya satu modul sinyal trading yang digunakan. Menambahkan modul "Sinyal Berdasarkan Bullish Harami/Bearish Harami Dikonfirmasi oleh Stochastic" dari sinyal trading: Fig. 7. Properti sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Fig. 8. Properti sinyal dari Expert Advisor Anda dapat memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Fig. 9. Properti trailing dari Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap": Fig. 10. Properti manajemen uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABH_BH_Stoch.mq5, yang akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =50.0   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0   // Level Take Profit (dalam poin) harus diganti menjadi: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode dari metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap dari ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() nya selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, ada: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2. Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, artinya penutupan posisi hanya akan dilakukan ketika kondisi penutupan menjadi benar. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5). Dalam pembuatan Expert Advisor kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Fig. 11. Hasil pengujian dari Expert Advisor, berdasarkan "Bullish/Bearish Harami + Stochastic" Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5.Kode dari Expert Advisor, yang dibuat oleh MQL5 Wizard terlampir dalam expert_abh_bh_stoch.mq5.

2011.03.16
MQL5 Wizard: Ciptakan Sinyal Trading dengan Bullish/Bearish Engulfing dan RSI
MetaTrader5
MQL5 Wizard: Ciptakan Sinyal Trading dengan Bullish/Bearish Engulfing dan RSI

MQL5 Wizard adalah alat yang sangat berguna untuk trader yang ingin membuat Expert Advisors (EA) siap pakai berdasarkan Standar Kelas Perpustakaan yang disertakan dengan terminal klien. Dengan alat ini, kamu bisa cepat mengecek ide trading kamu hanya dengan membuat kelas sinyal tradingmu sendiri. Struktur kelas ini dan contoh penggunaannya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide dasarnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kamu perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode milikmu sendiri. Ada sebuah buku yang berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang mengulas banyak strategi trading. Di sini kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI oscillator. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk konfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh oscillator). Di sini kita akan mempertimbangkan sinyal berdasarkan pola candlestick pembalikan "Bullish Engulfing/Bearish Engulfing" yang dikonfirmasi oleh indikator RSI. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. "Bullish Engulfing" dan "Bearish Engulfing" 1.1. Bullish Engulfing Polanya "Bullish Engulfing" terbentuk dalam tren turun ketika candlestick hitam kecil diikuti oleh candlestick putih besar yang sepenuhnya menutupi ("menggenggam") candlestick hari sebelumnya. Bayangan (ekor) dari candlestick kecil tersebut pendek, yang memungkinkan tubuh candlestick besar menutupi seluruh candlestick dari hari sebelumnya. Fig. 1. Pola Candlestick Bullish Engulfing Pengenalan pola "Bullish Engulfing" diimplementasikan dalam metode CheckPatternBullishEngulfing() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bullish Engulfing" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing()   { //--- Bullish Engulfing    if((Open(2)>Close(2))              &&  // candlestick sebelumnya bearish       (Close(1)-Open(1)>AvgBody(1))  &&  // tubuh candlestick bullish lebih tinggi dari rata-rata       (Close(1)>Open(2))             &&  // harga penutupan candlestick bullish lebih tinggi dari harga pembukaan bearish       (MidOpenClose(2)<CloseAvg(2))  &&  // tren turun       (Open(1)<Close(2)))                // harga pembukaan candlestick bullish lebih rendah dari harga penutupan bearish       return(true); //---    return(false);   } Pola "Bullish Engulfing" diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) dari kelas CCandlePattern. 1.2. Bearish Engulfing Pola "Bearish Engulfing" terbentuk dalam tren naik ketika candlestick putih kecil diikuti oleh candlestick hitam besar yang sepenuhnya menutupi ("menggenggam") candlestick hari sebelumnya. Bayangan dari candlestick kecil tersebut juga pendek, memungkinkan tubuh candlestick besar menutupi seluruh candlestick dari hari sebelumnya. Fig. 2. Pola Candlestick Bearish Engulfing Pengenalan pola "Bearish Engulfing" diimplementasikan dalam metode CheckPatternBearishEngulfing() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bearish Engulfing" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- Bearish Engulfing    if((Open(2)<Close(2))              &&  // candlestick sebelumnya bullish       (Open(1)-Close(1)>AvgBody(1)) &&  // tubuh candlestick bearish lebih tinggi dari rata-rata       (Close(1)<Open(2))            &&  // harga penutupan candlestick bearish lebih rendah dari harga pembukaan bullish       (MidOpenClose(2)>CloseAvg(2)) &&  // tren naik       (Open(1)>Close(2)))               // Harga pembukaan candlestick bearish lebih tinggi dari harga penutupan bullish       return(true); //---    return(false);   } Pola "Bearish Engulfing" diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) dari kelas CCandlePattern. 2. Sinyal Trading yang Dikonfirmasi oleh Indikator RSI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus lebih rendah/lebih tinggi dari level kritis (40 untuk posisi long dan 60 untuk posisi short). Penutupan posisi yang dibuka tergantung pada nilai RSI. Ini dapat dilakukan dalam 2 kasus: jika RSI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) jika sinyal pembalikan tidak terkonfirmasi (ketika RSI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Fig. 3. Pola Bullish Engulfing, Dikonfirmasi oleh Indikator RSI int CBE_BE_RSI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBE_BE_RSI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Bullish Engulfing" harus dikonfirmasi oleh indikator RSI: RSI(1)<40 (nilai RSI dari bar yang telah selesai terakhir harus kurang dari 40). Posisi short harus ditutup jika indikator RSI telah melintasi level kritis 70 atau 30 ke atas. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk ke pasar (buka posisi long, hasil=80) | //| 2) Keluar dari pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_RSI::LongCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja EA //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya di bar berita    int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Bullish Engulfing dan RSI<30   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1)<40))      result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal level overbought/oversold (ke atas 30, ke atas 70)   if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))      result=40; //--- mengembalikan hasil    return(result);   } 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "Bearish Engulfing" harus dikonfirmasi oleh indikator RSI: RSI(1)>60 (nilai dari indikator RSI bar terakhir harus lebih dari 60). Posisi long harus ditutup jika indikator RSI telah melintasi level kritis 70 atau 30 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk ke pasar (buka posisi short, hasil=80) | //| 2) Keluar dari pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_RSI::ShortCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja EA //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya di bar berita    int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Bearish Engulfing dan RSI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1)>60))      result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal level overbought/oversold (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. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBE_BE_RSI tidak termasuk dalam kelas Perpustakaan Standar, untuk menggunakannya, perlu mengunduh file acml_rsi.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file acandlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah me-restart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Fig. 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Fig. 5. Properti Umum Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti Sinyal Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal Berdasarkan Bullish Engulfing/Bearish Engulfing yang Dikonfirmasi oleh RSI: Fig. 7. Properti Sinyal Expert Advisor Modul sinyal trading telah ditambahkan: Fig. 8. Properti Sinyal Expert Advisor Kamu bisa memilih properti trailing apapun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Fig. 9. Properti Manajemen Uang Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume tetap": Fig. 10. Properti Manajemen Uang Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABE_BE_RSI.mq5, akan disimpan di folder terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =50.0   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0   // Level Take Profit (dalam poin) harus diganti menjadi: //--- input 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    // Level harga untuk mengeksekusi transaksi input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menetapkan nilai tetap ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam perhitungan rata-rata "suara". Dalam kasus kita, terdapat modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur masing-masing menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Ayo kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.04, PeriodRSI=11, MA_period=5). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Fig. 11. Hasil Pengujian Expert Advisor, Berdasarkan Bullish Engulfing/Bearish Engulfing + RSI Set terbaik dari parameter input bisa ditemukan menggunakan Penguji Strategi di terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_abe_be_rsi.mq5.

2011.03.10
Panduan Lengkap Membuat EA dengan MQL5 Wizard: Sinyal Trading Bullish dan Bearish Engulfing + MFI
MetaTrader5
Panduan Lengkap Membuat EA dengan MQL5 Wizard: Sinyal Trading Bullish dan Bearish Engulfing + MFI

Mungkin kamu sudah tahu bahwa MQL5 Wizard adalah alat yang sangat berguna untuk menciptakan Expert Advisors (EA) yang siap pakai. Dengan menggunakan kelas dari Standard Library yang disediakan bersama terminal klien, kamu bisa dengan cepat memeriksa ide trading kamu. Yang perlu kamu lakukan hanyalah membuat kelas sinyal trading kamu sendiri. Struktur kelas ini dan contohnya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide umumnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kamu perlu mengoverride metode LongCondition() dan ShortCondition() dengan metode milikmu sendiri. Sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) membahas banyak strategi trading, dan kali ini kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Lebih baik lagi jika kamu membuat kelas tersendiri yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan dari pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Kita akan membahas sinyal yang berbasis pada pola candlestick pembalikan "Bullish Engulfing/Bearish Engulfing" yang dikonfirmasi oleh indikator Market Facilitation Index (MFI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick. 1. Pola Candlestick "Bullish Engulfing" dan "Bearish Engulfing" 1.1. Bullish Engulfing Pola "Bullish Engulfing" terbentuk dalam tren turun ketika candlestick hitam kecil diikuti oleh candlestick putih besar yang sepenuhnya menutupi ("menggenggam") candlestick dari hari sebelumnya. Bayangan (ekor) dari candlestick kecil tersebut pendek, sehingga tubuh candlestick besar dapat menutupi seluruh candlestick dari hari sebelumnya. Fig. 1. Pola candlestick Bullish Engulfing Pengenalan pola "Bullish Engulfing" dilakukan dalam metode CheckPatternBullishEngulfing() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bullish Engulfing" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing()   { //--- Bullish Engulfing    if((Open(2)>Close(2))             &&  // candlestick sebelumnya bearish       (Close(1)-Open(1)>AvgBody(1))  &&  // tubuh candlestick bullish lebih besar dari rata-rata       (Close(1)>Open(2))             &&  // harga penutupan candlestick bullish lebih tinggi dari harga pembukaan candlestick bearish       (MidOpenClose(2)<CloseAvg(2))  &&  // tren turun       (Open(1)<Close(2)))                // harga pembukaan candlestick bullish lebih rendah dari harga penutupan candlestick bearish       return(true); //---    return(false);   } Pola "Bullish Engulfing" dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) dari kelas CCandlePattern. 1.2. Bearish Engulfing Pola "Bearish Engulfing" terbentuk dalam tren naik ketika candlestick putih kecil diikuti oleh candlestick hitam besar yang sepenuhnya menutupi ("menggenggam") candlestick dari hari sebelumnya. Bayangan (ekor) dari candlestick kecil tersebut pendek, yang memungkinkan tubuh candlestick besar menutupi seluruh candlestick dari hari sebelumnya. Fig. 2. Pola candlestick Bearish Engulfing Pengenalan pola "Bearish Engulfing" dilakukan dalam metode CheckPatternBearishEngulfing() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Bearish Engulfing" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing()   { //--- Bearish Engulfing    if((Open(2)<Close(2))            &&  // candlestick sebelumnya bullish       (Open(1)-Close(1)>AvgBody(1)) &&  // tubuh candlestick lebih besar dari rata-rata       (Close(1)<Open(2))            &&  // harga penutupan candlestick bearish lebih rendah dari harga pembukaan candlestick bullish       (MidOpenClose(2)>CloseAvg(2)) &&  // tren naik       (Open(1)>Close(2)))               // harga pembukaan candlestick bearish lebih tinggi dari harga penutupan candlestick bullish       return(true); //---    return(false);   } Pola "Bearish Engulfing" dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) dari kelas CCandlePattern. 2. Sinyal Trading yang Dikonfirmasi oleh Indikator MFI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator MFI. Nilai indikator MFI harus lebih rendah dari 40 (untuk posisi long) atau lebih tinggi dari 60 (untuk posisi short). Penutupan posisi yang dibuka tergantung pada nilai indikator MFI. Ini dapat dilakukan dalam 2 kasus: jika MFI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) jika sinyal balik tidak terkonfirmasi (ketika indikator MFI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Fig. 3. Pola Bullish Engulfing yang dikonfirmasi oleh indikator MFI int CBE_BE_MFI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBE_BE_MFI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Bullish Engulfing" harus dikonfirmasi oleh indikator MFI: MFi(1)<40 (nilai indikator MFI dari bar yang telah selesai harus kurang dari 40). Posisi short harus ditutup jika indikator MFI telah melintasi level kritis (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi long, hasil=80) | //| 2) Keluar pasar (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_MFI::LongCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita   int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Bullish Engulfing dan MFI<40   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (MFI(1)<40))      result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal level overbought/oversold (naik 30, naik 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 Pembentukan pola "Bearish Engulfing" harus dikonfirmasi oleh indikator MFI: MFI(1)>60 (nilai indikator MFI dari bar yang telah selesai harus lebih dari 60). Posisi long harus ditutup jika indikator MFI telah melintasi level kritis (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi short, hasil=80) | //| 2) Keluar pasar (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_MFI::ShortCondition()   {    int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita   int idx   =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Bearish Engulfing dan MFI>60   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (MFI(1)>60))      result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal level overbought/oversold (naik 70, turun 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 CBE_BE_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kamu perlu mengunduh file abe_be_mfi.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file acandlepatterns.mqh. Kamu dapat menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, luncurkan MQL5 Wizard: Fig. 4. Membuat Expert Advisor menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Fig. 5. Properti umum dari Expert Advisor Setelah itu kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti sinyal dari Expert Advisor Dalam kasus ini kita hanya menggunakan satu modul sinyal trading. Menambahkan modul "Sinyal berdasarkan Bullish Engulfing/Bearish Engulfing yang dikonfirmasi oleh MFI": Fig. 7. Properti sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Fig. 8. Properti sinyal dari Expert Advisor Kamu bisa memilih properti trailing apapun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Fig. 9. Properti trailing dari Expert Advisor Terkait dengan properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap": Fig. 10. Properti manajemen uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABE_BE_MFI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari 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;    // Level harga untuk mengeksekusi deal input double         Signal_StopLevel       =50.0;   // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =50.0;  // Level Take Profit (dalam poin) harus diganti menjadi: //--- 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;    // Level harga untuk mengeksekusi deal input double         Signal_StopLevel       =0.0    // Level Stop Loss (dalam poin) input double         Signal_TakeLevel       =0.0    // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading kita telah menetapkan nilai tetap dari ambang: Posisi terbuka: 80; Posisi tertutup: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai kontainer, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan hal ini saat pengaturan nilai ambang. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=5). Dalam pembuatan Expert Advisor kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Fig. 11. Hasil pengujian dari Expert Advisor, berdasarkan Bullish Engulfing /Bearish Engulfing + MFI Set nilai parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard dilampirkan dalam expert_abe_be_mfi.mq5.

2011.03.10
MQL5 Wizard: Ciptakan Expert Advisor untuk Pola Candlestick Engulfing dan CCI
MetaTrader5
MQL5 Wizard: Ciptakan Expert Advisor untuk Pola Candlestick Engulfing dan CCI

MQL5 Wizard adalah alat yang sangat membantu untuk membuat Expert Advisor (EA) siap pakai berdasarkan MQL5 Wizard. Dengan alat ini, kamu bisa mengecek ide trading dengan cepat hanya dengan membuat kelas sinyal trading sendiri. Struktur kelas ini serta contohnya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Dengan MQL5 Wizard, kita bisa membuat sinyal trading berdasarkan pola candlestick Bullish Engulfing dan Bearish Engulfing yang dikonfirmasi oleh indikator CCI. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana untuk membuat sinyal trading dengan pola candlestick. Pola Candlestick Engulfing 1.1. Bullish Engulfing Pola Bullish Engulfing terbentuk dalam kondisi downtrend ketika candlestick hitam kecil diikuti oleh candlestick putih besar yang sepenuhnya menutupi candlestick sebelumnya. Bayangan dari candlestick kecil ini biasanya pendek, sehingga badan candlestick besar bisa menutupi seluruh candlestick sebelumnya. Gambar 1. Pola Bullish Engulfing Pengakuan pola Bullish Engulfing dapat dilakukan melalui metode CheckPatternBullishEngulfing() pada kelas CCandlePattern. //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola Bullish Engulfing | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() { //--- Bullish Engulfing if((Open(2) > Close(2)) && // candlestick sebelumnya bearish (Close(1) - Open(1) > AvgBody(1)) && // badan candlestick bullish lebih tinggi dari rata-rata badan (Close(1) > Open(2)) && // harga penutupan candlestick bullish lebih tinggi dari harga pembukaan candlestick bearish (MidOpenClose(2) < CloseAvg(2)) && // downtrend (Open(1) < Close(2))) { // harga pembukaan candlestick bullish lebih rendah dari harga penutupan bearish return(true); } //--- return(false); } Pola Bullish Engulfing dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) dari kelas CCandlePattern. 1.2. Bearish Engulfing Pola Bearish Engulfing terbentuk dalam kondisi uptrend ketika candlestick putih kecil diikuti oleh candlestick hitam besar yang sepenuhnya menutupi candlestick sebelumnya. Bayangan dari candlestick kecil ini biasanya pendek, sehingga badan candlestick besar bisa menutupi seluruh candlestick sebelumnya. Gambar 2. Pola Bearish Engulfing Pengakuan pola Bearish Engulfing dapat dilakukan melalui metode CheckPatternBearishEngulfing() pada kelas CCandlePattern. //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola Bearish Engulfing | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() { //--- Bearish Engulfing if((Open(2) < Close(2)) && // candlestick sebelumnya bullish (Open(1) - Close(1) > AvgBody(1)) && // badan candlestick bearish lebih tinggi dari rata-rata badan (Close(1) < Open(2)) && // harga penutupan candlestick bearish lebih rendah dari harga pembukaan candlestick bullish (MidOpenClose(2) > CloseAvg(2)) && // uptrend (Open(1) > Close(2))) { // harga pembukaan candlestick bearish lebih tinggi dari harga penutupan bullish return(true); } //--- return(false); } Pola Bearish Engulfing dapat diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) dari kelas CCandlePattern. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator CCI. Nilai CCI harus lebih besar/kecil dari level kritis (-50 untuk posisi long dan 50 untuk posisi short). Penutupan posisi yang sudah terbuka bergantung pada nilai CCI. Ini bisa dilakukan dalam 2 kasus: Jika garis CCI telah mencapai level kritis yang berlawanan (80 untuk posisi long dan -80 untuk posisi short). Jika sinyal berbalik tidak dikonfirmasi (ketika CCI mencapai level berikut: -80 untuk posisi long dan 80 untuk posisi short). Gambar 3. Pola Bullish Engulfing yang dikonfirmasi oleh CCI int CBE_BE_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBE_BE_CCI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). Buka Posisi Long/Tutup Posisi Short Pembentukan pola Bullish Engulfing harus dikonfirmasi oleh indikator CCI: CCI(1) &lt; -50 (nilai CCI dari bar terakhir yang selesai harus kurang dari -50). Posisi short harus ditutup jika indikator CCI telah melintasi level kritis -80 ke atas atau melintasi level kritis 80 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::LongCondition() { int result = 0; //--- idx dapat digunakan untuk menentukan mode kerja EA int idx = StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Bullish Engulfing dan CCI &lt; -50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1) &lt; -50)) result = 80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal level jenuh beli/jenuh jual (ke bawah -80, ke atas -80) if (((CCI(1) &gt; -80) && (CCI(2) &lt; -80)) || ((CCI(1) &lt; -80) && (CCI(2) &gt; -80))) result = 40; //--- mengembalikan hasil return(result); } Buka Posisi Short/Tutup Posisi Long Pembentukan pola Bearish Engulfing harus dikonfirmasi oleh indikator CCI: CCI(1) &gt; 50 (nilai CCI dari bar terakhir yang selesai harus lebih dari 50). Posisi long harus ditutup jika indikator CCI telah melintasi level -80 ke bawah atau level 80 ke atas. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_CCI::ShortCondition() { int result = 0; //--- idx dapat digunakan untuk menentukan mode kerja EA int idx = StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Bearish Engulfing dan CCI &gt; 50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1) &gt; 50)) result = 80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal level jenuh beli/jenuh jual (ke bawah -80, ke atas 80) if (((CCI(1) &lt; 80) && (CCI(2) &gt; 80)) || ((CCI(1) &lt; -80) && (CCI(2) &gt; -80))) result = 40; //--- mengembalikan hasil return(result); } Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBE_BE_CCI tidak termasuk dalam kelas Standar Library, untuk menggunakannya, kamu perlu mengunduh file acbe_be_cci.mqh dan menyimpannya di client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file candlepatterns.mqh. Setelah itu, kamu dapat menggunakannya di MQL5 Wizard setelah me-restart MetaEditor. Untuk membuat Expert Advisor, kamu bisa meluncurkan MQL5 Wizard: Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Tentukan nama Expert Advisor: Gambar 5. Properti Umum Expert Advisor Setelah itu, pilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal Expert Advisor Dalam hal ini, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal berdasarkan Bullish Engulfing/Bearish Engulfing yang dikonfirmasi oleh CCI: Gambar 7. Properti Sinyal Expert Advisor Modul sinyal trading ditambahkan: Gambar 8. Properti Sinyal Expert Advisor Kamu dapat memilih properti trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume tetap": Gambar 10. Properti Manajemen Uang Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABE_BE_CCI.mq5, dan akan disimpan di folder terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input 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; // Level harga untuk mengeksekusi transaksi input double Signal_StopLevel = 50.0; // Level Stop Loss (dalam poin) input double Signal_TakeLevel = 50.0; // Level Take Profit (dalam poin) harus diubah menjadi: //--- input 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; // Level harga untuk mengeksekusi transaksi input double Signal_StopLevel = 0.0; // Level Stop Loss (dalam poin) input double Signal_TakeLevel = 0.0; // Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode dari metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap untuk ambang: Posisi terbuka: 80; Posisi ditutup: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, ada modul utama + 1 modul sinyal trading, jadi kita perlu memperhatikan fakta ini saat menetapkan nilai ambang. Karena itu, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2. Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, artinya penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. Hasil Backtesting Sejarah Mari kita lihat backtesting Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodCCI=49, MA_period=11). Pada pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan Bullish Engulfing/Bearish Engulfing + CCI Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester di terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir di expert_abe_be_cci.mq5.

2011.03.10
Membuat Expert Advisor Menggunakan MQL5 Wizard: Sinyal Perdagangan dari Bullish dan Bearish Engulfing dengan Stochastic
MetaTrader5
Membuat Expert Advisor Menggunakan MQL5 Wizard: Sinyal Perdagangan dari Bullish dan Bearish Engulfing dengan Stochastic

MQL5 Wizard adalah alat yang sangat berguna bagi para trader yang ingin membuat Expert Advisor (EA) siap pakai berdasarkan kelas dari standar library. Dengan alat ini, kamu bisa dengan cepat memeriksa ide trading kamu, cukup dengan membuat kelas sinyal trading sendiri. Struktur kelas ini dan contoh penggunaannya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Secara umum, ide dasarnya adalah kelas sinyal trading yang diturunkan dari CExpertSignal. Selanjutnya, kamu perlu menimpa metode LongCondition() dan ShortCondition() dengan metode milikmu sendiri. Ada sebuah buku berjudul "Strategi Para Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Kali ini, kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup tulis kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Kita akan membahas sinyal yang berbasis pada pola candlestick pembalikan "Bullish Engulfing/Bearish Engulfing" yang dikonfirmasi oleh indikator Stochastic. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick Pembalikan "Bullish Engulfing" dan "Bearish Engulfing" 1.1. Bullish Engulfing Pola "Bullish Engulfing" terbentuk di dalam tren menurun ketika candlestick hitam kecil diikuti oleh candlestick putih besar yang sepenuhnya menutupi ("menggenggam") candlestick dari hari sebelumnya. Bayangan (ekor) dari candlestick kecil tersebut pendek, sehingga tubuh candlestick besar dapat menutupi seluruh candlestick dari hari sebelumnya. Fig. 1. Pola candlestick Bullish Engulfing Pengenalan pola "Bullish Engulfing" diimplementasikan dalam metode CheckPatternBullishEngulfing() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Bullish Engulfing" candlestick | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishEngulfing() &nbsp;&nbsp;{ //--- Bullish Engulfing &nbsp;&nbsp; if((Open(2)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;// candlestick sebelumnya bearish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;// tubuh dari candlestick bullish lebih tinggi dari rata-rata &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;// harga penutupan dari candlestick bullish lebih tinggi dari harga pembukaan candlestick bearish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidOpenClose(2)&lt;CloseAvg(2))&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;// tren menurun &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)&lt;Close(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// harga pembukaan dari candlestick bullish lebih rendah dari harga penutupan candlestick bearish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Pola candlestick "Bullish Engulfing" diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) dari kelas CCandlePattern. 1.2. Bearish Engulfing Pola "Bearish Engulfing" terbentuk di dalam tren naik ketika candlestick putih kecil diikuti oleh candlestick hitam besar yang sepenuhnya menutupi ("menggenggam") candlestick dari hari sebelumnya. Bayangan (ekor) dari candlestick kecil tersebut pendek, sehingga tubuh candlestick besar dapat menutupi seluruh candlestick dari hari sebelumnya. Fig. 2. Pola candlestick Bearish Engulfing Pengenalan pola "Bearish Engulfing" diimplementasikan dalam metode CheckPatternBearishEngulfing() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola "Bearish Engulfing" candlestick | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishEngulfing() &nbsp;&nbsp;{ //--- Bearish Engulfing &nbsp;&nbsp; if((Open(2)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;// candlestick sebelumnya bullish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp;&nbsp;&nbsp;// tubuh dari candlestick bearish lebih tinggi dari rata-rata &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp;&nbsp;&nbsp;// harga penutupan dari candlestick bearish lebih rendah dari harga pembukaan candlestick bullish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidOpenClose(2)&gt;CloseAvg(2)) &amp;&amp;&nbsp;&nbsp;// tren naik &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)&gt;Close(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // harga pembukaan dari candlestick bearish lebih tinggi dari harga penutupan candlestick bullish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Pola candlestick "Bearish Engulfing" diperiksa dengan metode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) dari kelas CCandlePattern. 2. Sinyal Perdagangan yang Dikonfirmasi oleh Indikator Stochastic Sinyal perdagangan untuk membuka posisi long atau short harus dikonfirmasi oleh osilator Stochastic. Garis %D harus lebih besar/kecil dari level kritis yang sesuai (30 atau 70). Penutupan posisi yang dibuka bergantung pada nilai indikator %D. Hal ini dapat dilakukan dalam dua kasus: jika garis %D telah mencapai level kritis yang berlawanan (80 untuk posisi long dan 20 untuk posisi short) jika sinyal pembalikan tidak terkonfirmasi (ketika garis %D mencapai level berikut: 20 untuk posisi long dan 80 untuk posisi short) Fig. 3. Pola Bullish Engulfing yang Dikonfirmasi oleh Indikator Stochastic Memeriksa kondisi perdagangan untuk masuk dan keluar diimplementasikan dalam dua metode: int CBE_BE_Stoch::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBE_BE_Stoch::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Bullish Engulfing" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)&lt;30 (nilai dari garis sinyal indikator Stochastic pada bar terakhir yang selesai harus kurang dari 30). Posisi short harus ditutup jika garis sinyal dari indikator Stochastic telah melintasi level 20 atau 80 ke atas. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi long, hasil=80) | //| 2) Keluar pasar (menutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_Stoch::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor &nbsp;&nbsp; //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick &nbsp;&nbsp; //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); &nbsp;&nbsp; //--- memeriksa kondisi untuk membuka posisi long &nbsp;&nbsp; //--- pembentukan pola Bullish Engulfing dan garis sinyal&lt;30 &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) &amp;&amp; (StochSignal(1)&lt;30)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- memeriksa kondisi untuk menutup posisi short &nbsp;&nbsp; //--- persilangan garis sinyal dari level jenuh beli/jenuh jual (ke bawah 20, ke atas 80) &nbsp;&nbsp; if((((StochSignal(1)&gt;20) &amp;&amp; (StochSignal(2)&lt;20)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&gt;80) &amp;&amp; (StochSignal(2)&lt;80)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; &nbsp;&nbsp; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "Bearish Engulfing" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)&gt;70 (nilai dari garis sinyal indikator Stochastic pada bar terakhir yang selesai harus lebih besar dari 70). Posisi long harus ditutup jika garis sinyal dari indikator Stochastic telah melintasi level 80 atau 20 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (membuka posisi short, hasil=80) | //| 2) Keluar pasar (menutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBE_BE_Stoch::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor &nbsp;&nbsp; //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick &nbsp;&nbsp; //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); &nbsp;&nbsp; //--- memeriksa kondisi untuk membuka posisi short &nbsp;&nbsp; //--- pembentukan pola Bearish Engulfing dan garis sinyal&gt;70 &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) &amp;&amp; (StochSignal(1)&gt;70)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- memeriksa kondisi untuk menutup posisi long &nbsp;&nbsp; //--- persilangan garis sinyal dari level jenuh beli/jenuh jual (ke bawah 80, ke atas 20) &nbsp;&nbsp; if((((StochSignal(1)&lt;80) &amp;&amp; (StochSignal(2)&gt;80)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&lt;20) &amp;&amp; (StochSignal(2)&gt;20)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; &nbsp;&nbsp; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBE_BE_Stoch tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kamu perlu mengunduh file acbe_be_stoch.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file candlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, luncurkan MQL5 Wizard: Fig. 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Fig. 5. Properti Umum dari Expert Advisor Setelah itu kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti Sinyal dari Expert Advisor Dalam kasus kita hanya menggunakan satu modul sinyal trading. Menambahkan modul "Sinyal berdasarkan Bullish Engulfing/Bearish Engulfing yang dikonfirmasi oleh Stochastic": Fig. 7. Properti Sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Fig. 8. Properti Sinyal dari Expert Advisor Kamu bisa memilih properti trailing apapun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Fig. 9. Properti Trailing dari Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap": Fig. 10. Properti Manajemen Uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABE_BE_Stoch.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp;&nbsp; // Level Take Profit (dalam poin) Harus diganti menjadi: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0;&nbsp;&nbsp;&nbsp;&nbsp;// Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode dari metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menetapkan nilai tetap dari ambang: Membuka posisi: 80; Menutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, yang terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() nya selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam perhitungan rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhatikan hal ini saat mengatur nilai ambang. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi akan dilakukan hanya ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Fig. 11. Hasil Pengujian dari Expert Advisor Berdasarkan Bullish/Bearish Engulfing + Stochastic Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam file expert_abe_be_stoch.mq5.

2011.03.10
Membuat Expert Advisor MQL5 untuk Sinyal Trading Berdasarkan Dark Cloud Cover dan Piercing Line dengan RSI
MetaTrader5
Membuat Expert Advisor MQL5 untuk Sinyal Trading Berdasarkan Dark Cloud Cover dan Piercing Line dengan RSI

MQL5 Wizard adalah alat yang sangat membantu dalam membuat Expert Advisor (EA) siap pakai berdasarkan kelas yang disediakan dalam Standard Library. Dengan alat ini, kita bisa dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading kita sendiri. Struktur kelas ini dan contohnya dapat ditemukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Secara umum, kelas sinyal trading diturunkan dari CExpertSignal. Kita perlu menimpa metode LongCondition() dan ShortCondition() dengan metode kita sendiri. Ada sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading, tetapi kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh RSI, Stochastic, CCI, dan MFI. Langkah terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, kita cukup menulis kelas yang diturunkan dari CCandlePattern dan menambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Dalam artikel ini, kita akan membahas sinyal yang didasarkan pada pola candlestick pembalikan "Dark Cloud Cover/Piercing Line" yang dikonfirmasi oleh indikator RSI. Modul sinyal trading ini didasarkan pada kelas CCandlePattern yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick Pembalikan: "Dark Cloud Cover" dan "Piercing Line" 1.1. Dark Cloud Cover "Dark Cloud Cover" adalah pola pembalikan bearish yang terjadi di akhir tren naik. Pada hari pertama, terbentuk candlestick putih panjang, dan pada hari kedua terjadi gap up. Namun, hari kedua ditutup di bawah titik tengah hari pertama. Gambar 1. Pola Candlestick "Dark Cloud Cover" Pengenalan pola "Dark Cloud Cover" diimplementasikan dalam metode CheckPatternDarkCloudCover() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Dark Cloud Cover" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() &nbsp;&nbsp;{ //--- Dark Cloud Cover &nbsp;&nbsp; if((Close(2)-Open(2)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp; // (candlestick putih panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (tutup dalam tubuh sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&gt;CloseAvg(1))&nbsp;&nbsp;&amp;&amp; // (tren naik) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&gt;High(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (dibuka di high baru) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Dark Cloud Cover". 1.2. Piercing Line Pada hari kedua, terjadi gap down yang melanjutkan tren turun. Namun, penutupan pada hari kedua berada di atas titik tengah tubuh hari pertama. Ini menunjukkan kepada para bearish bahwa mungkin terjadi pembalikan. Aksi harga ini tidak begitu jelas terlihat menggunakan grafik batang dibandingkan dengan grafik candlestick. Semakin dalam penutupan pada hari kedua ke tubuh hari pertama, semakin besar kemungkinan sinyal pembalikan tersebut berhasil. Gambar 2. Pola Candlestick "Piercing Line" Pengenalan pola "Piercing Line" diimplementasikan dalam metode CheckPatternPiercingLine() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Piercing Line" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() &nbsp;&nbsp;{ //--- Piercing Line &nbsp;&nbsp; if((Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; // (candlestick putih panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; // (candlestick hitam panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; //&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // (tutup dalam tubuh sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&lt;CloseAvg(2)) &amp;&amp; // (tren turun) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&lt;Low(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (dibuka lebih rendah dari Low sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "Piercing Line". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator RSI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus lebih rendah atau lebih tinggi dari level kritis (40 untuk posisi long dan 60 untuk posisi short). Penutupan posisi terbuka bergantung pada nilai RSI. Ini dapat dilakukan dalam 2 kasus: Jika RSI sudah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) Jika sinyal pembalikan tidak dikonfirmasi (ketika RSI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Gambar 3. Pola "Dark Cloud Cover" yang Dikonfirmasi oleh Indikator RSI int CDC_PL_RSI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CDC_PL_RSI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Memperoleh Posisi Long/Menutup Posisi Short Pembentukan pola "Piercing Line" harus dikonfirmasi oleh indikator RSI: RSI(1)&lt;40 (nilai RSI dari bar yang sudah selesai harus kurang dari 40). Posisi short harus ditutup jika indikator RSI telah melintasi level kritis 70 atau 30 ke atas. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA hanya memeriksa kondisi trading pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Piercing Line dan RSI&lt;30 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) &amp;&amp; (RSI(1)&lt;40)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover sinyal level overbought/oversold (naik 30, naik 70) &nbsp;&nbsp;if(((RSI(1)&gt;30) &amp;&amp; (RSI(2)&lt;30)) || ((RSI(1)&gt;70) &amp;&amp; (RSI(2)&lt;70))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. Memperoleh Posisi Short/Menutup Posisi Long Pembentukan pola "Dark Cloud Cover" harus dikonfirmasi oleh indikator RSI: RSI(1)&gt;60 (nilai dari indikator RSI bar yang sudah selesai harus lebih dari 60). Posisi long harus ditutup jika indikator RSI telah melintasi level kritis 70 atau 30 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_RSI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA hanya memeriksa kondisi trading pada bar berita &nbsp;&nbsp; int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Dark Cloud Cover dan RSI&gt;60 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) &amp;&amp; (RSI(1)&gt;60)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover sinyal level overbought/oversold (turun 70, turun 30) &nbsp;&nbsp; if(((RSI(1)&lt;70) &amp;&amp; (RSI(2)&gt;70)) || ((RSI(1)&lt;30) &amp;&amp; (RSI(2)&gt;30))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CDC_PL_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kita perlu mengunduh file adc_pl_rsi.mqh (lihat lampiran) dan menyimpannya ke dalam folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file acandlepatterns.mqh. Kita bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal Expert Advisor Dalam hal ini, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal Berdasarkan Dark Cloud Cover/Piercing Line yang Dikonfirmasi oleh RSI: Gambar 7. Properti Sinyal Expert Advisor Modul sinyal trading telah ditambahkan: Gambar 8. Properti Sinyal Expert Advisor Kita bisa memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume tetap": Gambar 10. Properti Manajemen Uang Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ADC_PL_RSI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- masukan untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // Tingkat Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp; // Tingkat Take Profit (dalam poin) harus diganti menjadi: //--- masukan untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0;&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan kita untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap untuk ambangnya: Membuka posisi: 80; Menutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai kontainer, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition()nya selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diset menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai parameter input Signal_StopLevel dan Signal_TakeLevel diset ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan Dark Cloud Cover/Piercing Line + RSI Set terbaik dari parameter input dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_ad_pl_rsi.mq5.

2011.02.25
MQL5 Wizard: Ciptakan Expert Advisor Berdasarkan Pola Candlestick dan MFI
MetaTrader5
MQL5 Wizard: Ciptakan Expert Advisor Berdasarkan Pola Candlestick dan MFI

MQL5 Wizard adalah alat yang sangat berguna untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas Standard Library yang disertakan dalam terminal klien MetaTrader 5. Dengan MQL5 Wizard, kamu bisa dengan cepat memeriksa ide tradingmu hanya dengan membuat kelas sinyal tradingmu sendiri. Struktur kelas ini dan contohnya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Idenya sederhana: kelas sinyal trading diturunkan dari CExpertSignal. Kemudian, kamu perlu mengoverride metode LongCondition() dan ShortCondition() dengan metode milikmu sendiri. Ada sebuah buku berjudul "Strategi Para Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Di sini, kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah, diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Di sini, kita akan membahas sinyal yang berdasarkan pola candlestick pembalikan "Dark Cloud Cover" dan "Piercing Line", yang dikonfirmasi oleh indikator Market Facilitation Index (MFI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, dan ini adalah contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola candlestick. 1. Pola Candlestick Pembalikan "Dark Cloud Cover" dan "Piercing Line" 1.1. Dark Cloud Cover Ini adalah pola candlestick pembalikan bearish yang terjadi di akhir tren naik. Candlestick putih panjang terbentuk pada hari pertama, dan pada hari kedua terjadi gap ke atas. Namun, hari kedua ditutup di bawah titik tengah hari pertama. Fig. 1. Pola candlestick "Dark Cloud Cover" Pengenalan pola "Dark Cloud Cover" diimplementasikan dalam metode CheckPatternDarkCloudCover() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Dark Cloud Cover" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() &nbsp;&nbsp;{ //--- Dark Cloud Cover &nbsp;&nbsp; if((Close(2)-Open(2)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp; // (candlestick putih panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (tutup dalam tubuh sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&gt;CloseAvg(1))&nbsp;&nbsp;&amp;&amp; // (tren naik) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&gt;High(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (pembukaan pada tinggi baru) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola candlestick "Dark Cloud Cover". 1.2. Piercing Line Gap turun pada hari kedua memperpanjang tren turun. Namun, penutupan hari kedua berada di atas titik tengah tubuh hari pertama, ini menunjukkan kepada para bearish bahwa mungkin dasar sedang terbentuk. Aksi harga ini tidak terlalu terlihat jelas menggunakan grafik batang jika dibandingkan dengan grafik candlestick. Semakin dalam penutupan hari kedua ke tubuh hari pertama, semakin besar kemungkinan sinyal pembalikan akan berhasil. Fig. 2. Pola candlestick "Piercing Line" Pengenalan pola "Piercing Line" diimplementasikan dalam metode CheckPatternPiercingLine() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "Piercing Line" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() &nbsp;&nbsp;{ //--- Piercing Line &nbsp;&nbsp; if((Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; // (candlestick putih panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; // (candlestick hitam panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; //&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // (tutup di dalam tubuh sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&lt;CloseAvg(2)) &amp;&amp; // (tren turun) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&lt;Low(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (pembukaan lebih rendah dari rendah sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola candlestick "Piercing Line". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator MFI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator MFI. Nilai indikator MFI harus di bawah 40 (untuk posisi long) atau lebih dari 60 (untuk posisi short). Penutupan posisi yang sudah dibuka tergantung pada nilai indikator MFI. Ini bisa dilakukan dalam 2 kasus: Jika MFI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) Jika sinyal pembalikan tidak terkonfirmasi (ketika indikator MFI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Fig. 3. Pola "Dark Cloud Cover", dikonfirmasi oleh indikator MFI int CDC_PL_MFI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CDC_PL_MFI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Morning Star" harus dikonfirmasi oleh indikator MFI: MFI(1)&lt;40 (nilai indikator MFI dari bar yang telah selesai terakhir harus kurang dari 40). Posisi short harus ditutup jika indikator MFI telah melewati level kritis ke atas (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Masuk pasar (membuka posisi long, hasil=80) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 2) Keluar pasar (menutup posisi short, hasil=40) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int CDC_PL_MFI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Piercing Line dan MFI&lt;40 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) &amp;&amp; (MFI(1)&lt;40)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi short //--- persilangan garis sinyal level overbought/oversold (ke atas 30, ke atas 70) &nbsp;&nbsp;if(((MFI(1)&gt;30) &amp;&amp; (MFI(2)&lt;30)) || ((MFI(1)&gt;70) &amp;&amp; (MFI(2)&lt;70))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "Dark Cloud Cover" harus dikonfirmasi oleh indikator MFI: MFI(1)&gt;60 (nilai indikator MFI dari bar yang telah selesai terakhir harus lebih dari 60). Posisi long harus ditutup jika indikator MFI telah melewati level kritis ke atas (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Masuk pasar (membuka posisi short, hasil=80) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) Keluar pasar (menutup posisi long, hasil=40) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int CDC_PL_MFI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Dark Cloud Cover dan MFI&gt;60 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) &amp;&amp; (MFI(1)&gt;60)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi long //--- persilangan garis sinyal level overbought/oversold (ke atas 70, ke bawah 30) &nbsp;&nbsp; if(((MFI(1)&gt;70) &amp;&amp; (MFI(2)&lt;70)) || ((MFI(1)&lt;30) &amp;&amp; (MFI(2)&gt;30))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. Menciptakan Expert Advisor Menggunakan MQL5 Wizard Kelas CDC_PL_MFI tidak disertakan dalam kelas Standard Library, untuk menggunakannya, kamu perlu mengunduh file adc_pl_mfi.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan file acandlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, luncurkan MQL5 Wizard: Fig. 4. Membuat Expert Advisor menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Fig. 5. Properti umum dari Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti sinyal dari Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal Berdasarkan Dark Cloud Cover/Piercing Line yang Dikonfirmasi oleh MFI: Fig. 7. Properti sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Fig. 8. Properti sinyal dari Expert Advisor Kamu bisa memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Fig. 9. Properti trailing dari Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap": Fig. 10. Properti manajemen uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ADC_PL_MFI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi perdagangan input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Tingkat Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Tingkat Take Profit (dalam poin) harus diganti menjadi: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi perdagangan input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menetapkan nilai tetap dari threshold: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() miliknya selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam perhitungan rata-rata suara. Dalam kasus kita, modul utama + 1 modul sinyal trading, sehingga kita perlu mempertimbangkan fakta ini saat menetapkan nilai threshold. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Mari kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodMFI=49, MA_period=11). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Fig. 11. Hasil pengujian dari Expert Advisor, berdasarkan Dark Cloud Cover/Piercing Line + MFI Set param input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_adc_pl_mfi.mq5.

2011.02.25
Menggunakan MQL5 Wizard untuk Sinyal Trading: Pola Dark Cloud Cover dan Piercing Line dengan CCI
MetaTrader5
Menggunakan MQL5 Wizard untuk Sinyal Trading: Pola Dark Cloud Cover dan Piercing Line dengan CCI

Dalam dunia trading, kemampuan untuk membuat sistem trading yang efektif sangat penting. Salah satu alat yang bisa membantu kita adalah MQL5 Wizard. Alat ini memungkinkan kita untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas dari Standard Library yang disediakan bersama terminal klien. Dengan MQL5 Wizard, kita bisa dengan cepat memeriksa ide trading kita hanya dengan membuat kelas sinyal trading sendiri. Sinyal trading yang kita buat dapat didasarkan pada pola candlestick seperti Dark Cloud Cover dan Piercing Line, yang dapat dikonfirmasi menggunakan indikator CCI. Dalam artikel ini, kita akan menjelajahi bagaimana cara menerapkan pola-pola ini dalam sistem trading kita menggunakan MQL5 Wizard. 1. Pola Candlestick: Dark Cloud Cover dan Piercing Line 1.1. Dark Cloud Cover Pola Dark Cloud Cover adalah pola bearish yang muncul di akhir tren naik. Pola ini diawali dengan candlestick putih panjang pada hari pertama, diikuti oleh candlestick hitam yang membuka lebih tinggi tetapi ditutup di bawah titik tengah candlestick putih sebelumnya. Metode CheckPatternDarkCloudCover() di kelas CCandlePattern digunakan untuk mendeteksi pola ini. //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola Dark Cloud Cover | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() &nbsp;&nbsp;{ //--- Dark Cloud Cover &nbsp;&nbsp; if((Close(2)-Open(2)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&gt;CloseAvg(1))&nbsp;&nbsp;&amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&gt;High(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Dengan menggunakan metode ini, kita bisa memeriksa apakah pola Dark Cloud Cover terbentuk di grafik kita. 1.2. Piercing Line Pola Piercing Line adalah pola bullish yang muncul setelah tren turun. Di sini, candlestick kedua membuka lebih rendah dan menutup di atas titik tengah dari candlestick pertama. Ini menunjukkan bahwa mungkin ada pembalikan arah. Metode CheckPatternPiercingLine() di kelas CCandlePattern digunakan untuk mendeteksi pola ini. //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola Piercing Line | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() &nbsp;&nbsp;{ //--- Piercing Line &nbsp;&nbsp; if((Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&lt;CloseAvg(2)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&lt;Low(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode ini membantu kita dalam mengecek pola Piercing Line pada grafik. 2. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator CCI. Nilai CCI harus lebih besar dari 50 untuk posisi short, dan lebih kecil dari -50 untuk posisi long. Penutupan posisi tergantung pada nilai CCI. Penutupan dapat dilakukan dalam dua kondisi: Jika garis CCI telah mencapai level kritis yang berlawanan (80 untuk posisi long dan -80 untuk posisi short). Jika sinyal pembalikan tidak dikonfirmasi saat CCI mencapai level berikut: -80 untuk posisi long dan 80 untuk posisi short. 2.1. Membuka Posisi Long dan Menutup Posisi Short Pembentukan pola Piercing Line harus dikonfirmasi oleh indikator CCI: CCI(1) &lt; -50 (nilai CCI pada bar terakhir harus kurang dari -50). Posisi short harus ditutup jika indikator CCI telah melewati level kritis -80 atau level 80. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //+------------------------------------------------------------------+ int CDC_PL_CCI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- Memeriksa kondisi untuk membuka posisi long &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) &amp;&amp; (CCI(1)&lt;-50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- Memeriksa kondisi untuk menutup posisi short &nbsp;&nbsp; if(((CCI(1)&gt;-80) &amp;&amp; (CCI(2)&lt;-80)) || ((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; &nbsp;&nbsp; //--- Mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. Membuka Posisi Short dan Menutup Posisi Long Pembentukan pola Dark Cloud Cover harus dikonfirmasi oleh indikator CCI: CCI(1) &gt; 50 (nilai CCI pada bar terakhir harus lebih dari 50). Posisi long harus ditutup jika indikator CCI telah melewati level -80 atau level 80. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //+------------------------------------------------------------------+ int CDC_PL_CCI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; &nbsp;&nbsp; //--- Memeriksa kondisi untuk membuka posisi short &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) &amp;&amp; (CCI(1)&gt;50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; &nbsp;&nbsp; //--- Memeriksa kondisi untuk menutup posisi long &nbsp;&nbsp; if(((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80)) || ((CCI(1)&lt;-80) &amp;&amp; (CCI(2)&gt;-80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; &nbsp;&nbsp; //--- Mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. Membuat Expert Advisor menggunakan MQL5 Wizard Kelas CDC_PL_CCI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kita perlu mengunduh file acdc_pl_cci.mqh dan menyimpannya di client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga berlaku untuk file candlepatterns.mqh. Setelah itu, kita bisa menggunakan MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Mari kita tentukan nama Expert Advisor: Selanjutnya, kita perlu memilih modul sinyal trading yang digunakan. Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading: Menambahkan modul Sinyal berdasarkan Dark Cloud Cover/Piercing Line yang dikonfirmasi oleh CCI: Modul sinyal trading telah ditambahkan: Anda dapat memilih properti trailing, tetapi kita akan menggunakan Trailing Stop tidak digunakan: Mengenai properti manajemen uang, kita akan menggunakan Trading dengan volume trading tetap: Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, disimpan di Expert_ADC_PL_CCI.mq5 dalam folder terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan adalah: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Level Take Profit (dalam poin) Parameter ini harus diganti menjadi: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Take Profit (dalam poin) Parameter Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan kita untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition(), kita telah menentukan nilai tetap untuk ambang: Posisi Buka: 80; Posisi Tutup: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Hasil suara dari modul utama juga digunakan dalam rata-rata suara. Dalam kasus kita, kita memiliki satu modul sinyal trading, sehingga kita perlu mempertimbangkan hal ini saat menetapkan nilai ambang. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, yang berarti penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Mari kita lihat hasil backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodCCI=15, MA_period=19). Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester di terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard dapat ditemukan dalam file expert_adc_pl_cci.mq5.

2011.02.25
Membuat Expert Advisor dengan MQL5 Wizard: Sinyal Trading Berdasarkan Dark Cloud Cover dan Piercing Line
MetaTrader5
Membuat Expert Advisor dengan MQL5 Wizard: Sinyal Trading Berdasarkan Dark Cloud Cover dan Piercing Line

MQL5 Wizard adalah alat hebat yang memungkinkan kita untuk membuat Expert Advisor siap pakai berdasarkan kelas yang ada di perpustakaan standar yang disertakan dengan terminal klien. Dengan alat ini, kita dapat dengan cepat memeriksa ide trading kita. Yang perlu kita lakukan adalah membuat kelas sinyal trading kita sendiri. Struktur kelas ini dan contohnya dapat ditemukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide umumnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Selanjutnya, kita perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode milik kita sendiri. Salah satu buku yang bisa dijadikan referensi adalah "Strategi Trader Terbaik" (dalam bahasa Rusia), yang membahas berbagai strategi trading. Dalam artikel ini, kita akan fokus pada pola lilin pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola lilin. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola lilin, cukup tulis kelas yang diturunkan dari CCandlePattern dan tambahkan fitur-fitur yang diperlukan di dalamnya (misalnya, konfirmasi oleh osilator). Mari kita bahas sinyal-sinyal yang berbasis pada pola pembalikan "Dark Cloud Cover/Piercing Line" yang dikonfirmasi oleh indikator Stochastic. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk menciptakan sinyal trading dengan pola lilin. 1. Pola Pembalikan "Dark Cloud Cover" dan "Piercing Line" 1.1. Dark Cloud Cover Pola ini adalah pembalikan bearish yang terjadi di akhir tren naik. Pada hari pertama terbentuk sebuah lilin putih panjang dan pada hari kedua terjadi gap ke atas. Namun, hari kedua ditutup di bawah titik tengah hari pertama. Gambar 1. Pola 'Dark Cloud Cover' Pengenalan pola "Dark Cloud Cover" diimplementasikan dalam metode CheckPatternDarkCloudCover() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola lilin "Dark Cloud Cover" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternDarkCloudCover() &nbsp;&nbsp;{ //--- Dark Cloud Cover &nbsp;&nbsp; if((Close(2)-Open(2)&gt;AvgBody(1))&nbsp;&nbsp;&amp;&amp; // (lilin putih panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&lt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)&gt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (ditutup dalam body sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidOpenClose(2)&gt;CloseAvg(1))&nbsp;&nbsp;&amp;&amp; // (tren naik) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&gt;High(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (dibuka pada high baru) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Pola lilin "Dark Cloud Cover" dapat diperiksa menggunakan metode CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) dari kelas CCandlePattern. 1.2. Piercing Line Pada hari kedua terjadi gap ke bawah yang memperpanjang tren turun. Namun, penutupan hari kedua berada di atas titik tengah body hari pertama. Ini menunjukkan kepada trader bahwa kemungkinan ada pembalikan yang sedang terjadi. Aksi harga ini lebih terlihat jelas pada grafik candlestick dibanding grafik batang. Semakin dalam penutupan pada hari kedua ke dalam body hari pertama, semakin besar kemungkinan sinyal pembalikan akan berhasil. Gambar 2. Pola "Piercing Line" Pengenalan pola "Piercing Line" diimplementasikan dalam metode CheckPatternPiercingLine() dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola lilin "Piercing Line" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternPiercingLine() &nbsp;&nbsp;{ //--- Piercing Line &nbsp;&nbsp; if((Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; // (lilin putih panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; // (lilin hitam panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Close(1)&gt;Close(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)&lt;Open(2))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&amp; // (ditutup di dalam body sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(MidOpenClose(2)&lt;CloseAvg(2)) &amp;&amp; // (tren turun) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(Open(1)&lt;Low(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;// (dibuka lebih rendah dari Low sebelumnya) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Pola lilin "Piercing Line" dapat diperiksa menggunakan metode CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) dari kelas CCandlePattern. 2. Sinyal Trading yang Dikonfirmasi oleh Indikator Stochastic Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh osilator Stochastic. Garis %D harus lebih besar/kecil dari level kritis yang sesuai (30 atau 70). Penutupan posisi yang terbuka tergantung pada nilai indikator %D. Penutupan posisi dapat dilakukan dalam 2 kasus: jika garis %D telah mencapai level kritis yang berlawanan (80 untuk posisi long dan 20 untuk posisi short) jika sinyal pembalikan tidak terkonfirmasi (ketika garis %D mencapai level berikut: 20 untuk posisi long dan 80 untuk posisi short) Gambar 3. Pola 'Dark Cloud Cover' yang Dikonfirmasi oleh Indikator Stochastic 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Piercing Line" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)&lt;30 (nilai garis sinyal indikator Stochastic dari batang terakhir yang telah selesai harus kurang dari 30). Posisi short harus ditutup jika garis sinyal dari indikator Stochastic telah melintasi level 20 atau 80 ke atas. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_Stoch::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada batang berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola Piercing Line dan garis sinyal&lt;30 &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) &amp;&amp; (StochSignal(1)&lt;30)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi short //--- persilangan garis sinyal level overbought/oversold (ke bawah 20, ke atas 80) &nbsp;&nbsp; if((((StochSignal(1)&gt;20) &amp;&amp; (StochSignal(2)&lt;20)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&gt;80) &amp;&amp; (StochSignal(2)&lt;80)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "Dark Cloud Cover" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)&gt;70 (nilai garis sinyal indikator Stochastic dari batang terakhir yang telah selesai harus lebih dari 70). Posisi long harus ditutup jika garis sinyal dari indikator Stochastic telah melintasi level 80 atau 20 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CDC_PL_Stoch::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan Expert Advisor work mode //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada batang berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola Dark Cloud Cover dan garis sinyal&gt;70 &nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) &amp;&amp; (StochSignal(1)&gt;70)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi long //--- persilangan garis sinyal level overbought/oversold (ke bawah 80, ke atas 20) &nbsp;&nbsp; if((((StochSignal(1)&lt;80) &amp;&amp; (StochSignal(2)&gt;80)) || &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&lt;20) &amp;&amp; (StochSignal(2)&gt;20)))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CDC_PL_Stoch tidak termasuk dalam kelas Perpustakaan Standar, untuk menggunakannya, kita perlu mengunduh file adc_pl_stoch.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file candlepatterns.mqh. Kita dapat menggunakannya di MQL5 Wizard setelah merestart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum dari Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal dari Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal Berdasarkan Dark Cloud Cover/Piercing Line yang Dikonfirmasi oleh Stochastic: Gambar 7. Properti Sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Gambar 8. Properti Sinyal dari Expert Advisor Anda dapat memilih properti trailing apapun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Manajemen Uang dari Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume trading tetap": Gambar 10. Properti Manajemen Uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Level Take Profit (dalam poin) harus diganti dengan: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan kita untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap dari ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, yang terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, ada modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Mari kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.02.02, PeriodK=9, PeriodD=5, PeriodSlow=20, MA_period=27). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritme Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan Dark Cloud Cover/Piercing Line + Stochastic Set terbaik dari parameter input dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode Expert Advisor yang dibuat oleh MQL5 Wizard dilampirkan di expert_adc_pl_stoch.mq5.

2011.02.25
MQL5 Wizard: Membuat Expert Advisor dengan Pola Candlestick 3 Black Crows/3 White Soldiers dan RSI
MetaTrader5
MQL5 Wizard: Membuat Expert Advisor dengan Pola Candlestick 3 Black Crows/3 White Soldiers dan RSI

MQL5 Wizard adalah alat yang sangat membantu untuk membuat Expert Advisor (EA) yang siap pakai berdasarkan kelas-kelas di Standard Library yang terintegrasi dalam terminal klien. Dengan MQL5 Wizard, kamu bisa dengan cepat mengecek ide trading-mu, cukup dengan membuat kelas sinyal trading sendiri. Struktur kelas ini dan contoh penggunaannya bisa kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Secara umum, ide dasarnya adalah kelas sinyal trading diturunkan dari CExpertSignal. Setelah itu, kamu perlu mengoverride metode LongCondition() dan ShortCondition() dengan metode yang kamu buat sendiri. Sebuah buku berjudul "Strategi Trader Terbaik" (dalam bahasa Rusia) membahas berbagai strategi trading, tetapi kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh indikator Stochastic, CCI, MFI, dan RSI. Sebaiknya, buatlah kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup tulis kelas baru yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Di sini kita akan membahas sinyal berdasarkan pola candlestick pembalikan "3 Black Crows/3 White Soldiers" yang dikonfirmasi oleh indikator Relative Strength Index (RSI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick "3 Black Crows" dan "3 White Soldiers"1.1. 3 Black CrowsPola candlestick bearish ini digunakan untuk memprediksi pembalikan dari tren naik saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih rendah dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya.Fig. 1. Pola candlestick '3 Black Crows'Pengenalan pola "3 Black Crows" ini diimplementasikan dalam metode CheckPatternThreeBlackCrows dari kelas CCandlePattern://+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 Black Crows" &nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() &nbsp;&nbsp;{ //--- 3 Black Crows &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; // (candlestick hitam panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (midpoints lebih rendah) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2)))&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 Black Crows". 1.2. Pola 3 White SoldiersPola candlestick bullish ini digunakan untuk memprediksi pembalikan dari tren turun saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih tinggi dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya.Pola ini sah selama candlestick pada hari kedua dibuka di bagian atas rentang hari pertama. Di akhir hari kedua, harus ditutup mendekati puncaknya, meninggalkan bayangan atas yang sangat kecil atau tidak ada sama sekali. Pola yang sama kemudian diulang pada hari ketiga. Fig. 2. Pola candlestick '3 White Soldiers'Berikut adalah metode untuk mengenali pola "3 White Soldiers"://+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 White Soldiers" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- 3 White Soldiers &nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; // candlestick putih panjang &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // midpoints lebih tinggi &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 White Soldiers". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator RSISinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator RSI. Nilai RSI harus lebih rendah/lebih tinggi dari level kritis (40 untuk posisi long dan 60 untuk posisi short).Penutupan posisi yang dibuka tergantung pada nilai RSI. Ini dapat dilakukan dalam 2 kasus: jika RSI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) jika sinyal pembalikan tidak terkonfirmasi (ketika RSI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Fig. 3. Pola '3 Black Crows', dikonfirmasi oleh indikator Stochastic int CML_RSI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CML_RSI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/ Menutup Posisi Short Pembentukan pola "3 White Soldiers" harus dikonfirmasi oleh indikator RSI: RSI(1)&lt;40 (nilai RSI dari bar yang telah selesai harus kurang dari 40). Posisi short harus ditutup jika indikator RSI telah melintasi ke atas level kritis 70 atau 30. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Masuk pasar (buka posisi long, hasil=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 2) Keluar pasar (tutup posisi short, hasil=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int CBC_WS_RSI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola 3 White Soldiers dan RSI&lt;30 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (RSI(1)&lt;40)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal level overbought/oversold (naik 30, naik 70) &nbsp;&nbsp;if(((RSI(1)&gt;30) &amp;&amp; (RSI(2)&lt;30)) || ((RSI(1)&gt;70) &amp;&amp; (RSI(2)&lt;70))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;}2.2. Membuka Posisi Short/ Menutup Posisi Long Pembentukan pola "3 Black Crows" harus dikonfirmasi oleh indikator RSI: RSI(1)&gt;60 (nilai RSI dari bar yang telah selesai harus lebih besar dari 60). Posisi long harus ditutup jika indikator RSI telah melintasi ke bawah level kritis 70 atau 30. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Masuk pasar (buka posisi short, hasil=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) Keluar pasar (tutup posisi long, hasil=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int CBC_WS_RSI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola 3 Black Crows dan RSI&gt;60 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (RSI(1)&gt;60)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal level overbought/oversold (ke bawah 70, ke bawah 30) &nbsp;&nbsp; if(((RSI(1)&lt;70) &amp;&amp; (RSI(2)&gt;70)) || ((RSI(1)&lt;30) &amp;&amp; (RSI(2)&gt;30))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;}2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CML_RSI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, kamu perlu mengunduh file acml_rsi.mqh (lihat lampiran) dan menyimpannya di folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file candlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah me-restart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Fig. 4. Membuat Expert Advisor menggunakan MQL5 WizardMari kita tentukan nama Expert Advisor: Fig. 5. Properti umum Expert AdvisorSetelah itu, kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti sinyal Expert AdvisorDalam kasus kita, kita hanya menggunakan satu modul sinyal trading.Menambahkan modul Sinyal Berdasarkan 3 Black Crows/3 White Soldiers: Fig. 7. Properti sinyal Expert AdvisorModul sinyal trading ditambahkan: Fig. 8. Properti sinyal Expert AdvisorKamu bisa memilih properti trailing apa pun, tetapi kita akan menggunakan Trailing Stop tidak digunakan: Fig. 9. Properti manajemen uang Expert AdvisorMengenai properti manajemen uang, kita akan menggunakan Trading dengan volume tetap: Fig. 10. Properti manajemen uang Expert AdvisorDengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, terletak di Expert_ABC_WS_RSI.mq5, akan disimpan di folder terminal_data_folder\MQL5\Experts\.Parameter input default dari Expert Advisor yang dihasilkan://--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // Tingkat Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Tingkat Take Profit (dalam poin)harus diganti menjadi: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Take Profit (dalam poin)Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi.Di dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menentukan nilai tetap dari ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai kontainer, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() dari modul ini selalu mengembalikan 0.Hasil suara dari modul utama juga digunakan dalam rata-rata suara. Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini ketika menetapkan nilai ambang. Oleh karena itu, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2.Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur menjadi 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan benar.2.4. Hasil Backtesting SejarahMari kita lihat backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.02.02, PeriodRSI=37, MA_period=51).Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Fig. 11. Hasil pengujian Expert Advisor berbasis 3 Black Crows/3 White Soldiers + RSISet parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5.Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir dalam expert_abc_ws_rsi.mq5.

2011.02.18
MQL5 Wizard: Membuat Expert Advisor dengan Sinyal Trading 3 Black Crows/3 White Soldiers dan MFI
MetaTrader5
MQL5 Wizard: Membuat Expert Advisor dengan Sinyal Trading 3 Black Crows/3 White Soldiers dan MFI

Selamat datang di dunia trading yang menarik! Kali ini kita akan membahas tentang MQL5 Wizard, sebuah alat yang memungkinkan kita untuk membuat Expert Advisor (EA) siap pakai berdasarkan kelas dari Standard Library yang disediakan bersama terminal klien. Dengan MQL5 Wizard, kita bisa dengan cepat memeriksa ide trading kita, hanya dengan membuat kelas sinyal trading kita sendiri. Struktur kelas ini dan contohnya bisa kita lihat di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide umumnya adalah kelas sinyal trading yang diturunkan dari CExpertSignal. Selanjutnya, kita perlu mengganti metode virtual LongCondition() dan ShortCondition() dengan metode kita sendiri. Ada sebuah buku "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh indikator Stochastic, CCI, MFI, dan RSI oscillator. Cara terbaik adalah dengan membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup tulis kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh oscillator). Di sini kita akan membahas sinyal yang didasarkan pada pola candlestick pembalikan "3 Black Crows/3 White Soldiers", yang dikonfirmasi oleh indikator Market Facilitation Index (MFI). Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick Pembalikan "3 Black Crows" dan "3 White Soldiers" 1.1. Pola "3 Black Crows" Pola candlestick bearish yang digunakan untuk memprediksi pembalikan dari tren naik saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih rendah dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya. Gambar 1. Pola Candlestick '3 Black Crows' Pengenalan pola "3 Black Crows" diimplementasikan dalam metode CheckPatternThreeBlackCrows dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 Black Crows" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() &nbsp;&nbsp;{ //--- 3 Black Crows &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; //(candlestick hitam panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (midpoints lebih rendah) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2)))&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 Black Crows". 1.2. Pola Candlestick "3 White Soldiers" Pola candlestick bullish yang digunakan untuk memprediksi pembalikan dari tren turun saat ini. Pola ini terdiri dari tiga candlestick bertubuh panjang yang ditutup lebih tinggi dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya. Pola ini valid selama candlestick hari kedua dibuka di setengah atas rentang hari pertama. Pada akhir hari kedua, harus ditutup mendekati puncaknya, menyisakan bayangan atas yang sangat kecil atau tidak ada sama sekali. Pola yang sama kemudian diulang pada hari ketiga. Gambar 2. Pola Candlestick '3 White Soldiers' Berikut adalah metode untuk pengenalan pola "3 White Soldiers": //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 White Soldiers" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- 3 White Soldiers &nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; // candlestick putih panjang &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // midpoints lebih tinggi &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 White Soldiers". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator MFI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator MFI. Nilai indikator MFI harus lebih rendah dari 40 (untuk posisi long) atau lebih besar dari 60 (untuk posisi short). Penutupan posisi yang dibuka bergantung pada nilai indikator MFI. Hal ini bisa dilakukan dalam 2 kasus: jika MFI telah mencapai level kritis yang berlawanan (70 untuk posisi long dan 30 untuk posisi short) jika sinyal pembalikan tidak terkonfirmasi (ketika indikator MFI mencapai level berikut: 30 untuk posisi long dan 70 untuk posisi short) Gambar 3. Pola '3 Black Crows', yang dikonfirmasi oleh indikator MFI int CBC_WS_MFI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBC_WS_MFI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka posisi long/Menutup posisi short Pembentukan pola "3 White Soldiers" harus dikonfirmasi oleh indikator MFI: MFi(1)&lt;40 (nilai indikator MFI dari bar yang telah selesai terakhir harus kurang dari 40). Posisi short harus ditutup jika indikator MFI telah melewati level kritis ke atas (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Masuk pasar (membuka posisi long, hasil=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //| 2) Keluar pasar (menutup posisi short, hasil=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //+------------------------------------------------------------------+ int CBC_WS_MFI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi perdagangan pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi perdagangan hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola 3 White Soldiers dan MFI&lt;40 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (MFI(1)&lt;40)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal dari level overbought/oversold (ke atas 30, ke atas 70) &nbsp;&nbsp;if(((MFI(1)&gt;30) &amp;&amp; (MFI(2)&lt;30)) || ((MFI(1)&gt;70) &amp;&amp; (MFI(2)&lt;70))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. Membuka posisi short/Menutup posisi long Pembentukan pola "3 Black Crows" harus dikonfirmasi oleh indikator MFI: MFI(1)&gt;60 (nilai indikator MFI dari bar yang telah selesai terakhir harus lebih besar dari 60). Posisi long harus ditutup jika indikator MFI telah melewati level kritis ke atas (70 atau 30). //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 1) Masuk pasar (membuka posisi short, hasil=80)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | //| 2) Keluar pasar (menutup posisi long, hasil=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| //+------------------------------------------------------------------+ int CBC_WS_MFI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi perdagangan pada setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi perdagangan hanya pada bar berita &nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola 3 Black Crows dan MFI&gt;60 &nbsp;&nbsp;if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (MFI(1)&gt;60)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal dari level overbought/oversold (ke atas 70, ke bawah 30) &nbsp;&nbsp; if(((MFI(1)&gt;70) &amp;&amp; (MFI(2)&lt;70)) || ((MFI(1)&lt;30) &amp;&amp; (MFI(2)&gt;30))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- mengembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBC_WS_MFI tidak termasuk dalam kelas Standard Library, untuk menggunakannya, perlu mengunduh file abc_ws_mfi.mqh (lihat lampiran) dan menyimpannya di folder terminal_klien_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga harus dilakukan dengan file acandlepatterns.mqh. Anda dapat menggunakannya di MQL5 Wizard setelah me-restart MetaEditor. Untuk membuat Expert Advisor, luncurkan MQL5 Wizard: Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum dari Expert Advisor Setelah itu, kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal dari Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul Sinyal berdasarkan 3 Black Crows/3 White Soldiers yang dikonfirmasi oleh MFI: Gambar 7. Properti Sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Gambar 8. Properti Sinyal dari Expert Advisor Anda dapat memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing dari Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume perdagangan tetap": Gambar 10. Properti Manajemen Uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABC_WS_MFI.mq5, yang akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Level Take Profit (dalam poin) harus diganti menjadi: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0;&nbsp;&nbsp;&nbsp;&nbsp;// Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menetapkan nilai tetap dari ambang tersebut: Membuka posisi: 80; Menutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat mengatur nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur sebagai 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan benar. 2.4. Hasil Backtesting Historis Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodMFI=37, MA_period=13). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, berdasarkan 3 Black Crows/3 White Soldiers + MFI Set terbaik dari parameter input dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir di expert_abc_ws_mfi.mq5.

2011.02.18
MQL5 Wizard: Membuat Trading Signals dengan Pola Candlestick 3 Black Crows/3 White Soldiers dan CCI
MetaTrader5
MQL5 Wizard: Membuat Trading Signals dengan Pola Candlestick 3 Black Crows/3 White Soldiers dan CCI

MQL5 Wizard adalah alat yang sangat membantu bagi trader yang ingin membuat Expert Advisor (EA) siap pakai berdasarkan kelas perpustakaan standar yang disediakan bersamaan dengan terminal klien. Dengan MQL5 Wizard, Anda bisa dengan cepat memeriksa ide trading Anda, cukup dengan membuat kelas sinyal trading Anda sendiri. Struktur kelas ini dan contohnya bisa Anda temukan dalam artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide dasarnya adalah sebagai berikut: kelas dari sinyal trading diturunkan dari CExpertSignal. Selanjutnya, Anda perlu menimpa metode virtual LongCondition() dan ShortCondition() dengan metode Anda sendiri. Ada sebuah buku berjudul "Strategi Para Trader Terbaik" (dalam bahasa Rusia), yang membahas banyak strategi trading, dan kita akan fokus pada pola candlestick pembalikan yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI untuk osilator. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, Anda cukup menulis kelas yang diturunkan dari CCandlePattern dan menambahkan fitur yang diperlukan (misalnya, konfirmasi dengan osilator) di sana. Di sini kita akan mempertimbangkan sinyal yang berdasarkan pada pola candlestick pembalikan "3 Black Crows/3 White Soldiers" yang dikonfirmasi oleh indikator Commodity Channel Index. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick "3 Black Crows" dan "3 White Soldiers" 1.1. 3 Black Crows Pola candlestick bearish ini digunakan untuk memprediksi pembalikan dari tren naik yang sedang berlangsung. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih rendah dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya. Fig. 1. Pola Candlestick "3 Black Crows" Pengakuan pola "3 Black Crows" diimplemen dalam metode CheckPatternThreeBlackCrows dari kelas CCandlePattern: //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 Black Crows" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeBlackCrows() &nbsp;&nbsp;{ //--- 3 Black Crows &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; // (candlestick hitam panjang) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (titik tengah lebih rendah) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2)))&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola candlestick "3 Black Crows". 1.2. Pola 3 White Soldiers Pola candlestick bullish ini digunakan untuk memprediksi pembalikan dari tren turun yang sedang berlangsung. Pola ini terdiri dari tiga candlestick bertubuh panjang berturut-turut yang ditutup lebih tinggi dari hari sebelumnya, dengan setiap sesi dibuka di dalam tubuh candlestick sebelumnya. Pola ini valid selama candlestick hari kedua dibuka di setengah atas rentang hari pertama. Pada akhir hari kedua, candlestick ini harus ditutup mendekati titik tertingginya, meninggalkan bayangan atas yang sangat kecil atau tidak ada sama sekali. Pola yang sama kemudian diulang pada hari ketiga. Fig. 2. Pola Candlestick "3 White Soldiers" Berikut adalah metode untuk pengakuan pola "3 White Soldiers": //+------------------------------------------------------------------+ //| Memeriksa pembentukan pola candlestick "3 White Soldiers" | //+------------------------------------------------------------------+ bool CCandlePattern::CheckPatternThreeWhiteSoldiers() &nbsp;&nbsp;{ &nbsp;&nbsp; //--- 3 White Soldiers &nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; // candlestick putih panjang &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // titik tengah lebih tinggi &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2))) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true); //--- &nbsp;&nbsp; return(false); &nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) dari kelas CCandlePattern digunakan untuk memeriksa pembentukan pola candlestick "3 White Soldiers". 2. Sinyal Trading yang Dikonfirmasi oleh Indikator CCI Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh indikator CCI. Nilai CCI harus lebih besar/kecil dari level kritis (-50 untuk posisi long dan 50 untuk posisi short) Penutupan posisi yang dibuka bergantung pada nilai CCI. Ini bisa dilakukan dalam 2 kasus: jika garis CCI telah mencapai level kritis yang berlawanan (80 untuk posisi long dan -80 untuk posisi short) jika sinyal balik tidak terkonfirmasi (ketika CCI mencapai level berikutnya: -80 untuk posisi long dan 80 untuk posisi short) Fig. 3. Pola "3 Black Crows" yang Dikonfirmasi oleh Indikator CCI int CBC_WS_CCI::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBC_WS_CCI::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "3 Black Crows" harus dikonfirmasi oleh indikator CCI: CCI(1)&lt;-50 (nilai CCI dari bar terakhir yang selesai harus kurang dari -50). Posisi short harus ditutup jika indikator CCI telah melintasi level kritis -80 ke atas atau melintasi level kritis 80 ke bawah. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi long, hasil=80) | //| 2) Keluar pasar (tutup posisi short, hasil=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::LongCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp; int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi long //--- pembentukan pola 3 White Soldiers dan CCI&lt;-50 &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (CCI(1)&lt;-50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi short //--- crossover garis sinyal pada level overbought/oversold (ke bawah -80, ke bawah -80) &nbsp;&nbsp; if(((CCI(1)&gt;-80) &amp;&amp; (CCI(2)&lt;-80)) || ((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- kembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "3 White Soldiers" harus dikonfirmasi oleh indikator CCI: CCI(1)&gt;50 (nilai CCI indikator dari bar terakhir yang selesai harus lebih besar dari 50). Posisi long harus ditutup jika indikator CCI telah melintasi ke bawah level -80 atau 80. //+------------------------------------------------------------------+ //| Memeriksa kondisi untuk masuk dan keluar dari pasar | //| 1) Masuk pasar (buka posisi short, hasil=80) | //| 2) Keluar pasar (tutup posisi long, hasil=40) | //+------------------------------------------------------------------+ int CBC_WS_CCI::ShortCondition() &nbsp;&nbsp;{ &nbsp;&nbsp; int result=0; //--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor //--- idx=0 - dalam hal ini EA memeriksa kondisi trading di setiap tick //--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita &nbsp;&nbsp; int idx&nbsp;&nbsp; =StartIndex(); //--- memeriksa kondisi untuk membuka posisi short //--- pembentukan pola 3 Black Crows dan CCI&gt;50 &nbsp;&nbsp; if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (CCI(1)&gt;50)) &nbsp;&nbsp;&nbsp;&nbsp; result=80; //--- memeriksa kondisi untuk menutup posisi long //--- crossover garis sinyal pada level overbought/oversold (ke bawah -80, ke bawah 80) &nbsp;&nbsp; if(((CCI(1)&lt;80) &amp;&amp; (CCI(2)&gt;80)) || ((CCI(1)&lt;-80) &amp;&amp; (CCI(2)&gt;-80))) &nbsp;&nbsp;&nbsp;&nbsp; result=40; //--- kembalikan hasil &nbsp;&nbsp; return(result); &nbsp;&nbsp;} 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBC_WS_CCI tidak termasuk dalam kelas Perpustakaan Standar, untuk menggunakannya, Anda perlu mengunduh file acbc_ws_cci.mqh (lihat lampiran) dan menyimpannya di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama harus dilakukan dengan file candlepatterns.mqh. Anda dapat menggunakannya di MQL5 Wizard setelah restart MetaEditor. Untuk membuat Expert Advisor, luncurkan MQL5 Wizard: Fig. 4. Membuat Expert Advisor Menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Fig. 5. Properti Umum dari Expert Advisor Setelah itu kita perlu memilih modul sinyal trading yang digunakan. Fig. 6. Properti Sinyal dari Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul "Sinyal Berdasarkan 3 Black Crows/3 White Soldiers yang Dikonfirmasi oleh CCI": Fig. 7. Properti Sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Fig. 8. Properti Sinyal dari Expert Advisor Anda dapat memilih properti trailing mana pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Fig. 9. Properti Trailing dari Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume trading tetap": Fig. 10. Properti Manajemen Uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABC_WS_CCI.mq5, dan akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp; // Level Take Profit (dalam poin) harus diganti menjadi: //--- input untuk sinyal utama input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100] input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100] input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Level harga untuk mengeksekusi transaksi input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Stop Loss (dalam poin) input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Level Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan level ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading kita telah menentukan nilai tetap dari ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai wadah, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam rata-rata "suara". Dalam kasus kita, kita memiliki: modul utama + 1 modul sinyal trading, jadi kita perlu memperhitungkan fakta ini saat menetapkan nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus diatur menjadi 40=(0+80)/2 dan 20=(0+40)/2. Nilai dari parameter input Signal_StopLevel dan Signal_TakeLevel diatur ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.03.16, PeriodCCI=37, MA_period=13). Dalam pembuatan Expert Advisor kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Fig. 11. Hasil Pengujian Expert Advisor, Berdasarkan 3 Black Crows/3 White Soldiers + CCI Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard dilampirkan dalam expert_abc_ws_cci.mq5.

2011.02.18
MQL5 Wizard: Membuat EA Berdasarkan Pola 3 Black Crows/3 White Soldiers dan Stochastic
MetaTrader5
MQL5 Wizard: Membuat EA Berdasarkan Pola 3 Black Crows/3 White Soldiers dan Stochastic

Apakah kamu tahu bahwa MQL5 Wizard memungkinkanmu untuk membuat Expert Advisor (EA) yang siap pakai? Dengan menggunakan kelas dari Standard Library yang disediakan bersama terminal klien, kamu bisa mengecek ide tradingmu dengan cepat! Semua yang kamu butuhkan adalah membuat kelas sinyal tradingmu sendiri. Struktur kelas ini beserta contohnya dapat kamu temukan di artikel MQL5 Wizard: Cara Membuat Modul Sinyal Trading. Ide umumnya adalah: kelas sinyal trading diturunkan dari CExpertSignal, lalu kamu perlu menimpa metode LongCondition() dan ShortCondition() dengan metode yang kamu buat sendiri. Mungkin kamu sudah mendengar tentang buku "Strategi Trader Terbaik" (dalam bahasa Rusia) yang membahas banyak strategi trading. Kita akan fokus pada pola candlestick pembalikan, yang dikonfirmasi oleh Stochastic, CCI, MFI, dan RSI. Cara terbaik adalah membuat kelas terpisah yang diturunkan dari CExpertSignal untuk memeriksa pembentukan pola candlestick. Untuk mengkonfirmasi sinyal trading yang dihasilkan oleh pola candlestick, cukup buat kelas yang diturunkan dari CCandlePattern dan tambahkan fitur yang diperlukan (misalnya, konfirmasi oleh osilator). Di sini kita akan membahas sinyal yang berdasarkan pada pola candlestick pembalikan "3 Black Crows/3 White Soldiers", yang dikonfirmasi oleh indikator Stochastic. Modul sinyal trading ini didasarkan pada kelas CCandlePattern, yang merupakan contoh sederhana penggunaannya untuk membuat sinyal trading dengan pola candlestick. 1. Pola Candlestick "3 Black Crows" dan "3 White Soldiers" 1.1. 3 Black Crows Pola candlestick bearish ini digunakan untuk memprediksi pembalikan dari uptrend yang sedang berlangsung. Pola ini terdiri dari tiga candlestick dengan badan panjang yang berturut-turut menutup lebih rendah dari hari sebelumnya, dengan setiap sesi buka terjadi di dalam badan candlestick sebelumnya. Gambar 1. Pola Candlestick "3 Black Crows" Penggunaan pola "3 Black Crows" dapat dilakukan dengan metode CheckPatternThreeBlackCrows pada kelas CCandlePattern: //+------------------------------------------------------------------+//| Memeriksa pembentukan pola candlestick "3 Black Crows" |//+------------------------------------------------------------------+bool CCandlePattern::CheckPatternThreeBlackCrows()&nbsp;&nbsp;{//--- 3 Black Crows &nbsp;&nbsp; if((Open(3)-Close(3)&gt;AvgBody(1)) &amp;&amp; //(candlestick hitam panjang)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(2)-Close(2)&gt;AvgBody(1)) &amp;&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Open(1)-Close(1)&gt;AvgBody(1)) &amp;&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&lt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (midpoints lebih rendah)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&lt;MidPoint(2)))&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return(true);//---&nbsp;&nbsp; return(false);&nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) pada kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 Black Crows" candlestick. 1.2. Pola Candlestick 3 White Soldiers Pola candlestick bullish ini digunakan untuk memprediksi pembalikan dari downtrend yang sedang berlangsung. Pola ini terdiri dari tiga candlestick dengan badan panjang yang berturut-turut menutup lebih tinggi dari hari sebelumnya, dengan setiap sesi buka terjadi di dalam badan candlestick sebelumnya. Pola ini valid selama candlestick hari kedua membuka di setengah atas rentang hari pertama. Pada akhir hari kedua, ia harus menutup mendekati puncaknya, meninggalkan bayangan atas yang sangat kecil atau tidak ada sama sekali. Pola yang sama kemudian diulang pada hari ketiga. Gambar 2. Pola Candlestick "3 White Soldiers" Berikut adalah metode untuk mengenali pola "3 White Soldiers": //+------------------------------------------------------------------+//| Memeriksa pembentukan pola candlestick "3 White Soldiers" |//+------------------------------------------------------------------+bool CCandlePattern::CheckPatternThreeWhiteSoldiers()&nbsp;&nbsp;{&nbsp;&nbsp; //--- 3 White Soldiers&nbsp;&nbsp; if((Close(3)-Open(3)&gt;AvgBody(1)) &amp;&amp; // (putih panjang)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(2)-Open(2)&gt;AvgBody(1)) &amp;&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Close(1)-Open(1)&gt;AvgBody(1)) &amp;&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(2)&gt;MidPoint(3))&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; // (midpoints lebih tinggi)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MidPoint(1)&gt;MidPoint(2)))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return(true);//---&nbsp;&nbsp; return(false);&nbsp;&nbsp;} Metode CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) pada kelas CCandlePattern digunakan untuk memeriksa pembentukan pola "3 White Soldiers" candlestick. 2. Sinyal Trading yang Dikukuhkan oleh Indikator Stochastic Sinyal trading untuk membuka posisi long atau short harus dikonfirmasi oleh osilator Stochastic. Garis %D harus lebih besar/kecil dari tingkat kritis yang sesuai (30 atau 70). Penutupan posisi terbuka bergantung pada nilai indikator %D. Ini dapat dilakukan dalam 2 kasus: jika garis %D telah mencapai tingkat kritis yang berlawanan (80 untuk posisi long dan 20 untuk posisi short) jika sinyal pembalikan tidak dikonfirmasi (ketika garis %D mencapai tingkat berikut: 20 untuk posisi long dan 80 untuk posisi short) Gambar 3. Pola "3 White Soldiers" yang Dikonfirmasi oleh Indikator Stochastic Memeriksa kondisi trading untuk masuk dan keluar dilakukan dalam dua metode: int CBC_WS_Stoch::LongCondition() - memeriksa kondisi untuk membuka posisi long (mengembalikan 80) dan menutup posisi short (mengembalikan 40); int CBC_WS_Stoch::ShortCondition() - memeriksa kondisi untuk membuka posisi short (mengembalikan 80) dan menutup posisi long (mengembalikan 40). 2.1. Membuka Posisi Long/Menutup Posisi Short Pembentukan pola "Three White Soldiers" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)&lt;30 (nilai garis sinyal indikator Stochastic dari bar yang terakhir harus kurang dari 30). Posisi short harus ditutup jika garis sinyal indikator Stochastic telah melintasi ke atas tingkat 20 atau 80. //+------------------------------------------------------------------+//| Memeriksa kondisi untuk masuk dan keluar dari pasar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |//| 1) Masuk pasar (buka posisi long, hasil=80)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |//| 2) Keluar pasar (tutup posisi short, hasil=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|//+------------------------------------------------------------------+int CBC_WS_Stoch::LongCondition()&nbsp;&nbsp;{&nbsp;&nbsp; int result=0;//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor//--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita&nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex();//--- memeriksa kondisi untuk membuka posisi long//--- pembentukan pola 3 White Soldiers dan garis sinyal&lt;30&nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) &amp;&amp; (StochSignal(1)&lt;30))&nbsp;&nbsp;&nbsp;&nbsp; result=80;//--- memeriksa kondisi untuk menutup posisi short//--- garis sinyal crossover dari level overbought/oversold (ke bawah 20, ke atas 80)&nbsp;&nbsp; if((((StochSignal(1)&gt;20) &amp;&amp; (StochSignal(2)&lt;20)) ||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&gt;80) &amp;&amp; (StochSignal(2)&lt;80))))&nbsp;&nbsp;&nbsp;&nbsp; result=40;//--- mengembalikan hasil&nbsp;&nbsp; return(result);&nbsp;&nbsp;} 2.2. Membuka Posisi Short/Menutup Posisi Long Pembentukan pola "Three Black Crows" harus dikonfirmasi oleh indikator Stochastic: StochSignal(1)&gt;70 (nilai garis sinyal indikator Stochastic dari bar yang terakhir harus lebih dari 70). Posisi long harus ditutup jika garis sinyal indikator Stochastic telah melintasi ke bawah tingkat 80 atau 20. //+------------------------------------------------------------------+//| Memeriksa kondisi untuk masuk dan keluar dari pasar &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |//| 1) Masuk pasar (buka posisi short, hasil=80)&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |//| 2) Keluar pasar (tutup posisi long, hasil=40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|//+------------------------------------------------------------------+int CBC_WS_Stoch::ShortCondition()&nbsp;&nbsp;{&nbsp;&nbsp; int result=0;//--- idx dapat digunakan untuk menentukan mode kerja Expert Advisor//--- idx=0 - dalam hal ini EA memeriksa kondisi trading pada setiap tick//--- idx=1 - dalam hal ini EA memeriksa kondisi trading hanya pada bar berita&nbsp;&nbsp;int idx&nbsp;&nbsp; =StartIndex();//--- memeriksa kondisi untuk membuka posisi short//--- pembentukan pola 3 Black Crows dan garis sinyal&gt;70&nbsp;&nbsp;if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) &amp;&amp; (StochSignal(1)&gt;70))&nbsp;&nbsp;&nbsp;&nbsp; result=80;//--- memeriksa kondisi untuk menutup posisi long//--- garis sinyal crossover dari level overbought/oversold (ke bawah 80, ke atas 20)&nbsp;&nbsp; if((((StochSignal(1)&lt;80) &amp;&amp; (StochSignal(2)&gt;80)) ||&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((StochSignal(1)&lt;20) &amp;&amp; (StochSignal(2)&gt;20))))&nbsp;&nbsp;&nbsp;&nbsp; result=40;//--- mengembalikan hasil&nbsp;&nbsp; return(result);&nbsp;&nbsp;} 2.3. Membuat Expert Advisor Menggunakan MQL5 Wizard Kelas CBC_WS_Stoch tidak termasuk dalam kelas Standard Library, jadi untuk menggunakannya, kamu perlu mengunduh file acbc_ws_stoch.mqh (lihat lampiran) dan simpan di folder client_terminal_data\MQL5\Include\Expert\Signal\MySignals. Hal yang sama juga perlu dilakukan dengan file candlepatterns.mqh. Kamu bisa menggunakannya di MQL5 Wizard setelah restart MetaEditor. Untuk membuat Expert Advisor, jalankan MQL5 Wizard: Gambar 4. Membuat Expert Advisor menggunakan MQL5 Wizard Mari kita tentukan nama Expert Advisor: Gambar 5. Properti Umum dari Expert Advisor Setelah itu kita perlu memilih modul sinyal trading yang digunakan. Gambar 6. Properti Sinyal dari Expert Advisor Dalam kasus kita, kita hanya menggunakan satu modul sinyal trading. Menambahkan modul "Sinyal Berdasarkan 3 Black Crows/3 White Soldiers yang Dikonfirmasi oleh Stochastic": Gambar 7. Properti Sinyal dari Expert Advisor Modul sinyal trading telah ditambahkan: Gambar 8. Properti Sinyal dari Expert Advisor Kamu dapat memilih properti trailing apa pun, tetapi kita akan menggunakan "Trailing Stop tidak digunakan": Gambar 9. Properti Trailing dari Expert Advisor Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume trading tetap": Gambar 10. Properti Manajemen Uang dari Expert Advisor Dengan menekan tombol "Selesai", kita akan mendapatkan kode dari Expert Advisor yang dihasilkan, yang terletak di Expert_ABC_WS_Stoch.mq5, yang akan disimpan di terminal_data_folder\MQL5\Experts\. Parameter input default dari Expert Advisor yang dihasilkan: //--- input untuk sinyal utamainput int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100]input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=10;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100]input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0;&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi transaksiinput double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0;&nbsp;&nbsp; // Tingkat Stop Loss (dalam poin)input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =50.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Take Profit (dalam poin) harus diganti menjadi: //--- input untuk sinyal utamainput int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdOpen&nbsp;&nbsp; =40;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk membuka [0...100]input int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Signal_ThresholdClose&nbsp;&nbsp;=20;&nbsp;&nbsp;&nbsp;&nbsp; // Nilai ambang sinyal untuk menutup [0...100]input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_PriceLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0.0&nbsp;&nbsp;&nbsp; // Tingkat harga untuk mengeksekusi transaksiinput double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_StopLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Stop Loss (dalam poin)input double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Signal_TakeLevel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =0.0&nbsp;&nbsp;&nbsp;&nbsp;// Tingkat Take Profit (dalam poin) Parameter input Signal_ThresholdOpen/Signal_ThresholdClose memungkinkan untuk menentukan tingkat ambang untuk membuka dan menutup posisi. Dalam kode metode LongCondition() dan ShortCondition() dari kelas sinyal trading, kita telah menetapkan nilai tetap dari ambang: Buka posisi: 80; Tutup posisi: 40. Expert Advisor yang dihasilkan oleh MQL5 Wizard membuka dan menutup posisi menggunakan "suara" dari modul sinyal trading. Suara dari modul utama (sebagai kontainer, terdiri dari semua modul yang ditambahkan) juga digunakan, tetapi metode LongCondition() dan ShortCondition() selalu mengembalikan 0. Hasil suara dari modul utama juga digunakan dalam "rata-rata suara". Dalam kasus kita ada: modul utama + 1 modul sinyal trading, jadi kita perlu mempertimbangkan fakta ini saat menetapkan nilai ambang. Karena fakta ini, ThresholdOpen dan ThresholdClose harus disetel sebagai 40=(0+80)/2 dan 20=(0+40)/2. Nilai parameter input Signal_StopLevel dan Signal_TakeLevel disetel ke 0, yang berarti bahwa penutupan posisi hanya akan dilakukan ketika kondisi penutupan terpenuhi. 2.4. Hasil Backtesting Sejarah Kita akan mempertimbangkan backtesting dari Expert Advisor pada data historis (EURUSD H1, periode pengujian: 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5). Dalam pembuatan Expert Advisor, kita menggunakan volume tetap (Trading Fixed Lot, 0.1), algoritma Trailing Stop tidak digunakan (Trailing tidak digunakan). Gambar 11. Hasil Pengujian Expert Advisor, Berdasarkan 3 Black Crows/3 White Soldiers + Stochastic Set parameter input terbaik dapat ditemukan menggunakan Strategy Tester dari terminal klien MetaTrader 5. Kode dari Expert Advisor yang dibuat oleh MQL5 Wizard terlampir di expert_abc_ws_stoch.mq5.

2011.02.16
Awal Sebelumnya 56 57 58 59 60 61 62 63 64 Berikutnya Akhir