Breakout de bandas de Bollinger con estrategia de filtro de volatilidad

El autor:¿ Qué pasa?, Fecha: 2024-03-08 15:28:05
Las etiquetas:

img

Resumen de la estrategia

La estrategia Bollinger Bands Breakout with Volatility Filter es una estrategia de negociación basada en el indicador Bollinger Bands. Utiliza Bollinger Bands para determinar la posición y la volatilidad del precio en relación con el promedio móvil, decidiendo así los puntos de entrada y salida.

Principios de estrategia

En el núcleo de la estrategia está el cálculo del indicador de Bollinger Bands. Las bandas de Bollinger consisten en tres líneas: la línea media es un promedio móvil simple, mientras que las bandas superior e inferior se establecen en una cierta desviación estándar por encima y por debajo de la línea media, respectivamente.

Las condiciones de entrada de la estrategia se basan en la posición del precio de cierre en relación con las bandas de Bollinger. Si la dirección del comercio está establecida en largo (tradeDirection>=0) y el precio de cierre se rompe por debajo de la banda inferior en un cierto porcentaje (lower_breakout_pct), se abre una posición larga; si la dirección del comercio está establecida en corto (tradeDirection<=0) y el precio de cierre se rompe por encima de la banda superior en un cierto porcentaje (upper_breakout_pct), se abre una posición corta. Los parámetros del porcentaje de ruptura permiten que el precio rompa ligeramente las bandas de Bollinger antes de entrar en una posición para confirmar la tendencia.

Por otro lado, si la tasa de cambio de dos velas consecutivas supera el umbral de volatilidad preestablecido (Volatilidad), la volatilidad actual del mercado se considera alta y la estrategia no abrirá nuevas posiciones.

