Estratégia de inversão da tendência do RSI

Autora:ChaoZhang, Data: 2023-10-23 17:04:13
Tags:

img

Resumo

A estratégia de reversão de tendência do RSI utiliza os sinais de reversão do indicador RSI para identificar potenciais pontos de reversão de tendência e entrar em negociações longas ou curtas.

Estratégia lógica

Esta estratégia baseia-se na combinação de sinais de reversão do RSI e sinais de reversão dos preços, incluindo principalmente quatro situações:

  1. Reversão Bullish Regular: Quando o RSI forma uma baixa mais alta (o que significa que a tendência do RSI se inverte de cima para baixo) e o preço forma uma baixa mais baixa (o que significa que a tendência do preço se inverte de baixo para cima), um sinal de reversão bullish regular é gerado.

  2. Reversão de alta oculta: Quando o RSI forma uma baixa mais baixa (o que significa que a tendência do RSI continua de cima para baixo) mas o preço forma uma baixa mais alta (o que significa que a tendência de preços se inverte de baixo para cima), um sinal de reversão de alta oculta é gerado.

  3. Reversão de baixa regular: Quando o RSI forma uma alta mais baixa (o que significa que a tendência do RSI se inverte de baixo para cima) e o preço forma uma alta mais alta (o que significa que a tendência do preço se inverte de cima para baixo), um sinal de reversão de baixa regular é gerado.

  4. Reversão de baixa oculta: Quando o RSI forma uma alta mais alta (o que significa que a tendência do RSI continua de baixo para cima) mas o preço forma uma alta mais baixa (o que significa que a tendência de preços se inverte de cima para baixo), um sinal de reversão de baixa oculta é gerado.

Esta combina os sinais de reversão do RSI e de reversão do preço para gerar sinais de negociação, evitando que os falsos sinais dependam apenas do RSI ou de reversões de preços, tornando a estratégia mais robusta.

Análise das vantagens

A estratégia de inversão de tendência do RSI tem as seguintes vantagens:

  1. A combinação do RSI e da reversão de preço filtra muitos falsos sinais de reversão e melhora a qualidade do sinal.

  2. Identificar padrões de alta e baixa ocultos, que muitas vezes precedem tendências de preços poderosas, permite a entrada precoce.

  3. Os parâmetros do RSI e os períodos de revisão personalizáveis podem ser ajustados para diferentes mercados, oferecendo flexibilidade.

  4. A visualização de padrões e sinais de indicadores dá um julgamento intuitivo do estado do mercado.

  5. A lógica de estratégia simples e clara torna fácil de entender e implementar para a negociação de algo.

Análise de riscos

A estratégia de inversão de tendência do RSI também apresenta os seguintes riscos:

  1. O RSI combinado e a inversão de preços podem ainda apresentar erros ocasionais.

  2. Os padrões ascendentes e descendentes ocultos são difíceis de identificar e as oportunidades podem ser perdidas sem experiência.

  3. A configuração inadequada de períodos de revisão pode levar à falta de pontos de reversão ou a julgamentos atrasados.

  4. Devem ser implementadas estratégias de stop loss para evitar que as perdas aumentem após reversões de baixa.

Os riscos podem ser gerenciados através da otimização de parâmetros, stop loss rigoroso, tomando prudentemente sinais de reversão ocultos, etc.

Orientações de otimização

A estratégia de inversão de tendência do RSI pode ser otimizada nos seguintes aspectos:

  1. Ajustar os parâmetros do RSI e a sensibilidade do ensaio para encontrar o período ideal do RSI para os diferentes mercados.

  2. Otimizar os parâmetros do período de recuperação para equilibrar a detecção de reversões precocemente e prevenir sinais falsos.

  3. Adicionar análises de volume, como a detecção de desdobramentos de alto volume que causam inversões de preços.

  4. Combine outros sinais de indicadores como MACD, Bandas de Bollinger para melhorar a precisão do julgamento.

  5. Adicionar estratégias de stop loss para limitar o tamanho da perda.

  6. Refinar a lógica da estratégia com base nos resultados de backtest para melhorar os fatores de lucro. Ajustar as relações lógicas e encontrar combinações ideais.

