Estratégia de negociação MACD DEMA

Autora:ChaoZhang, Data: 2023-09-19 16:10:19
Tags:

Resumo

Esta estratégia combina os indicadores MACD e DEMA de trilho duplo para gerar sinais de negociação a partir de cruzamentos.

Princípio da estratégia

  1. Calcular a linha rápida DEMAfast como valor DEMA do preço com duração do período fastmacd.

  2. Calcular a linha lenta DEMAslow como valor DEMA do preço com duração do período slowmacd.

  3. A linha MACD é a diferença entre as linhas rápidas e lentas: DEMAfast - DEMAAslow.

  4. A linha de sinal é o valor DEMA da linha MACD com o período de sinal macd.

  5. Os cruzamentos entre o MACD e as linhas de sinal geram sinais comerciais: longo na cruz dourada, curto na cruz da morte.

  6. Adicionar filtros de data para gerar apenas sinais dentro do intervalo de data especificado.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A combinação do MACD e do DEMA complementa os indicadores. O MACD captura as voltas, o DEMA filtra para melhorar a qualidade do sinal.

  2. O projeto de trilhos duplos DEMA reduz o atraso e o ruído do indicador MACD.

  3. Os sinais de cruzamento do MACD são fáceis de interpretar, limpos e simples.

  4. A fixação flexível dos filtros de data atende às diferentes necessidades estratégicas.

  5. Os parâmetros do MACD podem ser otimizados para flexibilidade nas condições de mercado.

Análise de riscos

Principais riscos desta estratégia:

  1. O MACD luta como indicador de tendência em mercados laterais agitados.

  2. O cruzamento pode gerar sinais falsos, precisa de uma filtragem eficaz.

  3. Estratégia de stop loss não robusta, propensa a paradas de grandes dimensões.

  4. Optimização de parâmetros não abrangente o suficiente, grande diferença de desempenho entre produtos.

  5. Os filtros de datação são demasiado rígidos, precisa de ajuste dinâmico.

Soluções:

  1. Adicione um indicador de impulso para evitar o mercado lateral.

  2. Adicionar condições de preço para filtrar falsos cruzes.

  3. Definir um stop loss inicial e final razoável.

  4. Parâmetros de ensaio entre produtos, otimização dinâmica.

  5. Ajustar as datas dos filtros com base nas condições em tempo real.

Orientações de otimização

Algumas melhorias potenciais para a estratégia:

  1. Adicionar filtro de volume para sinais cruzados.

  2. Otimizar as combinações de parâmetros MACD em diferentes produtos.

  3. Adicione estratégias de stop como stop loss fixo ou atrasado.

  4. Ajustar dinamicamente o stop loss com base na volatilidade do mercado.

  5. Seguir a força da tendência para dimensionamento da posição.

Resumo

A estratégia MACD DEMA combina os pontos fortes de ambos os indicadores, usando crossovers para capturar tendências. Mas o MACD está inerentemente atrasado, cuidado com sinais falsos. Também otimize paradas para evitar liquidação irracional. Para negociação ao vivo, recomenda-se uma entrada cautelosa com base em parâmetros otimizados e melhorias contínuas.


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

//@version=2
strategy(" MACD DEMA STRATEGY ", overlay=true)

source=close
price=source



fastmacd = input(12,title='MACD Fast  Line Length')
slowmacd = input(26,title='MACD Slow Line Length')
signalmacd = input(9,title='Signal Line Length')

macdslowline1 = ema(close,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = ema(close,fastmacd)
macdfastline2 = ema(macdfastline1,fastmacd)
DEMAfast = ((2 * macdfastline1) - macdfastline2)

MACDLine = (DEMAfast - DEMAslow)

SignalLine1 = ema(MACDLine, signalmacd)
SignalLine2 = ema(SignalLine1, signalmacd)
SignalLine = ((2 * SignalLine1) - SignalLine2 )


MACDSignal = SignalLine-MACDLine


colorbar= MACDSignal>0?green:red




yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(1)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)







if ( crossover(MACDLine,SignalLine) ) 
    strategy.entry("MMAL", strategy.long, stop=close, oca_name="TREND",  comment="AL")
    
else
    strategy.cancel(id="MMAL")


if (  crossunder(MACDLine,SignalLine) ) 

    strategy.entry("MMSAT", strategy.short,stop=close, oca_name="TREND",  comment="SAT")
else
    strategy.cancel(id="MMSAT")
    
    
    
    
    
    
    
    
    
    
    
    


Mais.