Esta estrategia se basa en el indicador de Bollinger Bands, combinado con indicadores de impulso para implementar una estrategia de negociación combinada de reversión de Bollinger Bands y ruptura de impulso.
La estrategia utiliza la línea media SMA de las bandas de Bollinger como indicador de promedio móvil, y ajusta dinámicamente el ancho de la banda a través de param mult * stdev. Cuando el precio rompe la línea media desde abajo, indica que se obtiene un impulso ascendente y, por lo tanto, va largo. Cuando el precio se rompe a través de la línea media desde arriba, muestra que se obtiene un impulso descendente y, por lo tanto, se corta. Después de ingresar posiciones largas / cortas, se establecen parámetros de stop loss y take profit para rastrear las ganancias y controlar los riesgos.
Específicamente, las bandas de Bollinger se calculan con dos parámetros: longitud y mult. La longitud determina el período de la línea media y mult decide el ancho de la banda. enterLong y enterShort juzgan el momento de la ruptura. exitLong y exitShort calculan los precios de stop loss y take profit basados en el precio de entrada y el porcentaje objetivo.
Esta estrategia combina la reversión a la media y el impulso, lo que le permite capturar las principales tendencias desde el principio. En comparación con simplemente el seguimiento de los promedios móviles, el juicio de impulso agregado basado en el ancho de las bandas de Bollinger puede filtrar algunas rupturas falsas.
Los parámetros como los períodos, el ancho de banda y el intervalo de stop loss se pueden optimizar para hacer que la estrategia sea adaptable a diferentes condiciones de mercado.
Esta estrategia combina las fortalezas de la reversión y el impulso de las bandas de Bollinger, lo que le permite capturar algunas tendencias desde el principio. A través del ajuste de parámetros, puede adaptarse a diferentes etapas del mercado. El cálculo directo de stop loss / take profit reduce la intervención manual. Todavía hay margen de mejora, por ejemplo, incorporando más indicadores auxiliares. Estos se mejorarán gradualmente en más investigación y optimización.
/*backtest start: 2023-11-13 00:00:00 end: 2023-11-20 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("BURATINO", overlay=true) // Входные параметры length = input(20, minval=1, title="Length") mult = input(2.0, minval=0.1, maxval=5, title="Multiplier") target_percent = input(0.5, minval=0.1, title="Target Percent") stop_loss_percent = input(95, minval=0.1, title="Stop Loss Percent") // Расчет полос Боллинджера basis = sma(close, length) dev = mult * stdev(close, length) upper = basis + dev lower = basis - dev // Переворот снизу вверх через среднюю линию Боллинджера для открытия лонга enterLong = cross(close, basis) and close[1] < basis[1] // Переворот сверху вниз через среднюю линию Боллинджера для открытия шорта enterShort = cross(basis, close) and close[1] > basis[1] // Закрытие лонга после роста цены на указанный процент или падения на указанный процент exitLong = close >= strategy.position_avg_price * (1 + (target_percent / 100)) or close <= strategy.position_avg_price * (1 - (stop_loss_percent / 100)) // Закрытие шорта после падения цены на указанный процент или роста на указанный процент exitShort = close <= strategy.position_avg_price * (1 - (target_percent / 100)) or close >= strategy.position_avg_price * (1 + (stop_loss_percent / 100)) // Управление позициями и ограничениями на открытие противоположных позиций strategy.entry("Long", strategy.long, when = enterLong and strategy.position_size == 0) strategy.entry("Short", strategy.short, when = enterShort and strategy.position_size == 0) strategy.close("Long", when = exitLong) strategy.close("Short", when = exitShort) // Визуализация полос Боллинджера plot(basis, color=color.blue, title="Basis") plot(upper, color=color.red, title="Upper") plot(lower, color=color.green, title="Lower")