Estratégia de negociação baseada em sinais cruzados MACD e RSI

Autora:ChaoZhang, Data: 2023-12-18 17:19:03
Tags:

img

Resumo

Esta estratégia usa o indicador MACD para julgar as tendências do mercado e identificar pontos de negociação potenciais, ao mesmo tempo em que combina o indicador RSI para confirmar condições de sobrecompra/supervenda. Os sinais de negociação só são gerados quando o MACD dá um sinal de compra/venda e o RSI confirma simultaneamente que o mercado está sobrevendido/supercomprado. Isso pode efetivamente filtrar sinais falsos e melhorar a estabilidade da estratégia.

Princípios de estratégia

Cálculo do indicador MACD

O indicador MACD consiste na diferença entre a EMA rápida e a EMA lenta, refletindo a diferença entre as tendências médias de preços a curto e a longo prazo.

Quando a linha rápida cruza acima da linha lenta, é um sinal de cruz dourada indicando uma tendência de alta.

Cálculo do indicador RSI

O indicador RSI reflete as condições de sobrecompra/supervenda no mercado. O parâmetro do período RSI é definido em 14 nesta estratégia.

O RSI abaixo de 30 sugere que o ATIVO foi SUPERVENDIDO, uma vez que os compradores superaram os vendedores por um período prolongado.

O RSI acima de 70 sugere que o ATIVO estava sobrecarregado, já que a pressão de venda superou a pressão de compra no cronograma rastreado.

As leituras abaixo de 30 indicam condições de sobrevenda, enquanto as leituras acima de 70 indicam condições de sobrecompra.

Sinais de estratégia

Esta estratégia usa o RSI para filtrar os sinais, gerando apenas sinais de negociação reais quando o MACD dá um sinal e o RSI confirma simultaneamente extremos de sobrecompra / sobrevenda.

Especificamente, quando o MACD gera uma cruz de ouro, se o RSI<=34 ao mesmo tempo, confirmando um mercado sobrevendido, um sinal de compra é gerado.

Este mecanismo de confirmação dupla pode filtrar muitos sinais comerciais não confiáveis, melhorando assim a estabilidade e a fiabilidade da estratégia.

Análise das vantagens

Filtragem de indicadores duplos melhora a confiabilidade do sinal

Esta estratégia combina os indicadores MACD e RSI para confirmação dupla, o que pode efetivamente reduzir a interferência de falsos sinais e filtrar alguns sinais comerciais não confiáveis, melhorando assim a confiabilidade e a estabilidade do sinal.

Julgamento claro da tendência

Como um indicador de preço e volume, o MACD pode determinar claramente as tendências ascendentes e descendentes do mercado.

Espaço de otimização de parâmetros grandes

Os parâmetros dos componentes MACD e RSI desta estratégia podem ser otimizados e ajustados para se adequarem a diferentes ciclos e instrumentos de negociação.

Fácil de entender e aplicar

O MACD, RSI e outros indicadores utilizados nesta estratégia são indicadores técnicos muito típicos e comumente usados que são fáceis de entender.

Análise de riscos

Pode perder algumas oportunidades comerciais

Esta estratégia adota uma abordagem relativamente conservadora de confirmação dupla que, ao filtrar sinais falsos, pode causar algumas oportunidades de negociação perdidas que poderiam ter resultado em lucros com base num único sinal de indicador.

  • Solução: Aumentar adequadamente o intervalo de limiar do RSI para reduzir o rigor da confirmação e permitir que a estratégia capture mais oportunidades de negociação.

Ocorrem perdas durante movimentos extremos do mercado

Em caso de volatilidade extrema do mercado, os indicadores MACD e RSI podem atrasar a tomada de decisões, o que pode conduzir a sinais comerciais incorretos gerados pela estratégia e a perdas incorridas.

  • Solução: Incorporar mecanismos de stop loss para evitar perdas excessivas em transações individuais. Ajustar parâmetros para criar uma sensibilidade adequada dos indicadores a movimentos extremos do mercado.

O desempenho depende fortemente das configurações dos parâmetros

