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

Estrategia de negociación cuantitativa de varios niveles basada en la divergencia de tendencia de las bandas de Bollinger

El autor:¿ Qué pasa?, Fecha: 2024-12-27 15:52:41
Las etiquetas:- ¿ Qué?El EMALa SMAelEl BBDIVTendencia

img

Resumen general

Esta estrategia es un sistema de negociación cuantitativo de varios niveles basado en la divergencia de tendencia de las bandas de Bollinger y los cambios dinámicos de ancho de banda. La estrategia construye un marco de decisión comercial completo mediante el monitoreo de la dinámica de ancho de las bandas de Bollinger, las rupturas de precios y la coordinación de la EMA200. Emplea un mecanismo de seguimiento de volatilidad adaptativo para capturar eficazmente los puntos de inflexión de la tendencia del mercado.

Principios de estrategia

La estrategia se basa en los siguientes elementos clave:

  1. Calculación de bandas de Bollinger utilizando una media móvil de 20 períodos y 2 desviaciones estándar
  2. Determinación de la fuerza de la tendencia mediante cambios en el ancho de banda en tres momentos consecutivos
  3. Validación de la ruptura utilizando la relación entre el cuerpo de la vela y el ancho de banda
  4. EMA200 como filtro de tendencia a medio y largo plazo
  5. Entrada larga cuando el precio supera la banda superior con condiciones de ancho de banda en expansión
  6. Salida cuando el precio se rompe por debajo de la banda inferior con condiciones de ancho de banda en contracción

Ventajas estratégicas

  1. Sistema de señalización prospectiva que identifica los posibles puntos de inflexión de la tendencia
  2. La validación cruzada de múltiples indicadores técnicos reduce las señales falsas
  3. El indicador de la tasa de cambio de ancho de banda se adapta bien a la volatilidad del mercado
  4. Lógicas claras de entrada y salida, fáciles de implementar programáticamente
  5. Mecanismos integrales de control de riesgos para controlar eficazmente los retiros

Riesgos estratégicos

  1. Puede generar operaciones frecuentes en mercados diversos
  2. Posible retraso en caso de cambios bruscos de tendencia
  3. La optimización de parámetros se enfrenta al riesgo de sobreajuste
  4. Riesgo de deslizamiento durante los períodos de alta volatilidad del mercado
  5. Requiere un seguimiento constante de la eficacia del indicador de ancho de banda

Direcciones para la optimización de la estrategia

  1. Introducir mecanismos de optimización de parámetros adaptativos
  2. Añadir volumen y otros indicadores auxiliares para la validación
  3. Optimizar las condiciones de stop loss y take profit
  4. Mejorar las normas cuantitativas para la evaluación de la fuerza de la tendencia
  5. Incorporar filtros adicionales del entorno de mercado

Resumen de las actividades

La estrategia construye un sistema de negociación robusto a través de la divergencia de tendencia de las bandas de Bollinger y los cambios dinámicos de ancho de banda.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("BBDIV_Strategy", overlay=true)

// Inputs for Bollinger Bands
length = input.int(20, title="BB Length")
mult = input.float(2.0, title="BB Multiplier")

// Calculate Bollinger Bands
basis = ta.sma(close, length)
deviation = mult * ta.stdev(close, length)
upperBB = basis + deviation
lowerBB = basis - deviation

// Calculate Bollinger Band width
bb_width = upperBB - lowerBB
prev_width = ta.valuewhen(not na(bb_width[1]), bb_width[1], 0)
prev_prev_width = ta.valuewhen(not na(bb_width[2]), bb_width[2], 0)

// Determine BB state
bb_state = bb_width > prev_width and prev_width > prev_prev_width ? 1 : bb_width < prev_width and prev_width < prev_prev_width ? -1 : 0

// Assign colors based on BB state
bb_color = bb_state == 1 ? color.green : bb_state == -1 ? color.red : color.gray

// Highlight candles closed outside BB
candle_size = high - low
highlight_color = (candle_size > bb_width / 2 and close > upperBB) ? color.new(color.green, 50) : (candle_size > bb_width / 2 and close < lowerBB) ? color.new(color.red, 50) : na

bgcolor(highlight_color, title="Highlight Candles")

// Plot Bollinger Bands
plot(upperBB, title="Upper BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(lowerBB, title="Lower BB", color=bb_color, linewidth=2, style=plot.style_line)
plot(basis, title="Middle BB", color=color.blue, linewidth=1, style=plot.style_line)

// Calculate EMA 200
ema200 = ta.ema(close, 200)

// Plot EMA 200
plot(ema200, title="EMA 200", color=color.orange, linewidth=2, style=plot.style_line)

// Strategy logic
enter_long = highlight_color == color.new(color.green, 50)
exit_long = highlight_color == color.new(color.red, 50)

if (enter_long)
    strategy.entry("Buy", strategy.long)

if (exit_long)
    strategy.close("Buy")

// Display profit at close
if (exit_long)
    var float entry_price = na
    var float close_price = na
    var float profit = na

    if (strategy.opentrades > 0)
        entry_price := strategy.opentrades.entry_price(strategy.opentrades - 1)
        close_price := close
        profit := (close_price - entry_price) * 100 / entry_price * 2 * 10 // Assuming 1 pip = 0.01 for XAUUSD
        label.new(bar_index, high + (candle_size * 2), str.tostring(profit, format.mintick) + " USD", style=label.style_label_up, color=color.green)


Relacionados

Más.