A estratégia de negociação de reversão do RSI é uma estratégia quantitativa de negociação que identifica condições de sobrecompra e sobrevenda usando o indicador Relative Strength Index (RSI) e entra em negociações longas ou curtas em pontos de reversão.
A estratégia baseia-se na seguinte lógica central:
O RSI pode refletir se o mercado atual está sobrecomprado ou sobrevendido.
Quando o RSI entra na zona de sobrecompra (geralmente considerado como RSI acima de 70), ele indica um forte impulso de alta. Haverá mais traders mantendo posições de alta por muito tempo e o espaço para continuar em alta é limitado. O preço pode reverter para baixo para corrigir a condição de sobrecompra.
Quando o RSI entra na zona de sobrevenda (geralmente abaixo de 30), ele indica um forte ímpeto de baixa. Haverá mais traders em posições de baixa e o espaço para continuar a baixa é limitado. O preço pode reverter para cima para corrigir a condição de sobrevenda.
Portanto, podemos definir o limiar de sobrecompra do RSI em 90 e o limiar de sobrevenda em 10.
Especificamente, a lógica estratégica é:
Calcular o valor do indicador RSI, utilizando o preço de fechamento como fonte do RSI, com uma duração de 2 períodos.
Quando o RSI cruza acima de 90, indica entrar na zona de sobrecompra, vá curto.
Definir um stop loss para cada negociação.
Se o RSI continuar em níveis mais extremos de sobrecompra / sobrevenda, ajuste o trailing stop para dar mais espaço.
Considere tirar lucro quando o RSI voltar para a zona neutra em torno de 50.
Se não houver reversão após 3 bares, feche a negociação para evitar perdas ilimitadas.
A estratégia de reversão do RSI tem as seguintes vantagens:
Usando o RSI para identificar condições de sobrecompra/supervenda pode efetivamente capturar pontos de reversão do mercado.
As estratégias de reversão têm a vantagem sistemática de continuar a seguir as tendências.
O mecanismo de stop loss controla efetivamente a perda em negociações individuais.
O trailing stop pode ajustar de forma flexível a distância de parada com base no movimento contínuo do preço, equilibrando entre manter a parada desencadeada e capturar mais diferença de preço.
A saída forçada após barras fixas garante que os negócios sem reversão oportuna não levem a perdas ilimitadas.
Os parâmetros ajustáveis do RSI podem adaptar a estratégia a diferentes mercados.
A estratégia apresenta igualmente os seguintes riscos:
Como uma estratégia de indicador técnico, o desempenho de reversão do RSI pode ter viés de ajuste da curva.
Embora o RSI possa identificar condições de sobrecompra/supervenda, ele não pode prever o momento exato da reversão.
Os níveis de sobrecompra/supervenda do RSI podem não estar razoavelmente definidos.
Probabilidade de o preço fazer outra reversão antes de alcançar o take profit.
A distância de stop loss fixada excessivamente apertada ou demasiado larga pode tornar as paradas ineficazes.
As comissões de negociação também podem afetar a rentabilidade da estratégia.
A estratégia pode ser reforçada das seguintes formas:
Testar diferentes parâmetros do RSI para encontrar combinações ideais, tais como comprimento do RSI, níveis de limiar de sobrecompra/supervenda.
Adicionar mais filtros para evitar falsos sinais de reversão, como combinar com o MACD etc. para aumentar a probabilidade.
Otimizar a estratégia de stop loss, por exemplo, paradas baseadas em ATR, distâncias ajustadas à volatilidade.
Otimizar a estratégia de lucro, como mudar de lucro, trazendo mais diferença de preço.
Adicionar modelos de aprendizado de máquina para ajudar a julgar reversões e melhorar a taxa de sucesso.
Teste estratégia em diferentes mercados e instrumentos para encontrar os melhores parâmetros para negociação real.
Combine com o volume de negociação, apenas considere sinais de reversão quando o volume aumenta.
Em conclusão, a estratégia de reversão do RSI aproveita a força do RSI para identificar condições de mercado e negociações sobrecompradas e sobrevendidas em pontos de reversão, proporcionando retornos sistemáticos decentes. Mas também tem riscos que precisam ser abordados através de parâmetros do RSI e otimização de stop/take profit e filtragem com outros indicadores. Se executado corretamente, a reversão do RSI pode formar um componente eficaz em um sistema de negociação quantitativo.
/*backtest start: 2023-11-06 00:00:00 end: 2023-11-13 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Copyright (c) 2021-present, RicMos //study("RSI2 Sell Strategy, overlay=true) //------------------------------------------USER VARIABLE DEFINITIONS -------------------------------------- var float lots = 0.1 //var float fixed_commission = 0.6 // forex pairs commission value USD per position size two sides var float fixed_commission = 10 // BTC commission value USD per position size two sides //var float money = 10000 //forex pairs position size var float money = 0.3333 //BTC position size strategy(title="RSI2 Sell Strategy", commission_type=strategy.commission.cash_per_order, calc_on_every_tick =true, commission_value = fixed_commission/2, overlay=true, default_qty_value= lots*100000, initial_capital=1000, currency = "USD", calc_on_order_fills = false) len = input(2, minval=1, title="RSI Length") src = input(close, "RSI Source", type = input.source) upRsi = rma(max(change(src), 0), len) downRsi = rma(-min(change(src), 0), len) rsi = downRsi == 0 ? 100 : upRsi == 0 ? 0 : 100 - (100 / (1 + upRsi / downRsi)) var color buyColor = color.blue var color sellColor = color.red plotshape(rsi <= 10 ? low : na, title="Arrow Up", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=buyColor) plotshape(rsi >= 90 ? high : na, title="Arrow Down", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=sellColor) // long = rsi <= 10 // var float longsl = 0 // var int long_ts_points = 0 // if long // longsl:= low // long_ts_points := 200 // if rsi >= 70 // long_ts_points := 100 // else if rsi >= 80 // long_ts_points := 80 // plot (longsl) // var int barsPassed = 0 // barsPassed := barssince(long) // if long // strategy.entry("long", long = strategy.long, qty = 10000, stop = high) // strategy.exit("slLo", from_entry="long", stop = longsl-0.0002, trail_points = long_ts_points ) // //strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" ) // strategy.cancel_all(barsPassed > 3 and not long) short = rsi >= 90 var float shortsl = 0 var int short_ts_points = 0 //var bool stClose = 0 if short shortsl:= high short_ts_points := 200 if rsi <= 30 short_ts_points := 100 //stClose :=1 else if rsi <= 20 short_ts_points := 80 //else //stClose := 0 plot (shortsl) var int barsPassedSh = 0 barsPassedSh := barssince(short) if short strategy.entry("short", long = strategy.short, qty = money, stop = low) strategy.exit("slSh", from_entry="short", stop = shortsl, trail_points = short_ts_points, trail_offset =20 ) //strategy.close("short", comment="rsi<30", when = stClose) //strategy.close("long", when = rsi[1]>=50 and rsi < 50 , comment = "rsi under 50" ) strategy.cancel_all(barsPassedSh > 3 and not short)