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

Mike 2011.03.10 19:54 83 0 0
Lampiran

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.

Pola Bullish Engulfing

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.

Pola Bearish Engulfing

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).

Pola Bullish Engulfing yang dikonfirmasi oleh CCI

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

  1. Pembentukan pola Bullish Engulfing harus dikonfirmasi oleh indikator CCI: CCI(1) < -50 (nilai CCI dari bar terakhir yang selesai harus kurang dari -50).

  2. 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 < -50
    if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1) < -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) > -80) && (CCI(2) < -80)) || ((CCI(1) < -80) && (CCI(2) > -80)))
        result = 40;
    //--- mengembalikan hasil
    return(result);
}

Buka Posisi Short/Tutup Posisi Long

  1. Pembentukan pola Bearish Engulfing harus dikonfirmasi oleh indikator CCI: CCI(1) > 50 (nilai CCI dari bar terakhir yang selesai harus lebih dari 50).

  2. 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 > 50
    if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1) > 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) < 80) && (CCI(2) > 80)) || ((CCI(1) < -80) && (CCI(2) > -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:

Membuat Expert Advisor Menggunakan MQL5 Wizard

Gambar 4. Membuat Expert Advisor Menggunakan MQL5 Wizard

Tentukan nama Expert Advisor:

Properti Umum Expert Advisor

Gambar 5. Properti Umum Expert Advisor

Setelah itu, pilih modul sinyal trading yang digunakan.

Properti Sinyal Expert Advisor

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:

Properti Sinyal Expert Advisor

Gambar 7. Properti Sinyal Expert Advisor

Modul sinyal trading ditambahkan:

Properti Sinyal Expert Advisor

Gambar 8. Properti Sinyal Expert Advisor

Kamu dapat memilih properti trailing, tetapi kita akan menggunakan "Trailing Stop tidak digunakan":

Properti Trailing Expert Advisor

Gambar 9. Properti Trailing Expert Advisor

Mengenai properti manajemen uang, kita akan menggunakan "Trading dengan volume tetap":

Properti Manajemen Uang Expert Advisor

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).

Hasil Pengujian Expert Advisor

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.

Daftar
Komentar 0