Stratégie de stop loss True Range suivant la tendance moyenne

ATR TS
Date de création: 2024-05-24 18:12:01 Dernière modification: 2024-05-24 18:12:01
Copier: 8 Nombre de clics: 521
1
Suivre
1617
Abonnés

Stratégie de stop loss True Range suivant la tendance moyenne

Aperçu

La stratégie utilise l’amplitude moyenne réelle (ATR) comme base pour suivre les arrêts (TS) pour réaliser le but de suivre la tendance en ajustant dynamiquement la position d’arrêt. Lorsque le prix se déplace dans la direction favorable, la position d’arrêt s’ajuste également, bloquant ainsi les bénéfices réalisés; lorsque le prix se déplace dans la direction défavorable, la position d’arrêt reste inchangée et, une fois que le prix touche la position d’arrêt, la position d’arrêt est levée. La clé de la stratégie réside dans l’ajustement dynamique de la position d’arrêt, qui protège les bénéfices réalisés et permet aux bénéfices de se développer avec la tendance.

Principe de stratégie

  1. Le calcul de l’ATR, qui sert de base pour le suivi des stop-loss. L’ATR reflète la volatilité du marché et sert à mesurer l’ampleur moyenne des variations de prix.
  2. La distance d’arrêt nLoss est calculée à partir des paramètres ATR et KeyValue. KeyValue est le multiple de la valeur personnalisée par l’utilisateur, nLoss est le produit de KeyValue et ATR, ce qui signifie que la distance d’arrêt est plusieurs fois celle d’ATR.
  3. Calculer la position d’arrêt de suivi dynamique xATRTrailingStop. Lorsque vous avez des positions multiples, définissez-les comme “la valeur la plus élevée de la ligne K précédente et la valeur la plus faible de la ligne K précédente et la valeur la plus faible de la ligne K précédente”.
  4. Générer un signal d’ouverture de position. Faire plus lorsque le prix de clôture est supérieur à xATRTrailingStop; Faire vide lorsque le prix de clôture est inférieur à xATRTrailingStop.

Analyse des avantages

  1. La position stop-loss s’ajuste dynamiquement à la fluctuation des prix, permettant à la fois de bloquer les bénéfices et de les augmenter au fur et à mesure que la tendance se poursuit.
  2. La position stop est basée sur le calcul de l’ATR et reflète objectivement la volatilité du marché. Elle est plus flexible et plus efficace que la position stop fixe.
  3. L’augmentation de l’ATR par le paramètre KeyValue permet de définir une distance d’arrêt appropriée en fonction de ses préférences en matière de risque. Une plus grande KeyValue entraîne un espace d’arrêt plus large et une fréquence d’arrêt moindre.

Analyse des risques

  1. Les stratégies tendancielles ne fonctionnent pas bien dans les marchés instables, et les pertes sont fréquentes lorsque la tendance unilatérale n’est pas évidente, ce qui entraîne une fuite rapide de fonds.
  2. L’heure d’entrée dépend du signal de croisement entre le prix de clôture et la ligne de stop dynamique, qui peut entraîner une petite perte consécutive en cas de choc.
  3. Les stratégies de stop-loss ne peuvent pas éviter le saut de l’écart provoqué par les gains massifs ou les gains de marge. La vitesse d’ajustement de la position de stop-loss ne peut pas suivre la vitesse de variation des prix, ce qui entraîne des pertes réelles beaucoup plus importantes que les pertes contrôlables attendues.

Direction d’optimisation

  1. Il est possible d’ajouter des indicateurs de jugement de tendance, tels que le système de ligne moyenne, l’indicateur de dynamique, etc., sur la base de la stratégie, et d’entrer dans le jeu lorsque la tendance est claire, afin d’éviter de négocier fréquemment dans les marchés instables.
  2. Il est possible d’envisager l’introduction de stratégies de stop-loss, telles que le calcul de la position en fonction de la formule de Kelly, la mise en place d’un stop-loss à plusieurs reprises pour un gain fixe, etc., afin de réduire la possibilité d’un retour potentiel des bénéfices à la fin d’une tendance.
  3. Pour les lacunes de saut en hauteur, il est possible de définir une limite de stop-loss maximale, telle qu’un montant fixe ou un pourcentage fixe, qui, une fois atteinte, est immédiatement stoppée, quel que soit le prix de stop-loss dynamique.

Résumer

La stratégie ATR permet de suivre les positions de stop en fonction de l’amplitude des fluctuations des prix, ce qui peut être très efficace dans le cas d’une tendance. Cependant, la stratégie présente également des risques tels que l’incapacité à faire face aux marchés instables, aux arrêts trop fréquents et aux lacunes de saut difficiles à éviter.

Code source de la stratégie
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Long TAP", overlay=true)

// Constants
keyValueDefault = 3.0
keyValueStep = 0.5
atrPeriodDefault = 10

// Inputs
keyValue = input.float(keyValueDefault, title="Key Value")
atrPeriod = input.int(atrPeriodDefault, title="ATR Period")

// Calculations
xATR = ta.atr(atrPeriod)
nLoss = keyValue * xATR

// Trailing Stop Calculation
var float xATRTrailingStop = 0.0
xATRTrailingStop := ta.highest(math.max(nz(xATRTrailingStop[1], 0), close - nLoss), 1)
xATRTrailingStop := ta.lowest(math.min(nz(xATRTrailingStop, 0), close + nLoss), 1)

// Position Calculation
var int pos = 0
pos := nz(pos[1], 0)
if (close[1] < nz(xATRTrailingStop, 0) and close > nz(xATRTrailingStop, 0))
    pos := 1
else if (close[1] > nz(xATRTrailingStop, 0) and close < nz(xATRTrailingStop, 0))
    pos := -1

// Plotting Trailing Stop
var color xcolor = na
if (pos == -1)
    xcolor := color.red
else if (pos == 1)
    xcolor := color.green
plot(xATRTrailingStop, color=xcolor, title="Trailing Stop")

// Buy/Sell Signals
buySignal = ta.crossover(close, xATRTrailingStop)
sellSignal = ta.crossunder(close, xATRTrailingStop)

// Strategy
if (buySignal)
    strategy.entry("Long", strategy.long)
    label.new(bar_index, xATRTrailingStop, text="Buy Signal", color=color.green, style=label.style_label_up, yloc=yloc.belowbar)
if (sellSignal)
    strategy.entry("Short", strategy.short)
    label.new(bar_index, xATRTrailingStop, text="Sell Signal", color=color.red, style=label.style_label_down, yloc=yloc.abovebar)

// Alerts
alertcondition(buySignal, title='UT BOT Buy', message='UT BOT Buy')
alertcondition(sellSignal, title='UT BOT Sell', message='UT BOT Sell')