
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 8⁄21 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).
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:
Calcul de l’indicateur:
shortEma = ta.ema(close, shortEmaLength)longEma = ta.ema(close, longEmaLength)Conditions de la transaction:
longCondition = ta.crossover(shortEma, longEma)shortCondition = ta.crossunder(shortEma, longEma)Gestion des risques:
longTakeProfit = close * (1 + takeProfitPerc / 100)longStopLoss = close * (1 - stopLossPerc / 100)shortTakeProfit = close * (1 - takeProfitPerc / 100)shortStopLoss = close * (1 + stopLossPerc / 100)Exécution de la transaction:
noOpenPosition = strategy.position_size == 0Cette 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.
En analysant le code en profondeur, cette stratégie présente les avantages suivants:
Une détection de tendances simple et efficaceLe croisement des EMAs 8⁄21 est une méthode de détection de tendances largement validée qui permet de capturer efficacement les changements de dynamique du marché.
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.
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.
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é.
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.
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.
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.
Malgré la bonne conception de la stratégie, les risques potentiels sont les suivants:
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.
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.
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é.
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.
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:
Après avoir analysé le code, voici quelques pistes d’optimisation possibles:
adxLength = input.int(14, title="ADX Length")
adxThreshold = input.int(25, title="ADX Threshold")
adxValue = ta.adx(high, low, close, adxLength)
isTrending = adxValue > adxThreshold
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
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é.
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.
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
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.
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 8⁄21 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é.
/*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)