MACD da estratégia de negociação do RSI

Autora:ChaoZhang, Data: 21 de setembro de 2023 20:48:50
Tags:

Resumo

Esta estratégia utiliza o indicador MACD para determinar a tendência do indicador RSI, gerando sinais de negociação.

Estratégia lógica

A estratégia baseia-se em dois indicadores principais:

  1. RSI Calcula o RSI regular de 14 períodos.

  2. MACD do RSI Calcula os valores MACD do RSI, com padrão MA rápido 12, MA lento 26, linha de sinal 9.

Quando o MACD do RSI se cruza para cima, o cruzamento dourado do MAs rápido e lento, ele determina uma tendência de alta e vai longo.

Quando o MACD cruza para baixo, o MAC rápido e lento cruzam, determina uma tendência de queda e fica curto.

As médias móveis exponenciais do MACD ajudam a determinar a tendência de longo prazo do próprio RSI, resultando em sinais mais precisos.

Vantagens

  • O MACD avalia a direção da tendência do RSI para maior precisão
  • RSI como indicador primário, MACD como indicador secundário
  • As MAs exponenciais tornam a determinação da tendência estável
  • A combinação verifica-se mutuamente, evitando problemas
  • O ajuste de parâmetros proporciona flexibilidade para diferentes mercados

Riscos

  • Tanto o RSI quanto o MACD podem ficar atrasados, levando a sinais imprecisos
  • Parâmetros MACD errados podem gerar mais sinais falsos
  • Basado exclusivamente em indicadores, sensível a eventos súbitos
  • Mecanismo de stop loss precisa de melhorias
  • Optimização de parâmetros necessária para diferentes produtos

Os riscos podem ser reduzidos:

  • Optimização das combinações dos parâmetros RSI e MACD
  • Adicionar outros filtros para confirmação
  • Relaxamento do TP/SL para evitar a saída prematura
  • Considerando reentrada
  • Dimensão da posição para limitar perdas únicas

Orientações para a melhoria

A estratégia pode ser melhorada através de:

  1. Teste das combinações de parâmetros RSI e MACD

  2. Adição de confirmação secundária quando os sinais MACD

    Por exemplo, padrões de velas, volume, bandas de Bollinger, etc.

  3. Otimizar paradas para paradas de trail

  4. Adição de regras de reentrada

    Reestabelecer posições depois de atingidas paradas se a tendência continuar

  5. Ajuste do tamanho das posições em função da volatilidade

    Dimensão menor em caso de alta volatilidade, maior em caso de baixa volatilidade

Resumo

Esta estratégia combina os indicadores RSI e MACD para se verificarem para uma detecção de tendência mais precisa e estável. Mas os parâmetros precisam de otimização e filtros técnicos ou regras de negociação adicionais são necessários para confirmação, evitando eventos repentinos. Também são importantes mecanismos de stop loss e dimensionamento dinâmico de posição.


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

//@version=3

strategy(title = "MACD of RSI", overlay = false)

//////////////////////// RSI ///////////////////////////

src = close, len = input(14, minval=1, title="Length")
up = sma(max(change(src), 0), len)
down = sma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))


//////////////////////// RSI   //////////////////////////

//////////////// MACD  ////////////////////////////

sourcemacd = rsi 

fastLength = input(12, minval=1), slowLength=input(26,minval=1)
signalLength=input(9,minval=1)


fastMA = ema(sourcemacd, fastLength)
slowMA = ema(sourcemacd, slowLength)

macd = fastMA - slowMA
signal = ema(macd, signalLength)
delta=macd-signal

swap1 = delta>0?green:red

plot(delta,color=swap1,style=columns,title='Histo',histbase=0,transp=20)
p1 = plot(macd,color=blue,title='MACD Line')
p2 = plot(signal,color=red,title='Signal')
fill(p1, p2, color=blue)
hline(0)




/////////////////////////MACD  //////////////////////////


// Conditions



longCond = na
sellCond = na
longCond :=  crossover(delta,0)
sellCond :=  crossunder(delta,0)




monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  longCond  ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND", comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( sellCond   ) 

    strategy.close("BUY")







Mais.