
Strategi ini adalah sistem perdagangan mengikuti tren berdasarkan indikator Volatility Rate Stop (VStop) dan Exponential Moving Average (EMA). Strategi ini menggabungkan filosofi perdagangan Stan Weinstein untuk mengoptimalkan pengelolaan uang melalui level stop-loss yang disesuaikan secara dinamis, sembari menggunakan EMA untuk mengonfirmasi arah tren. Kombinasi ini memberi para investor dan pedagang ayunan suatu kerangka kerja perdagangan yang memungkinkan mereka menangkap tren sambil mengelola risiko secara efektif.
Logika inti dari strategi ini didasarkan pada dua indikator teknis utama:
Volatility Stop (VStop): Indikator stop dinamis berdasarkan ATR (Average True Range) yang secara adaptif menyesuaikan posisi stop menurut volatilitas pasar. Ketika harga sedang dalam tren naik, garis stop loss akan bergerak ke atas seiring kenaikan harga; ketika tren berbalik, garis stop loss akan berganti arah dan dihitung ulang.
Rata-Rata Pergerakan Eksponensial (EMA): bertindak sebagai alat konfirmasi tren dan membantu menyaring sinyal palsu. Harga harus berada di atas EMA sebelum mempertimbangkan untuk membuka posisi, yang memastikan bahwa arah perdagangan konsisten dengan tren utama.
Logika pembangkitan sinyal perdagangan adalah sebagai berikut:
Strategi ini membangun kerangka kerja perdagangan mengikuti tren yang lengkap dengan menggabungkan stop loss volatilitas dan sistem rata-rata pergerakan. Keuntungan utama dari strategi ini terletak pada kemampuan beradaptasi dan manajemen risiko, tetapi perlu juga memperhatikan dampak lingkungan pasar terhadap kinerja strategi. Melalui pengoptimalan dan perbaikan berkelanjutan, strategi ini diharapkan dapat mempertahankan kinerja yang stabil di berbagai lingkungan pasar. Disarankan agar pedagang menguji sepenuhnya pengaturan parameter dan menyesuaikan strategi berdasarkan toleransi risiko mereka sendiri sebelum menggunakannya dalam perdagangan nyata.
/*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")