Diese Strategie ist ein Trend-Nachhandelssystem, das auf dem Volatility Stop (VStop) -Indikator und dem Exponential Moving Average (EMA) basiert. Durch die Einbeziehung der Handelsprinzipien von Stan Weinstein optimiert sie das Kapitalmanagement durch dynamisch angepasste Stop-Losses, während EMA zur Bestätigung der Trendrichtung verwendet wird. Diese Kombination bietet Anlegern und Swing-Händlern einen Rahmen, der Trends erfassen und Risiken effektiv verwalten kann.
Die Kernlogik beruht auf zwei wesentlichen technischen Indikatoren: 1. Volatility Stop (VStop): Ein dynamischer Stop-Loss-Indikator, der auf ATR (Average True Range) basiert und sich an die Marktvolatilität anpasst.
Handelssignalgenerierungslogik: - Einstiegsbedingungen: Preis über VStop (im Aufwärtstrend) und Schlusskurs über EMA - Ausstiegsbedingungen: Wenn der Schlusskurs unter die EMA fällt - Risikokontrolle: Echtzeit-Stop-Loss-Positionen durch dynamisch angepasste VStop
Diese Strategie konstruiert einen kompletten Trend nach dem Handelsrahmen, indem sie Volatilitätsstopp und gleitende Durchschnittssysteme kombiniert. Ihre Hauptvorteile liegen in der Anpassungsfähigkeit und Risikomanagementfähigkeiten, aber es muss auf die Auswirkungen des Marktumfeldes auf die Strategieleistung geachtet werden. Durch kontinuierliche Optimierung und Verbesserung hat die Strategie das Potenzial, eine stabile Performance in verschiedenen Marktumgebungen zu erhalten. Händlern wird geraten, die Parameter-Einstellungen gründlich zu testen und die Strategie vor dem Live-Handel entsprechend ihrer Risikotoleranz anzupassen.
/*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")