
A estratégia de previsão de tendências do MACD é uma estratégia de acompanhamento de tendências baseada no indicador MACD e no indicador EMA. A estratégia não gera sinais de negociação através do cruzamento de linhas de sinal como a estratégia MACD tradicional, mas sim através de mudanças na distância entre a linha de indicador MACD e a linha de sinal para produzir sinais de negociação para capturar mudanças na tendência.
Calcule a linha rápida DEMAfast: Calcule a média MMEfast de duas EMAs da linha rápida através do método EMA, e então calcule a linha rápida DEMAfast segundo a fórmula DEMAfast= (((2 * MMEfast) - MMEfastb)).
Calcule a linha lenta DEMAslow: Calcule a linha lenta com o método EMA para obter a média de duas vezes do EMA de MMEslow, e então calcule a linha lenta DEMAslow com a fórmula DEMAslow = (((2 * MMEslow) - MMEslowb)).
Calcule a linha MACD: a linha MACD é a linha rápida DEMAfast menos o diferencial da linha lenta DEMAslow LigneMACDZeroLag。
Cálculo da linha de sinal: Calcule o valor médio MMEsignal de duas vezes em EMA para a linha MACD através do método EMA, e depois a linha de sinal de acordo com a fórmula Lignesignal=((2 * MMEsignal) - MMEsignalb) .
Comparação entre linhas MACD e linhas de sinal: quando a linha MACD é maior do que a linha de sinal, gera um sinal de compra; quando a linha MACD é menor do que a linha de sinal, gera um sinal de venda.
Os cálculos acima usam o algoritmo DEMA, que pode efetivamente reduzir o atraso do indicador MACD.
O uso do algoritmo DEMA reduz o atraso do indicador MACD, tornando os sinais de negociação mais sensíveis.
O sinal de cruzamento não depende do indicador MACD, mas capta a mudança de tendência através da mudança de distância entre o MACD e a linha de sinal, para entrar na tendência mais cedo.
A estratégia é acertada para avaliar as tendências, o fator de lucro pode atingir 1.6-3.5, o rendimento é melhor.
A lógica da estratégia é simples, clara e fácil de entender, adequada para a implementação de transações quantitativas.
O MACD, como um indicador de atraso, pode gerar uma grande quantidade de sinais de negociação inválidos durante a liquidação.
Embora o algoritmo DEMA possa reduzir o atraso, mas não eliminá-lo completamente, ainda há algum atraso.
Como uma estratégia de acompanhamento de tendências, os rendimentos podem ser fracos em situações de turbulência.
É necessário otimizar os parâmetros sma, lma,tsp para adaptar-se a diferentes ciclos e variedades.
Pode ser necessário adicionar uma estratégia de controle de perda.
Optimizar os parâmetros sma, lma,tsp para adaptar-se a diferentes ciclos e variedades de transação.
Adição de estratégias de stop loss dinâmicas, como o ATR, para controlar cada perda.
A partir de agora, você pode usar os indicadores de tendência para evitar a negociação em situações de turbulência.
Adição de controle de volume de transação, ajustando posições de acordo com a volatilidade do mercado.
Optimizar a lógica de entrada e saída e refinar as regras de sinais de negociação.
A estratégia de previsão de tendência MACD pode efetivamente capturar mudanças de tendência, com um fator de lucro de 1.6 a 3.5, com uma certa vantagem. No entanto, ainda é necessário otimizar a configuração de parâmetros, a estratégia de parada de perda, o filtro de choque e outras situações para se adaptar a mais condições de mercado.
/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © moritz1301
//@version=4
strategy("MACD Trendprediction Strategy V1", shorttitle="MACD TPS", overlay=true)
sma = input(12,title='DEMA Courte')
lma = input(26,title='DEMA Longue')
tsp = input(9,title='Signal')
dolignes = input(true,title="Lignes")
MMEslowa = ema(close,lma)
MMEslowb = ema(MMEslowa,lma)
DEMAslow = ((2 * MMEslowa) - MMEslowb )
MMEfasta = ema(close,sma)
MMEfastb = ema(MMEfasta,sma)
DEMAfast = ((2 * MMEfasta) - MMEfastb)
LigneMACDZeroLag = (DEMAfast - DEMAslow)
MMEsignala = ema(LigneMACDZeroLag, tsp)
MMEsignalb = ema(MMEsignala, tsp)
Lignesignal = ((2 * MMEsignala) - MMEsignalb )
MACDZeroLag = (LigneMACDZeroLag - Lignesignal)
bgcolor(LigneMACDZeroLag<Lignesignal ? color.red : color.green)
if (LigneMACDZeroLag>Lignesignal)
strategy.entry("Buy", strategy.long, comment="BUY")
if (LigneMACDZeroLag<Lignesignal)
strategy.close("Buy", strategy.long, comment="SELL")