RSI-BB - Estratégia de ruptura do momento

Autora:ChaoZhang, Data: 2023-11-03 15:02:19
Tags:

img

Resumo

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.

Estratégia lógica

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.

Vantagens

  1. A combinação do RSI e do BB fornece sinais mais confiáveis.

  2. O RSI de 30 períodos filtra algum ruído do mercado e concentra-se nas principais tendências.

  3. BB de 50 períodos com 0,2 desvio-padrão ajuda a filtrar as fendas.

  4. Os limiares do BBI filtram falhas de fuga.

  5. As zonas RSI longa/curta de 52-65 e 35-48 fornecem algum amortecimento para evitar trocas perdidas.

Riscos

  1. As estratégias de breakout são propensas a serem apanhadas em flagelos, precisam gerenciar o risco com stop loss.

  2. Os resultados dos exames de regresso podem ser sobreajustados, o desempenho em tempo real pode variar.

  3. Os movimentos extremos do mercado podem afetar o stop loss, resultando em grandes perdas.

  4. Os parâmetros RSI e BB, incluindo os períodos e limiares, devem ser otimizados.

  5. O preço da encomenda pode afetar significativamente o desempenho ao vivo.

Oportunidades de melhoria

  1. Teste diferentes combinações de parâmetros RSI e BB para encontrar configurações ideais.

  2. Adicione outros indicadores como MACD, KD para filtragem de sinal.

  3. Otimizar as zonas RSI longa/curta para filtrar mais ruído.

  4. Otimizar os limiares dinâmicos de BBI para filtrar melhor as falsificações.

  5. Adicionar um filtro de tendência para evitar a negociação contra a tendência principal.

  6. Teste diferentes técnicas de stop loss para encontrar o controlo de risco ideal.

  7. Teste diferentes tipos de ordem para minimizar o impacto do deslizamento.

Conclusão

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)

Mais.