La Multi Timeframe MACD Strategy est une stratégie de trading quantitative qui suit les tendances à l'aide de l'indicateur MACD sur plusieurs délais.
La logique de base de cette stratégie est de calculer la situation de croisement de l'indicateur MACD sur plusieurs délais (3 minutes, 5 minutes, 15 minutes, 30 minutes). Tout d'abord, l'indicateur MACD est calculé sur chaque délais pour juger de l'évolution des prix (en hausse ou en baisse) dans ce délai. Ensuite, les tendances des prix sur plusieurs délais sont jugées de manière exhaustive:
En jugeant de la tendance à travers les délais, le bruit de marché à court terme peut être filtré efficacement, ce qui rend les signaux de trading plus fiables.
Cette stratégie présente les avantages suivants:
Cette stratégie comporte également les risques suivants:
Solution correspondante:
Cette stratégie peut être encore optimisée dans les domaines suivants:
La stratégie MACD Multi Timeframe utilise la capacité de jugement de tendance de l'indicateur MACD pour détecter les mouvements de prix à travers les délais, ce qui peut filtrer efficacement le bruit et améliorer la qualité du signal.
/*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)