Stratégie de négociation sur plusieurs délais basée sur le MACD

Auteur:ChaoZhang est là., Date: 12 janvier 2024 à 11 h 46 min 59 s
Les étiquettes:

img

Cette stratégie utilise l'indicateur MACD pour générer des signaux de trading sur plusieurs délais afin de suivre les tendances.

Principe de stratégie: La stratégie utilise les croisements entre la ligne de différence MACD et la ligne de signal pour déterminer la direction de la tendance. Plus précisément, elle calcule la différence MACD et les lignes de signal dans des délais plus élevés (défaut 60min). Lorsque la ligne de différence traverse au-dessus de la ligne de signal, un signal d'achat est généré. Lorsqu'elle traverse en dessous, un signal de vente est généré pour confirmer la direction générale de la tendance.

La stratégie calcule ensuite le MACD dans des délais inférieurs (période courante) et entre dans les positions lorsque des croisements se produisent entre la différence et les lignes de signal.

La stratégie utilise également le changement de couleur de l'histogramme MACD pour aider à juger de la tendance.

Analyse des avantages:

  1. La conception multi-temporelle confirme la tendance à une TF supérieure et trouve des entrées dans une TF inférieure, améliorant ainsi la systématisation.

  2. Utilise les croisements MACD pour déterminer les entrées et les sorties, paramètres optimisés pour des signaux fiables.

  3. La couleur de l'histogramme aide à déterminer l'état actuel de la tendance, améliorant la précision des décisions.

  4. Il suit automatiquement les tendances, réduit les erreurs émotionnelles.

Analyse des risques:

  1. En tant qu'indicateur de tendance pour les tendances à moyen et long terme, le MACD peut produire de faux signaux à court terme entraînant des pertes inutiles.

  2. Il est plus difficile d'optimiser et de tester les stratégies multi-temps car plusieurs périodes doivent être considérées simultanément.

  3. Aucun stop loss n'est défini, ce qui présente un risque de pertes importantes.

Directions d' optimisation:

  1. Optimiser les paramètres MACD pour trouver les meilleures combinaisons.

  2. Ajouter un stop loss pour limiter la perte maximale.

  3. Évaluer d'autres filtres pour améliorer la qualité du signal.

  4. Testez différentes combinaisons de délais pour trouver des correspondances optimales.

Résumé: La stratégie est bien conçue de manière systémique et combine plusieurs atouts de l'indicateur MACD pour suivre efficacement les tendances à moyen et long terme. Cependant, l'absence d'un mécanisme de stop loss signifie que les pertes à court terme peuvent facilement s'étendre, ce qui doit être amélioré. Dans l'ensemble, avec de fortes capacités de suivi des tendances, la stratégie fournit un cadre de haute qualité pour le choix des actions et la prise de décision dans le trading quantitatif.


/*backtest
start: 2023-12-12 00:00:00
end: 2024-01-11 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@author : SudeepBisht
//@version=2
strategy(title="SB_CM_MacD_Ult_MTF", shorttitle="SB_CM_Ult_MacD_MTF")
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 ? aqua : histA_IsDown ? blue : histB_IsDown ? red : histB_IsUp ? maroon :yellow :gray
macd_color = macd_colorChange ? macd_IsAbove ? lime : 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=4)
plot(smd and outSignal ? outSignal : na, title="Signal Line", color=signal_color, style=line ,linewidth=2)
plot(sh and outHist ? outHist : na, title="Histogram", color=plot_color, style=histogram, linewidth=4)
plot(sd and cross(outMacD, outSignal) ? circleYPosition : na, title="Cross", style=circles, linewidth=4, color=macd_color)
// hline(0, '0 Line', linestyle=solid, 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, comment="BBandLE")

if (crossunder(macd_chk, checker))
    strategy.entry("BBandSE", strategy.short, comment="BBandSE")


Plus de