O recurso está a ser carregado... Carregamento...

Estratégia de negociação quantitativa baseada no RSI de regressão linear

Autora:ChaoZhang, Data: 2024-01-24 11:35:19
Tags:

img

Resumo

Esta estratégia é projetada com base no indicador RSI de regressão linear. Ela gera sinais de compra e venda calculando o cruzamento entre o RSI de regressão linear e a EMA. A estratégia também fornece duas opções para a lógica de compra que podem ser selecionadas conforme necessário.

Estratégia lógica

A estratégia primeiro calcula uma regressão linear de 200 períodos, em seguida, calcula um RSI de 21 períodos com base no resultado da regressão linear. Depois disso, uma EMA de 50 períodos é calculada. Quando o RSI cruza acima da EMA, um sinal de compra é gerado. Quando o RSI cruza abaixo da EMA, um sinal de venda é acionado para fechar a posição.

A estratégia oferece dois tipos de lógica de compra:

  1. Comprar quando o RSI cruzar acima da EMA
  2. Comprar quando o RSI estiver acima da EMA e também acima da linha de sobrecompra

A lógica de compra adequada pode ser selecionada com base nas condições do mercado.

Análise das vantagens

Esta estratégia combina os pontos fortes do RSI de regressão linear e do EMA, que efetivamente filtra algum ruído de preços e gera sinais de negociação mais confiáveis.

O RSI de regressão linear capta melhor a tendência e o EMA ajuda a identificar pontos de virada.

A estratégia fornece duas lógicas de compra opcionais para maior flexibilidade para se adaptar a diferentes estágios do mercado.

Análise de riscos

O principal risco desta estratégia reside na possível alteração da relação entre o RSI e a EMA, o que pode conduzir a sinais comerciais incorretos.

Além disso, a natureza atrasada do RSI e da EMA como indicadores pode também causar certos atrasos nas entradas e saídas, não conseguindo captar perfeitamente os pontos de virada.

Para mitigar os riscos, parâmetros como os comprimentos do RSI e da EMA podem ser otimizados para uma melhor coordenação entre os dois.

Orientações para melhorias

A estratégia pode ser melhorada pelos seguintes aspectos:

  1. Otimizar comprimentos de regressão linear RSI e EMA para encontrar as melhores combinações de parâmetros
  2. Adicionar outros indicadores como MACD, Bollinger Bands etc para melhorar a qualidade do sinal
  3. Incorporar métricas de volatilidade para ajustar o dimensionamento das posições
  4. Utilize técnicas de aprendizagem de máquina para otimizar automaticamente parâmetros

Conclusão

Esta estratégia projeta uma estratégia de reversão média baseada em RSI e EMA de regressão linear, identificando oportunidades de reversão dentro de intervalos olhando para cruzes RSI-EMA. Também fornece duas lógicas de compra opcionais para flexibilidade para se adaptar a mercados variados.


/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Linear RSI")

startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(input(9999, "End Year"),   input(1, "Month"),   input(1, "Day"),   0, 0)
_testPeriod() => true

//inputs
length = input(defval=200, minval=1, title="LR length")
length2 = input(defval=21, minval=1, title="RSI length")
ema_fast = input(defval=50, minval=1, title="EMA")
lag = 0

overBought = input(50)
overSold = input(50)


//rsi
src = close
Lr = linreg(src, length, lag)
rsi = rsi(Lr, length2)
ema = ema(rsi, ema_fast)

plot(rsi, color = rsi > overBought ? color.green : rsi < overSold ? color.red : color.silver)
plot(overBought, color=color.purple)
plot(overSold, color=color.purple)
plot(ema, color=color.blue)

first_type = input(true, title="Use first logic?")
second_type =  input(false, title="Use second logic?")

long_condition = (first_type ? crossover(rsi, ema) and _testPeriod() : false) or (second_type ? rsi > ema and rsi > overBought and _testPeriod() : false)
strategy.entry('BUY', strategy.long, when=long_condition)  
 
short_condition = crossunder(rsi, ema)
strategy.close('BUY', when=short_condition)

Mais.