A estratégia de rastreamento de volatilidade da banda de Bollinger dupla é uma estratégia quantitativa de negociação que captura a volatilidade dos preços através da construção de bandas de Bollinger duplas para rastreamento.
A estratégia primeiro calcula a média móvel de N dias como a linha de base, e depois calcula os trilhos superior e inferior com base em múltiplos do desvio padrão para construir as Bandas de Bollinger. A estratégia emprega Bandas de Bollinger duplas, onde os trilhos superior e inferior são múltiplos do desvio padrão. Uma vez que as Bandas de Bollinger duplas são formadas, um sinal de compra é desencadeado quando o preço atravessa o trilho superior e um sinal de venda é desencadeado quando o preço atravessa o trilho inferior, capturando oportunidades de volatilidade de preços nas Bandas de Bollinger.
A estratégia também define uma janela de tempo para tornar o backtest mais TARGET e evitar que os dados iniciais afetem os resultados do teste.
A maior vantagem desta estratégia é que ela pode capturar a volatilidade dos preços em tempo real, quebrando os trilhos superior e inferior das Bandas de Bollinger para determinar a direção da OPERAÇÃO. Em comparação com outros indicadores, as Bandas de Bollinger reagem ao mercado de forma mais sensível e podem formar sinais comerciais em um período de tempo mais curto. Além disso, as Bandas de Bollinger duplas definem um canal mais amplo para que a probabilidade de quebra de preço seja maior, permitindo que a estratégia capture mais oportunidades de negociação.
Os principais riscos desta estratégia estão nas configurações dos parâmetros do período de N dias e nos múltiplos do desvio padrão que constroem as Bandas de Bollinger.
As soluções são otimizar os parâmetros e avaliar a forma das Bandas de Bollinger em tempo real; também, configurar estratégias de stop loss baseadas em dados históricos para controlar perdas individuais.
Os principais aspectos a otimizar para esta estratégia:
Otimizar os parâmetros das bandas de Bollinger, ajustar o período de N dias e os múltiplos do desvio-padrão para se adequarem melhor às diferentes características do mercado.
Aumentar os mecanismos de renovação de encomendas para a colocação de encomendas adicionais após a captura de algum lucro das encomendas originais, de modo a expandir o espaço de lucro.
Configure estratégias de stop loss para sair de posições quando os preços atravessarem os trilhos superiores ou inferiores das Bandas de Bollinger em direções desfavoráveis, controlando as perdas.
Incorporar outros indicadores para rastrear sinais e evitar sinais falsos em mercados voláteis.
A estratégia de rastreamento de volatilidade da banda de Bollinger dupla captura a volatilidade do preço em tempo real, construindo bandas de Bollinger de dois lados, sendo capaz de aproveitar mais oportunidades de negociação de curto prazo. As vantagens desta estratégia são a sensibilidade às mudanças do mercado e geração rápida de sinal. Os principais riscos vêm de configurações de parâmetros inadequadas e falta de stop loss. Podemos tornar a estratégia mais estável e eficiente por meio de otimização multidimensional.
/*backtest start: 2022-12-18 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("BB_BB", overlay=true,default_qty_type=strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) length = input(20, minval=1) src = input(close, title="Source") mult = input(2.0, minval=0.001, maxval=50) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromYear = input(defval = 2017, title = "From Year", minval = 2017) 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) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window window() => true // create function "within window of time" basis = sma(src, length) dev = mult * stdev(src, length) upper = basis + dev lower = basis - dev plot(basis, color=red) p1 = plot(upper, color=blue) p2 = plot(lower, color=blue) fill(p1, p2) buy = crossover(sma(close,1), upper) or crossover(sma(close,1), lower) sell = crossunder(sma(close,1), upper) or crossunder(sma(close,1), lower) if(buy) strategy.entry("BUY", strategy.long, when = window()) if(sell) strategy.entry("SELL", strategy.short, when = window())