
A estratégia de acompanhamento de tendências do MACD é uma estratégia de negociação quantitativa baseada no indicador MACD. A estratégia de acompanhamento de tendências de preços de ações é usada para julgar as tendências do mercado, identificando os sinais de forquilha e forquilha do indicador MACD.
A lógica central da estratégia de acompanhamento de tendências do MACD é:
Com este mecanismo de acompanhamento de tendências, a estratégia consegue capturar a inversão de tendências do mercado em tempo hábil e gerar lucro.
A estratégia de acompanhamento de tendências do MACD tem as seguintes vantagens:
A estratégia de acompanhamento de tendências do MACD também apresenta os seguintes riscos:
Para os riscos acima mencionados, podem ser tomadas as seguintes medidas de otimização:
A estratégia de acompanhamento de tendências do MACD pode ser otimizada em:
Otimizar os parâmetros do indicador MACD e reduzir a taxa de falso sinal. O MACD pode ser testado com diferentes parâmetros de ciclo.
Para aumentar o volume de transações, outros indicadores são filtrados. Pode-se definir o mínimo de transações.
Configuração de um mecanismo de rastreamento de perda dinâmica. O ponto de parada pode ser ajustado em tempo real de acordo com a taxa de flutuação.
Optimizar a lógica de determinação do sinal para abrir a posição. Pode definir condições de ação mais rigorosas.
Combinação de um modelo de aprendizado de máquina para filtrar o sinal. Pode treinar o modelo para julgar a confiabilidade do sinal.
A estratégia de acompanhamento de tendências do MACD é, em geral, uma estratégia quantitativa mais madura. A estratégia usa o indicador MACD para determinar a direção da tendência do mercado, com o risco de controle do mecanismo de parada, para acompanhar efetivamente a tendência do preço das ações.
/*backtest
start: 2023-11-10 00:00:00
end: 2023-12-10 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("MACD Cross Strategy", overlay=true)
// Get MACD values
[macdLine, signalLine, _] = ta.macd(close, 12, 26, 9)
var float entryLongPrice = na
var float entryShortPrice = na
var float highestLongProfit = 0
var float highestShortProfit = 0
var float highestMACD = 0
var float lowestMACD = 0
var bool haveOpenedLong = false
var bool haveOpenedShort = false
var float stoploss = 0.04 // To be adjust for different investment
var float minProfit = 0.05 // To be adjust for different investment
if macdLine > 0
lowestMACD := 0
highestMACD := math.max(highestMACD, macdLine)
haveOpenedShort := false
else
highestMACD := 0
lowestMACD := math.min(lowestMACD, macdLine)
haveOpenedLong := false
// Enter long position when MACD line crosses above the signal line
if ta.crossover(macdLine, signalLine) and macdLine < highestMACD and macdLine > 0 and haveOpenedLong == false
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry = "Long", stop=close*(1 - stoploss))
entryLongPrice := close
haveOpenedLong := true
if ta.crossunder(macdLine, signalLine) and macdLine > lowestMACD and macdLine < 0 and haveOpenedShort == false
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry = "Short", stop=close*(1 + stoploss))
entryShortPrice := close
haveOpenedShort := true
// log.info("entryLongPrice:{0}", entryLongPrice)
if strategy.position_size > 0
profit = close - entryLongPrice
log.info("profit:{0}", profit)
if profit > 0
highestLongProfit := math.max(highestLongProfit, profit)
if profit / entryLongPrice > minProfit and highestLongProfit * 0.8 > profit
strategy.close("Long")
highestLongProfit := 0
if strategy.position_size < 0
profit = entryShortPrice - close
if profit > 0
highestShortProfit := math.max(highestShortProfit, profit)
log.info("highestShortProfit={0}, profit={1}", highestShortProfit, profit)
if profit / entryShortPrice > minProfit and highestShortProfit * 0.8 > profit
strategy.close("Short")
highestShortProfit := 0