Estratégia MACD sem tendência

Autora:ChaoZhang, Data: 2023-10-30 17:08:16
Tags:

img

Resumo

Esta estratégia usa o método de eliminar a tendência dos preços das ações para observar o indicador MACD com mais clareza. Ao calcular a linha rápida DEMA e a linha lenta DEMA, a linha MACD e a linha de sinal são derivadas. Os sinais de negociação são gerados através do cruzamento entre a linha MACD e a linha de sinal. A estratégia também incorpora filtros de condição de data e mês e lógica de stop loss para formar um sistema mais completo.

Estratégia lógica

Em primeiro lugar, a EMA do preço é calculada para eliminar a tendência de preço e obter a EMA desviada. Em seguida, a linha rápida DEMA, a linha lenta DEMA e a linha MACD são calculadas com base na EMA. A DEMA da linha rápida é calculada por: primeiro calcular a EMA1 da linha rápida, depois calcular a EMA2 da EMA1, e finalmente calcular a DEMA=(2*EMA1-EMA2). A linha lenta DEMA e a linha de sinal são calculadas de forma semelhante. Após obter a linha MACD (linha rápida DEMA - linha lenta DEMA) e a linha de sinal, um sinal de compra é gerado quando a linha MACD cruza acima da linha de sinal, e um sinal de venda é gerado quando a linha MACD cruza a linha de sinal abaixo. Finalmente, combine os filtros de data e mês e defina a lógica de stop loss.

A lógica central desta estratégia é a seguinte:

  1. Elimine a tendência dos preços para ver o indicador MACD com mais clareza.

  2. Calcular linha rápida DEMA, linha lenta DEMA para derivar linha MACD e linha de sinal.

  3. O cruzamento da linha MACD e da linha de sinal gera sinais de negociação.

  4. Adicione filtros de data e mês.

  5. Configure a lógica de stop loss.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. A eliminação da tendência de preços pode revelar a situação do cruzamento do MACD de forma mais clara sem ser enganada pela tendência.

  2. Usando o algoritmo DEMA para calcular o MACD filtra algum ruído e torna o sinal mais claro.

  3. Combinar filtros de data e mês pode reduzir transações desnecessárias.

  4. A lógica de stop loss pode reduzir as perdas no tempo e controlar os riscos.

  5. Usar o crossover para gerar sinais reduz os negócios incorretos.

  6. Em geral, combinando a eliminação da tendência, o cálculo DEMA e os filtros de condição, esta estratégia pode gerar sinais comerciais relativamente claros e confiáveis.

Análise de riscos

Alguns riscos desta estratégia requerem atenção:

  1. Após a eliminação da tendência, os sinais de cruzamento do MACD podem aumentar, o que requer testes ao vivo para verificar a viabilidade.

  2. Embora o algoritmo DEMA filtre algum ruído, ainda pode haver muitos sinais falsos no cálculo do indicador.

  3. As condições do filtro de data e mês podem ser muito rígidas, perdendo algumas oportunidades de negociação.

  4. A posição de stop loss precisa ser razoavelmente definida, muito frouxa aumentará o risco, muito apertada irá parar a perda com frequência.

  5. A estratégia baseia-se principalmente no MACD, se o mercado não for adequado para este indicador, o desempenho pode ser afetado.

  6. Ainda há muito espaço para a otimização dos parâmetros, que necessita de mais testes através de backtest e negociação ao vivo.

Soluções:

  1. Adicionar outro indicador de confirmação para evitar falsos sinais.

  2. Otimizar adequadamente as condições do filtro de data.

  3. Teste e otimize os pontos de stop loss cuidadosamente.

  4. Adicionar mecanismo de julgamento da tendência para evitar a negociação contra a tendência.

  5. Otimizar os parâmetros para melhorar a estabilidade.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Teste diferentes médias móveis de preços para encontrar uma melhor alternativa à EMA.

  2. Tente diferentes combinações de parâmetros para otimizar a linha rápida do MACD, a linha lenta e os comprimentos da linha de sinal.

  3. Adicione indicadores auxiliares como o volume para evitar sinais falsos.

  4. Otimizar estratégias de stop loss, definir movimentos ou ordens razoáveis de stop loss.

  5. Otimizar as condições do filtro de data e mês para torná-los mais flexíveis.

  6. Adicione o julgamento da tendência para evitar a negociação contra a tendência.

  7. Optimização abrangente dos parâmetros para melhorar a estabilidade.

  8. Backtest num período de tempo mais longo para verificar o desempenho a longo prazo.

  9. Negociação ao vivo para verificar e modificar os parâmetros com base na negociação real.

Resumo

Em resumo, esta estratégia usa a idéia de eliminar a tendência e calcular o MACD DEMA combinado com filtros de data para gerar sinais de negociação, o que é uma idéia de estratégia simples, mas viável. Sua maior vantagem é revelar o padrão MACD claramente sem ser afetado pela tendência de preço. No entanto, ainda há alguns riscos desta estratégia que precisam de otimização de parâmetros e medidas de controle de risco para serem implementadas para aplicação prática. Há também um grande espaço para otimização, e com verificação e otimização suficientes, esta estratégia pode se tornar um sistema de negociação estável e confiável a curto prazo.


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

//@version=2

strategy(title = "Trendless MACD  Strategy",shorttitle="MACD-T Strategy",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,commission_type=strategy.commission.percent,commission_value=0.01,initial_capital=100000)



maperiod=input(9)
ema=ema(close,maperiod)


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(ema,slowmacd)
macdslowline2 = ema(macdslowline1,slowmacd)
DEMAslow = ((2 * macdslowline1) - macdslowline2 )

macdfastline1 = ema(ema,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 = MACDLine-SignalLine


colorbar= MACDSignal>0?green:red

plot(MACDSignal,color=colorbar,style=columns,title='Histogram',histbase=0)
p1 = plot(MACDLine,color=blue,title='MACDLine')
p2=plot(SignalLine,color=red,title="SignalLine")
fill(p1,p2,color=blue)


longCond =  crossover(MACDLine,SignalLine) 

shortCond =  crossunder(MACDLine,SignalLine) 




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

yearfrom= input(2018)
yearuntil=input(2021)

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



if ( shortCond  ) 

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





Mais.