La stratégie MACD Crossover with Signal génère des signaux de trading lorsque le MACD traverse au-dessus ou en dessous de la ligne de signal.
La stratégie calcule d'abord la ligne moyenne mobile rapide fastMA et la ligne moyenne mobile lente slowMA. Le paramètre moyenne mobile rapide est de 12 jours, et le paramètre moyenne mobile lente est de 26 jours. Ensuite, calculez la différence entre les deux lignes moyennes mobiles pour former le MACD. Ensuite, calculez la moyenne mobile de 9 jours du MACD pour obtenir la ligne de signal. Les signaux de trading sont générés lorsque le MACD traverse au-dessus ou en dessous de la ligne de signal.
L'avantage de la stratégie est de capturer le tournant de la tendance à moyen terme des cours des actions. La combinaison de moyennes mobiles rapides et lentes filtre les fluctuations et le bruit des prix à court terme et peut capturer les tendances des prix à moyen terme. Lorsque le prix des actions subit un renversement à moyen terme, le MACD franchira la ligne de signal et générera des signaux de trading relativement clairs.
La stratégie MACD Crossover with Signal combine l'idée de doubles moyennes mobiles pour filtrer le bruit à court terme et ne capturer que les points tournants des tendances à long et moyen terme.
Le MACD lui-même est plus sensible et peut répondre de manière sensible aux changements de tendance des prix. L'ajout de la ligne de signal peut filtrer plus de faux signaux à court terme.
Dans une tendance haussière durable, le MACD se maintient au-dessus de la ligne de signal la plupart du temps, ce qui peut saisir plusieurs opportunités en cours de route.
Comme les signaux d'achat et de vente de la stratégie reposent entièrement sur le croisement des moyennes mobiles, si le marché fluctue fortement, de plus en plus de faux signaux seront générés, ce qui entraînera des arrêts de perte fréquents.
La rupture de la ligne de signal ne garantit pas nécessairement que la tendance à moyen terme a changé.
Dans un marché en constante évolution, l'utilisation du croisement des moyennes mobiles doubles comme seuil peut manquer plus d'opportunités de négociation.
Ajouter des indicateurs de filtrage de la liquidité et de la volatilité pour réduire la fréquence d'ouverture et éviter des transactions inefficaces.
Combiner plusieurs autres indicateurs techniques pour former un portefeuille d'indicateurs afin d'améliorer la qualité du signal.
Ajouter des algorithmes d'apprentissage automatique pour former des paramètres et des seuils d'attention plus adaptés à l'environnement actuel du marché, réduisant ainsi l'intervention humaine.
Combiner le VIX et d'autres indices de peur pour prédire les tendances et la volatilité du marché et ajuster dynamiquement les paramètres afin de mieux tirer parti des opportunités du MACD.
La stratégie MACD Crossover with Signal utilise le principe du double croisement de la moyenne mobile pour générer des signaux de trading. En dessinant le graphique de prix par la différence entre les moyennes mobiles rapides et lentes, les changements de tendance des prix à moyen terme auront des caractéristiques évidentes. L'ajout de la ligne de signal filtre également efficacement certains signaux bruyants. La stratégie présente certains avantages pour capturer des renversements de tendance à moyen terme relativement clairs. Cependant, le croisement de MACD et de la ligne de signal ne peut pas déterminer complètement le changement fondamental de la structure du marché, et les signaux de trading doivent être traités avec prudence. Il est recommandé de les utiliser en combinaison avec d'autres indicateurs techniques, et l'optimisation de l'apprentissage automatique peut également être envisagée.
/*backtest start: 2022-12-06 00:00:00 end: 2023-12-12 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@author : SudeepBisht //@version=2 strategy(title="MACD with Signal", shorttitle="MACD_with_Signal") source = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="60") smd = input(true, title="Show MacD & Signal Line? Also Turn Off Dots Below") sd = input(true, title="Show Dots When MacD Crosses Signal Line?") sh = input(true, title="Show Histogram?") macd_colorChange = input(true,title="Change MacD Line Color-Signal Line Cross?") hist_colorChange = input(true,title="MacD Histogram 4 Colors?") res = useCurrentRes ? timeframe.period : resCustom fastLength = input(12, minval=1), slowLength=input(26,minval=1) signalLength=input(9,minval=1) fastMA = ema(source, fastLength) slowMA = ema(source, slowLength) macd = fastMA - slowMA signal = sma(macd, signalLength) hist = macd - signal outMacD = request.security(syminfo.tickerid, res, macd) outSignal = request.security(syminfo.tickerid, res, signal) outHist = request.security(syminfo.tickerid, res, hist) histA_IsUp = outHist > outHist[1] and outHist > 0 histA_IsDown = outHist < outHist[1] and outHist > 0 histB_IsDown = outHist < outHist[1] and outHist <= 0 histB_IsUp = outHist > outHist[1] and outHist <= 0 //MacD Color Definitions macd_IsAbove = outMacD >= outSignal macd_IsBelow = outMacD < outSignal plot_color = hist_colorChange ? histA_IsUp ? green : histA_IsDown ? lime : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray macd_color = macd_colorChange ? macd_IsAbove ? green : red : red signal_color = macd_colorChange ? macd_IsAbove ? yellow : yellow : lime circleYPosition = outSignal plot(smd and outMacD ? outMacD : na, title="MACD", color=macd_color, linewidth=3) plot(smd and outSignal ? outSignal : na, title="Signal", color=blue, style=line ,linewidth=1) plot(sh and outHist ? outHist : na, title="", color=plot_color, style=columns, linewidth=4) //plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color) hline(0, '0 Line', linewidth=2, color=white) macd_chk=smd and outMacD ? outMacD : na checker=smd and outSignal ? outSignal : na if (crossover(macd_chk,checker)) strategy.entry("BBandLE", strategy.long) if (crossunder(macd_chk, checker)) strategy.entry("BBandSE", strategy.short)