Tendance ATR à la suite de la stratégie

Auteur:ChaoZhang est là., Date: 21 septembre 2023 à 15h13h47
Les étiquettes:

Résumé

Cette stratégie utilise la plage moyenne réelle (ATR) pour capturer les tendances des prix et définit des arrêts basés sur l'ATR pour suivre la tendance.

Comment fonctionne- t- il?

  1. Calculer la valeur ATR.

  2. Déterminez le niveau de stop-loss en fonction de l'ATR.

  3. Entrez long/short lorsque le prix dépasse le niveau stop.

  4. Gardez les profits en réglant les arrêts dynamiquement.

Les avantages

  • ATR ajuste automatiquement les arrêts sans intervention manuelle
  • Une logique simple et intuitive, facile à mettre en œuvre
  • Aide à éviter d'être pris au piège, stop loss en temps opportun
  • Les bénéfices tirés des tendances du cyclisme
  • Fréquence de négociation contrôlée par des paramètres ATR

Les risques

  • Des paramètres ATR médiocres peuvent entraîner des arrêts trop lâches ou serrés
  • Impossible d'identifier efficacement la fin de tendance
  • Il y a un certain retard.
  • Les revers peuvent réduire les bénéfices

Directions d'optimisation

  • Optimiser le paramètre de la période ATR
  • Testez différents multiples ATR pour la distance d'arrêt
  • Ajouter des filtres pour détecter l' inversion de tendance
  • Explorez l'apprentissage automatique pour l'optimisation des paramètres
  • Considérer des mécanismes supplémentaires de prise de profit

Conclusion

La stratégie capte efficacement les tendances en utilisant l'ATR et bloque les bénéfices avec des arrêts dynamiques. Les paramètres de réglage fin peuvent améliorer les performances. Mais le décalage ATR ne peut pas être complètement éliminé.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

strategy(title="ATR Strategy", overlay = true,  commission_type=strategy.commission.percent,commission_value=0.075)
//credits to HPotter for the orginal code
nATRPeriod = input(5)
nATRMultip = input(3.5)
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = iff(close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0), math.max(nz(xATRTrailingStop[1]), close - nLoss),
                    iff(close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0), math.min(nz(xATRTrailingStop[1]), close + nLoss), 
                        iff(close > nz(xATRTrailingStop[1], 0), close - nLoss, close + nLoss)))
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))) 
color = pos == -1 ? color.red: pos == 1 ? color.green : color.blue 
plot(xATRTrailingStop, color=color, title="ATR Trailing Stop")

barbuy = close > xATRTrailingStop 
barsell = close < xATRTrailingStop 

strategy.entry("Long", strategy.long, when = barbuy) 
strategy.entry("Short", strategy.short, when = barsell) 

barcolor(barbuy? color.green:color.red)



Plus de