O recurso está a ser carregado... Carregamento...

A estratégia de negociação de duplo crossover MACD de atraso zero - negociação de alta frequência baseada na captura de tendências de curto prazo

Autora:ChaoZhang, Data: 2024-05-24 18:14:37
Tags:MACDEMASMA

img

Resumo

Esta estratégia é baseada na versão de atraso zero do indicador MACD (Moving Average Convergence Divergence), que capta tendências de curto prazo, respondendo rapidamente às mudanças de preço, permitindo a negociação de alta frequência. A estratégia usa duas médias móveis com períodos diferentes (linhas rápidas e lentas) para construir o indicador MACD e introduz um algoritmo de atraso zero para eliminar o atraso entre o indicador e o preço, melhorando a puntualidade dos sinais. Além disso, o cruzamento da linha de sinal e da linha MACD é usado como sinais de compra e venda e alertas são configurados para ajudar os traders a aproveitar oportunidades de negociação em tempo hábil.

Princípio da estratégia

  1. Calcular a EMA (média móvel exponencial) ou a SMA (média móvel simples) da linha rápida (12 períodos por defeito) e da linha lenta (26 períodos por defeito).
  2. Use o algoritmo de atraso zero para duplicar as linhas rápidas e lentas, eliminando o atraso entre o indicador e o preço.
  3. A linha MACD é formada pela diferença entre a linha rápida de atraso zero e a linha lenta de atraso zero.
  4. A linha de sinal é formada pela EMA (períodos de 9 por defeito) ou SMA da linha MACD.
  5. O histograma MACD é formado pela diferença entre a linha MACD e a linha de sinal, com o azul representando valores positivos e o vermelho representando valores negativos.
  6. Quando a linha MACD cruza a linha de sinal a partir de baixo e o ponto de cruzamento está abaixo do eixo zero, é gerado um sinal de compra (ponto azul).
  7. Quando a linha MACD cruza a linha de sinal de cima e o ponto de cruzamento está acima do eixo zero, é gerado um sinal de venda (ponto vermelho).
  8. A estratégia coloca automaticamente ordens com base nos sinais de compra e venda e desencadeia alertas correspondentes.

Análise das vantagens

  1. O algoritmo de atraso zero elimina efetivamente o atraso entre o indicador e o preço, melhorando a puntualidade e a precisão dos sinais.
  2. A concepção de médias móveis duplas permite captar melhor as tendências do mercado e adaptar-se aos diferentes ambientes de mercado.
  3. O histograma MACD reflete intuitivamente a comparação de forças de alta e baixa, auxiliando nas decisões de negociação.
  4. As funções de colocação automática de ordens e alerta tornam conveniente para os operadores aproveitarem oportunamente as oportunidades de negociação, melhorando a eficiência das negociações.

Análise de riscos

  1. Em mercados voláteis, os sinais cruzados frequentes podem conduzir a excesso de negociação e a perdas.
  2. A configuração incorreta dos parâmetros pode causar distorção do sinal e afetar o desempenho da estratégia.
  3. A estratégia baseia-se em dados históricos para os cálculos e tem pouca adaptabilidade a eventos repentinos e eventos de cisne negro.

Direcção de otimização

  1. Introduzir indicadores de confirmação de tendência, como o ADX, para filtrar sinais falsos em mercados voláteis.
  2. Otimizar os parâmetros para encontrar a melhor combinação de períodos de linha rápida e lenta e períodos de linha de sinal, melhorando a estabilidade da estratégia.
  3. Combinar outros indicadores técnicos ou fatores fundamentais para construir um modelo multifatorial, melhorando os retornos ajustados ao risco da estratégia.
  4. Introduzir mecanismos de stop-loss e take-profit para controlar o risco do single trade.

Resumo

A estratégia de negociação MACD Dual Crossover Zero Lag alcança negociação de alta frequência respondendo rapidamente a mudanças de preço e capturando tendências de curto prazo. O algoritmo de atraso zero e o design de média móvel dupla melhoram a puntualidade e precisão dos sinais. A estratégia tem certas vantagens, como sinais intuitivos e operação conveniente, mas também enfrenta riscos como excesso de negociação e sensibilidade de parâmetros. No futuro, a estratégia pode ser otimizada através da introdução de indicadores de confirmação de tendência, otimização de parâmetros, modelos multifatores, etc., para melhorar a robustez e lucratividade da estratégia.


/*backtest
start: 2024-04-23 00:00:00
end: 2024-05-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("BNM INTRADAY SETUP MACD 3M - Version 1.2", shorttitle="Zero Lag MACD Enhanced 1.2")
source = close

fastLength = input(12, title="Fast MM period", minval=1)
slowLength = input(26,title="Slow MM period", minval=1)
signalLength =input(9,title="Signal MM period", minval=1)
useEma = input(true, title="Use EMA (otherwise SMA)")
useOldAlgo = input(false, title="Use Glaz algo (otherwise 'real' original zero lag)")
showDots = input(true, title="Show symbols to indicate crossing")
dotsDistance = input(1.5, title="Symbols distance factor", minval=0.1)

// Fast line
ma1 = useEma ? ema(source, fastLength) : sma(source, fastLength) 
ma2 = useEma ? ema(ma1, fastLength) : sma(ma1, fastLength) 
zerolagEMA = ((2 * ma1) - ma2)

// Slow line
mas1 = useEma ? ema(source, slowLength) : sma(source, slowLength)
mas2 = useEma ? ema(mas1, slowLength) : sma(mas1, slowLength)
zerolagslowMA = ((2 * mas1) - mas2)

// MACD line
ZeroLagMACD = zerolagEMA - zerolagslowMA 

// Signal line
emasig1 = ema(ZeroLagMACD, signalLength)
emasig2 = ema(emasig1, signalLength)
signal = useOldAlgo ? sma(ZeroLagMACD, signalLength) : (2 * emasig1) - emasig2

hist = ZeroLagMACD - signal

upHist = (hist > 0) ? hist : 0
downHist = (hist <= 0) ? hist : 0

p1 = plot(upHist, color=color.blue, transp=40, style=plot.style_columns, title='Positive delta')
p2 = plot(downHist, color=color.red, transp=40, style=plot.style_columns, title='Negative delta') 

zeroLine = plot(ZeroLagMACD, color=color.red, transp=0, linewidth=2, title='MACD line')
signalLine = plot(signal, color=color.blue, transp=0, linewidth=2, title='Signal')

ribbonDiff = hist > 0 ? color.blue : color.red
fill(zeroLine, signalLine, color=ribbonDiff)

circleYPosition = signal * dotsDistance
ribbonDiff2 = hist > 0 ? color.blue : color.red

// Generate dots for cross signals
plot(showDots and cross(ZeroLagMACD, signal) ? circleYPosition : na, style=plot.style_circles, linewidth=4, color=ribbonDiff2, title='Dots')

// Alerts for buy and sell signals
buySignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.blue) and (ZeroLagMACD < 0)
sellSignal = cross(ZeroLagMACD, signal) and (ribbonDiff2 == color.red) and (ZeroLagMACD > 0)

// Use 'strategy.entry' for placing orders in strategy context
if (buySignal)
    strategy.entry("Buy", strategy.long)
    alert("Buy Signal: Blue dot below zero line", alert.freq_once_per_bar_close)

if (sellSignal)
    strategy.entry("Sell", strategy.short)
    alert("Sell Signal: Red dot above zero line", alert.freq_once_per_bar_close)


Relacionados

Mais.