
Cette stratégie est une stratégie de suivi de la tendance basée sur l’indicateur de la gamme moyenne de vraie fluctuation (Average True Range, ATR), utilisée pour déterminer la direction de la tendance du marché et donner un signal de négociation. Cette stratégie a à la fois une double fonction de jugement de tendance et de suivi de tendance et peut être utilisée dans des domaines tels que les indices boursiers à terme, les devises étrangères et les monnaies numériques.
La stratégie consiste à calculer l’indicateur ATR sur un certain cycle et à le comparer au prix pour déterminer si le prix est dans le canal de la tendance à la hausse. Plus précisément, la stratégie calcule d’abord l’indicateur ATR, puis construit la montée et la descente en fonction de la valeur ATR multipliée par le facteur.
La clé de cette stratégie est de construire un critère de jugement de la tendance pour dépasser la ligne de tendance. La ligne de tendance est basée sur la dynamique de l’indicateur ATR, capable de filtrer efficacement le bruit du marché et de déterminer la direction de la tendance principale.
Le plus grand avantage de cette stratégie réside dans sa capacité à combiner la détection de tendances et le suivi des tendances. Plus précisément, les principaux avantages sont:
La stratégie présente principalement les risques suivants:
Les mesures peuvent être optimisées en ajustant des paramètres tels que la période ATR, le coefficient de la ligne de tendance supérieure, ou en combinant d’autres indicateurs pour la vérification, ce qui réduit la probabilité d’erreurs. De plus, des points de stop-loss peuvent être définis pour contrôler les pertes individuelles.
Il y a encore de la place pour optimiser cette stratégie:
L’optimisation en profondeur devrait améliorer encore la stabilité, l’adaptabilité et l’espace de profit des stratégies.
Cette stratégie est globalement caractérisée par une stabilité, une fiabilité et un bon rendement. La construction d’une ligne de tendance supérieure pour juger des tendances principales, tout en donnant des signaux de négociation est le plus grand avantage de la stratégie.
/*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!")