
Die MACD-Trend-Tracking-Strategie ist eine quantitative Handelsstrategie, die auf MACD-Indikatoren basiert. Die Strategie beurteilt Markttrends durch die Identifizierung von MACD-Indikator-Gold- und Todesfork-Signalen und ermöglicht die Verfolgung von Aktienpreistrends.
Die Kernlogik der MACD-Trend-Tracking-Strategie lautet:
Durch diese Trend-Tracking-Methode kann die Strategie die Umkehrung der Markttrends rechtzeitig erfassen und profitabel sein.
Die MACD-Trend-Tracking-Strategie hat folgende Vorteile:
Die MACD-Trend-Tracking-Strategie birgt auch folgende Risiken:
Im Hinblick auf diese Risiken können folgende Optimierungsmaßnahmen ergriffen werden:
Eine Trend-Tracking-Strategie für den MACD kann optimiert werden durch:
Optimierung der MACD-Indikatorparameter und Verringerung der Falschsignalrate. Es können MACDs mit unterschiedlichen Periodendaten getestet werden.
Andere Kennzahlen wie die Erhöhung der Transaktionsmenge werden durch Filtersignale gefiltert. Es können Mindesttransaktionsbedingungen festgelegt werden.
Ein dynamischer Stop-Tracking-Mechanismus. Der Stop-Loss kann in Echtzeit an die Schwankungen angepasst werden.
Optimierung der Signalentscheidungslogik für die Eröffnung von Positionen. Sie können strengere Signal-Triggerbedingungen festlegen.
In Kombination mit einem maschinellen Lernmodell wird ein Signal gefiltert. Das Modell kann trainiert werden, die Zuverlässigkeit des Signals zu beurteilen.
Die MACD-Trend-Tracking-Strategie ist insgesamt eine ausgereiftere quantitative Strategie. Die Strategie nutzt die MACD-Indikatoren, um die Richtung der Markttrends zu bestimmen und die Risiken des Stop-Loss-Mechanismus zu steuern, um die Aktienpreistrends effektiv zu verfolgen. Die MACD-Indikatoren selbst haben jedoch bestimmte Mängel und sind anfällig für falsche Signale.
/*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