Resumo

A estratégia de reversão de tendência do RSI identifica pontos de virada de tendência potenciais combinando reversões de tendência do RSI e reversões de preço. Faz bom uso da capacidade de julgamento de tendência do RSI enquanto filtra sinais falsos com informações de preço. A estratégia tem uma lógica simples e clara que é fácil de implementar. Parâmetros e stop loss podem ser otimizados para gerenciar riscos e melhorar ainda mais o desempenho.


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

//@version=4
//study(title="Divergence Indicator", format=format.price)
strategy(title="RSI Divergence Indicator", overlay=false,pyramiding=1, default_qty_value=2,   default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD)

len = input(title="RSI Period", minval=1, defval=5)
src = input(title="RSI Source", defval=close)
lbR = input(title="Pivot Lookback Right", defval=5)
lbL = input(title="Pivot Lookback Left", defval=5)
rangeUpper = input(title="Max of Lookback Range", defval=60)
rangeLower = input(title="Min of Lookback Range", defval=5)
plotBull = input(title="Plot Bullish", defval=true)
plotHiddenBull = input(title="Plot Hidden Bullish", defval=true)
plotBear = input(title="Plot Bearish", defval=true)
plotHiddenBear = input(title="Plot Hidden Bearish", defval=false)

bearColor = color.purple
bullColor = color.green
hiddenBullColor = color.new(color.green, 80)
hiddenBearColor = color.new(color.red, 80)
textColor = color.white
noneColor = color.new(color.white, 100)

osc = rsi(src, len)

plot(osc, title="RSI", linewidth=2, color=#8D1699)
hline(50, title="Middle Line", linestyle=hline.style_dotted)
obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted)
osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted)
fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90)

plFound = na(pivotlow(osc, lbL, lbR)) ? false : true
phFound = na(pivothigh(osc, lbL, lbR)) ? false : true

_inRange(cond) =>
    bars = barssince(cond == true)
    rangeLower <= bars and bars <= rangeUpper

//------------------------------------------------------------------------------
// Regular Bullish

// Osc: Higher Low
oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Lower Low
priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1)

bullCond = plotBull and priceLL and oscHL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish",
	 linewidth=2,
	 color=(bullCond ? bullColor : noneColor),
	 transp=0
	 )


plotshape(
	 bullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bullish Label",
	 text=" Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bullish

// Osc: Lower Low
oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1])

// Price: Higher Low
priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1)

hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound

plot(
	 plFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish",
	 linewidth=2,
	 color=(hiddenBullCond ? hiddenBullColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBullCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bullish Label",
	 text=" H Bull ",
	 style=shape.labelup,
	 location=location.absolute,
	 color=bullColor,
	 textcolor=textColor,
	 transp=0
	 )

longCondition=bullCond or hiddenBullCond
//? osc[lbR] : na  
//hiddenBullCond
strategy.entry(id="RSIDivLE", long=true,  when=longCondition)


//------------------------------------------------------------------------------
// Regular Bearish

// Osc: Lower High
oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Higher High
priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1)

bearCond = plotBear and priceHH and oscLH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish",
	 linewidth=2,
	 color=(bearCond ? bearColor : noneColor),
	 transp=0
	 )

plotshape(
	 bearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Regular Bearish Label",
	 text=" Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )

//------------------------------------------------------------------------------
// Hidden Bearish

// Osc: Higher High
oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1])

// Price: Lower High
priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1)

hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound

plot(
	 phFound ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish",
	 linewidth=2,
	 color=(hiddenBearCond ? hiddenBearColor : noneColor),
	 transp=0
	 )

plotshape(
	 hiddenBearCond ? osc[lbR] : na,
	 offset=-lbR,
	 title="Hidden Bearish Label",
	 text=" H Bear ",
	 style=shape.labeldown,
	 location=location.absolute,
	 color=bearColor,
	 textcolor=textColor,
	 transp=0
	 )
longCloseCondition=crossover(osc,75) or bearCond
strategy.close(id="RSIDivLE",  when=longCloseCondition)

Mais.