Système de trading de momentum croisé à double moyenne mobile combiné à des stratégies automatisées de stop-profit et de stop-loss

EMA 指数移动平均线 动量交易 止盈止损 趋势反转 交叉信号 风险管理 自动化交易
Date de création: 2025-07-14 10:31:31 Dernière modification: 2025-07-14 10:31:31
Copier: 2 Nombre de clics: 205
2
Suivre
319
Abonnés

Système de trading de momentum croisé à double moyenne mobile combiné à des stratégies automatisées de stop-profit et de stop-loss Système de trading de momentum croisé à double moyenne mobile combiné à des stratégies automatisées de stop-profit et de stop-loss

Aperçu

Le système de négociation de dynamique de croisement bi-homogène est une stratégie de négociation basée sur la dynamique qui utilise le croisement des moyennes mobiles de l’indice 821 classique (EMA) pour identifier un renversement de tendance et générer un signal de négociation à plusieurs niveaux. La stratégie contient des paramètres d’arrêt et de perte intégrés qui permettent de gérer automatiquement les risques et de bloquer les bénéfices. La logique centrale de la stratégie consiste à générer des signaux multiples lorsque l’EMA à 8 cycles monte en passant par l’EMA à 21 cycles (EMA) et à générer des signaux négatifs lorsque l’EMA à 8 cycles descend en passant par l’EMA à 21 cycles (EMA).

Principe de stratégie

Le principe de base de la stratégie est de déterminer la direction des tendances du marché en fonction de la relation croisée entre deux moyennes mobiles indicielles de différentes périodes. La stratégie est principalement réalisée par les éléments clés suivants:

  1. Calcul de l’indicateur:

    • Le calcul de l’EMA à courte période (8 cycles) est le suivant:shortEma = ta.ema(close, shortEmaLength)
    • Le calcul de l’EMA à longue période (période 21) est le suivant:longEma = ta.ema(close, longEmaLength)
  2. Conditions de la transaction:

    • Il y a plusieurs conditions:longCondition = ta.crossover(shortEma, longEma)
    • Conditions de mise à l’écartshortCondition = ta.crossunder(shortEma, longEma)
  3. Gestion des risques:

    • Calcul dynamique du niveau de stop loss basé sur le pourcentage
    • Je suis en train d’écrire un article sur ce sujet.longTakeProfit = close * (1 + takeProfitPerc / 100)
    • Il y a aussi des problèmes de sécurité.longStopLoss = close * (1 - stopLossPerc / 100)
    • Je ne sais pas si je vais le faire.shortTakeProfit = close * (1 - takeProfitPerc / 100)
    • Le taux d’endettement est le même.shortStopLoss = close * (1 + stopLossPerc / 100)
  4. Exécution de la transaction:

    • La stratégie consiste à vérifier si une position ouverte est en cours:noOpenPosition = strategy.position_size == 0
    • Un nouveau signal de transaction n’est exécuté que si aucune position n’a été ouverte
    • Réglage des conditions d’arrêt de la perte d’entrée et sortie

Cette conception garantit que la stratégie saisit rapidement les opportunités en cas de changement de tendance, tout en protégeant la sécurité des fonds grâce à des paramètres de risque prédéfinis.

Avantages stratégiques