O desempenho desta estratégia depende em grande parte da qualidade do MACD, RSI e outras configurações de parâmetros.

  • Solução: otimizar combinações de parâmetros através de backtesting para localizar configurações ótimas de parâmetros.

Orientações de otimização

Incorporar mecanismos de stop loss para controlar os riscos

As regras de stop loss baseadas em preços ou indicadores podem ser implementadas para posições de saída com um limiar de perda admissível pré-definido, limitando efetivamente as perdas em operações individuais.

Ajustar os parâmetros de acordo com as características do mercado

Otimização contínua de parâmetros-chave como os períodos de linha rápida/lenta do MACD e os limiares de sobrecompra/supervenda do RSI para alinhá-los com a evolução das estruturas do ciclo e com as peculiaridades dos diferentes instrumentos de negociação.

Teste em todos os ativos para descobrir o melhor ajuste

Realizar backtests em índices de ações, criptomoedas, pares de divisas, commodities e outros ativos para descobrir qual o mercado mais adequado às características da estratégia.

Incorporar indicadores adicionais para confirmação multidimensional

Indicadores como Stochastics, OBV, CCI etc. podem ser adicionados aos componentes MACD e RSI para maior precisão de confirmação através de uma abordagem de filtragem de sinal multidimensional.

Conclusão

Esta estratégia determina as tendências do mercado e os sinais comerciais com base no indicador MACD, enquanto o RSI confirma condições de sobrecompra/supervenda para filtrar sinais falsos.

O desempenho pode ser melhorado ainda mais através de técnicas de otimização, stop losses, confirmação multiprong, etc. Com lógica simples e boa estabilidade, serve como uma boa estratégia de partida para os principiantes praticarem e otimizarem.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(default_qty_type = strategy.percent_of_equity, default_qty_value = 25, pyramiding = 10, title="MACD crossover while RSI Oversold/Overbought", overlay=true, shorttitle="MACD Cross + RSI Oversold Overbought", initial_capital = 1000)

//MACD Settings
fastMA = input(title="Fast moving average",  defval = 12, minval = 7) //7 16
slowMA = input(title="Slow moving average",  defval = 26, minval = 7) //24 26 
signalLength = input(9,minval=1) //9 6

//RSI settings
RSIOverSold = input(34 ,minval=1) //26
RSIOverBought = input(75 ,minval=1) //77
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
wasOversold = rsi[0] <= RSIOverSold or rsi[1] <= RSIOverSold or rsi[2] <= RSIOverSold or rsi[3] <= RSIOverSold or rsi[4] <= RSIOverSold or rsi[5] <= RSIOverSold
wasOverbought = rsi[0] >= RSIOverBought or rsi[1] >= RSIOverBought or rsi[2] >= RSIOverBought or rsi[3] >= RSIOverBought or rsi[4] >= RSIOverBought or rsi[5] >= RSIOverBought


[currMacd,_,_] = macd(close[0], fastMA, slowMA, signalLength)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, signalLength)
signal = ema(currMacd, signalLength)

crossoverBear = cross(currMacd, signal) and currMacd < signal ? avg(currMacd, signal) : na
crossoverBull = cross(currMacd, signal) and currMacd > signal ? avg(currMacd, signal) : na

plotshape(crossoverBear and wasOverbought , title='MACD-BEAR', style=shape.triangledown, text='overbought', location=location.abovebar, color=orange, textcolor=orange, size=size.tiny) 
plotshape(crossoverBull and wasOversold, title='MACD-BULL', style=shape.triangleup, text='oversold', location=location.belowbar, color=lime, textcolor=lime, size=size.tiny) 

// Configure backtest start date with inputs
startDate = input(title="Start Date",
     defval=8, minval=1, maxval=31)
startMonth = input(title="Start Month",
     defval=3, minval=1, maxval=12)
startYear = input(title="Start Year",
     defval=2021, minval=1800, maxval=2100)

afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))
     
if (afterStartDate==true)
    posSize = abs(strategy.position_size)
    strategy.order("long", strategy.long, when = crossoverBull and wasOversold) 
    strategy.order("long", long=false, qty=posSize/3, when = crossoverBear and wasOverbought) 


Mais.