Die Multi Timeframe MACD Strategie ist eine quantitative Handelsstrategie, die Trends mithilfe des MACD-Indikators über mehrere Zeitrahmen hinweg verfolgt.
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.
Durch die Beurteilung der Entwicklung über Zeiträume hinweg kann kurzfristiges Marktlärm effektiv ausfiltert werden, wodurch Handelssignale zuverlässiger werden.
Diese Strategie hat folgende Vorteile:
Diese Strategie birgt außerdem folgende Risiken:
Entsprechende Lösungen
Diese Strategie kann in folgenden Bereichen weiter optimiert werden:
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)