En cuanto a las posiciones de salida, si el precio de cierre de una posición larga alcanza cerca de la banda superior (área superior), el precio de cierre de la posición larga se situará en el extremo superior de la banda de cierre.long_win_pct), o el precio de cierre de una posición corta alcanza cerca de la banda inferior (zona inferior +Además, si la pérdida no realizada de una posición excede el porcentaje máximo de retirada preestablecido (max_drawdown_percent), la estrategia también cerrará la posición para detener las pérdidas.

Ventajas estratégicas

  1. Las bandas de Bollinger son un indicador técnico maduro y ampliamente utilizado que incorpora información sobre promedios móviles y volatilidad de precios.

  2. La estrategia incluye tanto una lógica de entrada larga como corta, lo que permite una captura flexible de oportunidades tanto en los mercados alcistas como bajistas.

  3. El filtro de volatilidad evita la apertura de posiciones en mercados extremadamente volátiles, reduciendo en cierta medida los riesgos asociados con operaciones frecuentes y apalancamiento.

  4. La estrategia emplea mecanismos de take-profit y stop-loss para gestionar activamente las posiciones y cerrarlas cuando los precios vuelven a niveles clave.

Riesgos estratégicos

  1. Las bandas de Bollinger son esencialmente un indicador retrasado y tienen un cierto retraso en la reacción al mercado.

  2. Los parámetros fijados de la estrategia pueden no ser universalmente aplicables a diferentes condiciones de mercado. Por ejemplo, puede ser necesario diferenciar la configuración del umbral del filtro de volatilidad en mercados de tendencia y oscilación. Los parámetros fijos pueden hacer que la estrategia no pueda abrir posiciones o abra con demasiada frecuencia en ciertas condiciones de mercado.

  3. A pesar de que existen medidas de stop-loss, cuando hay brechas en el mercado, es posible que la estrategia no pueda ejecutarse al precio preestablecido, lo que conduce a mayores pérdidas.

  4. La estrategia no establece paradas de suspensión de pérdidas o paradas de equilibrio tras la apertura de posiciones, lo que puede dar lugar a algunas devoluciones de ganancias.

Direcciones de optimización

  1. Considere la posibilidad de introducir más indicadores técnicos o juicios sobre el estado del mercado, como ATR, indicadores de tendencia, indicadores de volatilidad, etc., como condiciones de filtrado para la estrategia para mejorar la calidad y el calendario de las entradas.

  2. Para el filtro de volatilidad, trate de adoptar umbrales dinámicos que se adapten a diferentes instrumentos o plazos para mejorar la eficacia del filtro.

  3. En términos de stop-loss y take-profit, introduzca mecanismos de trailing stop o break-even stop para permitir que la estrategia mantenga posiciones cuando la tendencia continúe, en lugar de cerrar posiciones prematuramente.

  4. Optimizar aún más la gestión de posiciones ajustando dinámicamente el tamaño de entrada en función de la fuerza de la tendencia, la volatilidad, el nivel de riesgo y otros indicadores para controlar las reducciones.

Resumen de las actividades

La estrategia Bollinger Bands Breakout con filtro de volatilidad aprovecha la caracterización de la posición de precios y la volatilidad por parte de las bandas de Bollinger para construir una estrategia de negociación bidireccional. El aspecto único de esta estrategia es el filtro de volatilidad que evita la negociación en mercados extremadamente volátiles, al mismo tiempo que establece condiciones de toma de ganancias y stop-loss relativamente simples. En general, la estrategia incluye una lógica de entrada y salida bastante completa y control de riesgos, pero hay espacio para una mayor optimización en términos de adaptación a los cambios del mercado, aplicabilidad de parámetros y efectividad de stop-loss. Si se pueden introducir más indicadores técnicos, parámetros dinámicos y optimizaciones de gestión de posiciones, la robustez y rentabilidad de la estrategia pueden mejorarse.


/*backtest
start: 2024-02-29 00:00:00
end: 2024-03-07 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("[Oppen Chow] Super BBS 1.0", default_qty_type = strategy.percent_of_equity, default_qty_value =100, initial_capital=500, commission_type=strategy.commission.percent, commission_value=0.08, pyramiding=2 )

// Input parameters
length = 20
mult = 2
max_drawdown_percent = input(5.5, "Maximum Acceptable Drawdown") / 100
upper_breakout_pct = input(50, "Short Entry Breakout Percentage") / 100
lower_breakout_pct = input(25, "Long Entry Breakout Percentage") / 100
tradeDirection = input(1, title="Trade Direction")
Volatility = input(0.5, title="Volatility") / 100
long_win_pct = input(-0.15, title = "Long Settlement Rate Near Boll Upper Limit")
short_win_pct = input(0.4, title = "Short Settlement Rate Near Boll Lower Limit")

// Bollinger Bands calculation
basis = ta.sma(close, length)
dev = mult * ta.stdev(close, length)
upper = basis + dev
lower = basis - dev
area = upper - lower

// Calculate the rate of change for two consecutive candlesticks
var float change1 = na
var float change2 = na
change1 := change2
change2 := ((close - open) / open) 

// Check for two or more consecutive candlesticks with a change rate greater than 0.5%
var bool highVolatility = false
highVolatility := change2 > Volatility

// Trading logic
var float highestPriceSinceOpen = na
var float lowestPriceSinceOpen = na
var int profitableDrawbackCount = 1


// Entry logic - In the absence of high volatility
if not highVolatility and strategy.position_size == 0
    if (tradeDirection >= 0) and (close < lower - area * lower_breakout_pct)
        strategy.entry("Long", strategy.long)
        highestPriceSinceOpen := close
        profitableDrawbackCount := 0
    if (tradeDirection <= 0) and (close > upper + area * upper_breakout_pct)
        strategy.entry("Short", strategy.short)
        lowestPriceSinceOpen := close
        profitableDrawbackCount := 0


if strategy.position_size > 0 and close > upper - area * long_win_pct
    strategy.close("Long", comment = "Take Profit")
if strategy.position_size < 0 and close < lower + area * short_win_pct
    strategy.close("Short", comment = "Take Profit")

// Stop loss logic - Based on drawdown percentage
if strategy.position_size > 0
    if (strategy.position_avg_price - close)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Long", comment = "Drawdown Stop Loss")
else if strategy.position_size < 0
    if (close - strategy.position_avg_price)/strategy.position_avg_price >= max_drawdown_percent
        strategy.close("Short", comment = "Drawdown Stop Loss")


Más.