Estrategia de negociación de ruptura de volatilidad

El autor:¿ Qué pasa?, fecha: 2023-10-30 16:58:03
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

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.

Análisis de ventajas

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.

Análisis de riesgos

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.

Oportunidades de optimización

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.

Conclusión

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)


Más.