Stratégie MACD à périodes multiples


Date de création: 2023-11-28 15:33:35 Dernière modification: 2023-11-28 15:33:35
Copier: 0 Nombre de clics: 1201
1
Suivre
1617
Abonnés

Stratégie MACD à périodes multiples

Aperçu

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.

Principe de stratégie

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.

  1. Les signaux d’achat sont générés lorsque les prix sont à la hausse sur toutes les périodes;
  2. Un signal de vente est généré lorsque les prix sont en baisse sur toutes les périodes.

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.

Avantages stratégiques

Cette stratégie présente les avantages suivants:

  1. La détection de tendances sur des périodes de temps, le filtrage du bruit, rendent les signaux de trading plus fiables;
  2. Les paramètres de l’indicateur MACD peuvent être personnalisés pour s’adapter à différents environnements de marché;
  3. Une configuration flexible nécessite un calendrier de jugement global et des règles de négociation personnalisées.

Risques stratégiques et solutions

Cette stratégie présente également les risques suivants:

  1. L’évaluation de la cohérence des tendances sur tous les horizons peut laisser passer l’occasion d’une reprise partielle.
  2. Le mauvais réglage des paramètres de l’indicateur MACD peut entraîner une mauvaise efficacité des signaux de négociation.

La réponse:

  1. Les règles de jugement global peuvent être assouplies de manière appropriée, permettant aux prix de certaines périodes de revenir en arrière et de saisir davantage d’opportunités;
  2. Il est nécessaire d’adapter les paramètres de l’indicateur MACD aux différents marchés pour que les signaux de négociation soient plus adaptés à la situation actuelle.

Direction d’optimisation

Cette stratégie peut être améliorée dans les domaines suivants:

  1. d’augmenter ou de réduire le nombre de périodes de jugement global nécessaire pour trouver la meilleure combinaison;
  2. tester différents paramètres de l’indicateur MACD;
  3. Adapter les règles d’entrée et de sortie en fonction de la situation réelle.

Résumer

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.

Code source de la stratégie
/*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)