Stratégie dynamique d'arrêt de traîne basée sur l'ATR et la SMA

Auteur:ChaoZhang est là., Date: 2024-03-11 11:55:21 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie combine l'indicateur ATR (Average True Range) et l'indicateur SMA (Simple Moving Average) pour mettre en œuvre un système de trading de stop de trail dynamique. Lorsque le prix est au-dessus de la SMA, il ouvre une position longue et définit un stop loss dynamique basé sur ATR. Le prix du stop loss continuera d'augmenter à mesure que le prix augmente. Lorsque le prix tombe en dessous du prix du stop loss dynamique, la position est fermée. L'idée principale de cette stratégie est de verrouiller les profits et de réduire les retraits sur les marchés de tendance en utilisant un stop loss dynamique.

Principes de stratégie

  1. Lorsque le prix de clôture est supérieur à la SMA de 50 jours, ouvrez une position longue.
  2. Calculer l'indicateur ATR avec une période de 10, multiplié par une valeur clé (par défaut 3) pour obtenir la plage de stop loss nLoss.
  3. Calculer le prix dynamique de stop loss xATRTrailingStop, avec une valeur initiale de 0.
    • Lorsque le prix de clôture et le prix de clôture précédent sont tous deux supérieurs au prix de stop loss précédent, le nouveau prix de stop loss est le prix supérieur du prix de stop loss précédent et (prix de clôture - nLoss).
    • Lorsque le prix de clôture et le prix de clôture précédent sont tous deux inférieurs au prix de stop loss précédent, le nouveau prix de stop loss est le prix le plus faible du prix de stop loss précédent et (prix de clôture + nLoss).
    • Dans d'autres cas, le nouveau prix d'arrêt des pertes est (prix de clôture - nLoss) ou (prix de clôture + nLoss).
  4. Lorsque le prix de clôture tombe en dessous du prix de stop loss dynamique, fermer la position.
  5. Les points d'arrêt de perte sont marqués de différentes couleurs: vert pour le stop-loss long, rouge pour le stop-loss court et bleu pour les autres cas.

Analyse des avantages

  1. Le mécanisme de stop loss dynamique peut protéger les bénéfices et réduire le risque de retrait sur les marchés de tendance.
  2. L'intervalle de stop loss est calculé sur la base de l'indicateur ATR. ATR peut bien refléter la taille de la volatilité du marché, de sorte que la distance de stop loss s'ajustera automatiquement en fonction de la volatilité des conditions de marché récentes.
  3. L'ouverture de positions longues au-dessus de la SMA peut intervenir dans les premiers stades de la tendance et viser une plus grande marge de profit.
  4. Permet aux utilisateurs de définir la période ATR et les paramètres de valeurs clés, ce qui leur permet d'ajuster de manière flexible les paramètres de stratégie afin de les adapter aux caractéristiques des différentes variétés et cycles.

Analyse des risques

  1. Dans les marchés incertains ou en oscillation, cette stratégie peut entraîner une ouverture et une fermeture fréquentes de positions, ce qui entraîne une augmentation des coûts de transaction et une réduction des bénéfices.
  2. Cette stratégie n'a qu'une logique longue et ne peut pas profiter d'une tendance à la baisse, face au risque d'un marché unilatéral.
  3. Le point de stop loss est basé sur le calcul ATR. Lorsque le marché fluctue violemment, l'espace de stop loss peut être trop grand, ce qui entraîne un risque accru.
  4. Par exemple, si la période ATR est trop courte, elle peut entraîner un stop loss trop sensible et des déclencheurs fréquents; si elle est trop grande, elle peut ne pas arrêter la perte à temps et amplifier les pertes.

Direction de l'optimisation

  1. Vous pouvez ouvrir une position courte lorsque le prix tombe en dessous de la SMA, et également utiliser une logique de stop loss dynamique.
  2. Introduire une gestion des positions longues et courtes pour ajuster la taille des positions en fonction de la force de la tendance; augmenter les positions lorsque la tendance est forte pour augmenter les rendements; diminuer les positions lorsque la tendance est faible pour contrôler le risque.
  3. Optimisez la logique de stop loss et définissez une plage de stop loss maximale pour éviter des pertes excessives dans des situations extrêmes.
  4. Optimiser les paramètres en traversant différentes combinaisons de paramètres pour trouver les meilleurs paramètres.
  5. Il convient d'envisager d'ajouter davantage de conditions de filtrage, telles que des indicateurs de volume de négociation et de volatilité, afin de mieux évaluer les tendances et les risques et d'améliorer la fiabilité des signaux.

Résumé

Cette stratégie implémente un système de trading de stop-loss dynamique basé sur les indicateurs ATR et SMA, qui peut ajuster automatiquement la position de stop-loss sur les marchés de tendance pour protéger les bénéfices et contrôler les risques. La logique de la stratégie est claire et présente des avantages évidents, mais elle présente également certaines limitations et points de risque. Grâce à une optimisation et à une amélioration raisonnables, telles que l'ajout d'une logique courte, l'optimisation de la gestion des positions, la définition d'un stop-loss maximum, etc., la robustesse et la rentabilité de la stratégie peuvent être encore améliorées. Dans les applications pratiques, il est nécessaire d'ajuster de manière flexible les paramètres de la stratégie en fonction de différentes variétés et cycles de trading, et de contrôler strictement les risques. En général, cette stratégie fournit une idée réalisable pour le trading quantitatif et mérite une exploration et une optimisation supplémentaires.


/*backtest
start: 2023-03-05 00:00:00
end: 2024-03-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trailingstop", overlay=true)

if close > sma(close, 50)
    strategy.entry("long", strategy.long)

// Trailing stop loss for long positions
Trailperc = 0.20
price_stop_long = 0.0

if (strategy.position_size > 0)
    stopValue = close * (1 - Trailperc)
    price_stop_long := max(stopValue, price_stop_long[1])
else
    price_stop_long := 0

if (strategy.position_size > 0)
    strategy.exit(id="stoploss_long", stop=price_stop_long)

// Trailing stop loss for short positions
Trailperc_short = 0.20
price_stop_short = 0.0

if (strategy.position_size < 0)
    stopValue_short = close * (1 + Trailperc_short)
    price_stop_short := min(stopValue_short, price_stop_short[1])
else
    price_stop_short := 0

if (strategy.position_size < 0)
    strategy.exit(id="stoploss_short", stop=price_stop_short)

// ATR Trailing Stop for visualization
keyvalue = input(3, title="Key Value. 'This changes the sensitivity'", step=0.5)
atrperiod = input(10, title="ATR Period")
xATR = atr(atrperiod)
nLoss = keyvalue * xATR

xATRTrailingStop = 0.0
xATRTrailingStop := iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), max(nz(xATRTrailingStop[1]), close - nLoss),
   iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), min(nz(xATRTrailingStop[1]), close + nLoss),
   iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))

pos = 0  
pos :=   iff(close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0), 1,
   iff(close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0), -1, nz(pos[1], 0)))

xcolor = pos == -1 ? color.red: pos == 1 ? color.green : color.blue

plot(xATRTrailingStop, color = xcolor, title = "Trailing Stop")

Plus de