Il s'agit d'une stratégie de trading adaptative basée sur le prix moyen pondéré des transactions (VWAP) et la volatilité de la classe Garman (GKV). Cette stratégie permet de suivre intelligemment les tendances du marché en ajustant dynamiquement la volatilité des VWAP à l'écart standard.
Le cœur de la stratégie est de combiner le VWAP avec les fluctuations du GKV. On calcule d'abord le VWAP comme une moyenne de prix, puis on construit des bandes en utilisant le décalage standard du prix de clôture. La clé est de calculer les fluctuations en utilisant la formule GKV, qui prend en compte les quatre prix de l'offre et de la demande, plus précisément que les fluctuations traditionnelles.
La stratégie permet de suivre le marché en dynamique en combinant l'innovation VWAP avec l'innovation GKV. Ses caractéristiques d'adaptabilité lui permettent de maintenir une performance stable dans différents environnements de marché. Bien qu'il existe des risques potentiels, la stratégie a de bonnes perspectives d'application avec un contrôle raisonnable des risques et une optimisation continue.
/*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)