La estrategia de volatilidad tiene como objetivo capturar las rupturas de precios resultantes del aumento de la volatilidad del mercado. La estrategia utiliza el indicador Average True Range (ATR) para medir la volatilidad de un activo durante un período especificado.
La estrategia primero calcula el ATR durante un período elegido. Luego utiliza el ATR para calcular un nivel de ruptura superior e inferior. Cuando el precio de cierre se rompe por encima del nivel superior, se genera una señal larga. Cuando el precio de cierre se rompe por debajo del nivel inferior, se genera una señal corta. Para confirmar aún más las señales, la barra actual necesita cerrar para su parte del cuerpo.
Cuando el precio de cierre rompe los niveles superiores o inferiores, la zona de ruptura se llena con un color que indica la dirección de la ruptura.
Cuando se genera una señal larga y no hay posición actual, la estrategia es larga.
La entrada de longitud determina el período durante el cual se mide la volatilidad. Un valor de longitud más alto implica centrarse en movimientos de precios más largos. Por ejemplo, con longitud establecida en 20, cada operación abarca alrededor de 100 barras, capturando múltiples oscilaciones.
La reducción del valor de longitud permite apuntar a movimientos de precios a corto plazo y aumentar potencialmente la frecuencia de las operaciones.
El indicador ATR calcula dinámicamente los niveles de ruptura en lugar de utilizar parámetros fijos.
El uso de barras sólidas para cerrar las señales de confirmación filtra las falsas rupturas.
La entrada de longitud proporciona flexibilidad para optimizar la estrategia para condiciones específicas del mercado.
Las operaciones de ruptura conllevan el riesgo de ser detenidas.
Las señales de ruptura pueden generar señales falsas que conducen a un exceso de negociación.
La optimización de parámetros requiere datos comerciales suficientes.
Las bandas de Bollinger pueden introducirse dentro del período ATR para calcular nuevos niveles de ruptura.
Las tendencias se pueden seguir siguiendo después de las rupturas en lugar de detenerse inmediatamente.
Se pueden considerar diferentes parámetros o evitar por completo las operaciones en los mercados de rango para evitar los golpes.
El indicador ATR establece dinámicamente los niveles de ruptura y las barras sólidas filtran las falsas rupturas. La entrada de longitud proporciona flexibilidad para ajustar el período de la estrategia. La estrategia es adecuada para seguir la tendencia a medio y largo plazo, pero los riesgos de ruptura deben gestionarse a través de la optimización de parámetros.
/*backtest start: 2023-09-29 00:00:00 end: 2023-10-29 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ //@version=5 strategy("Volatility Breakout Strategy [Angel Algo]", overlay = true) // Inputs length = input(title="Length", defval=20) // Calculate the average true range (ATR) atr = ta.atr(length) // Plot the ATR on the chart plot(atr, color=color.blue, linewidth=2, title="ATR") // Calculate the upper and lower breakouts upper_breakout = high + atr lower_breakout = low - atr // Plot the upper and lower breakouts on the chart ul = plot(upper_breakout[1], color = color.new(color.green, 100), linewidth=2, title="Upper Breakout Level") ll = plot(lower_breakout[1], color = color.new(color.red, 100), linewidth=2, title="Lower Breakout Level") // Create the signals long_entry = ta.crossover(close, upper_breakout[1]) and barstate.isconfirmed short_entry = ta.crossunder(close, lower_breakout[1]) and barstate.isconfirmed active_signal_color =ta.barssince(long_entry) < ta.barssince(short_entry) ? color.new(color.green,85) : color.new(color.red,85) // Plot the signals on the chart plotshape(long_entry and ta.barssince(long_entry[1]) > ta.barssince(short_entry[1]), location=location.belowbar, style=shape.triangleup, color=color.green, size=size.normal, text = "Bullish breakout", textcolor = color.green) plotshape(short_entry and ta.barssince(long_entry[1]) < ta.barssince(short_entry[1]), location=location.abovebar, style=shape.triangledown, color=color.red, size=size.normal,text = "Bearish breakout", textcolor = color.red) // Fill the space between the upper and lower levels with the color that indicates the latest signal direction fill(ul,ll, color=active_signal_color) long_condition = long_entry and strategy.position_size <= 0 and barstate.isconfirmed short_condition = short_entry and strategy.position_size >= 0 and barstate.isconfirmed if long_condition strategy.entry("Volatility Breakout Long", strategy.long) if short_condition strategy.entry("Volatility Breakout Short", strategy.short)