Estrategia de ruptura de la banda de Bollinger

El autor:¿ Qué pasa?, Fecha: 2023-11-07 15:08:36
Las etiquetas:

img

Resumen general

Esta estrategia utiliza bandas de Bollinger para medir la tendencia del mercado y combina señales de ancho de banda para identificar oportunidades comerciales, con el objetivo de un crecimiento constante de la cartera de inversiones.

Siéntase libre de ajustar los parámetros y probar esta estrategia.

Si está satisfecho con los resultados existentes y desea automatizar esta estrategia, que se puede hacer a través de alertas, debe convertirlo a un estudio y agregar alertas en el código.

Estrategia lógica

Esta estrategia utiliza bandas de Bollinger y ancho de banda para determinar entradas y salidas.

Las bandas de Bollinger incluyen banda superior, banda media y banda inferior. La banda media es un promedio móvil simple de n períodos, por defecto n = 16. La banda superior es banda media + k * desviación estándar, la banda inferior es banda media - k * desviación estándar, por defecto k = 3. Cuando el precio se acerca a la banda superior, indica sobrevaloración o sobrecompra. Cuando el precio se acerca a la banda inferior, indica subvaloración o sobreventa.

El indicador de ancho de banda muestra la volatilidad del precio en relación con la banda media. Se calcula por (banda superior - banda inferior) / banda media * 1000. Cuando el ancho de banda es inferior a 20, indica baja volatilidad o consolidación. Cuando el ancho de banda excede 50, representa una mayor volatilidad.

Esta estrategia busca oportunidades largas cuando el ancho de banda está entre 20-50 y el precio se rompe por debajo de la banda inferior.

Análisis de ventajas

Las ventajas de esta estrategia incluyen:

  1. Las bandas de Bollinger miden la dirección de la tendencia, reduciendo los riesgos de falsas rupturas

  2. La señal de ancho de banda localiza con precisión la acción limitada al rango, evitando grandes pérdidas por grandes oscilaciones

  3. El backtest muestra una rentabilidad de casi el 80% en un año, una relación riesgo-recompensa extremadamente alta

  4. La reducción máxima del 5% controla eficazmente el riesgo y mantiene un crecimiento constante de la cartera

  5. Lógica sencilla y clara, fácil de entender e implementar, ampliamente aplicable a diversos activos

Análisis de riesgos

Los riesgos de esta estrategia incluyen:

  1. Los parámetros de Bollinger pueden perder buenas oportunidades comerciales

  2. Baja frecuencia de negociación durante mercados alcistas o bajistas persistentes, rentabilidad limitada

  3. Datos insuficientes de las pruebas de retroceso, el rendimiento real puede diferir del de las pruebas de retroceso

  4. Se puede tomar un stop loss durante movimientos extremos, lo que conduce a grandes pérdidas

  5. Los altos costes de transacción también reducen los beneficios reales

Soluciones:

  1. Optimizar los parámetros y ajustar el período de Bollinger basado en el mercado

  2. Introducir indicadores adicionales para hacer frente a las condiciones anormales del mercado

  3. Recolectar datos suficientes y realizar pruebas de retroceso en diversos mercados para verificar la estabilidad

  4. Ajustar el stop loss adecuadamente para evitar grandes pérdidas por movimientos extremos

  5. Seleccionar plataformas de negociación con bajas comisiones para reducir los costes de transacción

Direcciones de optimización

Esta estrategia puede mejorarse en los siguientes aspectos:

  1. Añadir confirmación de volumen para evitar fallas

  2. Combinar con indicadores de tendencia para identificar la dirección de la tendencia

  3. Utilice el aprendizaje automático para ajustar automáticamente los parámetros y adaptarse al mercado

  4. Añadir filtro de correlación para evitar la negociación de activos no correlacionados

  5. Optimizar las ganancias/perdidas para obtener más ganancias durante las tendencias alcistas

  6. Introduzca más filtros de condición para aumentar la tasa de ganancia

  7. Prueba de combinaciones de marcos de tiempo múltiples para beneficiarse de múltiples ciclos

  8. Construir una cartera indexada para ampliar la exposición

  9. Utilice el aprendizaje automático para generar y validar nuevas estrategias

Conclusión

En general, esta estrategia de ruptura de la banda de Bollinger se ha probado bien y puede producir rendimientos constantes en mercados de rango. La lógica central es simple y clara, fácil de comprender y aplicar. Pero se necesitan mejoras adicionales en la optimización de parámetros, control de riesgos y gestión de cartera para obtener ganancias estables en mercados complejos. Esta es una estrategia básica de seguimiento de tendencias, y se puede mejorar introduciendo más indicadores técnicos y mecanismos de gestión de riesgos, o combinada con aprendizaje automático para automatización. En resumen, esta estrategia abre la puerta al comercio algorítmico para principiantes, y también proporciona posibilidades para que los operadores experimentados optimicen las estrategias.


/*backtest
start: 2023-10-30 00:00:00
end: 2023-11-06 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Bollinger Bands BAT/USDT 30min", overlay=true )

/// Indicators
///Bollinger Bands
source = close
length = input(16, minval=1)
mult = input(3, step=0.1, minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

plot(basis, color=color.red)
p1 = plot(upper, color=color.blue)
p2 = plot(lower, color=color.blue)
fill(p1, p2)

//Bollinger bands width
bbw = (upper-lower)/basis*1000
//plot(bbw, color=color.blue)

upper_bbw_input = input(title="BBW Upper Threshold", step=1, minval=0, defval=50)
lower_bbw_input = input(title="BBW Lower Threshold", step=1, minval=0, defval=20)


// Backtesting Period
testStartYear = input(2019, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)

testPeriod() => true

// Take Profit
tp_inp = input(8, title='Take Profit %', step=0.1)/100
take_level = strategy.position_avg_price * (1 + tp_inp)

//Entry Strategy
entry_long = crossover(source, lower) and (bbw < upper_bbw_input) and (bbw > lower_bbw_input)
exit_long = cross(high,upper) or close < lower

if testPeriod()

    strategy.entry(id="LongBB", long=true, comment="LongBB", when=entry_long)
    strategy.exit("Take Profit Long","LongBB",limit=take_level)
    strategy.close(id="LongBB", when=exit_long )



Más.