Es una estrategia de negociación adaptable basada en el precio promedio ponderado por el volumen de transacciones (VWAP) y la volatilidad de la clase Garman (GKV). Esta estrategia permite un seguimiento inteligente de las tendencias del mercado mediante el ajuste dinámico de la volatilidad de la franja de diferencia estándar de VWAP.
El núcleo de la estrategia consiste en combinar VWAP con la oscilación de GKV. Primero se calcula VWAP como un centro de precios, y luego se construye un intervalo de bandas con el uso del diferencial estándar del precio de cierre. La clave está en el uso de la fórmula de GKV para calcular la oscilación, que tiene en cuenta los cuatro precios de alta y baja renta, lo que es más preciso que la oscilación tradicional.
La estrategia logra un seguimiento dinámico del mercado mediante la combinación de VWAP con la innovación de la tasa de fluctuación de GKV. Su capacidad de adaptación le permite mantener un desempeño estable en diferentes entornos de mercado. Aunque existen algunos riesgos potenciales, la estrategia tiene buenas perspectivas de aplicación con un control razonable del riesgo y una optimización continua.
/*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)