En analysant le code en profondeur, cette stratégie présente les avantages suivants:

  1. Une détection de tendances simple et efficaceLe croisement des EMAs 821 est une méthode de détection de tendances largement validée qui permet de capturer efficacement les changements de dynamique du marché.

  2. Une gestion complète des risquesLe système d’arrêt et de perte intégré protège automatiquement les fonds et bloque les bénéfices, réduisant considérablement le risque de transactions émotionnelles.

  3. Configuration flexible des paramètres: L’utilisateur peut ajuster la durée du cycle EMA, le pourcentage d’arrêt et de perte en fonction des différents marchés et des préférences de risque personnelles.

  4. Capacité de négociation bidirectionnelleLes stratégies permettent de faire à la fois plus et moins, et de trouver des opportunités dans différents environnements de marché.

  5. Prévenir le chevauchement des transactionsLa stratégie est conçue pour s’assurer qu’aucune transaction ne soit ouverte avant qu’une transaction ne soit complètement fermée, évitant ainsi les risques de sur-transaction et de dispersion des fonds.

  6. Une visualisation claire: permet aux traders de comprendre intuitivement l’état de fonctionnement de la stratégie en traçant les lignes EMA et les marqueurs de signaux de négociation.

  7. Une large portéeLa stratégie est compatible avec une variété de types de transactions et de périodes de temps, y compris les crypto-monnaies, les devises, les actions et les indices.

Risque stratégique

Malgré la bonne conception de la stratégie, les risques potentiels sont les suivants:

  1. Le marché horizontal est en baisseLes signaux croisés EMA peuvent apparaître fréquemment dans les marchés instables sans tendance claire, entraînant plusieurs arrêts de pertes.

  2. Limitation du pourcentage fixe de stop loss: La volatilité varie considérablement d’un marché à l’autre et d’une période à l’autre, et un stop loss à pourcentage fixe peut ne pas convenir à toutes les situations.

  3. Points de glissement et risques d’exécution: Dans les transactions en direct, il peut être impossible d’exécuter des ordres avec précision selon les prix générés par la stratégie, en particulier dans les marchés à faible liquidité.

  4. Une dépendance excessive à l’égard des données historiquesLes paramètres de la stratégie sont basés sur l’optimisation des données historiques, mais le comportement du marché pourrait changer dans le futur.

  5. Dépendance à un seul indicateur: La stratégie repose uniquement sur l’intersection EMA, sans l’utilisation d’indicateurs auxiliaires pour confirmer le signal, ce qui peut entraîner un faux signal.

Pour atténuer ces risques, il est recommandé de:

  • Une analyse approfondie des différentes conditions du marché
  • Paramètres de stop-loss ajustés en fonction de la volatilité d’un actif donné
  • Envisagez d’ajouter des filtres de trading pour réduire les faux signaux sur les marchés en crise
  • Utiliser une plus petite taille de position pour gérer le risque global

Orientation de l’optimisation de la stratégie

Après avoir analysé le code, voici quelques pistes d’optimisation possibles:

  1. Ajouter un filtre de tendanceIntroduction d’indicateurs additionnels (comme l’ADX) pour confirmer si le marché est en tendance et pour négocier uniquement dans des conditions de forte tendance.
   adxLength = input.int(14, title="ADX Length")
   adxThreshold = input.int(25, title="ADX Threshold")
   adxValue = ta.adx(high, low, close, adxLength)
   isTrending = adxValue > adxThreshold
  1. Arrêt et arrêt dynamiqueLe taux de stop loss est basé sur la volatilité du marché (comme l’ATR), et non sur un pourcentage fixe.
   atrPeriod = input.int(14, title="ATR Period")
   atrMultiplierSL = input.float(2.0, title="ATR Multiplier for Stop Loss")
   atrMultiplierTP = input.float(3.0, title="ATR Multiplier for Take Profit")
   atrValue = ta.atr(atrPeriod)
   dynamicStopLoss = atrValue * atrMultiplierSL
   dynamicTakeProfit = atrValue * atrMultiplierTP
  1. Ajout d’un filtre de temps de négociationLes échanges de devises et d’actions doivent être évités pendant les périodes de forte volatilité, à l’ouverture et à la fermeture du marché.

  2. Le blocage partiel des bénéfices: lorsque la transaction atteint un certain niveau de profit, le stop loss est déplacé au coût ou une partie du placement est verrouillée.

  3. Augmentation du nombre de confirmationsLes signaux de croisement EMA sont validés par un indicateur de volume de transactions et ne sont exécutés que lorsque le volume de transactions augmente.

   volumeCondition = volume > ta.sma(volume, 20) * 1.2
   validLongCondition = longCondition and volumeCondition
  1. Optimiser le temps d’entréeConsidérez le fait d’utiliser le redressement des prix vers la ligne moyenne comme un meilleur point d’entrée, plutôt que comme un simple signal de croisement.

