Breakout Multifilter: EMA + RSI + Bollinger Bands di XAU/EUR
Paper ini merancang EA "Breakout Multifilter" yang menggabungkan tiga indikator sekaligus sebagai penyaring sinyal: Bollinger Bands (volatilitas dan level breakout), EMA (arah tren), dan RSI (kekuatan momentum). Idenya: satu indikator saja gampang memicu sinyal palsu, tiga indikator yang harus "setuju" bareng diharapkan menyaring noise itu.
EA diuji di dua timeframe (H1 dan H4) memakai data historis 3 tahun (2022–2025), lalu divalidasi dengan real-time testing selama satu bulan plus uji statistik T-Test.
Temuan paling penting adalah dikotomi H1 vs H4: skenario H1 unggul telak di backtesting tapi GAGAL TOTAL saat real-time. Sebaliknya skenario H4 lebih lemah di simulasi tapi justru terbukti tangguh dan profitable saat real-time.
Kesimpulan penulis: H4 lebih layak diimplementasikan karena stabilitasnya superior, sekaligus menegaskan peran krusial real-time testing — backtest sendirian bisa menyesatkan. Ini contoh nyata overfitting: strategi bisa "menghafal" pola spesifik data historis H1 yang tidak berulang di kondisi baru.
Ilustrasi Kode Expert Advisor
//+------------------------------------------------------------------+
//| ILUSTRASI EDUKASI: Breakout Multifilter EMA + RSI + Bollinger |
//| Sinyal hanya valid jika KETIGA indikator sepakat searah |
//+------------------------------------------------------------------+
input int EMA_Period = 50;
input int RSI_Period = 14;
input int BB_Period = 20;
input double BB_Deviation = 2.0;
input double RSI_BullLevel = 55.0; // ambang RSI dianggap "bullish"
input double RSI_BearLevel = 45.0; // ambang RSI dianggap "bearish"
int emaHandle, rsiHandle, bbHandle;
int OnInit() {
emaHandle = iMA(_Symbol, PERIOD_CURRENT, EMA_Period, 0, MODE_EMA, PRICE_CLOSE);
rsiHandle = iRSI(_Symbol, PERIOD_CURRENT, RSI_Period, PRICE_CLOSE);
bbHandle = iBands(_Symbol, PERIOD_CURRENT, BB_Period, 0, BB_Deviation, PRICE_CLOSE);
return INIT_SUCCEEDED;
}
void OnTick() {
double ema[], rsi[], bbUpper[], bbLower[];
CopyBuffer(emaHandle, 0, 0, 1, ema);
CopyBuffer(rsiHandle, 0, 0, 1, rsi);
CopyBuffer(bbHandle, 1, 0, 1, bbUpper); // buffer 1 = upper band
CopyBuffer(bbHandle, 2, 0, 1, bbLower); // buffer 2 = lower band
double price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
bool trendUp = price > ema[0];
bool momentumUp = rsi[0] > RSI_BullLevel;
bool breakoutUp = price > bbUpper[0];
bool trendDown = price < ema[0];
bool momentumDown = rsi[0] < RSI_BearLevel;
bool breakoutDown = price < bbLower[0];
if (PositionsTotal() == 0) {
if (trendUp && momentumUp && breakoutUp) {
// trade.Buy(lotSize, _Symbol);
} else if (trendDown && momentumDown && breakoutDown) {
// trade.Sell(lotSize, _Symbol);
}
}
}
Seluruh artikel di Trading Zone membahas metode dari paper akademik yang sudah terbit — tujuannya murni edukasi (belajar metode dari literatur ilmiah), BUKAN sinyal atau rekomendasi beli/jual. Kode EA yang ditampilkan adalah ilustrasi struktur logika untuk belajar, bukan kode produksi siap pakai. Kami mendorong kamu membaca paper aslinya secara lengkap dan menguji sendiri di akun demo sebelum menyimpulkan apa pun. Perdagangan berjangka/forex adalah transaksi high-risk, high-return.