Stratégie de suivi des tendances MACD à double moyenne mobile Golden Cross et Death Cross


Date de création: 2023-12-22 14:17:34 Dernière modification: 2023-12-22 14:17:34
Copier: 0 Nombre de clics: 717
1
Suivre
1623
Abonnés

Stratégie de suivi des tendances MACD à double moyenne mobile Golden Cross et Death Cross

Aperçu

Cette stratégie permet de déterminer la tendance des prix en calculant des moyennes mobiles rapides, des moyennes mobiles lentes et des indicateurs MACD, de construire des signaux de négociation de fourchettes dorées et de bloquer les bénéfices en combinant le stop-loss et le stop-loss tracking pour permettre un suivi continu de la tendance.

Principe de stratégie

La stratégie est basée sur trois principaux indicateurs:

Tout d’abord, calculer une moyenne mobile rapide et deux moyennes mobiles lentes. Générer un signal d’achat lorsque la moyenne mobile rapide est traversée par deux moyennes mobiles lentes. Générer un signal de vente lorsque la moyenne mobile rapide est traversée par deux moyennes mobiles lentes.

Ensuite, on calcule l’indicateur MACD, comprenant les lignes MACD, les lignes de signal et le plan rectangle. Il s’agit d’un indicateur à plusieurs têtes lorsque le plan rectangle MACD est supérieur à 0 et d’un indicateur à tête vide lorsque le plan rectangle MACD est inférieur à 0.

Enfin, le stop loss est associé au stop loss tracking. Les points d’arrêt et les points d’arrêt sont utilisés pour verrouiller les bénéfices et contrôler les risques. Le stop loss tracking est utilisé pour suivre les bénéfices.

Avantages stratégiques

Cette stratégie présente les avantages suivants:

  1. Le fourchetteur-mort combiné avec l’indicateur MACD permet de déterminer de manière fiable les tendances des prix.
  2. La mise en place d’un point d’arrêt pour prévenir l’expansion des pertes;
  3. Suivre les mouvements automatiques de stop loss, bloquer les bénéfices en permanence et maximiser les gains de tendance;
  4. Les paramètres sont flexibles et peuvent être personnalisés avec des périodes de moyennes mobiles.

Risque stratégique

Cette stratégie comporte aussi des risques:

  1. Le risque de déclenchement d’un stop loss en cas de fluctuation des prix;
  2. Les pertes de traçabilité à long terme nécessitent une surveillance continue et des ajustements en temps opportun;
  3. Une mauvaise configuration des paramètres peut entraîner des transactions fréquentes ou des défaillances.

Les solutions pour faire face aux risques:

  1. fixer des points de rupture raisonnables pour éviter des ruptures inutiles;
  2. les paramètres sont vérifiés et optimisés;
  3. Intervention humaine et surveillance de la situation.

Orientation de l’optimisation de la stratégie

La stratégie peut également être optimisée dans les domaines suivants:

  1. L’ajout de plus d’indicateurs de jugement, tels que le RSI, rend le signal plus fiable.
  2. Optimiser les paramètres des moyennes mobiles pour les rendre plus adaptés aux caractéristiques des différentes variétés;
  3. l’ajout d’algorithmes de suivi dynamique des stop-loss, permettant aux stop-loss de s’adapter aux évolutions du marché;
  4. Augmentation du nombre d’ouvertures de positions et de modules de gestion de fonds tels que le contrôle des positions.

Résumer

Cette stratégie est une stratégie simple et efficace pour suivre les pertes en utilisant les indicateurs MACD et les fourches dorées pour déterminer les tendances. L’avantage est que le suivi des tendances et le blocage des bénéfices sont réalisés.

Code source de la stratégie
/*backtest
start: 2023-12-14 00:00:00
end: 2023-12-21 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy('The Puria Method', shorttitle = 'Puria',overlay = true)

//=== GENERAL INPUTS ===

// short ma
maFastSource   = input(defval = close, title = "Fast MA Source")
maFastLength   = input(defval = 5, title = "Fast MA Period", minval = 1)

// long ma 1
maSlow1Source   = input(defval = low, title = "Slow MA1 Source")
maSlow1Length   = input(defval = 85, title = "Slow MA Period", minval = 1)

// long ma 2
maSlow2Source   = input(defval = low, title = "Slow MA2 Source")
maSlow2Length   = input(defval = 75, title = "Slow MA Period", minval = 1)

//macd
macdFastLength   = input(defval = 12, title = "Fast MACD Period", minval = 1)
macdSlowLength   = input(defval = 26, title = "Slow MACD Period", minval = 1)
macdSmaLength   = input(defval = 9, title = "SMA MACD Period", minval = 1)

// the risk management inputs
inpTakeProfit   = input(defval = 30, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 10, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 5, title = "Trailing Stop Loss", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0)

// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === SERIES SETUP ===
maFast = ema(maFastSource, maFastLength)
maSlow1 = wma(maSlow1Source, maSlow1Length)
maSlow2 = wma(maSlow2Source, maSlow2Length)
[_, signal, histLine] = macd(close, macdFastLength, macdSlowLength, macdSmaLength)

// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)
slow1 = plot(maSlow1, title = "Slow MA1", color = red, linewidth = 2, style = line, transp = 50)
slow2 = plot(maSlow2, title = "Slow MA2", color = red, linewidth = 2, style = line, transp = 50)

// === LOGIC ===
signalUp = crossover(maFast, maSlow1) and crossover(maFast, maSlow2) and histLine > 0
signalDown = crossunder(maFast, maSlow1) and crossunder(maFast, maSlow2) and histLine < 0

// ===STRATEGY===
strategy.entry(id = "Long", long = true, when = signalUp) 
strategy.entry(id = "Short", long = false, when = signalDown)
strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)