Stratégie de suivi de tendance basée sur l'ATR et l'indice de volatilité


Date de création: 2024-01-04 15:31:34 Dernière modification: 2024-01-04 15:31:34
Copier: 1 Nombre de clics: 590
1
Suivre
1621
Abonnés

Stratégie de suivi de tendance basée sur l’ATR et l’indice de volatilité

Aperçu

La stratégie utilise l’amplitude réelle moyenne (ATR) et l’indice de volatilité (CHOP) comme indicateurs techniques principaux pour l’identification et le suivi des tendances. Lorsque l’indice se déclenche, la direction de la tendance est utilisée comme signal d’entrée.

Principe de stratégie

  1. L’ATR est utilisé pour calculer la taille de la caisse, construire le canal de Ripple et déterminer la direction de la tendance des prix.
  2. L’indicateur CHOP est utilisé pour déterminer si le marché est propice à la négociation. Il est composé d’un prix le plus élevé, d’un prix le plus bas et d’un ATR. Il indique une fluctuation modérée du marché lorsqu’il se situe dans la plage 38.2-61.8. Sinon, il indique une fluctuation importante du marché et ne convient pas à la négociation.
  3. Lorsque l’indicateur CHOP se déplace vers le bas de la trajectoire supérieure de 61.8, les prix entrent dans une tendance à la baisse, et s’il y a également une avance de prix sur les EMA à court terme, ils font une pause; à l’inverse, lorsque le CHOP se déplace vers le haut de la trajectoire inférieure de 38.2 et que les prix des EMA à court terme remontent, ils font plus.
  4. Utilisez une stratégie d’arrêt-stop-stop pour arrêter ou arrêter la perte lorsque le prix rentre dans la zone 38.2-61.8 de la CHOP.

Analyse des forces stratégiques

Cette stratégie, combinant le jugement de la tendance et la maîtrise de la volatilité, permet de capturer les tendances des prix tout en contrôlant les risques, ce qui en fait une stratégie de suivi de tendance relativement stable.

  1. L’application du canal Ripple construit par ATR permet de suivre efficacement les tendances des prix.
  2. L’indicateur CHOP permet de juger la volatilité du marché et d’éviter les erreurs de trading lors de fortes fluctuations.
  3. En combinaison avec une évaluation rapide des tendances à court terme par l’EMA, il est possible d’éviter les inversions.
  4. La stratégie Stop Loss pour contrôler les pertes individuelles

Analyse des risques

Les principaux risques de cette stratégie sont les suivants:

  1. En cas de tremblement de terre, le canal ATR et l’indicateur CHOP peuvent produire un signal erroné. Les paramètres peuvent être ajustés de manière appropriée pour éliminer le mauvais signal.
  2. Une seule combinaison d’indicateurs techniques ne peut pas éviter complètement les pertes, et il faut une intervention humaine pour déterminer les grandes tendances.
  3. La position d’arrêt est trop lâche et les pertes individuelles peuvent être trop importantes. La marge d’arrêt doit être réduite de manière appropriée.

Orientation de l’optimisation de la stratégie

Cette stratégie peut être optimisée dans les domaines suivants:

  1. L’ajout d’autres indicateurs auxiliaires pour juger le signal, tels que la forme de la ligne K, le nombre de passages, etc., améliore la précision du signal.
  2. Optimiser les paramètres ATR et CHOP pour mieux capturer les fluctuations des prix.
  3. Réglez la position de l’arrêt de perte dynamique pour un espace d’arrêt plus grand et plus rapide.
  4. Après avoir jugé la tendance à grande échelle, relâchez la zone de stop-loss de manière appropriée pour obtenir plus de profit dans la tendance.

Résumer

La stratégie intègre des indicateurs techniques courants, est simple et pratique. Avec l’optimisation des paramètres, il est possible d’obtenir de bons résultats de suivi. Cependant, il faut toujours déterminer manuellement les grandes tendances et ne peut pas être entièrement automatisé. Il peut être utilisé comme outil de prise de décision auxiliaire ou comme référence pour d’autres stratégies.

Code source de la stratégie
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
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/
// © sharatgbhat

//@version=4
strategy("Weis Chop Strategy", overlay=false, default_qty_type = strategy.percent_of_equity, default_qty_value = 10,max_lines_count = 500, max_labels_count = 500)
maxIdLossPcnt = input(1, "Max Intraday Loss(%)", type=input.float)
// strategy.risk.max_intraday_loss(maxIdLossPcnt, strategy.percent_of_equity)

method = input(defval="ATR", options=["ATR", "Traditional", "Part of Price"], title="Renko Assignment Method")
methodvalue = input(defval=14.0, type=input.float, minval=0, title="Value")
pricesource = input(defval="Close", options=["Close", "Open / Close", "High / Low"], title="Price Source")
useClose = pricesource == "Close"
useOpenClose = pricesource == "Open / Close" or useClose
useTrueRange = input(defval="Auto", options=["Always", "Auto", "Never"], title="Use True Range instead of Volume")
isOscillating = input(defval=false, type=input.bool, title="Oscillating")
normalize = input(defval=false, type=input.bool, title="Normalize")
vol = useTrueRange == "Always" or useTrueRange == "Auto" and na(volume) ? tr : volume
op = useClose ? close : open
hi = useOpenClose ? close >= op ? close : op : high
lo = useOpenClose ? close <= op ? close : op : low

if method == "ATR"
    methodvalue := atr(round(methodvalue))
if method == "Part of Price"
    methodvalue := close / methodvalue

currclose = float(na)
prevclose = nz(currclose[1])
prevhigh = prevclose + methodvalue
prevlow = prevclose - methodvalue
currclose := hi > prevhigh ? hi : lo < prevlow ? lo : prevclose

direction = int(na)
direction := currclose > prevclose ? 1 : currclose < prevclose ? -1 : nz(direction[1])
directionHasChanged = change(direction) != 0
directionIsUp = direction > 0
directionIsDown = direction < 0

barcount = 1
barcount := not directionHasChanged and normalize ? barcount[1] + barcount : barcount
vol := not directionHasChanged ? vol[1] + vol : vol
res = barcount > 1 ? vol / barcount : vol

plot(isOscillating and directionIsDown ? -res : res, style=plot.style_columns, color=directionIsUp ? color.green : color.red, transp=75, linewidth=3, title="Wave Volume")

length = input(14, minval=1)
ci = 100 * log10(sum(atr(1), length) / (highest(length) - lowest(length))) / log10(length)
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
plot(ci, "CHOP", color=#2962FF, offset = offset)
band1 = hline(61.8, "Upper Band", color=#787B86, linestyle=hline.style_dashed)
band0 = hline(38.2, "Lower Band", color=#787B86, linestyle=hline.style_dashed)
fill(band1, band0, color = color.rgb(33, 150, 243, 90), title = "Background")

MomentumBull = close>ema(close,8)
MomentumBear = close<ema(close,8)
Tradecon = crossunder(ci,61.8)

if (MomentumBull and directionIsUp and Tradecon)
	strategy.entry("Buy", strategy.long)
if (MomentumBear and directionIsDown and Tradecon )
    strategy.entry("Sell", strategy.short)
    strategy.exit("exit","Buy",when=directionIsDown,qty_percent=100,profit=20,loss=10)
    strategy.exit("exit","Sell",when=directionIsUp,qty_percent=100,profit=20,loss=10)