MQL5 Wizard: Ciptakan Expert Advisor untuk Pola Candlestick Engulfing dan CCI
Mike
2011.03.10 19:54
88
0
0
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.
bool CCandlePattern::CheckPatternBullishEngulfing() {
if((Open(2) > Close(2)) &&
(Close(1) - Open(1) > AvgBody(1)) &&
(Close(1) > Open(2)) &&
(MidOpenClose(2) < CloseAvg(2)) &&
(Open(1) < Close(2))) {
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.
bool CCandlePattern::CheckPatternBearishEngulfing() {
if((Open(2) < Close(2)) &&
(Open(1) - Close(1) > AvgBody(1)) &&
(Close(1) < Open(2)) &&
(MidOpenClose(2) > CloseAvg(2)) &&
(Open(1) > Close(2))) {
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) < -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.
int CBE_BE_CCI::LongCondition() {
int result = 0;
int idx = StartIndex();
if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1) < -50))
result = 80;
if (((CCI(1) > -80) && (CCI(2) < -80)) || ((CCI(1) < -80) && (CCI(2) > -80)))
result = 40;
return(result);
}
Buka Posisi Short/Tutup Posisi Long
Pembentukan pola Bearish Engulfing harus dikonfirmasi oleh indikator CCI: CCI(1) > 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.
int CBE_BE_CCI::ShortCondition() {
int result = 0;
int idx = StartIndex();
if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1) > 50))
result = 80;
if (((CCI(1) < 80) && (CCI(2) > 80)) || ((CCI(1) < -80) && (CCI(2) > -80)))
result = 40;
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 int Signal_ThresholdOpen = 10;
input int Signal_ThresholdClose = 10;
input double Signal_PriceLevel = 0.0;
input double Signal_StopLevel = 50.0;
input double Signal_TakeLevel = 50.0;
harus diubah menjadi:
input int Signal_ThresholdOpen = 40;
input int Signal_ThresholdClose = 20;
input double Signal_PriceLevel = 0.0;
input double Signal_StopLevel = 0.0;
input double Signal_TakeLevel = 0.0;
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.
Komentar 0