Estrategia de bandas de Bollinger con selección de rango de fechas

El autor:¿ Qué pasa?, Fecha: 2024-02-05 16:04:40
Las etiquetas:

img

Resumen general

Esta estrategia implementa una estrategia de negociación de Bandas de Bollinger dinámicas con rangos de fecha históricos seleccionables basados en el indicador de Bandas de Bollinger. Permite a los usuarios elegir los horarios de inicio y final para backtesting, lo que permite backtesting y comparación de la estrategia de Bandas de Bollinger dinámicas en diferentes períodos de tiempo.

Nombre de la estrategia

La estrategia se llama Bollinger Band Strategy with Date Range Selection. El nombre contiene las palabras clave Bollinger Band y Date Range Selection, resumiendo con precisión las funciones principales de esta estrategia.

Estrategia lógica

El principio básico de esta estrategia es generar señales comerciales basadas en los rieles dinámicos superior e inferior del indicador de la Banda de Bollinger. El rieles medio de la Banda de Bollinger es el promedio móvil simple de n días, mientras que los rieles superior e inferior son el rieles medio más y menos m veces la desviación estándar de n días, respectivamente. Cuando el precio rompe el rieles inferior, vaya largo; cuando el precio rompe el rieles superior, vaya corto.

Otra característica central de esta estrategia es que permite a los usuarios seleccionar el intervalo de tiempo de backtesting. La estrategia proporciona parámetros de entrada para seleccionar los tiempos de inicio y final para backtesting en múltiples dimensiones como mes, día, año, hora, minuto, etc. Esto permite a los usuarios elegir diferentes períodos de tiempo históricos para backtest y validar la estrategia, logrando un análisis de estrategia más completo y dinámico.

Específicamente, esta estrategia convierte los tiempos de inicio y final seleccionados en formato de marca de tiempo a través de la función de marca de tiempo ((), y luego establece la ventana de tiempo de backtesting válida de la estrategia a través de las condiciones tiempo>=inicio y tiempo<=finish. Esto logra la función de selección de rango de tiempo dinámico.

Ventajas

La mayor ventaja de esta estrategia es que combina perfectamente la estrategia dinámica de Bandas de Bollinger con la selección de intervalos de tiempo arbitrarios. Esto permite a los usuarios realizar pruebas de retroceso y verificar estrategias de una manera más flexible y completa.

  1. Implementar estrategias dinámicas de bandas de Bollinger que puedan capturar señales de inversión de tendencia durante los altibajos del mercado para el comercio de tendencias.

  2. Apoyo a la elección de intervalos de tiempo históricos arbitrarios para el backtesting para analizar el rendimiento de la estrategia en diferentes entornos de mercado, logrando una optimización dinámica de las estrategias.

  3. Esta estrategia, combinada con la adaptabilidad de los indicadores de banda de Bollinger, permite ajustar automáticamente los parámetros para adaptarse a los cambios más amplios en las condiciones del mercado.

  4. Proporcionar parámetros ajustables para uso a largo y corto plazo para que los usuarios puedan optimizar los parámetros de acuerdo con sus propias necesidades para hacer que las estrategias sean más prácticas.

  5. Permitir la selección de horas y minutos específicos para las pruebas de retroceso con mayor precisión para un análisis de estrategia más detallado.

  6. Apoya los idiomas chino e inglés para una buena experiencia del usuario.

Los riesgos

Los principales riesgos de esta estrategia consisten en la incertidumbre del indicador de bandas de Bollinger para determinar las inversiones de tendencia.

  1. El indicador Bollinger Bands en sí no determina perfectamente las fluctuaciones del mercado, y puede haber señales falsas.

  2. La selección inadecuada de los parámetros de las bandas de Bollinger puede conducir a un mal rendimiento de la estrategia o incluso a pérdidas.

  3. Posibilidad de fallo del indicador en condiciones especiales de mercado.

  4. La selección incorrecta del rango de fechas de backtest puede perder algunas condiciones importantes del mercado.

Para controlar y mejorar estos riesgos se pueden utilizar los siguientes métodos:

  1. Optimizar los parámetros de la banda de Bollinger y ajustar el ciclo del carril medio para adaptarse a diferentes productos y períodos de tiempo.

  2. Utilice otros indicadores, como la media móvil, para la confirmación y reducir las señales falsas.

  3. Prueba más períodos de tiempo de mercado para evaluar la solidez de la estrategia.

  4. Establezca puntos de stop loss para controlar pérdidas individuales.

Direcciones para la optimización de la estrategia

Hay varias direcciones principales para optimizar esta estrategia:

  1. Combinar algoritmos de aprendizaje automático para lograr la optimización dinámica de los parámetros de la banda de Bollinger.

  2. Aumentar la funcionalidad, como las pruebas de recuperación para evaluar completamente la estabilidad de los parámetros.

  3. Añadir funciones como mover el stop loss y rastrear el stop loss para bloquear las ganancias y reducir los riesgos.

  4. Optimizar la lógica de entrada y establecer más condiciones de confirmación, como aumentos en los volúmenes comerciales.

  5. Combinar estrategias como el arbitraje de futuros del índice de acciones para ampliar el alcance de la aplicación de la estrategia.

  6. Añadir funciones de ejecución automática de operaciones para la transición de backtesting a operaciones en vivo.

Estas optimizaciones pueden mejorar en gran medida el rendimiento práctico y la rentabilidad constante de la estrategia.

Resumen de las actividades

Esta estrategia ha integrado con éxito la estrategia de la banda de Bollinger con la selección arbitraria de intervalos de tiempo históricos. Tal análisis de backtesting altamente flexible y dinámico permite a los usuarios ajustar y optimizar con precisión los parámetros de la estrategia en diferentes entornos de mercado. La visualización proporcionada también mejora enormemente la experiencia del usuario. Es previsible que esta estrategia pueda proporcionar a los usuarios herramientas de negociación cuantitativas poderosas y eficientes.


/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3

strategy("BB Range", shorttitle = "BB Range", overlay=true, max_bars_back=200)

// Revision:        1
// Author:          @allanster 

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 7, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 20, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2019, title = "From Year", minval = 2017)
FromHour  = input(defval = 17, title = "From Hour", minval = 00)
FromMinute  = input(defval = 00, title = "From Minute", minval = 00)

ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)
ToHour  = input(defval = 23, title = "To Hour", minval = 00)
ToMinute  = input(defval = 59, title = "To Minute", minval = 00)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, FromHour, FromMinute)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, ToHour, ToMinute)        // backtest finish window
window()  => true
source = close
length = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)

basis = sma(source, length)
dev = mult * stdev(source, length)

upper = basis + dev
lower = basis - dev

upper_stop = upper * 1.05
lower_stop = lower * 0.95

buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper)

if (crossover(source, lower))
    strategy.entry("BBandLE", strategy.long, stop=lower_stop, when = window(), oca_name="BollingerBands",  comment="BBandLE")
else
    strategy.cancel(id="BBandLE")

if (crossunder(source, upper))
    strategy.entry("BBandSE", strategy.short, stop=upper_stop, when=window(), oca_name="BollingerBands",comment="BBandSE")
else
    strategy.cancel(id="BBandSE")





Más.