Stratégie de trading de croix dorée et de croix morte à moyenne mobile


Date de création: 2024-02-22 16:25:13 Dernière modification: 2024-02-22 16:25:13
Copier: 0 Nombre de clics: 364
1
Suivre
1182
Abonnés

Stratégie de trading de croix dorée et de croix morte à moyenne mobile

Aperçu

La stratégie de négociation de la fourchette mobile est une stratégie de négociation quantitative qui suit les croisements des moyennes mobiles à court et à long terme (EMA) et effectue des opérations d’achat et de vente lors de la fourchette et de la fourchette. Cette stratégie est combinée avec l’indicateur MACD pour juger des signaux de négociation.

Principe de stratégie

La stratégie repose principalement sur les indices 12 jours EMA, 26 jours EMA et MACD. La logique est la suivante:

  1. L’EMA du 12e et de la 26e journées sont calculées.
  2. Calculer le MACD (c’est-à-dire l’EMA du 12e jour moins l’EMA du 26e jour)
  3. Calculer l’EMA de 9 jours du MACD comme ligne de signal.
  4. Un signal d’achat est généré lorsque le MACD traverse le câble.
  5. Un signal de vente est généré lorsque le MACD passe sous la ligne de signal.
  6. Lors de la clôture de la deuxième ligne K générant le signal, effectuez l’opération d’achat ou de vente correspondante.

La stratégie impose également des conditions de filtrage:

  1. Les heures de négociation sont les heures de la journée qui ne sont pas à la clôture.
  2. Les valeurs absolues de la différence entre le MACD et la ligne de signal doivent être supérieures à 0,08.
  3. Il n’est permis de détenir des positions qu’en une seule fois.

Analyse des avantages

Cette stratégie, combinée à une croisée des moyennes mobiles et à l’indicateur MACD, permet de capturer efficacement les points de basculement des tendances du marché à court et à moyen terme. Les principaux avantages sont:

  1. Les règles de la stratégie sont simples, claires, faciles à comprendre et à mettre en œuvre.
  2. Les paramètres de l’indicateur ont été optimisés et la performance est relativement stable.
  3. Il est important de suivre les tendances à court terme et de mettre en place des arrêts de perte en temps opportun.
  4. La logique de l’opération est stricte, afin d’éviter les transactions invalides.

Analyse des risques

Cette stratégie comporte aussi des risques:

  1. Risque de correspondance des données de détection. Les paramètres et les seuils peuvent nécessiter des ajustements pour une utilisation réelle.
  2. Le risque d’un coût de dérapage trop élevé lié à la fréquence des transactions.
  3. La reprise de la tendance entraîne le risque de pertes en ne se retirant pas à temps.
  4. Le risque de levier de la négociation quantitative est lui-même accru.

Les méthodes d’atténuation correspondantes:

  1. Paramètres d’optimisation dynamique, ajustement des valeurs de dénivelé
  2. La libéralisation appropriée des règles de transaction et la réduction des transactions inutiles
  3. Les signaux d’inversion ont été évalués en combinant plusieurs indicateurs.
  4. Les positions et le levier sont strictement contrôlés.

Direction d’optimisation

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

  1. Tester des combinaisons de moyennes mobiles de plus longues périodes pour trouver les paramètres optimaux.
  2. Les facteurs fondamentaux tels que l’augmentation du rendement de l’entreprise, les événements majeurs, etc. sont utilisés comme filtres.
  3. Le changement de tendance a été déterminé par plusieurs indicateurs, tels que le Blink, le KDJ et d’autres.
  4. Développer des mécanismes de stop-loss. Arrêter activement les pertes lorsque les pertes atteignent un point de stop-loss prédéfini.
  5. Ajout de dangere ratio pour contrôler le retrait maximal.

Résumer

La stratégie de négociation en moyenne mobile combinée à la stratégie de négociation MACD, qui forme un signal de négociation grâce à un simple suivi de la tendance, est facile à mettre en œuvre et, combinée à un contrôle du risque de conditions de filtrage appropriées, est une stratégie de négociation quantitative efficace. La stratégie peut être améliorée par l’optimisation des paramètres, l’augmentation du mécanisme de stop-loss et l’ajout d’autres indicateurs auxiliaires.

Code source de la stratégie
/*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
     )