O indicador MACD é usado para gerar sinais de negociação em vários prazos para rastrear tendências.
Princípio de estratégia: A estratégia usa os cruzamentos entre a linha de diferença do MACD e a linha de sinal para determinar a direção da tendência. Especificamente, calcula a diferença do MACD e as linhas de sinal em prazos mais altos (default 60min). Quando a linha de diferença cruza acima da linha de sinal, um sinal de compra é gerado. Ao cruzar abaixo, um sinal de venda é gerado para confirmar a direção geral da tendência.
A estratégia então calcula o MACD em prazos mais baixos (período atual) e entra em posições quando ocorrem cruzamentos entre a diferença e as linhas de sinal.
A estratégia também usa a mudança de cor do histograma MACD para ajudar a julgar a tendência.
Análise das vantagens:
O projeto de quadros de tempo múltiplos confirma a tendência em TF mais elevado e encontra entradas em TF mais baixo, melhorando a sistematicidade.
Utiliza os crossovers MACD para determinar entradas e saídas, parâmetros otimizados para sinais confiáveis.
A cor do histograma ajuda a determinar o status atual da tendência, melhorando a precisão da decisão.
Segue automaticamente as tendências, reduz os erros emocionais.
Análise de riscos:
Como indicador de tendência para tendências de médio e longo prazo, o MACD pode produzir falsos sinais a curto prazo, levando a perdas desnecessárias.
Estratégias de vários prazos são mais difíceis de otimizar e testar, pois vários períodos precisam ser considerados simultaneamente.
Não é definido nenhum stop loss que represente o risco de grandes perdas.
Orientações de otimização:
Otimizar os parâmetros do MACD para encontrar as melhores combinações.
Adicionar stop loss para limitar a perda máxima.
Avaliar outros filtros para melhorar a qualidade do sinal.
Teste diferentes combinações de prazos para encontrar combinações ideais.
Resumo: A estratégia é bem projetada sistematicamente e combina vários pontos fortes do indicador MACD para rastrear efetivamente as tendências de médio e longo prazo. No entanto, a falta de um mecanismo de stop loss significa que as perdas de curto prazo podem se expandir facilmente, o que precisa ser melhorado.
/*backtest start: 2023-12-12 00:00:00 end: 2024-01-11 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@author : SudeepBisht //@version=2 strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF") source = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60") smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below") sd = input(true, title="Show Dots When MacD Crosses Signal Line?") sh = input(true, title="Show Histogram?") macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?") hist_colorChange = input(true,title="MacD Histogram 4 Colors?") res = useCurrentRes ? timeframe.period : resCustom fastLength = input(12, minval=1), slowLength=input(26,minval=1) signalLength=input(9,minval=1) fastMA = ema(source, fastLength) slowMA = ema(source, slowLength) macd = fastMA - slowMA signal = sma(macd, signalLength) hist = macd - signal outMacD = request.security(syminfo.tickerid, res, macd) outSignal = request.security(syminfo.tickerid, res, signal) outHist = request.security(syminfo.tickerid, res, hist) histA_IsUp = outHist > outHist[1] and outHist > 0 histA_IsDown = outHist < outHist[1] and outHist > 0 histB_IsDown = outHist < outHist[1] and outHist <= 0 histB_IsUp = outHist > outHist[1] and outHist <= 0 //MacD Color Definitions macd_IsAbove = outMacD >= outSignal macd_IsBelow = outMacD < outSignal plot_color = hist_colorChange ? histA_IsUp ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray macd_color = macd_colorChange ? macd_IsAbove ? lime : red : red signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime circleYPosition = outSignal plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=4) plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2) plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4) plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color) // hline(0, '0 Line', linestyle=solid, linewidth=2, color=white) macd_chk=smd and outMacD ? outMacD : na checker=smd and outSignal ? outSignal : na if (crossover(macd_chk,checker)) strategy.entry("BBandLE", strategy.long, comment="BBandLE") if (crossunder(macd_chk, checker)) strategy.entry("BBandSE", strategy.short, comment="BBandSE")