Estratégia de inversão de ímpeto do RSI

Autora:ChaoZhang, Data: 2023-11-15 16:29:25
Tags:

img

Resumo

Esta é uma estratégia de negociação de curto prazo baseada no indicador Relative Strength Index (RSI). Utiliza o RSI para identificar níveis de sobrecompra e sobrevenda e combina filtragem de velas para evitar sinais falsos, entrando em posições longas e curtas em pontos de reversão.

Explicação da estratégia

É lógica.

Em primeiro lugar, o indicador RSI é calculado com base no preço de fechamento com um período definido como 7. O nível de sobrecompra é definido em 70 e o nível de sobrevenda é definido em 30.

Para filtrar sinais falsos, o tamanho do corpo do candelabro precisa se expandir para 1-3 vezes do intervalo normal quando um sinal de negociação é acionado.

Quando o RSI permanece abaixo de 30 por 5 barras consecutivas, um sinal longo é gerado. Se a próxima vela mostrar um corpo de alta expandido mais de 4 vezes, uma posição longa será executada. Quando o RSI permanece acima de 70 por 5 barras consecutivas, um sinal curto é gerado. Se a próxima vela mostrar um corpo de baixa expandido mais de 4 vezes, uma posição curta será executada.

Para bloquear os lucros, as posições serão fechadas quando a direção atual da vela for consistente com a direção da posição e o corpo se expandir 2 vezes.

Vantagens

  1. Captura da inversão média após níveis extremos

O RSI é bom em identificar condições de sobrecompra e sobrevenda. Quando uma ação atinge níveis extremos, há alta probabilidade de uma retração, e níveis extremos geralmente implicam uma reversão iminente. Esta estratégia é capaz de capturar tais oportunidades em pontos de virada.

  1. A filtragem do candelabro diminui os falsos sinais

Esta estratégia incorpora a expansão do corpo do candelabro como um filtro, entrando em posições quando um corpo ampliado aparece em torno de pontos de reversão, evitando batidas de mercados caóticos.

  1. Barras RSI consecutivas aumentam a confiabilidade

Requerendo 1-5 barras RSI consecutivas em zona de sobrecompra ou sobrevenda atua como uma confirmação, evitando sinais falsos de barras aberrantes ocasionais e melhorando a confiabilidade do sinal.

  1. Multiplicador de expansão do corpo flexível

O multiplicador de expansão do corpo pode ser ajustado para diferentes produtos. Para estoques com grandes oscilações, os critérios podem ser relaxados, enquanto para estoques com intervalos estreitos, ele pode ser apertado. Isso permite ajustes flexíveis para diferentes produtos de negociação.

Riscos

  1. Potencial de sobreajuste

As configurações de parâmetros têm algumas limitações inerentes. Produtos diferentes e períodos de tempo podem exigir ajuste de parâmetros. Usar configurações fixas pode levar a problemas de sobreajuste.

  1. Baixa precisão na identificação de curvas

O RSI em si tem algumas propriedades de atraso. combinando com a expansão do corpo sai posições prematuramente. portanto, a precisão de capturar fundos exatos ou tops geralmente não é muito alta.

  1. Período de detenção potencialmente longo em mercados variáveis

Em mercados variados, o RSI pode desencadear sinais de compra e venda frequentes, resultando em longos períodos de retenção.

  1. Precisa de estratégias de dimensionamento de posição adequadas

Como estratégia de negociação a curto prazo, devem ser combinadas estratégias de dimensionamento de posição adequadas, tais como movimentação de stop loss, take profit, etc., para garantir os lucros e controlar os riscos.

Ideias de melhoria

  1. Teste diferentes conjuntos de parâmetros

Diferentes combinações de parâmetros do RSI podem ser testadas, como período, níveis de sobrecompra/supervenda e filtros de velas, para encontrar parâmetros otimizados para diferentes produtos.

  1. Adicionar stop loss e take profit

Movendo ou percentual stop loss pode ser adicionado para bloquear os lucros. ou definir stop loss com base em valores ATR ou canais Donchain etc.

  1. Combinar outros indicadores como filtros

As condições baseadas no MACD, KDJ e outros indicadores podem ser adicionadas para evitar sinais errados de breakouts inválidos.

  1. Adicionar viés de tendência

Usar médias móveis para medir o viés da tendência. Considere apenas os sinais de negociação que se alinham com a tendência. A estratégia pode ser interrompida durante os mercados de faixa. Os indicadores de força da tendência também podem ser usados como filtros.

Conclusão

Em resumo, esta estratégia de reversão do RSI é uma estratégia comercial típica de curto prazo com seus próprios prós e contras. A principal vantagem reside na captura de retrações após extremos, enquanto o principal risco vem de baixa precisão do sinal e longos períodos de retenção em intervalos. Podemos melhorar a estratégia ajustando parâmetros, adicionando filtros, otimizando paradas, etc., para nos adaptar a mais produtos e condições de mercado e alcançar resultados mais estáveis.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "Noro's FRSI Strategy v1.21", shorttitle = "FRSI str 1.21", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0, commission_type = strategy.commission.percent, commission_value = 0.0)

//Settings
rsiperiod = input(7, defval = 7, minval = 2, maxval = 50, title = "RSI Period")
limit = input(30, defval = 30, minval = 1, maxval = 100, title = "RSI limit")
rsisrc = input(close, defval = close, title = "RSI Price")
rb = input(1, defval = 1, minval = 1, maxval = 5, title = "RSI Bars")
sps = 0
fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2038, defval = 2018, 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")

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

//Limits
bar = close > open ? 1 : close < open ? -1 : 0
uplimit = 100 - limit
dnlimit = limit

//RSI Bars
ur = fastrsi > uplimit
dr = fastrsi < dnlimit
uprsi = rb == 1 and ur ? 1 : rb == 2 and ur and ur[1] ? 1 : rb == 3 and ur and ur[1] and ur[2] ? 1 : rb == 4 and ur and ur[1] and ur[2] and ur[3] ? 1 : rb == 5 and ur and ur[1] and ur[2] and ur[3] and ur[4] ? 1 : 0
dnrsi = rb == 1 and dr ? 1 : rb == 2 and dr and dr[1] ? 1 : rb == 3 and dr and dr[1] and dr[2] ? 1 : rb == 4 and dr and dr[1] and dr[2] and dr[3] ? 1 : rb == 5 and dr and dr[1] and dr[2] and dr[3] and dr[4] ? 1 : 0

//Body
body = abs(close - open)
emabody = ema(body, 30)

//Signals
up = bar == -1 and sps == 0 and dnrsi and body > emabody / 4
dn = bar == 1 and sps == 0 and uprsi and body > emabody / 4
exit = bar == 1 and fastrsi > dnlimit and body > emabody / 2

//Trading
if up
    strategy.entry("Long", strategy.long, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 00, 00)))
    sps := 1

if time > timestamp(toyear, tomonth, today, 00, 00) or exit
    strategy.close_all()
    sps := 0
    

Mais.