
Dies ist eine Adaptive Trading-Strategie, die auf dem Volumen-Wage-Average-Preis (VWAP) und der Garman-Klass-Volatilität (GKV) basiert. Die Strategie ermöglicht die intelligente Verfolgung von Markttrends durch die dynamische Anpassung der Standarddifferenz-Band der VWAP an die Volatilität.
Der Kern der Strategie ist die Kombination von VWAP und GKV-Volatilität. Zuerst wird der VWAP als Preiszentrum berechnet und dann die Bandbreite mit der Standarddifferenz des Schlusskurses erstellt. Der Schlüssel liegt in der Berechnung der Volatilität mit der GKV-Formel, die die vier Preise für die Eröffnung und Beendigung berücksichtigt, und ist genauer als die herkömmliche Volatilität.
Die Strategie ermöglicht die dynamische Verfolgung des Marktes durch die Kombination von VWAP und GKV-Volatilitätsinnovation. Ihre Anpassungsfähigkeit ermöglicht es, eine stabile Leistung in verschiedenen Marktumgebungen zu halten. Obwohl einige potenzielle Risiken bestehen, hat die Strategie durch angemessene Risikokontrolle und kontinuierliche Optimierung gute Anwendungsmöglichkeiten.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Adaptive VWAP Bands with Garman Klass Volatility", overlay=true)
// Inputs
length = input.int(25, title="Volatility Length")
vwapLength = input.int(14, title="VWAP Length")
vol_multiplier = input.float(1,title="Volatility Multiplier")
// Function to calculate Garman-Klass Volatility
var float sum_gkv = na
if na(sum_gkv)
sum_gkv := 0.0
sum_gkv := 0.0
for i = 0 to length - 1
sum_gkv := sum_gkv + 0.5 * math.pow(math.log(high[i]/low[i]), 2) - (2*math.log(2)-1) * math.pow(math.log(close[i]/open[i]), 2)
gcv = math.sqrt(sum_gkv / length)
// VWAP calculation
vwap = ta.vwma(close, vwapLength)
// Standard deviation for VWAP bands
vwapStdDev = ta.stdev(close, vwapLength)
// Adaptive multiplier based on GCV
multiplier = (gcv / ta.sma(gcv, length)) * vol_multiplier
// Upper and lower bands
upperBand = vwap + (vwapStdDev * multiplier)
lowerBand = vwap - (vwapStdDev * multiplier)
// Plotting VWAP and bands
plot(vwap, title="VWAP", color=color.blue, linewidth=2)
plot(upperBand, title="Upper Band", color=color.green, linewidth=1)
plot(lowerBand, title="Lower Band", color=color.red, linewidth=1)
var barColor = color.black
// Strategy: Enter long above upper band, go to cash below lower band
if (close > upperBand)
barColor := color.green
strategy.entry("Long", strategy.long)
else if (close < lowerBand)
barColor := color.fuchsia
strategy.close("Long")
barcolor(barColor)