Estratégia MACD Long Only

Autora:ChaoZhang, Data: 2024-01-12 11:02:06
Tags:

img

Resumo

Esta estratégia é baseada no indicador MACD e linhas longas e fechadas para implementar a negociação de longo prazo do par de moedas.

Estratégia lógica

A estratégia usa linhas rápidas e lentas do indicador MACD. A linha rápida tem um parâmetro de EMA de 12 dias e a linha lenta tem um parâmetro de EMA de 26 dias. A diferença entre as duas linhas é o histograma MACD. Além disso, a EMA de 9 dias é calculada como a linha de sinal.

Especificamente, a estratégia primeiro calcula a linha rápida, a linha lenta e a linha de sinal do indicador MACD. Em seguida, a linha longa é definida em -0,04, a linha de fechamento é definida em 0,015. Se o histograma MACD atual for maior que a linha longa, ele vai longo. Se o histograma MACD atual for menor que a linha de fechamento, ele fecha a posição longa. Além disso, a linha de stop loss é definida em 95% do preço de entrada.

Análise das vantagens

A estratégia apresenta as seguintes vantagens:

  1. Usar o indicador MACD para julgar a tendência do mercado com alta precisão
  2. Filtro duplo com linhas longas e estreitas evita sinais errados
  3. A estratégia de stop loss controla eficazmente os riscos
  4. Lógica simples e clara, fácil de compreender e implementar
  5. Apenas necessidades e indicador MACD, menos ocupação de recursos

Análise de riscos

A estratégia apresenta também alguns riscos:

  1. Indicador MACD tem algum atraso, pode perder oportunidades de curto prazo
  2. A definição de stop loss pode ser demasiado conservadora para acompanhar as tendências a longo prazo
  3. Ajuste de parâmetros precisa de um monte de backtesting, caso contrário pode ocorrer sobreajuste
  4. Aplicável apenas a, a eficácia para outros pares é incerta

Métodos como o ajuste de parâmetros, a combinação de outros indicadores podem ser utilizados para otimizar e melhorar.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Teste diferentes combinações de parâmetros MACD para encontrar parâmetros melhores

    Linha rápida, linha lenta, linha de sinal com diferentes comprimentos pode ser tentado encontrar combinações mais adequadas

  2. Tente outros indicadores

    Indicadores como RSI, KD podem ter resultados muito diferentes

  3. Otimizar parâmetros de linha longa e próxima

    Os parâmetros mais adequados podem ser encontrados através de backtesting repetitivo

  4. Ajustar a estratégia de stop loss

    Considere paradas de trail para tornar o stop loss mais dinâmico

  5. Teste em pares de moedas diferentes

    Aplicar a estratégia a outros pares e examinar os efeitos

Conclusão

Em conclusão, esta é uma estratégia de negociação de longo prazo geral muito simples e intuitiva. Ele julga as condições do mercado usando o indicador MACD e define critérios de filtro duplo para reduzir a negociação falsa. O controle de risco também é configurado através de stop loss. A lógica é clara e a ocupação de recursos é baixa. É fácil de entender e implementar, vale a pena recomendar.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-01-11 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "GBPJPY MACD", title = "GBPJPY 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.04)
linesell = input(title="Close Long", type=float, defval=0.015)

//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.