Multi-Zeitrahmen-MACD-Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-28 15:33:35
Tags:

img

Übersicht

Die Multi Timeframe MACD Strategie ist eine quantitative Handelsstrategie, die Trends mithilfe des MACD-Indikators über mehrere Zeitrahmen hinweg verfolgt.

Strategie Logik

Die Kernlogik dieser Strategie besteht darin, die MACD-Indikator-Kreuzungssituation über mehrere Zeitrahmen (3 Minuten, 5 Minuten, 15 Minuten, 30 Minuten) zu berechnen. Zunächst wird der MACD-Indikator auf jedem Zeitrahmen berechnet, um den Preistrend (nach oben oder unten) unter diesem Zeitrahmen zu beurteilen.

  1. Wenn die Preise in allen Zeitrahmen steigen, wird ein Kaufsignal generiert.
  2. Wenn die Preise in allen Zeitrahmen fallen, wird ein Verkaufssignal generiert.

Durch die Beurteilung der Entwicklung über Zeiträume hinweg kann kurzfristiges Marktlärm effektiv ausfiltert werden, wodurch Handelssignale zuverlässiger werden.

Vorteile

Diese Strategie hat folgende Vorteile:

  1. Durch die Erkennung von Trends über Zeiträume hinweg wird Lärm ausfiltert und die Handelssignale zuverlässiger.
  2. Die MACD-Indikatorparameter können an unterschiedliche Marktumgebungen angepasst werden.
  3. Zeiträume für ein umfassendes Urteil können flexibel so eingestellt werden, dass die Handelsregeln unabhängig voneinander festgelegt werden.

Risiken und Lösungen

Diese Strategie birgt außerdem folgende Risiken:

  1. Bei der Beurteilung der Trendkonsistenz über alle Zeitrahmen hinweg können lokale Umkehrungen übersehen werden.
  2. Eine unsachgemäße Einstellung der MACD-Parameter kann zu einer schlechten Handelssignalleistung führen.

Entsprechende Lösungen

  1. Die Beurteilungsregeln können moderat gelockert werden, damit bei Preisumkehrungen in einzelnen Zeitrahmen mehr Chancen genutzt werden können.
  2. Die MACD-Parameter müssen an die verschiedenen Märkte angepasst werden, um die Handelssignale besser an die aktuellen Trends anzupassen.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Bereichen weiter optimiert werden:

  1. Erhöhen oder verringern Sie die Anzahl der Zeitrahmen, die für eine umfassende Beurteilung erforderlich sind, um die optimale Kombination zu finden.
  2. Versuche verschiedene MACD-Indikatorparameter.
  3. Anpassung der spezifischen Ein- und Ausstiegsregeln anhand der tatsächlichen Rückprüfungsergebnisse.

Zusammenfassung

Die Multi Timeframe MACD Strategie nutzt die Trendbeurteilungsfähigkeit des MACD-Indikators, um Preisbewegungen über Zeitrahmen hinweg zu erkennen, was das Rauschen effektiv filtern und die Signalqualität verbessern kann. Diese Strategie kann durch Parameter-Tuning und Regeloptimierung flexibel an verschiedene Produkte und Marktumgebungen angepasst werden und hat eine starke Praktikabilität.


/*backtest
start: 2023-10-28 00:00:00
end: 2023-11-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("[RichG] Easy MTF Strategy", overlay=false)

TF_1_time = input("3", "Timeframe 1")
TF_2_time = input("5", "Timeframe 2")
TF_3_time = input("15", "Timeframe 3")
TF_4_time = input("30", "Timeframe 4")

fastLen = input(title="Fast Length",  defval=12)
slowLen = input(title="Slow Length",  defval=26)
sigLen  = input(title="Signal Length",  defval=9)
[macdLine, signalLine, _] = macd(close, fastLen, slowLen, sigLen)

width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor

TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short)
    
strategy.close("MTF_Long", when=exitCondition_Long)    
strategy.close("MTF_Short", when=exitCondition_Short)

Mehr