Ces orientations d’optimisation permettent non seulement d’améliorer la solidité des stratégies, mais aussi de s’adapter à différents environnements de marché, d’améliorer la rentabilité globale et de réduire les risques.

Résumer

Le système de négociation de dynamique de croisement bi-homogène est une stratégie de négociation structurée et facile à comprendre et à mettre en œuvre. Il utilise les signaux de croisement 821 EMA pour capturer les changements de tendance du marché et gérer automatiquement le risque grâce à des paramètres de stop-loss prédéfinis. La stratégie s’applique à une variété de types de négociation et de périodes de temps, et fonctionne particulièrement bien dans les marchés où la tendance est évidente.

Les principaux avantages de la stratégie résident dans sa logique concise et son mécanisme de gestion des risques complet, ce qui rend le processus de négociation hautement automatisé et réduit l’interférence des facteurs émotionnels. En même temps, le risque de sur-transaction est évité en évitant la conception de transactions en surcharge.

Cependant, la stratégie peut être confrontée à des défis dans des marchés instables et nécessite une adaptation améliorée grâce à des mesures d’optimisation telles que l’ajout de filtres de tendance et de stop-loss dynamiques. En outre, la confirmation des volumes de transactions et l’optimisation du moment d’entrée en bourse sont également des moyens efficaces d’améliorer la performance de la stratégie.

Dans l’ensemble, il s’agit d’une stratégie qui équilibre la simplicité et l’efficacité, adaptée aux débutants comme point de départ pour l’introduction de l’automatisation des transactions, ou comme partie intégrante du portefeuille des traders expérimentés. Grâce à des ajustements de paramètres raisonnables et à une optimisation continue, la stratégie est capable de maintenir une performance stable dans diverses conditions de marché.

Code source de la stratégie
/*backtest
start: 2024-07-14 00:00:00
end: 2025-07-12 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":200000}]
*/

//@version=5
strategy("JWs Algo", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
shortEmaLength = input.int(8, title="Short EMA Length")
longEmaLength = input.int(21, title="Long EMA Length")
takeProfitPerc = input.float(2.0, title="Take Profit (%)", step=0.1)
stopLossPerc = input.float(1.0, title="Stop Loss (%)", step=0.1)

// === INDICATORS ===
shortEma = ta.ema(close, shortEmaLength)
longEma = ta.ema(close, longEmaLength)

// === CONDITIONS ===
longCondition = ta.crossover(shortEma, longEma)
shortCondition = ta.crossunder(shortEma, longEma)

// === PLOTTING ===
plot(shortEma, title="8 EMA", color=color.orange)
plot(longEma, title="21 EMA", color=color.blue)

// === STRATEGY EXECUTION ===
// Convert percentage inputs into price levels
longTakeProfit = close * (1 + takeProfitPerc / 100)
longStopLoss = close * (1 - stopLossPerc / 100)

shortTakeProfit = close * (1 - takeProfitPerc / 100)
shortStopLoss = close * (1 + stopLossPerc / 100)

// === CHECK FOR OPEN POSITION ===
noOpenPosition = strategy.position_size == 0

if (longCondition and noOpenPosition)
    strategy.entry("Long", strategy.long)
    strategy.exit("Long TP/SL", from_entry="Long", limit=longTakeProfit, stop=longStopLoss)

if (shortCondition and noOpenPosition)
    strategy.entry("Short", strategy.short)
    strategy.exit("Short TP/SL", from_entry="Short", limit=shortTakeProfit, stop=shortStopLoss)

// === SIGNAL MARKERS ===
plotshape(longCondition and noOpenPosition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(shortCondition and noOpenPosition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)