Strategi ini adalah sistem perdagangan mengikuti tren berdasarkan indikator Volatility Stop (VStop) dan Exponential Moving Average (EMA). Menggabungkan prinsip perdagangan Stan Weinstein, ia mengoptimalkan manajemen modal melalui stop loss yang disesuaikan secara dinamis sambil menggunakan EMA untuk mengkonfirmasi arah tren. Kombinasi ini memberikan investor dan pedagang swing dengan kerangka kerja yang dapat menangkap tren dan mengelola risiko secara efektif.
Logika inti dibangun di atas dua indikator teknis utama: 1. Volatility Stop (VStop): Indikator stop-loss dinamis berdasarkan ATR (Average True Range) yang beradaptasi dengan volatilitas pasar. Ketika harga berada dalam tren naik, garis stop bergerak naik dengan harga; ketika tren terbalik, garis stop beralih arah dan dihitung ulang.
Logika pembuatan sinyal perdagangan: - Kondisi masuk: Harga di atas VStop (dalam tren naik) dan harga penutupan di atas EMA - Kondisi keluar: Ketika harga penutupan jatuh di bawah EMA - Pengendalian risiko: Posisi stop loss real time yang disediakan oleh VStop yang disesuaikan secara dinamis
Strategi ini membangun kerangka kerja perdagangan trend lengkap dengan menggabungkan volatility stops dan sistem moving average. Keuntungannya utama terletak pada kemampuan beradaptasi dan manajemen risiko, tetapi perhatian harus diberikan pada dampak lingkungan pasar pada kinerja strategi. Melalui optimasi dan perbaikan terus-menerus, strategi memiliki potensi untuk mempertahankan kinerja yang stabil di lingkungan pasar yang berbeda. Pedagang disarankan untuk menguji pengaturan parameter secara menyeluruh dan menyesuaikan strategi sesuai dengan toleransi risiko mereka sebelum perdagangan langsung.
/*backtest start: 2024-12-17 00:00:00 end: 2025-01-16 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("VStop + EMA Strategy", overlay=true) // VStop Parameters length = input.int(20, "VStop Length", minval=2) multiplier = input.float(2.0, "VStop Multiplier", minval=0.25, step=0.25) // EMA Parameters emaLength = input.int(30, "EMA Length", minval=1) // VStop Calculation volStop(src, atrlen, atrfactor) => if not na(src) var max = src var min = src var uptrend = true var float stop = na atrM = nz(ta.atr(atrlen) * atrfactor, ta.tr) max := math.max(max, src) min := math.min(min, src) stop := nz(uptrend ? math.max(stop, max - atrM) : math.min(stop, min + atrM), src) uptrend := src - stop >= 0.0 if uptrend != uptrend[1] and not barstate.isfirst max := src min := src stop := uptrend ? max - atrM : min + atrM [stop, uptrend] // Calculate VStop [vStop, isUptrend] = volStop(close, length, multiplier) // Plot VStop plot(vStop, "Volatility Stop", style=plot.style_cross, color=isUptrend ? color.teal : color.red) // Calculate 30 EMA emaValue = ta.ema(close, emaLength) plot(emaValue, "EMA", color=color.blue) // Entry and Exit Conditions longCondition = isUptrend and close > emaValue exitCondition = close <= emaValue // Strategy Execution if longCondition and not strategy.opentrades strategy.entry("Long", strategy.long) if exitCondition and strategy.opentrades strategy.close("Long") // Display Strategy Info bgcolor(isUptrend ? color.new(color.teal, 90) : color.new(color.red, 90), title="Trend Background")