
La stratégie est un système de trading stop-loss dynamique basé sur des indicateurs de la plage moyenne réelle (ATR) combinés à des signaux de filtrage uniformes EMA, principalement utilisés pour capturer les points de basculement des tendances du marché et effectuer des transactions. Le cœur de la stratégie est de calculer le stop-loss dynamique via les valeurs ATR, qui déclenche un signal de négociation lorsque le prix se trouve entre le croisement et le stop-loss. La stratégie est conçue pour être retracée sur une période donnée, particulièrement adaptée pour fonctionner sur des graphiques de glissement pacifiques de 15 minutes (Heikin Ashi), ce qui contribue à réduire le bruit et à identifier plus clairement les changements de tendance.
La logique centrale de cette stratégie est basée sur un système de suivi dynamique et d’arrêt des pertes construit sur des indicateurs ATR. Les principes de fonctionnement sont les suivants:
L’ensemble de la logique de négociation est similaire au système de suivi des tendances, mais la stratégie est adaptée à différents environnements de volatilité en ajustant dynamiquement les positions de stop loss via l’ATR.
En analysant en profondeur le code de la stratégie, j’ai résumé les avantages notables suivants:
Bien que cette stratégie présente de nombreux avantages, elle présente les risques suivants dans la pratique:
La solution est simple:
La stratégie peut être optimisée dans les directions suivantes, en fonction de l’analyse du code:
Filtrage du signal renforcé:
Ajustement des paramètres dynamiques:
Optimisation de la gestion des positions:
Augmentation de l’arrêt:
Amélioration du filtrage temporel:
Analyse de plusieurs périodes:
Ces orientations d’optimisation sont importantes car elles peuvent améliorer considérablement la stabilité de la stratégie. En particulier, l’augmentation du filtrage des signaux et l’ajustement des paramètres dynamiques peuvent réduire les faux signaux, tandis que l’amélioration de la gestion des positions et des mécanismes de freinage peuvent optimiser l’efficacité de l’utilisation des fonds et le rapport de retour sur risque.
ATR est un système de suivi des tendances qui permet de créer un mécanisme de stop-loss dynamique qui s’adapte à la volatilité du marché. Le plus grand avantage de cette stratégie réside dans son adaptabilité et sa simplicité, sa capacité à ajuster automatiquement la distance de stop-loss dans diverses conditions de marché, tout en opérant avec une logique claire et précise.
Cependant, cette stratégie peut être sous-performante dans un marché en crise et dépend trop d’un seul système d’indicateurs. Sa performance peut être considérablement améliorée par l’ajout de filtres de signaux supplémentaires, l’optimisation des mécanismes d’ajustement des paramètres, l’amélioration de la gestion des positions et l’ajout de stratégies de stop-loss.
Pour les traders, il s’agit d’un excellent cadre stratégique de base, qui peut être personnalisé et étendu en fonction du style de trading individuel et des caractéristiques du marché cible. Il est recommandé de faire un retour d’expérience complet sur les différentes combinaisons de paramètres et l’environnement du marché avant la mise en œuvre sur le terrain, et d’envisager la création d’un système de trading plus complet combiné à d’autres indicateurs techniques.
Cette stratégie est particulièrement adaptée aux marchés à tendance à moyen et long terme, offrant aux traders une solution de trading quantitatif relativement simple mais efficace en permettant une croissance continue des bénéfices tout en protégeant dynamiquement les gains réalisés.
/*backtest
start: 2024-05-13 00:00:00
end: 2025-05-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/
//@version=6
strategy("UT Bot Strategy Backtest with Date Range", overlay=true)
// === Inputs ===
keyValue = input.float(1.0, title="Key Value (Sensitivity)")
atrPeriod = input.int(10, title="ATR Period")
// === Calculations ===
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR
src = close
// === Trailing Stop Logic ===
var float xATRTrailingStop = na
xATRTrailingStop := src > nz(xATRTrailingStop[1]) and src[1] > nz(xATRTrailingStop[1]) ?
math.max(nz(xATRTrailingStop[1]), src - nLoss) :
src < nz(xATRTrailingStop[1]) and src[1] < nz(xATRTrailingStop[1]) ?
math.min(nz(xATRTrailingStop[1]), src + nLoss) :
src > nz(xATRTrailingStop[1]) ? src - nLoss : src + nLoss
// === Signal Logic ===
emaVal = ta.ema(src, 1)
above = ta.crossover(emaVal, xATRTrailingStop)
below = ta.crossover(xATRTrailingStop, emaVal)
buySignal = src > xATRTrailingStop and above
sellSignal = src < xATRTrailingStop and below
// === Strategy Execution ===
if buySignal
strategy.close("Short")
strategy.entry("Long", strategy.long)
if sellSignal
strategy.close("Long")
strategy.entry("Short", strategy.short)
// === Visuals ===
plotshape(buySignal, title="Buy", location=location.belowbar, color=color.green, style=shape.labelup, text="Buy")
plotshape(sellSignal, title="Sell", location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")
barcolor(buySignal ? color.green : sellSignal ? color.red : na)
// === Alerts ===
alertcondition(buySignal, title="UT Long", message="UT Long")
alertcondition(sellSignal, title="UT Short", message="UT Short")