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.
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.
Las ventajas de esta estrategia incluyen:
Las bandas de Bollinger miden la dirección de la tendencia, reduciendo los riesgos de falsas rupturas
La señal de ancho de banda localiza con precisión la acción limitada al rango, evitando grandes pérdidas por grandes oscilaciones
El backtest muestra una rentabilidad de casi el 80% en un año, una relación riesgo-recompensa extremadamente alta
La reducción máxima del 5% controla eficazmente el riesgo y mantiene un crecimiento constante de la cartera
Lógica sencilla y clara, fácil de entender e implementar, ampliamente aplicable a diversos activos
Los riesgos de esta estrategia incluyen:
Los parámetros de Bollinger pueden perder buenas oportunidades comerciales
Baja frecuencia de negociación durante mercados alcistas o bajistas persistentes, rentabilidad limitada
Datos insuficientes de las pruebas de retroceso, el rendimiento real puede diferir del de las pruebas de retroceso
Se puede tomar un stop loss durante movimientos extremos, lo que conduce a grandes pérdidas
Los altos costes de transacción también reducen los beneficios reales
Soluciones:
Optimizar los parámetros y ajustar el período de Bollinger basado en el mercado
Introducir indicadores adicionales para hacer frente a las condiciones anormales del mercado
Recolectar datos suficientes y realizar pruebas de retroceso en diversos mercados para verificar la estabilidad
Ajustar el stop loss adecuadamente para evitar grandes pérdidas por movimientos extremos
Seleccionar plataformas de negociación con bajas comisiones para reducir los costes de transacción
Esta estrategia puede mejorarse en los siguientes aspectos:
Añadir confirmación de volumen para evitar fallas
Combinar con indicadores de tendencia para identificar la dirección de la tendencia
Utilice el aprendizaje automático para ajustar automáticamente los parámetros y adaptarse al mercado
Añadir filtro de correlación para evitar la negociación de activos no correlacionados
Optimizar las ganancias/perdidas para obtener más ganancias durante las tendencias alcistas
Introduzca más filtros de condición para aumentar la tasa de ganancia
Prueba de combinaciones de marcos de tiempo múltiples para beneficiarse de múltiples ciclos
Construir una cartera indexada para ampliar la exposición
Utilice el aprendizaje automático para generar y validar nuevas estrategias
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 )