Tendance ATR à la suite de la stratégie

Auteur:ChaoZhang est là., Date: 2023-09-28 11:32:09 Je vous en prie.
Les étiquettes:

Résumé

Cette stratégie utilise l'indicateur Average True Range (ATR) pour déterminer la direction de la tendance.

La logique de la stratégie

La stratégie calcule d'abord la moyenne mobile simple (sma) et la moyenne mobile exponentielle (ema) du prix. puis elle calcule l'indicateur ATR, qui est la plage moyenne de mouvement des prix au cours des N derniers jours.

La stratégie utilise la ligne moyenne de l'EMA, la bande supérieure (coefficient d'EMA + ATR *) et la bande inférieure (coefficient d'EMA - ATR *) pour déterminer la direction de la tendance.

La logique principale du code:

  1. Calcul des moyennes de prix SMA et EMA
  2. Calcul de la plage moyenne ATR
  3. Calcul des bandes supérieures et inférieures
  4. Déterminer le signal long: les écarts de prix au-dessus de la bande supérieure
  5. Déterminer le signal court: les prix dépassent la fourchette inférieure
  6. Définir un stop loss pour fermer les positions: les bris de prix en dessous de la fourchette supérieure pour fermer les positions longues; les bris de prix en dessous de la fourchette inférieure pour fermer les positions courtes.

En ajustant dynamiquement les positions en fonction de l'ATR, il peut suivre efficacement les tendances.

Les avantages

  1. L'utilisation de l'ATR pour déterminer la direction de la tendance peut capturer efficacement les tendances des prix
  2. Les risques peuvent être raisonnablement maîtrisés par un stop loss basé sur des moyennes mobiles.
  3. Logie stratégique simple et claire, facile à comprendre et à mettre en œuvre
  4. Paramètres configurables flexibles, adaptés à différents environnements de marché

Les risques

  1. L'indicateur ATR échouera sur les marchés latéraux très volatils
  2. Des paramètres mal réglés peuvent entraîner des transactions trop fréquentes
  3. Les retours brusques peuvent rendre le stop loss invalide.
  4. Des coûts de négociation plus élevés nécessitent un ajustement des paramètres de suivi

Les solutions:

  1. Arrêter la stratégie ou utiliser d'autres indicateurs à forte volatilité
  2. Optimiser les paramètres pour réduire la fréquence des transactions
  3. Augmentation du taux de stop loss pour les événements majeurs de données
  4. Ajuster la plage ATR en fonction de produits spécifiques

Directions d'amélioration

  1. Combiner avec les indicateurs de tendance pour optimiser les paramètres, par exemple ajouter le MACD pour la tendance
  2. Ajouter des filtres tels que les bandes de Bollinger pour l'entrée
  3. Optimiser les méthodes d'arrêt de perte, comme les indicateurs d'arrêt ou de sortie
  4. Optimiser la plage ATR en fonction de produits spécifiques
  5. Ajouter une gestion des risques comme la dimensionnement des positions fractionnaires fixes
  6. Optimiser dynamiquement les paramètres en utilisant l'apprentissage automatique

Résumé

La stratégie de suivi de tendance ATR a une logique claire pour déterminer la direction de la tendance en utilisant ATR. C'est un système de suivi de tendance typique. Les avantages sont la simplicité et la capacité de suivre les tendances. Mais elle comporte également des risques qui nécessitent des optimisations pour différents marchés. Dans l'ensemble, elle a un grand potentiel et une grande valeur en tant qu'outil de trading quantitatif.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Investoz

//@version=4
strategy("ATR Strategy FOREX", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

len = input(26, type=input.integer, minval=1, title="Length")
mul = input(2.618, type=input.float, minval=0, title="Length")
mullow = input(2.386, type=input.float, minval=0, title="Length")

price = sma(close, 1)
average = ema(close, len)
diff = atr(len) * mul
difflow = atr(len) * mullow

bull_level = average + diff
bear_level = average - difflow
bull_cross = crossunder(price, bear_level)
bear_cross = crossunder(bull_level, price)

FromMonth = input(defval = 8, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 18, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2008, title = "From Year", minval = 2008)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 2020, title = "To Year", minval = 2019)

start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)       
startTimeOk()  => true

if (startTimeOk()) and ema(close,1) > ema(close,528)
    strategy.entry("KOP", strategy.long, when=bull_cross) 
    strategy.close("KOP", when=bear_cross)  
if (startTimeOk()) and ema(close,1) < ema(close,528)
   strategy.entry("SALJ", strategy.short, when=bear_cross) 
   strategy.close("SALJ", when=bull_cross)

plot(price, title="price", color=color.black, transp=50, linewidth=2)
a0 = plot(average, title="average", color=color.red, transp=50, linewidth=1)
a1 = plot(bull_level, title="bull", color=color.green, transp=50, linewidth=1)
a2 = plot(bear_level, title="bear", color=color.red, transp=50, linewidth=1)
fill(a0, a1, color=color.green, transp=97)
fill(a0, a2, color=color.red, transp=97)

Plus de