
Strategi ini ialah sistem perdagangan mengikut arah aliran berdasarkan penunjuk Hentian Kadar Volatiliti (VStop) dan Purata Pergerakan Eksponen (EMA). Strategi ini menggabungkan falsafah dagangan Stan Weinstein untuk mengoptimumkan pengurusan wang melalui tahap henti rugi yang diselaraskan secara dinamik, sambil menggunakan EMA untuk mengesahkan arah aliran. Gabungan ini menyediakan pelabur dan peniaga swing dengan rangka kerja dagangan yang membolehkan mereka menangkap arah aliran sambil menguruskan risiko dengan berkesan.
Logik teras strategi adalah berdasarkan dua petunjuk teknikal utama:
Hentian Volatiliti (VStop): Penunjuk berhenti dinamik berdasarkan ATR (Julat Sebenar Purata) yang menyesuaikan kedudukan henti mengikut turun naik pasaran secara adaptif. Apabila harga berada dalam aliran menaik, garisan stop loss akan naik apabila harga meningkat;
Purata Pergerakan Eksponen (EMA): bertindak sebagai alat pengesahan arah aliran dan membantu menapis isyarat palsu. Harga perlu berada di atas EMA sebelum mempertimbangkan untuk membuka kedudukan, yang memastikan arah dagangan adalah konsisten dengan arah aliran utama.
Logik penjanaan isyarat dagangan adalah seperti berikut:
Strategi ini membina rangka kerja dagangan mengikut arah aliran yang lengkap dengan menggabungkan turun naik stop loss dan sistem purata bergerak. Kelebihan utama strategi terletak pada kebolehsuaian dan keupayaan pengurusan risiko, tetapi ia juga perlu memberi perhatian kepada kesan persekitaran pasaran terhadap prestasi strategi. Melalui pengoptimuman dan penambahbaikan berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam persekitaran pasaran yang berbeza. Adalah disyorkan bahawa pedagang menguji sepenuhnya tetapan parameter dan melaraskan strategi berdasarkan toleransi risiko mereka sendiri sebelum menggunakannya dalam perdagangan sebenar.
/*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")