A estratégia de reversão do RSI calcula o indicador do RSI e a média móvel suavizada para determinar se uma ação está sobrecomprada ou sobrevendida, gerando assim sinais de compra e venda.
A estratégia primeiro calcula o RSI de 14 períodos e o normaliza para 0-100. Em seguida, calcula a média móvel ponderada de 5 períodos do RSI e o mapeia para -1 a 1 usando a função tangente. Quando o RSI mapeado cruza acima de -0,8, um sinal de compra é gerado. Quando cruza abaixo de 1, um sinal de venda é gerado. Os métodos de mapeamento e julgamento de limiar são usados aqui para detectar os sinais de reversão do indicador RSI.
A estratégia também define o intervalo de meses e datas de execução, de modo a que só se execute durante meses e datas especificados.
A estratégia de reversão do RSI captura efetivamente oportunidades de reversão de preços construindo regras de negociação de reversão simples baseadas no indicador RSI. A estratégia é fácil de implementar, mas pode ser aprimorada por meio de otimização de parâmetros, mecanismos de controle de risco, etc., tornando-se uma estratégia de negociação quantitativa lucrativa e estável.
/*backtest start: 2023-01-12 00:00:00 end: 2024-01-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="RSI Reverse", shorttitle="RSI Reverse") RSI_main = input(14, title="RSI Main Period") RSI_smooth = input(5, title="RSI Smooth Period") //Functions RVS(input) => (exp(2*input)-1) / (exp(2*input)+1) //RSI Calculation raw_RSI=0.1*(rsi(close,RSI_main)-50) wma_RSI=wma(raw_RSI,RSI_smooth) RVS_RSI = RVS(wma_RSI) threshold1 = RVS_RSI < 0.8? 1 : 0 threshold2 = -0.8 plot(RVS_RSI,color=red) plot(threshold1,color=blue) plot(threshold2,color=blue) buycon = crossover(RVS_RSI,threshold2) sellcon = crossunder(RVS_RSI , threshold1) monthfrom =input(6) monthuntil =input(12) dayfrom=input(1) dayuntil=input(31) if ( buycon ) strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY") else strategy.cancel(id="BUY") if ( sellcon) strategy.close("BUY")