Estratégia de acompanhamento de tendências com base no indicador MACD


Data de criação: 2023-11-16 17:42:09 última modificação: 2023-11-16 17:42:09
cópia: 6 Cliques: 677
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base no indicador MACD

Visão geral

A estratégia usa o MACD para identificar a direção da tendência e, em combinação com o stop loss dinâmico, para bloquear os lucros.

Princípio da estratégia

  1. Calcule a linha rápida, a linha lenta e o indicador MACD. A linha rápida usa uma média móvel de 12 períodos e a linha lenta usa uma média móvel de 26 períodos. A MACD é a diferença entre a linha rápida e a linha lenta.

  2. Configure as linhas de compra e venda. Gera um sinal de compra quando o MACD atravessa a linha de compra; Gera um sinal de venda quando o MACD atravessa a linha de venda.

  3. Depois de abrir a posição, configure um stop loss dinâmico para acompanhar a linha de stop loss. O valor inicial da linha de stop loss é de 95% do preço de abertura da posição, para bloquear os lucros à medida que o preço se move para a linha de stop loss.

  4. Quando o sinal de parada ou de reversão é disparado, a posição é fechada.

Análise de vantagens

  1. O uso de indicadores MACD para identificar a direção da tendência permite um acompanhamento eficaz da tendência.

  2. O mecanismo de stop loss dinâmico pode bloquear os lucros de forma contínua e evitar a expansão dos prejuízos.

  3. A lógica da estratégia é simples, clara e fácil de entender, adequada para a execução automática de transações quantitativas.

Análise de Riscos

  1. O MACD está atrasado e pode ter perdido a reversão da tendência de curto prazo.

  2. Se você parar de perder com muita facilidade, você pode perder parte do lucro. Se você parar de perder com muita severidade, você pode parar de perder prematuramente.

  3. O problema do tuning de parâmetros, os parâmetros MACD e as linhas de compra e venda precisam de testes e otimização contínuos.

  4. A tendência é favorável, mas há um risco de perda em situações de turbulência.

Direção de otimização

  1. Optimizar os parâmetros MACD para encontrar a melhor combinação de parâmetros.

  2. Teste diferentes formas de perda, como perda de pontuação, perda de ATR, etc.

  3. Adicionar condições de filtragem para evitar erros de negociação usando outros indicadores, como Brinks, RSI, etc.

  4. Combinação de indicadores de avaliação de tendências, identificação de tendências e situações de turbulência, parâmetros de estratégia de ajuste dinâmico.

Resumir

A estratégia é clara em termos gerais, usando indicadores MACD para acompanhar a tendência e usando stop loss dinâmico para bloquear os lucros, para acompanhar efetivamente a tendência. Mas os indicadores MACD têm problemas de atraso e a configuração do ponto de parada também precisa ser otimizada.

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

//@version=3
strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD")
fastMA = input(title="Fast moving average",  defval = 12, minval = 7)
slowMA = input(title="Slow moving average",  defval = 26, minval = 7)
lastColor = yellow
[currMacd,_,_] = macd(close[0], fastMA, slowMA, 9)
[prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9)
plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red
plot(currMacd, style = histogram, color = plotColor, linewidth = 3)
plot(0, title = "Zero line", linewidth = 1, color = gray)

//MACD
// Getting inputs
fast_length = input(title="Fast Length",  defval=12)
slow_length = input(title="Slow Length",  defval=26)
src = input(title="Source",  defval=close)
signal_length = input(title="Signal Smoothing",  minval = 1, maxval = 50, defval =9)
sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false)

// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00

// Calculating
fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length)
slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal

//plot(hist, title="Histogram", style=columns, 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)
///END OF MACD

//Long and Close Long Lines
linebuy = input(title="Enter Long", type=float, defval=-0.0002)
linesell = input(title="Close Long", type=float, defval=0.0001)

//Plot Long and Close Long Lines
plot(linebuy,color=green),plot(linesell,color=red)


//Stop Loss Input
sl_inp = input(0.05, title='Stop Loss %', type=float)/100


//Order Conditions
longCond = crossover(currMacd, linebuy)
exitLong = crossover(currMacd, linesell)
stop_level = strategy.position_avg_price * (1 - sl_inp)


//Order Entries
strategy.entry("long", strategy.long,  when=longCond==true)
strategy.close("long", when=exitLong==true)
strategy.exit("Stop Loss", stop=stop_level)