
La stratégie MACD à plusieurs périodes est une stratégie de négociation quantitative qui utilise l’indicateur MACD pour suivre la tendance sur plusieurs périodes. La stratégie émet un signal de négociation en calculant l’indicateur MACD sur différentes périodes de temps (minutes 3, 5, 15 et 30), afin de déterminer si la tendance des prix est cohérente entre les différentes périodes.
La logique centrale de cette stratégie est de calculer l’intersection de l’indicateur MACD sur plusieurs périodes de temps (par exemple, 3 minutes, 5 minutes, 15 minutes et 30 minutes). Comptez d’abord l’indicateur MACD sur chaque période de temps et jugez la tendance des prix à la hausse ou à la baisse selon l’indicateur MACD.
En évaluant les tendances à travers des périodes de temps, il est possible d’éliminer efficacement le bruit du marché à court terme et de rendre les signaux de trading plus fiables.
Cette stratégie présente les avantages suivants:
Cette stratégie présente également les risques suivants:
La réponse:
Cette stratégie peut être améliorée dans les domaines suivants:
La stratégie MACD multi-cadres utilise la fonction de jugement de tendance de l’indicateur MACD pour réaliser la détection des mouvements de prix sur des cadres temporels, filtrant efficacement le bruit et améliorant la qualité du signal. La stratégie peut être ajustée par des paramètres et optimisée par des règles, s’adapte de manière flexible à différentes variétés et à différents environnements.
/*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)