Esta estratégia é baseada no indicador de Bollinger Bands, combinado com indicadores de impulso para implementar uma estratégia de negociação combinada de reversão de Bollinger Bands e ruptura de impulso.
A estratégia usa a linha média SMA das Bandas de Bollinger como indicador da média móvel e ajusta dinamicamente a largura da banda através do param mult * stdev. Quando o preço quebra a linha média de baixo, ele indica que o ímpeto ascendente é ganho e, portanto, vai longo. Quando o preço quebra a linha média de cima, ele mostra que o ímpeto descendente é ganho e, portanto, vai curto. Após entrar em posições longas / curtas, os parâmetros de stop loss e take profit são definidos para rastrear lucros e controlar riscos.
Especificamente, as Bandas de Bollinger são calculadas com dois parâmetros - comprimento e mult. O comprimento determina o período da linha do meio e o mult decide a largura da banda. enterLong e enterShort julgam o tempo de ruptura. exitLong e exitShort calculam o stop loss e os preços de lucro com base no preço de entrada e na porcentagem alvo.
Esta estratégia combina a reversão para a média e o momento, o que permite capturar as principais tendências desde o início. Em comparação com o simples rastreamento de médias móveis, o julgamento de momento adicionado baseado na largura das Bandas de Bollinger pode filtrar algumas falhas. Stop loss e take profit são definidos diretamente com base no preço de entrada sem intervenção manual.
Parâmetros como períodos, largura de banda e intervalo de stop loss podem ser otimizados para tornar a estratégia adaptável a diferentes condições de mercado.
Esta estratégia combina os pontos fortes da reversão e do impulso das bandas de Bollinger, o que permite capturar algumas tendências desde o início. Através do ajuste de parâmetros, ele pode se adaptar a diferentes estágios do mercado. O cálculo direto de stop loss / take profit reduz a intervenção manual. Ainda há espaço para melhoria, por exemplo, incorporando mais indicadores auxiliares. Estes serão incrementalmente aprimorados em pesquisas e otimização futuras.
/*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")