Bandeiras de Bollinger e RSI Seguindo a estratégia de tendência

Autora:ChaoZhang, Data: 2023-12-20 14:32:40
Tags:

img

Resumo

Esta estratégia utiliza as Bandas de Bollinger, o indicador RSI e a média móvel de 200 períodos para identificar a direção da tendência e realizar transações contra-tendência perto das Bandas de Bollinger quando a direção da tendência for apropriada, a fim de obter lucros.

Estratégia lógica

Em primeiro lugar, a média móvel de 200 períodos é usada para determinar a direção geral da tendência. Uma tendência de alta é definida quando o preço está acima da média móvel, e uma tendência de baixa é definida quando o preço está abaixo. Em segundo lugar, quando em uma tendência de alta, uma entrada longa é executada se o indicador RSI mostra sobrevenda e se aproxima da faixa inferior de Bollinger; quando em uma tendência de baixa, uma entrada curta é executada se o RSI mostra sobrecompra e se aproxima da faixa superior de Bollinger. Finalmente, o indicador ATR é usado para definir o nível de stop loss, e o take profit é definido como 2 vezes o stop loss.

Análise das vantagens

A maior vantagem desta estratégia é que combina múltiplos indicadores para determinar a direção da tendência e o momento das entradas. Em primeiro lugar, a média móvel de 200 dias pode identificar efetivamente a tendência principal. Em segundo lugar, as faixas superior/inferior das faixas de Bollinger indicam áreas onde os preços podem reverter. Finalmente, o RSI sugere um possível momento de reversão. O uso de múltiplos indicadores evita o risco de julgamento errado de um único.

Análise de riscos

Os principais riscos desta estratégia vêm da identificação imprecisa das principais tendências e sinais de reversão. Se a tendência for julgada incorretamente, pode levar a perdas consecutivas. Se os sinais de reversão forem errados, a chance de stop loss ser desencadeada seria alta. Além disso, a própria negociação de contra-tendência tem riscos mais altos que exigem uma operação cautelosa.

Para mitigar os riscos acima referidos, é aconselhável ajustar os parâmetros da média móvel ou adicionar outros indicadores para confirmação, a fim de melhorar a precisão.

Orientações de otimização

Há um grande espaço para otimizar essa estratégia: primeiro, ajustar os parâmetros da média móvel para melhorar a precisão da identificação da tendência. Segundo, ajustar os parâmetros das Bandas de Bollinger ou adicionar canais de Kalman para localizar melhor as zonas de reversão. Terceiro, adicionar outros indicadores como o MACD para confirmação para evitar sinais errados. Quarto, otimizar a configuração da taxa de stop loss para reduzir a chance de eventos reais de stop loss.

Conclusão

Esta estratégia combina Bollinger Bands, RSI e Moving Averages para determinar tendências e tempo, e alcançou bons resultados.


/*backtest
start: 2023-11-19 00:00:00
end: 2023-12-19 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Gab EMA + rsi + bb", overlay=true)
// Custom RSI
RSIlength = input(3, minval=1 , title="lookback length of RSI")
RSIOverBought = input(70, title="RSI OB")
RSIOverSold = input(30, title="RSI OS")
RSIprice = close
vrsi = rsi(RSIprice, RSIlength)


//Bollinger Bands
BBlength = input(20, minval=1,title="Bollinger Period Length")
BBmult = input(2.0, minval=0.001, maxval=50, title="Bollinger Bands Standard Deviation")
BBbasis = sma(close, BBlength)
BBdev = BBmult * stdev(close, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close

//EMA
emaLength=input(200)

//Set TP and SL values
sl_short = high + (syminfo.mintick * 5 * 10)
tp_short = low - (syminfo.mintick * 10 * 10)
sl_long = low - (syminfo.mintick * 5 * 10)
tp_long = high + (syminfo.mintick * 10 * 10)


//Strategy Entry and Exit
strategy.entry("sell", strategy.short, when = low < ema(low, emaLength) and vrsi < RSIOverSold and low < BBlower and barstate.isconfirmed)
strategy.exit("closeshort", from_entry="sell", limit=tp_short, stop=sl_short, when=strategy.position_size != 0)

strategy.entry("buy", strategy.long, when = high > ema(high, emaLength) and vrsi > RSIOverBought and high > BBupper and barstate.isconfirmed)
strategy.exit("closelong", from_entry="buy", limit=tp_long, stop=sl_long, when=strategy.position_size != 0)



  

Mais.