Estratégia de ruptura de reversão do RSI

Autora:ChaoZhang, Data: 2023-10-08 14:16:57
Tags:

Resumo

A estratégia de ruptura de reversão do RSI é uma estratégia que identifica situações de sobrecompra e sobrevenda usando o indicador RSI e realiza negociações contra-tendência quando os preços quebram a média móvel.

Estratégia lógica

A estratégia baseia-se principalmente na seguinte lógica:

  1. Use o RSI para julgar se os preços estão sobrecomprados ou sobrevendidos. RSI abaixo de 25 é considerado sobrevendido; RSI acima de 80 é considerado sobrevendido.

  2. Usar a EMA de 200 dias para determinar a direção geral da tendência Os preços quebrando acima da EMA são considerados um sinal de tendência de alta e quebrando abaixo da EMA um sinal de tendência de queda.

  3. Quando o RSI mostra sinal de sobrevenda e os preços quebram acima da EMA, vá longo para uma tendência de alta.

  4. Quando o RSI mostra sinal de sobrecompra e o preço quebra abaixo da EMA, vá curto para uma tendência de queda.

  5. Ao negociar reversões, esperamos apanhar o início de uma nova tendência antes que ela comece.

Especificamente, a regra de entrada é ir longo quando o RSI < 25 e o preço rompe acima da faixa superior; ir curto quando o RSI > 80 e o preço rompe a faixa inferior. Sair quando o preço mais alto do dia rompe abaixo do preço mais alto do dia anterior.

Vantagens

A estratégia de ruptura de reversão do RSI tem os seguintes benefícios:

  1. Captura de chances de reversão: a identificação de sobrecompra/supervenda com o RSI permite captar reversões de preços, o que é fundamental para gerar alfa.

  2. Negociação com tendências: a integração da EMA garante que as negociações estejam alinhadas com as principais tendências.

  3. Controlo de riscos: as operações de reversão limitam o período de detenção da posição, controlando os riscos.

  4. Parâmetros flexíveis: o período RSI e o período EMA podem ser ajustados às alterações do regime de mercado, melhorando a adaptabilidade.

  5. Frequência de negociação adequada: os sinais de reversão ocorrem em frequências moderadas, evitando excesso de negociação enquanto permanecem ativos.

  6. Simplicidade: As regras são diretas e fáceis de implementar na negociação ao vivo.

Riscos e Gestão

A estratégia apresenta igualmente os seguintes riscos:

  1. Risco de reversão fracassada: os preços podem retomar a tendência original após o sinal de reversão, levando a perdas.

  2. Risco de tendência pouco clara: a EMA não funciona bem quando não há uma tendência clara.

  3. Risco de otimização: os parâmetros RSI e EMA têm um grande impacto no desempenho.

  4. Risco de sobreajuste: A busca de desempenho durante a otimização pode levar a sobreajuste.

  5. Risco de excesso de negociação: sinais de reversão muito frequentes levam a negociações excessivas. Pode ajustar o período do RSI para limitar a frequência das negociações.

Melhorias

A estratégia pode ser melhorada nos seguintes aspectos:

  1. Avaliar a qualidade das ações: Aplicar estratégia apenas para ações de alta qualidade com base em fundamentos.

  2. Incorporar outros indicadores: adicionar MACD, KD, etc. para confirmar os sinais de reversão e melhorar a fiabilidade.

  3. Ajuste dinâmico dos parâmetros: adaptação dinâmica dos parâmetros RSI e EMA com base na evolução das condições do mercado.

  4. Otimize o tempo de entrada: ajuste as regras de entrada para esperar a confirmação da reversão.

  5. Estratégia de captação de lucros: definir níveis adequados de captação de lucros para evitar devolver os ganhos.

  6. Considerar os custos de transacção: avaliar o impacto do deslizamento e das comissões.

  7. Considere a volatilidade: Concentre-se apenas em ações de alta volatilidade para tornar a estratégia mais robusta.

Conclusão

A estratégia de ruptura de reversão do RSI combina sinais de tendência e reversão para capturar reversões precoces e grandes oportunidades. A frequência de negociação moderada ajuda no controle de riscos. Optimizações adequadas no tempo de entrada, tomada de lucro e seleção de parâmetros podem melhorar ainda mais o desempenho. Com otimizações sólidas, essa estratégia pode ser uma abordagem quantitativa de negociação eficaz.


/*backtest
start: 2022-10-01 00:00:00
end: 2023-10-07 00:00:00
period: 2d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jocker.soad

//@version=4
// strategy("My Script", overlay=true, initial_capital=10000, default_qty_value=100)
min = input(title="Valor minimo de entrada", defval=25)
qtdAtivos = input(title="Quantidade de ações", defval=1)

// overBuyLine = hline(80)
// overSellLine = hline(min)

var comprado = false
var valorComprado = 0.0
var qtdDiasComprado = 0
var valorLucro = 0.0

valueRsi = rsi(close, 2)
valueSma = sma(close, 200)
valueEma = ema(close, 200)
lastHighPrice = high[2]

buyValidation = valueRsi <= min
sellValidation = close >= lastHighPrice



// plot(lastHighPrice, trackprice=true, offset=-99999, color=color.olive, linewidth=3, style=plot.style_area)
// plot(valueRsi)
// plot(valueSma)
// plot(valueEma)
// plotshape(sellValidation, style=shape.triangledown, color=color.blue)
// plotshape(comprado, style=shape.triangledown, color=color.blue)

startDate = input(title="Inicio Dia", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Inicio Mes", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Inicio Ano", type=input.integer, defval=2018, minval=1800, maxval=2100)

endDate = input(title="Final Dia", type=input.integer, defval=1, minval=1, maxval=31)
endMonth = input(title="Final Mes", type=input.integer, defval=12, minval=1, maxval=12)
endYear = input(title="Final Ano", type=input.integer,  defval=2020, minval=1800, maxval=2100)

inDateRange = true

if inDateRange

    if close >= valueEma
    
        if comprado == false and buyValidation
            qtdDiasComprado := 0
            comprado := true
            valorComprado := close
            strategy.order("buy", true, qtdAtivos, when=buyValidation)
        
        if sellValidation and comprado == true
            comprado := false
            valorLucro := valorLucro + (close - valorComprado)
            valorComprado := 0
            strategy.order("sell", false, qtdAtivos, when=sellValidation)
        
        if comprado == true and sellValidation == false
            qtdDiasComprado := qtdDiasComprado + 1

// plot(valorLucro, color=color.lime)




Mais.