
EMAREVEX (Ema Regression Expert) adalah strategi regressi rata-rata yang dirancang secara profesional yang menggabungkan metode analisis teknis dari beberapa periode waktu yang dioptimalkan khusus untuk menangkap peluang regresi harga jangka pendek. Strategi ini didasarkan pada asumsi utama: harga cenderung kembali ke level rata-rata ketika harga menyimpang dari rata-rata (diwakili oleh EMA200) dan mencapai status overbought atau oversold.
Kebijakan EMAREVEX didasarkan pada beberapa komponen utama:
Filter tren multi-siklusStrategi: Menggunakan EMA200 pada periode waktu 5 menit, 15 menit, dan 30 menit sebagai filter tren untuk memastikan arah perdagangan konsisten dengan tren pada periode waktu yang lebih tinggi. Metode analisis multi-periode ini membantu mengurangi sinyal palsu.
Blinking Triggered Breakthrough: Ketika harga menembus Bollinger Bands downtrack ((membuat sinyal lebih) atau uptrack ((membuat sinyal lebih)), menunjukkan bahwa harga mungkin mencapai batas sementara, ada probabilitas regresi rata-rata. Parameter Bollinger Bands secara default disetel menjadi 20 panjang siklus dan 2.0 kali selisih standar.
RSI mengkonfirmasi sinyalStrategi menggunakan indikator RSI ((default 14 cycle) untuk mengkonfirmasi kondisi overbought atau oversold. RSI di bawah 30 dianggap sebagai oversold ((membuat sinyal overbought), di atas 70 dianggap sebagai overbought ((membuat sinyal overbought)).
Konfirmasi tren arah: melakukan over permintaan harga di bawah 30 menit EMA200, melakukan short permintaan harga di atas 30 menit EMA200, yang memastikan perdagangan konsisten dengan tren utama.
Adaptive Tracking Stop Loss MechanismStrategi ini menggunakan mekanisme stop loss yang inovatif, yang hanya mengaktifkan tracking stop loss ketika harga berfluktuasi di atas batas ATR yang ditetapkan (default 2.0x ATR), dan kemudian secara dinamis melacak harga berdasarkan persentase yang ditetapkan (default 1.5%). Mekanisme ini memungkinkan keuntungan untuk memiliki ruang pertumbuhan yang cukup, sementara pada saat yang tepat melindungi keuntungan yang telah dicapai.
Analisis mendalam dari kode strategi EMAREVEX dapat disimpulkan sebagai berikut:
Efek sinergis dari indikator teknis komprehensifStrategi ini tidak bergantung pada satu indikator, tetapi mengintegrasikan beberapa indikator teknis yang saling melengkapi (EMA, Bollinger Bands, RSI) untuk membentuk sistem sinyal yang lebih andal.
Konfirmasi multi-periodeDengan menganalisis EMA200 pada periode waktu yang berbeda, strategi dapat memfilter sinyal perdagangan berkualitas rendah dan mengurangi kerugian akibat terobosan palsu.
Adaptasi mekanisme penghentian kerugianTracking stop loss berbasis ATR hanya diaktifkan setelah volatilitas mencapai titik terendah tertentu. Desain ini memungkinkan perdagangan yang menguntungkan untuk berkembang sepenuhnya dan melindungi keuntungan secara efektif ketika pasar berbalik.
Aturan masuk dan keluar jelasStrategi ini mendefinisikan kondisi masuk yang jelas (Breakout + RSI Confirmation + Trend Consistency) dan kondisi keluar (Tracking Stop Loss), mengurangi penilaian subjektif dalam proses perdagangan.
Tingkat fluktuasi beradaptasiStrategi menggunakan indikator ATR untuk menyesuaikan level stop loss sehingga dapat beradaptasi dengan perubahan volatilitas dalam berbagai kondisi pasar, meningkatkan fleksibilitas strategi.
Meskipun strategi EMAREVEX dirancang dengan cermat, risiko yang perlu diperhatikan adalah:
Risiko perubahan trenSolusi: Tambahkan filter intensitas tren (seperti ADX), hentikan perdagangan di pasar tren kuat.
Parameter yang terlalu dioptimalkanStrategi: menggunakan beberapa parameter yang dapat disesuaikan (panjang EMA, parameter Brinks, RSI, dll.), Ada risiko bahwa optimasi berlebihan menyebabkan kinerja yang buruk di masa depan. Solusi: melakukan pengujian stabilitas, menggunakan pengujian sampel (analisis berjalan maju) untuk memverifikasi kinerja parameter dalam berbagai lingkungan pasar.
Stop loss tidak menyala pada waktu yang tepatDalam situasi yang ekstrim, harga mungkin mendadak menembus level stop loss, menyebabkan kerugian yang lebih besar dari yang diharapkan. Solusi: Pertimbangkan untuk menambahkan stop loss tetap sebagai pertahanan terakhir, atau gunakan indikator volatilitas yang lebih sensitif untuk menyesuaikan kondisi pemicu yang melacak stop loss.
Frekuensi sinyal tidak stabilDalam kondisi pasar yang berbeda, frekuensi sinyal yang dihasilkan dapat sangat bervariasi, yang menyebabkan ketidakstabilan dalam pemanfaatan dana. Solusi: Menambahkan mekanisme klasifikasi lingkungan pasar, menyesuaikan parameter strategi atau beralih ke strategi alternatif dalam kondisi pasar yang berbeda.
Manajemen keuangan yang burukKode ini secara default menggunakan 10% dari nilai akun untuk setiap transaksi, yang dapat menyebabkan fluktuasi yang berlebihan pada kurva modal jika terjadi kerugian berturut-turut. Solusi: menerapkan sistem manajemen posisi yang lebih kompleks, seperti Kelley Principle atau model risiko proporsi tetap.
Berdasarkan analisis kode, strategi EMAREVEX dapat dioptimalkan dari beberapa arah:
Klasifikasi kondisi pasar: Memperkenalkan mekanisme klasifikasi kondisi pasar (seperti klasifikasi berdasarkan ATR, indikator volatilitas, atau pola harga), menyesuaikan parameter strategi secara dinamis dalam berbagai lingkungan pasar, atau menghentikan perdagangan. Hal ini dilakukan karena strategi pengembalian rata-rata bekerja paling baik di pasar yang bergoyang, dan bekerja lebih buruk di pasar yang sedang tren.
Optimalisasi sinyal masukPertimbangkan untuk menambahkan filter masuk tambahan, seperti konfirmasi volume, filter waktu (untuk menghindari waktu pengumuman berita penting) atau pengenalan pola harga, untuk meningkatkan kualitas sinyal. Hal ini dapat mengurangi sinyal palsu dan meningkatkan tingkat kemenangan.
Penyesuaian parameter adaptasi: Mekanisme penyesuaian penyesuaian parameter yang memungkinkan parameter kunci seperti perkalian Brin dan RSI threshold dapat disesuaikan secara otomatis dengan volatilitas pasar. Pengoptimalan ini dapat meningkatkan kemampuan strategi untuk beradaptasi dalam lingkungan pasar yang berbeda.
Manajemen posisi sebagianDengan adanya mekanisme batch entry dan batch stop, mengurangi risiko pengambilan keputusan tunggal, dan meningkatkan efisiensi penggunaan dana. Metode ini dapat memaksimalkan proses penangkapan harga kembali dengan tetap mempertahankan tingkat kemenangan yang tinggi.
Pembelajaran MesinOptimalkan proses pembuatan sinyal dan pemilihan parameter dengan menggunakan algoritma pembelajaran mesin, seperti menggunakan pohon keputusan atau hutan acak untuk mengidentifikasi waktu masuk yang optimal, atau menggunakan pembelajaran penguatan untuk mengoptimalkan strategi stop loss.
Strategi EMAREVEX adalah sistem perdagangan regresi nilai rata-rata yang terstruktur dengan baik, yang menyediakan pedagang dengan metode perdagangan jangka pendek yang sistematis dengan mengintegrasikan pemfilteran tren EMA dalam beberapa periode waktu, sinyal Brin Belt Breakout, konfirmasi RSI overbought dan oversold, dan mekanisme stop loss penyesuaian diri berbasis ATR. Strategi ini sangat cocok untuk lingkungan pasar yang bergoyang, dan dapat secara efektif menangkap peluang regresi harga dalam jangka pendek.
Namun, seperti semua strategi perdagangan, EMAREVEX tidak serba bisa. Dalam menggunakan strategi ini, pedagang harus melakukan penyesuaian yang tepat dalam kombinasi dengan analisis lingkungan pasar, prinsip manajemen risiko, dan gaya perdagangan individu.
Dengan mengoptimalkan arah implementasi rekomendasi, terutama klasifikasi kondisi pasar dan penyesuaian parameter adaptasi, strategi EMAREVEX memiliki potensi untuk mempertahankan kinerja yang stabil di berbagai lingkungan pasar, menjadi senjata yang kuat dalam toolkit pedagang kuantitatif.
/*backtest
start: 2024-07-08 00:00:00
end: 2025-07-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("EMAREVEX: Adaptive Multi-Timeframe Mean Reversion", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// === PARAMETRE PANELİ ===
emaLen = input.int(200, "EMA Uzunluğu")
bbLen = input.int(20, "Bollinger Length")
bbMult = input.float(2.0, "Bollinger Multiplier")
rsiLen = input.int(14, "RSI Uzunluğu")
rsiThresh = input.int(30, "RSI Aşırı Satım Eşiği")
rsiOverbought = input.int(70, "RSI Aşırı Alım Eşiği")
atrLen = input.int(14, "ATR Uzunluğu")
trailPerc = input.float(1.5, "Trailing Stop (%)")
trailTriggerATR = input.float(2.0, "Trailing Tetikleyici (ATR)")
// === EMA200 FİLTRELERİ (MFT) ===
ema_5 = request.security(syminfo.tickerid, "5", ta.ema(close, emaLen))
ema_15 = request.security(syminfo.tickerid, "15", ta.ema(close, emaLen))
ema_30 = request.security(syminfo.tickerid, "30", ta.ema(close, emaLen))
// === BB ve RSI ===
bbMid = ta.sma(close, bbLen)
bbStd = ta.stdev(close, bbLen)
bbLower = bbMid - bbMult * bbStd
bbUpper = bbMid + bbMult * bbStd
rsi = ta.rsi(close, rsiLen)
atr = ta.atr(atrLen)
// === LONG GİRİŞ KOŞULLARI ===
priceBelowBB = close < bbLower
rsiOversold = rsi < rsiThresh
trendDown = close < ema_30
entryLong = priceBelowBB and rsiOversold and trendDown
// === SHORT GİRİŞ KOŞULLARI ===
priceAboveBB = close > bbUpper
rsiOver = rsi > rsiOverbought
trendUp = close > ema_30
entryShort = priceAboveBB and rsiOver and trendUp
// === POZİSYON YÖNETİMİ ===
if (entryLong)
strategy.close("Short")
strategy.entry("Long", strategy.long)
if (entryShort)
strategy.close("Long")
strategy.entry("Short", strategy.short)
// === GELİŞMİŞ TRAILING STOP ===
var float longEntryPrice = na
var float shortEntryPrice = na
var float longTrailStop = na
var float shortTrailStop = na
if (strategy.opentrades > 0)
if (strategy.position_size > 0)
longEntryPrice := strategy.opentrades.entry_price(0)
trailTrigger = longEntryPrice + trailTriggerATR * atr
longTrailStop := na(longTrailStop) ? close - (trailPerc / 100) * close : math.max(longTrailStop, close - (trailPerc / 100) * close)
activeTrail = close > trailTrigger
if (activeTrail)
strategy.exit("Exit Long", from_entry="Long", stop=longTrailStop)
if (strategy.position_size < 0)
shortEntryPrice := strategy.opentrades.entry_price(0)
trailTrigger = shortEntryPrice - trailTriggerATR * atr
shortTrailStop := na(shortTrailStop) ? close + (trailPerc / 100) * close : math.min(shortTrailStop, close + (trailPerc / 100) * close)
activeTrail = close < trailTrigger
if (activeTrail)
strategy.exit("Exit Short", from_entry="Short", stop=shortTrailStop)
// === GÖRSEL DESTEK (SADELEŞTİRİLDİ) ===
plot(bbLower, "BB Alt", color=color.new(color.red, 80))
plot(bbMid, "BB Orta", color=color.new(color.gray, 85))
plot(bbUpper, "BB Üst", color=color.new(color.green, 80))
plot(ema_15, "EMA200 15m", color=color.new(color.orange, 0), linewidth=2)
plot(ema_30, "EMA200 30m", color=color.new(color.blue, 0), linewidth=2)