En la carga de los recursos... Cargando...

Estrategia de consolidación de bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2024-02-22 13:43:14
Las etiquetas:

img

Resumen general

La estrategia de consolidación de Bollinger Bands es una estrategia innovadora que identifica fases de consolidación de baja volatilidad utilizando Bollinger Bands. Cuando el mercado entra en un período de oscilación, las Bandas de Bollinger convergerán, lo que indica una oportunidad para ingresar al mercado. También incorporamos el indicador de Rango Verdadero Medio para confirmar la disminución de la volatilidad.

Estrategia lógica

La estrategia se basa principalmente en las bandas de Bollinger para detectar cuándo los precios entran en una fase de consolidación de baja volatilidad. La banda media de las bandas de Bollinger es un promedio móvil de los precios de cierre. Las bandas superior e inferior son compensadas por dos desviaciones estándar por encima y por debajo de la banda media. Cuando la volatilidad disminuye, la distancia entre las bandas superior e inferior se estrecha notablemente. Primero comprobamos si el valor actual de ATR es menor que la desviación estándar entre las bandas de Bollinger para confirmar preliminarmente la convergencia. Esto indica que los precios acaban de entrar en consolidación.

Para probar aún más la disminución de la volatilidad, comprobamos si el promedio móvil de los valores de ATR tiene una tendencia a la baja. La disminución del promedio de ATR también corrobora desde el lado que la volatilidad está disminuyendo. Cuando ambas condiciones se cumplen simultáneamente, determinamos que las bandas de Bollinger han mostrado una convergencia significativa, que es una excelente oportunidad de compra.

Después de comprar, activamos una estrategia de stop loss móvil con una distancia de stop loss del doble del valor ATR. Esto controla eficazmente las pérdidas.

Análisis de ventajas

La mayor ventaja de esta estrategia es que puede determinar con precisión cuándo el mercado entra en una fase de consolidación de baja volatilidad e identificar la mejor oportunidad de compra.

Además, la estrategia también utiliza un stop loss móvil para controlar activamente los riesgos. Esto maximiza la reducción de pérdidas incluso cuando el sentimiento del mercado es desfavorable. Muchas estrategias a largo plazo carecen de esto.

Análisis de riesgos

El principal riesgo de la estrategia es que el indicador Bollinger Bands no puede determinar con precisión los cambios en la volatilidad de los precios el 100% del tiempo. Cuando Bollinger Bands juzga erróneamente que la volatilidad ha disminuido, nuestro momento de entrada puede ser desfavorable. En este punto, el stop loss móvil juega un papel importante y puede salir del comercio lo antes posible.

Además, el establecimiento de varios parámetros en la estrategia también afectará a los resultados.

Direcciones de optimización

Podemos considerar la adición de otros indicadores para confirmar las señales de giro en los indicadores de tendencia cuando las Bandas de Bollinger convergen. Por ejemplo, cuando las Bandas de Bollinger convergen, también requerimos que la diferencia MACD haya pasado de positiva a negativa, o que el RSI se haya retirado de la zona de sobrecompra. Esto puede mejorar aún más la precisión de las señales de compra.

Otra dirección es probar el impacto de diferentes ajustes de parámetros en los resultados, como los períodos de Bollinger Bands, ATR y el multiplicador del stop loss móvil.

Conclusión

La estrategia de consolidación de Bollinger Bands utiliza Bollinger Bands para determinar el momento de disminución de la volatilidad de los precios y utiliza un stop loss móvil para controlar eficazmente los riesgos. Es una estrategia de ruptura a largo plazo relativamente estable. Todavía necesitamos optimizar aún más los parámetros e incorporar otros indicadores para mejorar la robustez de la estrategia.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © DojiEmoji

//@version=4
strategy("[KL] Bollinger Bands Consolidation Strategy",overlay=true,pyramiding=1)

// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("19 Apr 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }

// Indicator: BOLL bands {
BOLL_length = 20//input(20,title="Periods to lookback for BOLL and ATR calc. (default 20)")
BOLL_src = close
BOLL_center = sma(BOLL_src, BOLL_length)
BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length)
BOLL_upper = BOLL_center + BOLL_sDEV_x2
BOLL_lower = BOLL_center - BOLL_sDEV_x2
plot(BOLL_center, "Basis", color=#872323, offset = 0)
BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = 0, transp=50)
BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = 0, transp=50)
fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// }
// ATR and volatility Indicator {
ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL
avg_volat = sma(ATR_x2, BOLL_length)
//}

// Trailing stop loss {
var entry_price = float(0)
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
trail_profit_line_color = color.green
UPDATE_ATR_TSL = false
if strategy.position_size == 0 or not within_timeframe // make TSL line less visible
    trail_profit_line_color := color.black
    stop_loss_price := close - trailing_SL_buffer
else if strategy.position_size > 0
    if UPDATE_ATR_TSL and ATR_x2 < trailing_SL_buffer
        trailing_SL_buffer := ATR_x2
    stop_loss_price := max(stop_loss_price, close[1] - trailing_SL_buffer)
plot(stop_loss_price,color=trail_profit_line_color)
// }


IGNORE_BOLL_SHAPE = false//input(false,title="Ignore BOLL (vs ATR) during entry (experimental)")
IGNORE_VOLATILITY = false///input(false,title="Ignore average ATR during entry (experimental)")
// Main:
if within_timeframe
    // ENTRY:
    if (ATR_x2 > BOLL_sDEV_x2 or IGNORE_BOLL_SHAPE) and (avg_volat < avg_volat[1] or IGNORE_VOLATILITY)
        if strategy.position_size == 0
            entry_price := close
            trailing_SL_buffer := ATR_x2
            stop_loss_price := close - ATR_x2
            strategy.entry("Long",strategy.long, comment="enter")
        if strategy.position_size > 0
            strategy.entry("Long",strategy.long, comment="+")

    // EXIT:
    if strategy.position_size > 0
        if low <= stop_loss_price
            if close > entry_price
                strategy.close("Long", comment="take profit")
            else if low <= entry_price
                strategy.close("Long", comment="stop loss")
    
            if strategy.position_size == 0
                entry_price := 0
                

Más.