Tendência do MACD Seguindo a Estratégia

Autora:ChaoZhang, Data: 2023-11-16 17:42:09
Tags:

img

Resumo

Esta estratégia implementa a tendência após a negociação no indicador MACD. Identifica a direção da tendência usando o MACD e com stop loss dinâmico para bloquear lucros.

Estratégia lógica

  1. Calcule o indicador de MA rápido, MA lento e MACD. O MA rápido usa a EMA de 12 períodos, o MA lento usa a EMA de 26 períodos.

  2. Estabelecer linhas de compra e venda. Gerar sinal de compra quando o MACD cruza a linha de compra, gerar sinal de venda quando o MACD cruza abaixo da linha de venda.

  3. Defina o stop loss dinâmico após a abertura da posição.

  4. Posição de fechamento quando for acionado o stop loss ou aparecer o sinal de reversão.

Análise das vantagens

  1. Usando o MACD para identificar a direção da tendência pode efetivamente rastrear as tendências.

  2. O stop loss dinâmico pode bloquear continuamente os lucros e evitar perdas aumentadas.

  3. A lógica da estratégia é simples e clara, fácil de entender e automatizar para negociação de quantidade.

Análise de riscos

  1. O MACD tem um efeito de atraso, pode perder a inversão da tendência a curto prazo.

  2. O stop loss muito solto pode perder alguns lucros, muito apertado pode parar cedo.

  3. Os parâmetros MACD e as linhas de compra/venda precisam de testes e otimização constantes.

  4. Funciona melhor no mercado de tendências, pode ter perdas no mercado agitado.

Orientações de otimização

  1. Otimizar os parâmetros do MACD para encontrar a melhor combinação.

  2. Teste diferentes métodos de stop loss, como pontos fixos, baseados em ATR, etc.

  3. Adicionar condições de filtragem utilizando outros indicadores para evitar sinais falsos, por exemplo, Bandas de Bollinger, RSI, etc.

  4. Combinar com ferramentas de identificação de tendências, ajustar dinamicamente os parâmetros da estratégia com base na tendência versus mercado de intervalo.

Resumo

A estratégia tem uma lógica clara de usar o MACD para rastrear tendências e stop loss dinâmico para bloquear lucros. Pode rastrear efetivamente os mercados de tendência. Mas o MACD tem um problema de atraso e os pontos de stop loss precisam ser otimizados. O próximo passo é testar mais parâmetros, otimizar o mecanismo de stop loss, adicionar filtros com outros indicadores, para torná-lo robusto em diferentes condições de mercado, melhorando a estabilidade.


/*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)

Mais.