Estratégia de reversão do momentum do RSI


Data de criação: 2023-11-07 15:45:15 última modificação: 2023-11-07 15:45:15
cópia: 0 Cliques: 773
1
focar em
1617
Seguidores

Estratégia de reversão do momentum do RSI

Visão geral

A estratégia de reversão do RSI combina o indicador RSI com a direção da entidade da linha K para identificar o fenômeno de sobrevenda e sobrevenda. A estratégia usa simultaneamente o RSI convencional e o RSI rápido, e em conjunto com a filtragem da entidade da linha K, para identificar efetivamente oportunidades de reversão.

Princípio da estratégia

A estratégia é implementada principalmente através das seguintes partes:

  1. Indicador RSI de Connors

Calcule o RSI convencional, o RSI da probabilidade de vitória e o RSI do Paris-Charles, tomando a média dos três como o RSI de Connors.

  1. Indicador RSI rápido

O RSI rápido é calculado usando a variação de preços, refletindo o ciclo ultra curto.

  1. Filtragem de entidades de linha K

O que é necessário é fazer mais fios sólidos e cinéticos, para evitar falsas rupturas.

  1. Condição de espaço

Quando o RSI de Connors está abaixo de 20, o RSI rápido está abaixo de 25, e a linha de sol aparece, faça mais.

Quando o RSI de Connors é superior a 80, o RSI rápido é superior a 75, a linha de fundo aparece, fazendo um vazio.

  1. Parar e sair

A entidade retira-se quando a parada de perdas se desloca.

Através do RSI de Connors para determinar o ponto de reversão da tendência da linha longa, o RSI rápido para determinar o ponto de reversão da linha curta, a entidade da linha K para garantir a eficácia da ruptura, para que possa encontrar efetivamente oportunidades de reversão e abrir posições de reversão em tempo hábil para os supermercados.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. Combinação de indicadores de linha curta e longa

O RSI de Connors reflete um ciclo de linha longa e o RSI rápido reflete um ciclo de linha curta, combinando os dois, pode-se determinar com mais precisão o ponto de reversão.

  1. Filtragem de entidades

A operação somente em caso de brecha real pode reduzir os prejuízos causados por uma falsa brecha.

  1. Parâmetros ajustáveis

Os parâmetros do RSI, o tipo de negociação e o período de negociação podem ser ajustados livremente para adaptar-se a diferentes mercados.

  1. Simples e intuitivo

O RSI e a linha K são indicadores básicos e a lógica da estratégia é simples e fácil de entender.

  1. Fácil de implementar

O programa é baseado em um algoritmo que usa apenas indicadores embutidos, menos código e menos dificuldade de implementação.

Análise de Riscos

A estratégia enfrenta os seguintes principais riscos:

  1. Risco de fracasso inverso

O preço continuou a funcionar na tendência original após o sinal de reversão, resultando em prejuízos.

  1. Risco de uma crise

A falha foi causada por uma série de sinais repetitivos que causaram inúmeras transações inválidas.

  1. Risco de uma falsa invasão

A filtragem física não evita completamente a ocorrência de falhas.

  1. Parâmetros de definição de risco

Os parâmetros do RSI estão mal definidos, podendo causar oportunidades perdidas ou inúmeras transações inválidas.

  1. Risco de situações especiais

Em situações especiais, o indicador RSI falha, gerando um sinal de erro.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Aumentar o mecanismo de suspensão de perdas

Optimizar a estratégia de stop loss para torná-la mais razoável e reduzir os prejuízos individuais.

  1. Integrar vários indicadores

Adição de filtros de MACD, KD e outros indicadores para tornar o sinal mais confiável.

  1. Aumentar a probabilidade de filtragem

Combinando tendências, resistência de suporte e outras probabilidades de julgamento, evite negociações de baixa probabilidade.

  1. Optimizar configurações de parâmetros

Teste de parâmetros para diferentes tipos e períodos de negociação para encontrar o melhor parâmetro.

  1. Evitar situações especiais

Identificar situações especiais, suspender a negociação e evitar grandes perdas.

Resumir

A estratégia de reversão do RSI dinâmica aumenta a eficácia do sinal através da reversão do RSI de Connors e do RSI rápido, em combinação com a filtragem de entidades da linha K. A estratégia possui vantagens como portfólio de indicadores, flexibilidade de ajuste de parâmetros, capacidade de capturar oportunidades de reversão e intervenção oportuna na negociação em caso de sobrevenda.

Código-fonte da estratégia
/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy(title = "Noro's Connors RSI Strategy v1.0", shorttitle = "CRSI str 1.0", overlay = false, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 10)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usemar = input(false, defval = false, title = "Use Martingale")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %")
usecrsi = input(true, defval = true, title = "Use CRSI Strategy")
usefrsi = input(true, defval = true, title = "Use FRSI Strategy")
usemod = input(true, defval = true, title = "CRSI+FRSI Mode")
limit = input(25, defval = 25, minval = 1, maxval = 100, title = "RSI limit")
usebod = input(true, defval = true, title = "Use Body-filter")
usecol = input(true, defval = true, title = "Use Color-filter")
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")

//CRSI
rsilen = 3
streaklen = 2
lookback = 100
rsi = rsi(close,rsilen)
upday = close > close[1] ? 1 : 0
downday = close < close[1] ? -1 : 0
upstreak = upday!=0 ? upstreak[1] + upday : 0
downstreak = downday!=0 ? downstreak[1] + downday : 0
streak = upstreak + downstreak
streakrsi = rsi(streak,streaklen)
roc = close/close[1] - 1
roccount = 0
for i=1 to lookback-1
    roccount := roc[i]<roc ? roccount + 1 : roccount
crsi = (rsi + streakrsi + roccount) / 3

//Oscilator
// rsiplot = plot(crsi, title="RSI", style=line, linewidth=1, color=blue)
// band1 = hline(80, title="Upper Line", linestyle=dashed, linewidth=1, color=red)
// band0 = hline(20, title="Lower Line", linestyle=dashed, linewidth=1, color=green)
// fill(band1, band0, color=purple, transp=90)

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

//Body Filter
nbody = abs(close - open)
abody = sma(nbody, 10)
body = nbody > abody / 3 or usebod == false

//Color Filter
bar = close > open ? 1 : close < open ? -1 : 0
gbar = bar == 1 or usecol == false
rbar = bar == -1 or usecol == false

//Signals

up1 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and crsi < limit and body and usecrsi
dn1 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and crsi > 100 - limit and body and usecrsi
up2 = rbar and (strategy.position_size == 0 or close < strategy.position_avg_price) and fastrsi < limit and body and usefrsi
dn2 = gbar and (strategy.position_size == 0 or close > strategy.position_avg_price) and fastrsi > 100 - limit and body and usefrsi
exit = ((strategy.position_size > 0 and bar == 1) or (strategy.position_size < 0 and bar == -1)) and body

//Trading
profit = exit ? ((strategy.position_size > 0 and close > strategy.position_avg_price) or (strategy.position_size < 0 and close < strategy.position_avg_price)) ? 1 : -1 : profit[1]
mult = usemar ? exit ? profit == -1 ? mult[1] * 2 : 1 : mult[1] : 1
lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 * mult : lot[1]

if ((up1 or up2) and usemod == false) or (up1 and up2 and usemod)
    if strategy.position_size < 0
        strategy.close_all()
        
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if ((dn1 or dn2) and usemod == false) or (dn1 and dn2 and usemod)
    if strategy.position_size > 0
        strategy.close_all()
        
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot)
    
if  exit
    strategy.close_all()