Estratégia de negociação de RSI Triple Extremum

Autora:ChaoZhang, Data: 2023-11-02 14:34:21
Tags:

img

Resumo

Esta estratégia utiliza três indicadores RSI com períodos diferentes para determinar se o mercado atingiu níveis extremamente sobrecomprados ou sobrevendidos, e gera sinais de compra e venda em conformidade.

Estratégia lógica

A estratégia utiliza indicadores RSI de 2 períodos, 7 períodos e 14 períodos simultaneamente.

Especificamente, quando o RSI de 2 períodos está abaixo de 10, o RSI de 7 períodos está abaixo de 20 e o RSI de 14 períodos está abaixo de 30, o mercado é considerado sobrevendido e um sinal de compra é gerado.

O código usa um parâmetro de precisão para ajustar os valores limiares de sobrecompra/supervenda do RSI. O padrão é 3, e valores mais baixos significam critérios mais rigorosos de sobrecompra/supervenda.

Quando um sinal de compra ou venda é gerado, se o preço se inverter e quebrar o preço de abertura do dia, a posição atual será fechada para obter lucro ou cortar perdas.

Análise das vantagens

  • A utilização de uma combinação de indicadores RSI multiperíodo permite identificar com mais precisão as condições de sobrecompra/supervenda e filtrar os falsos sinais.

  • O ajuste minucioso dos critérios de sobrecompra/supervenda com parâmetros diferentes permite ajustar a sensibilidade da estratégia com base nas condições do mercado.

  • A implementação de paradas abertas de rastreamento de preços ajuda a bloquear os lucros em tempo hábil.

Análise de riscos

  • Os indicadores RSI são propensos a divergências que não são eficazes na identificação de inversões de tendência.

  • Para períodos de alta volatilidade, os parâmetros do RSI devem ser ajustados, caso contrário, podem desencadear paradas com demasiada frequência.

  • Três sinais RSI acionados juntos é raro, o que pode perder boas oportunidades de negociação.

  • Os parâmetros dos critérios de sobrecompra/supervenda devem ser ajustados e testados em diferentes mercados.

Orientações de otimização

  • Considerar a adição de outros indicadores para confirmação, tais como bandas de Bollinger, KDJ etc., para evitar a divergência do RSI.

  • Otimizar automaticamente os parâmetros do RSI com base em diferentes regimes de mercado.

  • Ensaiar outras condições de saída da paragem, tais como paradas ATR.

  • Adicione filtros para evitar negociações em períodos inadequados.

Conclusão

Esta estratégia identifica zonas de sobrecompra/supervenda usando uma combinação de indicadores de RSI de vários períodos e implementa paradas de rastreamento de tendências. As vantagens incluem melhoria da precisão, parada oportuna; As desvantagens incluem transações perdidas, julgamentos errados do RSI. Recomenda-se testes de otimização de parâmetros, juntamente com a adição de indicadores de confirmação, para alcançar um melhor desempenho.


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

//@version=3
strategy(title = "Noro's Triple RSI Top/Bottom", shorttitle = "3RSI Top/Bottom", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
accuracy = input(3, defval = 3, minval = 1, maxval = 10, title = "accuracy")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")


//RSI-2
fastup = rma(max(change(close), 0), 2)
fastdown = rma(-min(change(close), 0), 2)
fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown))

//RSI-7
middleup = rma(max(change(close), 0), 7)
middledown = rma(-min(change(close), 0), 7)
middlersi = middledown == 0 ? 100 : middleup == 0 ? 0 : 100 - (100 / (1 + middleup / middledown))

//RSI-14
slowup = rma(max(change(close), 0), 14)
slowdown = rma(-min(change(close), 0), 14)
slowrsi = slowdown == 0 ? 100 : slowup == 0 ? 0 : 100 - (100 / (1 + slowup / slowdown))

//Signals
acc = 10 - accuracy
up = fastrsi < (5 + acc) and middlersi < (10 + acc * 2) and slowrsi < (15 + acc * 3)
dn = fastrsi > (95 - acc) and middlersi > (90 - acc * 2) and slowrsi > (85 - acc * 3)
exit = (strategy.position_size > 0 and close > open) or (strategy.position_size > 0 and close > open)

//Trading
if up
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Bottom", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if dn
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Top", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    
if time > timestamp(toyear, tomonth, today, 23, 59) or exit
    strategy.close_all()

Mais.