Stratégie de suivi des tendances basée sur les super tendances

Auteur:ChaoZhang est là., Date: 2023-12-08 17h07:53 Je vous en prie.
Les étiquettes:

img

Résumé

Cette stratégie est construite sur la base de l'indicateur Average True Range (ATR) pour construire une ligne SuperTrend pour juger de la direction de la tendance du marché et générer des signaux de trading.

La logique de la stratégie

La stratégie calcule l'ATR sur une certaine période et la compare au prix pour déterminer si le prix est dans un canal de tendance haussière. Plus précisément, elle calcule d'abord l'ATR, puis utilise la valeur de l'ATR multipliée par un facteur pour tracer les bandes supérieure et inférieure. Lorsque le prix est supérieur à la bande supérieure, une tendance haussière est identifiée. Lorsque le prix est inférieur à la bande inférieure, une tendance baissière est identifiée. Dans une tendance haussière, si le prix change de tendance haussière à tendance haussière, un signal d'achat est généré. Dans une tendance baissière, si le prix change de tendance haussière à tendance baissière, un signal de vente est déclenché.

La clé réside dans la construction de la référence de jugement de tendance - la ligne SuperTrend. La ligne SuperTrend est basée sur l'ATR en évolution dynamique, qui peut filtrer efficacement le bruit du marché et déterminer la direction de la tendance principale.

Les avantages

Le plus grand avantage de cette stratégie réside dans la combinaison des capacités d'identification et de suivi des tendances:

  1. La gamme SuperTrend basée sur ATR peut identifier efficacement les tendances du marché et filtrer le bruit.
  2. L'effet de retard de la ligne SuperTrend aide à réduire les signaux incorrects.
  3. Il peut donner à la fois un jugement de tendance et des signaux de trading pour un fonctionnement facile.
  4. Les paramètres peuvent être optimisés pour s'adapter à des marchés plus divers.
  5. Les indicateurs visuels permettent des jugements de tendance intuitifs.

Analyse des risques

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

  1. Un réglage incorrect des paramètres ATR peut entraîner une trop grande sensibilité ou un retard des lignes SuperTrend.
  2. Il ne peut pas éviter complètement l'impact du bruit, qui peut occasionnellement déclencher des signaux incorrects.
  3. La précision diminue lors de fortes fluctuations du marché.
  4. Il ne peut pas prédire les points d'inversion de tendance, mais peut seulement suivre les tendances existantes.

Les solutions possibles incluent l'optimisation de paramètres tels que la période ATR et le facteur SuperTrend, la combinaison avec d'autres indicateurs pour la vérification et la réduction des probabilités de signaux incorrects.

Directions d'optimisation

Des possibilités d'optimisation supplémentaires existent dans des domaines tels que:

  1. Adoption de l'apprentissage automatique pour une optimisation automatique des paramètres.
  2. Ajout d'indicateurs comme des moyennes mobiles exponentielles pour vérification.
  3. Mettre en place des stratégies de prise de profit/stop loss pour une gestion raffinée de l'argent.
  4. Combiner des indicateurs de sentiment et des analyses d'actualités pour prédire les éventuels retours de tendance.
  5. Utiliser l'apprentissage en profondeur pour analyser plus de données historiques et améliorer la précision.

L'optimisation approfondie promet d'améliorer encore la stabilité, l'adaptabilité et la rentabilité de la stratégie.

Conclusion

La stratégie démontre une grande stabilité, fiabilité et rentabilité dans l'ensemble. La construction de la ligne SuperTrend pour les principaux jugements de tendance et les signaux de trading est son plus grand point fort. Mais un certain degré d'effet de retard et de risques d'erreur de jugement existe.


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

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

Periods = input(10, title="ATR Period")
src = input(hl2, title="Source")
Multiplier = input(3.0, title="ATR Multiplier", step=0.1)
changeATR = input(true, title="Change ATR Calculation Method?")
showsignals = input(true, title="Show Buy/Sell Signals?")
highlighting = input(true, title="Highlighter On/Off?")

atr2 = sma(tr, Periods)
atr = changeATR ? atr(Periods) : atr2

up = src - (Multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up

dn = src + (Multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn

trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend

upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)

dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)

mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)

longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white

fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)

strategy.entry("Buy", strategy.long, when=buySignal)
strategy.entry("Sell", strategy.short, when=sellSignal)

alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!")
alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")


Plus de