Estratégia MACD de Desagregação do Impulso

Autora:ChaoZhang, Data: 2023-10-20 17:12:31
Tags:

img

Resumo

A estratégia MACD de quebra de momento utiliza principalmente a combinação do indicador MACD e do indicador de momento para gerar sinais de negociação, pertencentes a uma estratégia de tendência. Esta estratégia primeiro calcula a EMA rápida e a EMA lenta, depois calcula o valor MACD e calcula a linha de sinal do MACD. Ao mesmo tempo, calcula o valor de momento do preço. Quando o valor de momento cruza o nível zero junto com a diferença MACD, gera um sinal de compra. Quando o valor de momento cruza abaixo do nível zero junto com a diferença MACD, gera um sinal de venda. Isso pertence a um mecanismo de confirmação dupla para produzir sinais de negociação.

Estratégia lógica

Esta estratégia baseia-se principalmente na combinação dos indicadores MACD e Momentum.

O indicador MACD é um indicador de tendência, composto pela EMA rápida, EMA lenta e pelo histograma MACD.

EMA rápido = EMA ((preço de fechamento, 12)

EMA lento = EMA ((preço de fechamento, 26)

MACD = EMA rápida - EMA lenta

Linha de sinal = EMA ((MACD, 9)

Quando a EMA rápida cruza acima da EMA lenta, significa que a tendência de alta de curto prazo é mais forte do que a tendência de longo prazo, que é um sinal de compra.

O indicador Momentum reflete a velocidade do movimento dos preços e a sua fórmula de cálculo é:

Impulso = Preço de fechamento de hoje - Preço de fechamento N dias atrás

Quando o preço de fechamento de hoje sobe acima do preço de fechamento de N dias atrás, o valor do momento é positivo, indicando uma tendência de alta.

Esta estratégia combina o indicador MACD com o indicador Momentum. Os critérios para gerar sinais de negociação são: quando a diferença entre a diferença MACD e a diferença de momento cruza acima do nível zero, ele gera um sinal de compra, formando um cruzamento acima de zero. Quando a diferença cruza abaixo do nível zero, ele gera um sinal de venda, formando um cruzamento abaixo de zero. Isso pertence a um mecanismo de confirmação dupla para produzir sinais de negociação, que pode filtrar alguns sinais falsos e alcançar a tendência seguinte.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A combinação dos indicadores MACD e Momentum permite seguir a tendência, evitando negociações ineficazes quando o preço do ativo oscila sem uma direção clara.

  2. Com base no mecanismo de confirmação dupla, pode filtrar algum ruído e evitar interferências de falsos sinais.

  3. Os parâmetros MACD são ajustáveis, que podem ser otimizados para diferentes produtos e ciclos de negociação, tornando-o altamente adaptável.

  4. Adopta mecanismos de negociação de compra e venda para captar tendências em ambas as direcções.

  5. A estratégia é fácil de entender com menos parâmetros, adequada para aprendizagem de iniciantes.

Análise de riscos

Esta estratégia tem também alguns riscos:

  1. Tanto o MACD quanto o Momentum pertencem a indicadores de tendência. Eles podem gerar negociações mais ineficientes quando o mercado vê flutuações violentas ou não tem uma tendência clara.

  2. Embora a combinação de dois indicadores possa filtrar sinais falsos, pode também perder algumas oportunidades de negociação.

  3. Quando as principais tendências do ciclo se revertem, o indicador MACD pode atrasar, levando a perdas de negociação.

  4. A frequência de negociação pode ser elevada, exigindo atenção à gestão de capital e ao controlo das comissões.

  5. Os parâmetros inadequados podem conduzir a uma sensibilidade excessiva ou a um atraso.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os parâmetros MACD para encontrar a melhor combinação de parâmetros para diferentes produtos e ciclos de negociação.

  2. Otimizar o parâmetro de período do indicador de Momento para equilibrar a sensibilidade e a filtragem de ruído.

  3. Adicionar mecanismos de stop loss para controlar a perda máxima por transação.

  4. Adicionar módulos de gestão de posições para dimensionar o tamanho das transações ao longo da tendência.

  5. Adicione filtros como o indicador ATR para evitar trocas erradas em mercados agitados.

  6. Incorporar outros indicadores como Bollinger Bands e RSI para formar sinais de negociação com várias confirmações.

  7. Adicionar loops de otimização para iteração e otimização contínua de parâmetros.

Resumo

A estratégia MACD de quebra de momento implementa a negociação de tendência usando os pontos fortes dos indicadores MACD e Momentum. Seu mecanismo de confirmação dupla pode efetivamente filtrar o ruído do mercado e evitar negociações ineficientes. Esta estratégia é relativamente simples e fácil de entender, especialmente adequada para iniciantes. Mas o atraso do MACD e o risco de negociação ineficiente durante os mercados de faixa devem ser observados. A estratégia pode ser mais robusta ao otimizar continuamente os parâmetros e incorporar indicadores técnicos auxiliares.


/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="MACD MOMENTUM TEST", shorttitle="MACD MOM TEST")

// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
len = input(title="Momentum", type=input.integer, defval=10)
src1 = input(title="Source MACD", type=input.source, defval=close)
src2 = input(title="Source MOMENTUM", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 14)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)

// Plot colors
col_grow_above = #0c8e61
col_grow_below = #ffcdd2
col_fall_above = #b2dfdb
col_fall_below = #d42f28
col_macd = #ffffff
col_signal = #d42f28
col_mom = #fbc02d

// Calculating
fast_ma = sma_source ? sma(src1, fast_length) : ema(src1, fast_length)
slow_ma = sma_source ? sma(src1, slow_length) : ema(src1, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
mom = src2 - src2[len]


ma(s,l) => ema(s,l)
sema = ma( src1, fast_length )
lema = ma( src1, slow_length )
i1 = sema + mom + ma( src1 - sema, fast_length )
i2 = lema + mom + ma( src1 - lema, slow_length )
macdl = i1 - i2
macd1 =sema - lema

delta = mom - macd1

// Strategy
    // Backtest
FromYear  = input(defval = 2001, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

    // Function exampel
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

if (crossover(delta, 0))
    strategy.entry("Buy", true, when=window(), comment="Buy")

if (crossunder(delta, 0))
    strategy.close_all(when=window())

// Plot
//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)
plot(hist, title="Histogram", style=plot.style_histogram, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
plot(macd, title="MACD", color=col_macd, transp=0)
plot(signal, title="Signal", color=col_signal, transp=0)
plot(mom, color=col_mom, title="Mom")






Mais.