Estratégia Momentum Circuit Breaker MACD


Data de criação: 2023-10-20 17:12:31 última modificação: 2023-10-20 17:12:31
cópia: 0 Cliques: 740
1
focar em
1617
Seguidores

Estratégia Momentum Circuit Breaker MACD

Visão geral

A estratégia de monopólio de dinâmica MACD utiliza principalmente uma combinação de indicadores MACD e indicadores de dinâmica para formar sinais de negociação e é uma estratégia de acompanhamento de tendências. A estratégia primeiro calcula a EMA de linha rápida e a EMA de linha lenta, em seguida, calcula o valor do MACD e, em seguida, calcula a linha de sinal do MACD.

Princípio da estratégia

A estratégia baseia-se principalmente na combinação de MACD e indicadores de momentum.

O indicador MACD é um indicador de tendência, composto por um gráfico em forma de coluna de EMA de linha rápida, EMA de linha lenta e MACD. Os parâmetros do EMA de linha rápida são geralmente de 12 dias e os parâmetros do EMA de linha lenta são de 26 dias, com a fórmula:

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

A linha lenta EMA = EMA (preço de fechamento, 26)

MACD = linha rápida EMA - linha lenta EMA

Linha de sinal = EMA ((MACD,9)

Quando a linha rápida atravessa a linha lenta, indica que o impulso de alta de curto prazo é mais forte do que o longo prazo, como sinal de entrada; quando a linha rápida atravessa a linha lenta, indica que o impulso de queda de longo prazo é mais forte do que o curto prazo, como sinal de saída.

O índice de dinâmica é um indicador técnico que reflete a velocidade com que os preços das ações mudam, com a fórmula:

Valor dinâmico = preço de fechamento de hoje - preço de fechamento de N dias atrás

Onde N é geralmente 10. Quando o preço de fechamento de hoje sobe mais do que N dias antes, o valor do momento é positivo e a ação está em tendência de alta; Quando o preço de fechamento de hoje cai abaixo do N dias antes, o valor do momento é negativo e a ação está em tendência de queda.

A estratégia usa uma combinação de MACD e um indicador de momentum para formar um sinal de negociação. O critério é: quando o diferencial MACD e o diferencial de momentum atravessam o eixo zero, um sinal de compra é gerado, formando um cruzamento acima do eixo zero. Quando o diferencial MACD e o diferencial de momentum atravessam o eixo zero, um sinal de venda é gerado, formando um cruzamento abaixo do eixo zero.

Análise de vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. A combinação de indicadores MACD com indicadores dinâmicos permite o acompanhamento de tendências, evitando a ocorrência de negociações inválidas quando os preços dos ativos só têm uma falta de direção em relação à oscilação.

  2. Os sinais de transação são gerados com base em mecanismos de dupla confirmação, que podem filtrar alguns ruídos e evitar a interferência de sinais falsos.

  3. Os parâmetros do indicador MACD são ajustáveis e podem ser otimizados de acordo com diferentes variedades e ciclos de negociação.

  4. O mecanismo de negociação bidirecional de compra e venda permite a captura bidirecional de tendências.

  5. A estratégia é simples de entender, com poucos parâmetros, e é adequada para os iniciantes.

Análise de risco estratégico

A estratégia também apresenta alguns riscos:

  1. O MACD e o indicador de dinâmica são indicadores de tendência, que podem gerar mais negociações inativas quando o mercado está muito flutuante ou sem uma tendência evidente.

  2. Os portfólios binários, embora possam filtrar falsos sinais, também podem perder oportunidades de negociação, e os parâmetros devem ser adequadamente ajustados para equilibrar o risco.

  3. Quando a tendência do grande ciclo se inverte, o MACD fica atrasado, resultando em perdas de negociação.

  4. A frequência de transações pode ser elevada, sendo necessário prestar atenção à gestão de fundos e ao controle de taxas.

  5. Os parâmetros inadequados podem levar a uma sensibilidade excessiva ou a um atraso excessivo, que requer testes e otimização contínuos de acordo com as condições do mercado.

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

A estratégia pode ser otimizada em:

  1. Otimizar os parâmetros do indicador MACD para encontrar a combinação de parâmetros mais adequada para diferentes tipos de transações e períodos.

  2. Otimizar o parâmetro de dias do indicador de potência, equilibrando a sensibilidade com o filtro de ruído.

  3. Aumentar o mecanismo de stop loss para controlar a perda máxima de uma única transação.

  4. Adição de um módulo de gerenciamento de posições para permitir que o volume de transações acompanhe as tendências.

  5. Aumentar os filtros, tais como os indicadores de concentração, para evitar transações erradas em condições de curvatura.

  6. Combinado com outros indicadores, como o BRI, o RSI e outros, forma um sinal de negociação de confirmação múltipla.

  7. Adição de um ciclo de otimização para que os parâmetros possam ser iterados e otimizados continuamente.

Resumir

A estratégia MACD de monopólio de dinâmica usa o indicador MACD e o indicador de dinâmica Strengths, que permite o acompanhamento de tendências. Seu mecanismo de dupla confirmação é eficaz para eliminar o ruído do mercado e evitar a ocorrência de negociações inválidas. A estratégia é simples, direta e fácil de entender, especialmente indicada para os iniciantes.

Código-fonte da estratégia
/*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")