Estratégia de rastreamento de tendências em escala multitemporal com base em MACD de impulso e cruzamento de média móvel dupla

MACD SMMA SMA ZLEMA EMA MA
Data de criação: 2024-05-17 15:33:02 última modificação: 2024-05-17 15:33:02
cópia: 5 Cliques: 1201
1
focar em
1617
Seguidores

Estratégia de rastreamento de tendências em escala multitemporal com base em MACD de impulso e cruzamento de média móvel dupla

Visão geral

A estratégia usa vários indicadores de médias móveis, incluindo SMMA, SMA, ZLEMA e EMA, e baseia-se neles para construir um indicador MACD melhorado, o Impulse MACD, para gerar sinais de negociação através do cruzamento do Impulse MACD com sua linha de sinais. A principal idéia da estratégia é usar médias móveis em diferentes escalas de tempo para capturar tendências de mercado, enquanto o Impulse MACD é usado para confirmar a força e a direção da tendência.

Princípio da estratégia

  1. O SMMA, ZLEMA, com um comprimento de cálculo de 34 de alta, baixa e fechamento, é obtido pelo IMPULSE MACD ((MD)).
  2. Calcule o SMA de 9 ciclos do Impulse MACD como uma linha de sinal ((SB) )
  3. Calcule a diferença entre o MACD de impulso e a linha de sinal (SH) para refletir a intensidade da tendência.
  4. Quando o impulse MACD atravessa a linha de sinal, gera um sinal de compra, e quando o impulso MACD atravessa a linha de sinal, gera uma posição de equilíbrio.
  5. De acordo com a relação entre o preço e o MACD de impulso, a alta e a baixa SMMA, o gráfico em colunas do MACD de impulso é desenhado em cores diferentes para refletir intuitivamente a força e a fraqueza da tendência.

Vantagens estratégicas

  1. A utilização de vários tipos de médias móveis permite uma reflexão mais abrangente das tendências do mercado.
  2. O indicador MACD Impulse, que leva em consideração a posição relativa dos preços em relação às médias móveis, pode refletir melhor a força da tendência.
  3. A introdução da linha de sinalização ajuda a filtrar alguns sinais falsos e melhorar a qualidade do sinal.
  4. O Impulse MACD é desenhado em cores diferentes de acordo com a intensidade da tendência, facilitando a visualização do movimento do mercado.

Risco estratégico

  1. A escolha inadequada de parâmetros pode levar a sinais frequentes ou atrasados, que precisam ser otimizados de acordo com diferentes mercados e ciclos.
  2. A estratégia pode gerar mais sinais falsos e, consequentemente, mais perdas em situações de turbulência.
  3. A estratégia não possui um mecanismo de parada de perdas, e pode ter grandes retrações em situações de alta volatilidade.

Direção de otimização da estratégia

  1. A introdução de indicadores de tendência, como o ADX, para negociar apenas quando a tendência é clara, reduz os prejuízos em situações de turbulência.
  2. Para o sinal de negociação gerado, pode ser combinado com outros indicadores como RSI, ATR e outros para a segunda confirmação, melhorando a qualidade do sinal.
  3. Estabeleça um limite razoável de perda e de parada para controlar o risco de uma única transação.
  4. Optimização de parâmetros, como o uso de algoritmos genéticos para encontrar a melhor combinação de parâmetros.

Resumir

A estratégia baseia-se em vários tipos de médias móveis e cria sinais de negociação através da sua interseção com a linha de sinal, mostrando intuitivamente a intensidade da tendência, a clareza do pensamento geral e a vantagem evidente. No entanto, a estratégia também tem algumas limitações, como a falta de adaptabilidade às condições de choque, a falta de medidas de controle de risco, etc.

Código-fonte da estratégia
/*backtest
start: 2023-05-11 00:00:00
end: 2024-05-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false)

// Function to calculate SMMA
calc_smma(src, len) =>
    var float smma = na
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

// Function to calculate SMA
	ta.sma(src, len)
    sum = 0.0
    for i = 0 to len - 1
        sum := sum + src[i]
    sum / len

// Function to calculate ZLEMA
calc_zlema(src, length) =>
    var float ema1 = na
    var float ema2 = na
    var float d = na
    ema1 := ta.ema(src, length)
    ema2 := ta.ema(ema1, length)
    d := ema1 - ema2
    ema1 + d

// Function to calculate EMA
calc_ema(src, len) =>
    ema = 0.0
    ema := ta.ema(src, len)
    ema

// Inputs
lengthMA = input(34, title="Length of Moving Average")
lengthSignal = input(9, title="Length of Signal Line")

// Calculations
src = hlc3
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA) 

md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange

// Plotting
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram)
plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal")

// Execute trades based on signals
if (ta.crossover(md, sb))
    strategy.entry("Buy", strategy.long)
if (ta.crossunder(md, sb))
    strategy.close("Buy")