Estratégia de negociação de dupla conversão MACD Zero Lag - Negociação de alta frequência com base na captura de tendências de curto prazo

MACD EMA SMA
Data de criação: 2024-05-24 18:14:37 última modificação: 2024-05-24 18:14:37
cópia: 0 Cliques: 1177
1
focar em
1617
Seguidores

Estratégia de negociação de dupla conversão MACD Zero Lag - Negociação de alta frequência com base na captura de tendências de curto prazo

Visão geral

A estratégia baseia-se na versão de atraso zero do indicador MACD (moving average convergence) e permite a negociação de alta frequência, capturando tendências de curto prazo e respondendo rapidamente às mudanças de preço. A estratégia utiliza duas médias móveis de diferentes períodos (linha rápida e lenta) para construir o indicador MACD e introduz um algoritmo de atraso zero, eliminando o atraso entre o indicador e o preço e aumentando a atualidade do sinal.

Princípio da estratégia

  1. Calcule a EMA (Indexed Moving Average) ou SMA (Simple Moving Average) de linha rápida (de 12 ciclos padrão) e de linha lenta (de 26 ciclos padrão).
  2. O uso de algoritmos de atraso zero para a suavização secundária de linhas rápidas e lentas, eliminando o atraso do indicador e do preço.
  3. A linha MACD é composta pelo diferencial entre a linha rápida e a linha lenta com atraso zero.
  4. A linha de sinal é composta por EMA (default 9 cycle) ou SMA da linha MACD.
  5. O gráfico MACD é composto por um diferencial entre a linha MACD e a linha de sinal, com um valor positivo em azul e um negativo em vermelho.
  6. Quando a linha MACD atravessa a linha de sinal de baixo para cima, e o ponto de passagem está abaixo do eixo zero, gera um sinal de compra (o ponto azul).
  7. Quando a linha MACD atravessa a linha de sinal de cima para baixo, e o ponto de passagem está acima do eixo zero, gera um sinal de venda ((ponto vermelho)).
  8. A estratégia consiste em fazer pedidos automáticos de acordo com os sinais de compra e venda e acionar o alerta correspondente.

Análise de vantagens

  1. O algoritmo de atraso zero elimina efetivamente o atraso entre o indicador e o preço, aumentando a atualidade e a precisão do sinal.
  2. O design de uma média móvel dupla pode capturar melhor as tendências do mercado e adaptar-se a diferentes ambientes de mercado.
  3. O gráfico em forma de coluna do MACD reflete intuitivamente o confronto de forças no ar, auxiliando na tomada de decisões comerciais.
  4. A função de encomendas automáticas e alertas facilita o aproveitamento das oportunidades de negociação e aumenta a eficiência das negociações.

Análise de Riscos

  1. Em mercados turbulentos, os sinais de cruzamento frequentes podem levar a sobre-negociação e perdas.
  2. Se os parâmetros não forem configurados corretamente, o sinal pode ser distorcido e afetar o desempenho da estratégia.
  3. A estratégia baseia-se em dados históricos e é pouco adaptável a eventos de emergência e a eventos de Black Swan.

Direção de otimização

  1. A introdução de indicadores de confirmação de tendências, como o ADX, filtram os sinais falsos em mercados de turbulência.
  2. Otimização dos parâmetros para encontrar a melhor combinação de ciclo de linha rápida e ciclo de linha de sinal, aumentando a estabilidade da estratégia.
  3. Construção de modelos multifatoriais, combinados com outros indicadores técnicos ou fatores fundamentais, para aumentar os ganhos ajustados ao risco da estratégia.
  4. Introdução de mecanismos de stop loss e stop-loss para controlar o risco de transações individuais.

Resumir

A estratégia de negociação de atraso zero do MACD de dupla conversão aumenta a atualização e a precisão do sinal por meio da rápida resposta às mudanças de preço, da captura de tendências de curto prazo e da realização de negociações de alta frequência. A estratégia possui certas vantagens, como a visualização do sinal, a facilidade de operação, etc., mas também existe o risco de excesso de parâmetros de negociação, sensibilidade a parâmetros, etc.

Código-fonte 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)