Stratégie de négociation MACD pour les moyennes mobiles croisées

Auteur:ChaoZhang est là., Date: 2024-02-22 16h25 et 13h
Les étiquettes:

img

Résumé

La stratégie de trading MACD est une stratégie de trading quantitative qui suit les situations de croisement des moyennes mobiles exponentielles (EMA) à court et à long terme et effectue des opérations d'achat et de vente lorsque des croisements dorés et morts se produisent.

La logique de la stratégie

Cette stratégie repose principalement sur l'EMA à 12 jours, l'EMA à 26 jours et l'indicateur MACD.

  1. Calculer l'EMA à 12 jours et l'EMA à 26 jours.
  2. Calculer le MACD (c'est-à-dire l'EMA à 12 jours moins l'EMA à 26 jours).
  3. Calculer l'EMA de 9 jours du MACD comme ligne de signal.
  4. Lorsque le MACD dépasse la ligne de signal, un signal d'achat est généré.
  5. Lorsque le MACD tombe en dessous de la ligne de signal, un signal de vente est généré.
  6. Effectuer l'opération d'achat ou de vente correspondante à la clôture du deuxième chandelier après la génération du signal.

En outre, cette stratégie fixe également certaines conditions de filtrage:

  1. L'heure de négociation est l'heure de non clôture de chaque journée de négociation.
  2. La valeur absolue de la différence entre le MACD et la ligne de signal doit être supérieure à 0,08.
  3. Seule une direction de position est autorisée à la fois.

Analyse des avantages

Cette stratégie combine l'indicateur de moyenne mobile croisée et l'indicateur MACD, qui peut capturer efficacement les points d'inflexion des tendances à court et moyen terme du marché.

  1. Les règles de stratégie sont simples et claires, faciles à comprendre et à mettre en œuvre.
  2. Les paramètres des indicateurs sont optimisés pour des performances relativement stables.
  3. Il prend en compte le suivi des tendances à moyen et à court terme et la sortie rapide du stop loss.
  4. La logique de négociation est rigoureuse afin d'éviter les transactions non valides.

Analyse des risques

Cette stratégie comporte également des risques:

  1. Risque de surajustement des données de rétro-test: l'application réelle peut nécessiter un ajustement des paramètres et des seuils.
  2. Risque élevé de décalage des coûts lié à des transactions fréquentes.
  3. Risque de perte résultant de l'échec de la sortie en temps opportun lorsque la tendance s'inverse.
  4. L'amplification du risque d'effet de levier inhérente au trading quantitatif lui-même.

Les méthodes d'atténuation correspondantes:

  1. Optimiser dynamiquement les paramètres et ajuster les seuils.
  2. Dénouer les règles commerciales de manière appropriée afin de réduire les échanges inutiles.
  3. Combinez plus d'indicateurs pour juger des signaux d'inversion.
  4. Contrôlez strictement les positions et le levier.

Directions d'optimisation

Les principaux aspects pour optimiser cette stratégie sont les suivants:

  1. Testez les combinaisons de moyennes mobiles à cycle plus long pour trouver les paramètres optimaux.
  2. Ajoutez des éléments fondamentaux tels que les performances financières, les événements importants, etc. comme filtres.
  3. Incorporer plus d'indicateurs pour déterminer le moment de l'inversion de tendance, tels que les bandes de Bollinger, KDJ, etc.
  4. Développer des mécanismes de stop loss. Couper activement les pertes lorsque les pertes atteignent des points de stop loss prédéfinis.
  5. Ajouter le taux de tirage pour contrôler le tirage maximal.

Résumé

La stratégie de trading MACD génère des signaux de trading grâce à un suivi de tendance simple et contrôle efficacement les risques avec des conditions de filtrage appropriées.


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

//@version=5
strategy("EMMA", max_bars_back = 200)

var up1 = #26A69A
var up2 = #B2DFDB
var down1 = #FF5252
var down2 = #FFCDD2
var confirmationLength = 2

var earliest = timestamp("20 Jan 2024 00:00 +0000")

// Regn u
shortEMA = ta.ema(close, 12)
longEMA = ta.ema(close, 26)
macd = shortEMA - longEMA
signal = ta.ema(macd, 9)
delta = macd - signal
absDelta = math.abs(delta)
previousDelta = delta[1]

signalCrossover = ta.crossover(macd, signal)
signalCrossunder = ta.crossunder(macd, signal)

harskiftetdag = hour(time[confirmationLength]) > hour(time)

enterLongSignal = signalCrossover[confirmationLength] and (macd > signal) and (absDelta >= 0.08)
exitLongSignal = signalCrossunder[confirmationLength] and (macd < signal)

enterShortSignal = signalCrossunder[confirmationLength] and (macd < signal) and (absDelta >= 0.08)
exitShortSignal = signalCrossover[confirmationLength] and (macd > signal)

// Så er det tid til at købe noe
qty = math.floor(strategy.equity / close)

if time >= earliest and not harskiftetdag
    if exitLongSignal 
        strategy.close("long")
    else if enterLongSignal
        strategy.close("short")
        strategy.entry("long", strategy.long, qty = qty)

    if exitShortSignal
        strategy.close("short")
    else if enterShortSignal
        strategy.close("long")
        strategy.entry("short", strategy.short, qty = qty)

// Så er det tid til at vise noe

plot(macd, color=color.blue)
plot(signal, color=color.orange)

// bgcolor(color = delta > 0.1 ? color.new(color.green, 90) : color.new(color.green, 100))
// bgcolor(color = signalCrossover ? color.purple : signalCrossunder ? color.aqua : color.new(color.green, 100))

histogramColor = delta > 0 ? (previousDelta < delta ? up1 : up2) : (previousDelta > delta ? down1 : down2)

plot(
     delta,
     style=plot.style_columns,
     color=histogramColor
     )

Plus de