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.
La estrategia se llama
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.
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.
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.
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.
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.
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.
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.
Apoya los idiomas chino e inglés para una buena experiencia del usuario.
Los principales riesgos de esta estrategia consisten en la incertidumbre del indicador de bandas de Bollinger para determinar las inversiones de tendencia.
El indicador Bollinger Bands en sí no determina perfectamente las fluctuaciones del mercado, y puede haber señales falsas.
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.
Posibilidad de fallo del indicador en condiciones especiales de mercado.
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:
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.
Utilice otros indicadores, como la media móvil, para la confirmación y reducir las señales falsas.
Prueba más períodos de tiempo de mercado para evaluar la solidez de la estrategia.
Establezca puntos de stop loss para controlar pérdidas individuales.
Hay varias direcciones principales para optimizar esta estrategia:
Combinar algoritmos de aprendizaje automático para lograr la optimización dinámica de los parámetros de la banda de Bollinger.
Aumentar la funcionalidad, como las pruebas de recuperación para evaluar completamente la estabilidad de los parámetros.
Añadir funciones como mover el stop loss y rastrear el stop loss para bloquear las ganancias y reducir los riesgos.
Optimizar la lógica de entrada y establecer más condiciones de confirmación, como aumentos en los volúmenes comerciales.
Combinar estrategias como el arbitraje de futuros del índice de acciones para ampliar el alcance de la aplicación de la estrategia.
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.
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")