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.
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:
Elimine a tendência dos preços para ver o indicador MACD com mais clareza.
Calcular linha rápida DEMA, linha lenta DEMA para derivar linha MACD e linha de sinal.
O cruzamento da linha MACD e da linha de sinal gera sinais de negociação.
Adicione filtros de data e mês.
Configure a lógica de stop loss.
As principais vantagens desta estratégia são:
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.
Usando o algoritmo DEMA para calcular o MACD filtra algum ruído e torna o sinal mais claro.
Combinar filtros de data e mês pode reduzir transações desnecessárias.
A lógica de stop loss pode reduzir as perdas no tempo e controlar os riscos.
Usar o crossover para gerar sinais reduz os negócios incorretos.
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.
Alguns riscos desta estratégia requerem atenção:
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.
Embora o algoritmo DEMA filtre algum ruído, ainda pode haver muitos sinais falsos no cálculo do indicador.
As condições do filtro de data e mês podem ser muito rígidas, perdendo algumas oportunidades de negociação.
A posição de stop loss precisa ser razoavelmente definida, muito frouxa aumentará o risco, muito apertada irá parar a perda com frequência.
A estratégia baseia-se principalmente no MACD, se o mercado não for adequado para este indicador, o desempenho pode ser afetado.
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:
Adicionar outro indicador de confirmação para evitar falsos sinais.
Otimizar adequadamente as condições do filtro de data.
Teste e otimize os pontos de stop loss cuidadosamente.
Adicionar mecanismo de julgamento da tendência para evitar a negociação contra a tendência.
Otimizar os parâmetros para melhorar a estabilidade.
A estratégia pode ser otimizada nos seguintes aspectos:
Teste diferentes médias móveis de preços para encontrar uma melhor alternativa à EMA.
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.
Adicione indicadores auxiliares como o volume para evitar sinais falsos.
Otimizar estratégias de stop loss, definir movimentos ou ordens razoáveis de stop loss.
Otimizar as condições do filtro de data e mês para torná-los mais flexíveis.
Adicione o julgamento da tendência para evitar a negociação contra a tendência.
Optimização abrangente dos parâmetros para melhorar a estabilidade.
Backtest num período de tempo mais longo para verificar o desempenho a longo prazo.
Negociação ao vivo para verificar e modificar os parâmetros com base na negociação real.
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")