Stratégie de croisement dynamique de tendance et de momentum - Système de trading quantitatif basé sur les indicateurs doubles EMA et MACD

EMA MACD CROSSOVER momentum
Date de création: 2025-02-21 14:30:18 Dernière modification: 2025-02-27 16:56:29
Copier: 1 Nombre de clics: 377
2
Suivre
319
Abonnés

Stratégie de croisement dynamique de tendance et de momentum - Système de trading quantitatif basé sur les indicateurs doubles EMA et MACD Stratégie de croisement dynamique de tendance et de momentum - Système de trading quantitatif basé sur les indicateurs doubles EMA et MACD

Aperçu

Cette stratégie est un système de trading quantitatif qui combine les indicateurs des moyennes mobiles indicielles (EMA) et des moyennes mobiles de tendance/déviation (MACD). Elle offre aux traders une solution complète de suivi des tendances en intégrant les signaux croisés des EMAs à court et à long terme, ainsi que la confirmation de la dynamique MACD. La stratégie comprend également un mécanisme de stop-loss et de stop-loss dynamique pour contrôler efficacement les risques tout en recherchant la maximisation des gains.

Principe de stratégie

La logique centrale de la stratégie est basée sur la synergie de deux indicateurs techniques: d’abord, l’utilisation d’EMA de 12 cycles et de 26 cycles pour identifier la tendance du marché, qui génère un signal de plus et un signal de moins lorsqu’une EMA à court terme est traversée par une EMA à long terme. Ensuite, l’utilisation de l’indicateur MACD (configuration 12,26,9) pour confirmer la dynamique de la tendance, qui nécessite que la relation de position de la ligne MACD avec la ligne du signal soutienne le signal de transaction généré par l’EMA. Le système utilise des paramètres de perte dynamique (par défaut de 2%) et d’arrêt par défaut (par défaut de 5%) en pourcentage, et déclenche un signal de position supplémentaire à la croisée des EMA ou en arrière-plan du MACD.

Avantages stratégiques

  1. Mechanisme de confirmation de signal amélioré: double confirmation par croisement EMA et MACD dynamique, réduisant considérablement le risque de fausse percée
  2. Gestion des risques flexible: utilisation d’un stop-loss à pourcentage pour s’adapter aux différentes conditions du marché et variétés de transactions
  3. L’effet visuel est excellent: les lignes EMA, les indicateurs MACD et les marqueurs de signaux de négociation sont clairement affichés sur le graphique
  4. Adaptabilité des paramètres: permet d’ajuster les cycles EMA, les paramètres MACD et le ratio de contrôle du risque pour s’adapter à différentes stratégies de négociation

Risque stratégique

  1. Risque de renversement de tendance: des croisements fréquents peuvent se produire dans des marchés en crise, ce qui conduit à de faux signaux
  2. Problème de retard: les EMA et le MACD sont des indicateurs de retard qui risquent de manquer les meilleurs points d’entrée dans un mouvement rapide
  3. Risques de gestion des fonds: le stop loss à pourcentage fixe peut ne pas être suffisamment flexible dans un environnement à forte volatilité
  4. Risque d’optimisation des paramètres: une optimisation excessive peut entraîner une mauvaise performance de la stratégie dans le jeu réel.

Orientation de l’optimisation de la stratégie

  1. Introduction d’un indicateur de volatilité: il est recommandé d’ajouter un indicateur ATR pour ajuster dynamiquement les niveaux de stop loss et stop loss
  2. Augmentation du filtrage des conditions de marché: la force de la tendance peut être déterminée par des indicateurs tels que l’ADX, afin d’éviter de négocier dans des marchés instables
  3. Optimisation des mécanismes de confirmation des signaux: envisager d’ajouter la confirmation de la quantité de livraison ou d’autres indicateurs de dynamique comme aide
  4. Amélioration de la gestion des fonds: mise en place d’un système de gestion dynamique des positions basé sur les intérêts des comptes

Résumer

Il s’agit d’une stratégie de suivi de tendance conçue de manière rationnelle et logique. En combinant les avantages de l’EMA et du MACD, une génération de signaux de négociation plus fiable est réalisée tout en gardant la stratégie simple et compréhensible.

Code source de la stratégie
/*backtest
start: 2025-01-21 00:00:00
end: 2025-02-03 15:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("EMA + MACD Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
shortEmaLength = input.int(12, title="Short EMA Period", minval=1)
longEmaLength = input.int(26, title="Long EMA Period", minval=1)
macdFastLength = input.int(12, title="MACD Fast EMA Period", minval=1)
macdSlowLength = input.int(26, title="MACD Slow EMA Period", minval=1)
macdSignalLength = input.int(9, title="MACD Signal Period", minval=1)
stopLossPerc = input.float(2.0, title="Stop-Loss (%)", minval=0.1, step=0.1)
takeProfitPerc = input.float(5.0, title="Take-Profit (%)", minval=0.1, step=0.1)

// === Indicator Calculations ===
// Exponential Moving Averages (EMA)
shortEMA = ta.ema(close, shortEmaLength)
longEMA = ta.ema(close, longEmaLength)

// MACD
[macdLine, signalLine, _] = ta.macd(close, macdFastLength, macdSlowLength, macdSignalLength)

// === Entry Conditions ===
// Buy signal: Short EMA crosses above Long EMA and MACD > Signal Line
longCondition = ta.crossover(shortEMA, longEMA) and (macdLine > signalLine)

// Sell signal: Short EMA crosses below Long EMA and MACD < Signal Line
shortCondition = ta.crossunder(shortEMA, longEMA) and (macdLine < signalLine)

// === Entry Signals with Stop-Loss and Take-Profit ===
if (longCondition)
    strategy.entry("Long", strategy.long)
    // Calculate Stop-Loss and Take-Profit
    stopPrice = close * (1 - stopLossPerc / 100)
    takePrice = close * (1 + takeProfitPerc / 100)
    strategy.exit("Long Exit", from_entry="Long", stop=stopPrice, limit=takePrice)

if (shortCondition)
    strategy.entry("Short", strategy.short)
    // Calculate Stop-Loss and Take-Profit
    stopPrice = close * (1 + stopLossPerc / 100)
    takePrice = close * (1 - takeProfitPerc / 100)
    strategy.exit("Short Exit", from_entry="Short", stop=stopPrice, limit=takePrice)

// === Exit Conditions ===
// Alternative exit conditions based on crossovers
exitLongCondition = ta.crossunder(shortEMA, longEMA) or (macdLine < signalLine)
exitShortCondition = ta.crossover(shortEMA, longEMA) or (macdLine > signalLine)

if (exitLongCondition)
    strategy.close("Long")

if (exitShortCondition)
    strategy.close("Short")

// === Indicator Plotting ===
// EMA
plot(shortEMA, color=color.blue, title="Short EMA")
plot(longEMA, color=color.red, title="Long EMA")

// MACD Indicator in separate window
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_dotted)
plot(macdLine - signalLine, color=(macdLine - signalLine) >= 0 ? color.green : color.red, title="MACD Histogram", style=plot.style_histogram)
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")

// === Signal Visualization ===
// Markers for Long and Short entries
plotshape(series=longCondition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="Long")
plotshape(series=shortCondition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="Short")

// Markers for Long and Short exits
plotshape(series=exitLongCondition, title="Long Exit", location=location.abovebar, color=color.red, style=shape.labeldown, text="Exit Long")
plotshape(series=exitShortCondition, title="Short Exit", location=location.belowbar, color=color.green, style=shape.labelup, text="Exit Short")