A estratégia de breakout de impulso RSI-BB combina os indicadores Relative Strength Index (RSI) e Bollinger Bands (BB) para a negociação de breakout. Ele usa o RSI para determinar tendências de mercado e níveis de sobrecompra / sobrevenda, e BB para identificar pontos de breakout. Quando ambos os sinais RSI e BB se alinham, a estratégia entrará em negociações longas ou curtas de acordo.
O código calcula primeiro os indicadores RSI e BB.
O RSI é calculado como:
up = rma(max(change(close), 0), 30)
down = rma(-min(change(close), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
Onde o up mede o movimento de preços para cima ao longo de 30 períodos, o down mede o movimento de preços para baixo, e o rsi é calculado com base na relação up-down.
O BB é calculado da seguinte forma:
basis = sma(close, 50)
dev = 0.2 * stdev(close, 50)
upper = basis + dev
lower = basis - dev
Onde a base é a média móvel de 50 períodos, dev é 0,2 vezes o desvio padrão, superior e inferior são as bandas.
bbi é o índice de largura de banda de Bollinger, calculado como:
bbr = close>upper? 1 : close<lower? -1 : 0
bbi = bbr - bbr[1]
bbr verifica se o fechamento quebra a faixa superior ou inferior. A quebra é 1, a quebra é -1, caso contrário, 0 bbi é a diferença entre o bbr atual e o anterior. bbi positivo indica quebra ascendente, negativo indica quebra descendente.
Os sinais estratégicos são determinados como:
long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7
short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7
Vá longo quando o RSI está entre 52-65 e o BBI está entre 0,11 e 0,7. vá curto quando o RSI está entre 35-48 e o BBI está entre -0,11 e -0,7.
A combinação do RSI e do BB fornece sinais mais confiáveis.
O RSI de 30 períodos filtra algum ruído do mercado e concentra-se nas principais tendências.
BB de 50 períodos com 0,2 desvio-padrão ajuda a filtrar as fendas.
Os limiares do BBI filtram falhas de fuga.
As zonas RSI longa/curta de 52-65 e 35-48 fornecem algum amortecimento para evitar trocas perdidas.
As estratégias de breakout são propensas a serem apanhadas em flagelos, precisam gerenciar o risco com stop loss.
Os resultados dos exames de regresso podem ser sobreajustados, o desempenho em tempo real pode variar.
Os movimentos extremos do mercado podem afetar o stop loss, resultando em grandes perdas.
Os parâmetros RSI e BB, incluindo os períodos e limiares, devem ser otimizados.
O preço da encomenda pode afetar significativamente o desempenho ao vivo.
Teste diferentes combinações de parâmetros RSI e BB para encontrar configurações ideais.
Adicione outros indicadores como MACD, KD para filtragem de sinal.
Otimizar as zonas RSI longa/curta para filtrar mais ruído.
Otimizar os limiares dinâmicos de BBI para filtrar melhor as falsificações.
Adicionar um filtro de tendência para evitar a negociação contra a tendência principal.
Teste diferentes técnicas de stop loss para encontrar o controlo de risco ideal.
Teste diferentes tipos de ordem para minimizar o impacto do deslizamento.
A estratégia RSI-BB combina as vantagens de usar indicadores de tendência e momento. Os resultados do backtest são promissores, mas o desempenho ao vivo pode variar devido a fatores do mundo real, como deslizamento e stop loss. Parâmetros e filtros precisam ser otimizados com base nos resultados do backtest.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //Based on Larry Connors RSI-2 Strategy - Lower RSI strategy(title="Spyfrat Strat", shorttitle="SpyfratStrat", overlay=true) src = close, // BB Init source = close length = input(50, minval=1) mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50) alertLevel=input(0.1) impulseLevel=input(0.75) showRange = input(false, type=bool) //RSI CODE up = rma(max(change(src), 0), 30) down = rma(-min(change(src), 0), 30) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) //BB CODE basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.1 bbi = bbr - nz(bbr[1]) //Rule long = rsi>52 and rsi<65 and bbi>0.11 and bbi<0.7 short = rsi<48 and rsi>35 and bbi<-0.11 and bbi>-0.7 //Trade Entry strategy.entry("long", strategy.long, when=long) strategy.entry("short", strategy.short, when=short) //Trade Exit TP = input(250) * 10 SL = input(20) * 10 TS = input(0) * 10 CQ = 100 TPP = (TP > 0) ? TP : na SLP = (SL > 0) ? SL : na TSP = (TS > 0) ? TS : na strategy.exit("Close Long", "long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP) strategy.exit("Close Short", "short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP)