Die MACD Trend Following Strategie ist eine quantitative Handelsstrategie, die auf dem MACD-Indikator basiert.
Die Kernlogik der MACD Trend Following Strategie ist:
Durch diesen Trend-Folge-Mechanismus kann die Strategie rechtzeitig Markttrends erfassen und Gewinne erzielen.
Die MACD Trend Following Strategie hat folgende Vorteile:
Die MACD Trend Following Strategie birgt außerdem folgende Risiken:
Um den oben genannten Risiken entgegenzuwirken, können folgende Optimierungsmaßnahmen ergriffen werden:
Die MACD Trend Following Strategie kann in folgenden Aspekten optimiert werden:
Optimieren Sie die MACD-Indikatorparameter, um die Falschsignalrate zu reduzieren.
Zusätzliche Indikatoren wie Handelsvolumen, um Signale auszufiltern. Mindesthandelsvolumenbedingungen können festgelegt werden.
Einrichtung eines dynamischen Stop-Loss-Mechanismus, bei dem die Stop-Loss-Punkte dynamisch anhand der Volatilität angepasst werden können.
Optimieren Sie die Signalbestimmungslogik für die Eröffnung von Positionen.
Einbeziehung von Modellen des maschinellen Lernens, um Signale auszufiltern.
Im Allgemeinen ist die MACD Trend Following Strategie eine relativ ausgereifte quantitative Strategie. Sie nutzt den MACD-Indikator, um Markttrendrichtungen zu bestimmen, und kontrolliert Risiken mit einem Stop-Loss-Mechanismus, der die Preistrends effektiv verfolgen kann.
/*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