
Esta estratégia é conhecida como estratégia de quantificação de Bollinger baseada na reversão da faixa de flutuação. A estratégia usa o trajeto ascendente e descendente da faixa de Bollinger para fazer decisões de compra e venda.
A estratégia usa o indicador RSI para determinar o momento de compra. Em particular, ele determina se o preço de fechamento de um bar mais recente é menor do que o mínimo dos 6 bares anteriores, enquanto a largura de banda de Boolean (BBW) é maior do que o limiar definido e a relação de banda de Boolean (BBR) está dentro do intervalo definido. Se essas condições forem atendidas, isso indica que o preço da ação pode estar em um momento de reversão, quando a compra é aberta.
Exit é mais simples, quando o RSI é maior do que 70, o que indica que o preço da ação está muito quente, e é o momento para vender a posição de equilíbrio.
A maior vantagem da estratégia é que, ao usar a trajetória ascendente e descendente da faixa de Bollinger, quando a faixa de Bollinger se inverte, é possível comprar e vender, aproveitando a oportunidade de reversão de curto prazo. Em comparação com a estratégia RSI simples, a estratégia é mais rigorosa na hora de comprar e evita a probabilidade de negociações erradas.
Além disso, a estratégia é mais sensível aos parâmetros e pode ser melhorada para diferentes variedades, ajustando os parâmetros do BBW e do BBR.
O principal risco desta estratégia é que o Brinband não prevê uma inversão de preço 100% e, se o momento não for o correto, é fácil que ocorram situações de perda de oportunidade de compra ou de perda virtual.
Além disso, as flutuações de curto prazo nos preços das ações podem levar a estratégias de abertura e liquidação frequentes, aumentando os custos de transação e os custos de deslizamento. Se a reversão não for forte o suficiente, há o risco de liquidação com prejuízos.
A estratégia pode ser melhorada em vários aspectos:
Parâmetros de otimização. Parâmetros como BBW, BBR podem ser testados e otimizados com métodos mais refinados, selecionando os parâmetros mais ótimos para diferentes variedades de negociação.
Aumentar o mecanismo de stop loss. Pode-se definir o stop loss móvel ou o stop loss temporário para controlar o máximo de perdas.
Combinação com outros indicadores. Pode ser combinado com outros indicadores, como KDJ, MACD, para tornar o sinal de compra mais preciso e confiável.
Mecanismos de saída de otimização. Os mecanismos de saída atuais são mais simples e podem ser otimizados, por exemplo, definindo uma parada móvel apropriada, ou em combinação com situações de flutuação.
Esta estratégia utiliza as características da faixa de Bollinger para determinar o momento em que o preço pode inverter, comprar e vender. Comparado a um único indicador como o RSI, esta estratégia determina o momento com mais precisão.
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//study(title = "Bolinger strategy", overlay=true)
strategy("Bolinger strategy",currency="SEK",default_qty_value=10000,default_qty_type=strategy.cash,max_bars_back=50)
len = 5
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
bbw3level = input(15, title="bbw3")
bbr3level = input(0.45, title="bbr3level")
bbrlower = input(0.4480, title="bbrlower")
bbrhigher = input(0.4560, title="bbrhigher")
sincelowestmin = input(7, title="sincelowestmin")
sincelowestmax = input(57, title="sincelowestmax")
length = input(20, minval=1)
mult = 20
src3 = close[3]
basis3 = sma(src3, length)
dev3 = mult * stdev(src3, length)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
bbr3 = (src3 - lower3)/(upper3 - lower3)
bbw3 = (upper3-lower3)/basis3*100
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
bbw = (upper-lower)/basis*100
criteriamet = 0
crossUnderB0 = crossunder(bbr,0)
since_x_under = barssince(crossUnderB0)
sincelowest = barssince(close[6] > close[3] and close[5] > close[3] and close[4] > close[3] and close[2] > close[3] and close[1] > close[3] and close > close[3] and bbw3 > bbw3level and bbr3 < bbr3level) // and bbr3 < 0
if sincelowest > sincelowestmin and sincelowest < sincelowestmax and bbr > bbrlower and bbr < bbrhigher
criteriamet := 1
else
criteriamet := 0
//plot (criteriamet)
//exit
exitmet = 0
if rsi > 70
exitmet := 1
else
exitmet := 0
if criteriamet == 1
strategy.entry("long", strategy.long)
if exitmet == 1
strategy.close("long")