Cette stratégie est développée sur la base de l'indicateur Supertrend. Elle combine l'action des prix et la direction du canal Supertrend pour juger des tendances du marché et générer des signaux de trading lorsque la direction du canal change.
Lorsque le prix franchit le canal de Supertrend, allez long; lorsque le prix franchit le canal inférieur de Supertrend, allez court.
Le canal de Supertrend se compose d'un rail supérieur et d'un rail inférieur. La zone à l'intérieur du canal est la zone de consolidation et la zone à l'extérieur est la zone de tendance. Il utilise la plage moyenne réelle multipliée par un facteur pour déterminer la largeur du canal.
Lorsque le prix franchit la barre supérieure depuis le bas, c'est un signal d'achat. Cela signifie qu'une nouvelle tendance haussière commence. Lorsque le prix franchit la barre inférieure depuis le haut, c'est un signal de vente. Cela signifie qu'une nouvelle tendance à la baisse commence.
La stratégie utilise l'indicateur Supertrend pour juger de la direction de la tendance principale. Lorsque la direction du canal change, c'est-à-dire lorsque le prix traverse les rails du canal, des signaux de trading sont générés. Ensuite, utilisez un stop loss de suivi de tendance pour verrouiller les bénéfices.
Il s'agit d'une stratégie de rupture relativement simple et intuitive.
Utilisez les canaux de Supertrend pour déterminer la direction de la tendance principale et éviter les transactions bruyantes.
Suivez la tendance, jugez les opportunités longues et courtes en fonction de la relation entre le prix et le canal.
Il dispose d'un mécanisme de stop loss clair pour contrôler efficacement les risques.
La méthode de stop loss est le suivi de la tendance stop loss, qui peut maximiser le verrouillage des bénéfices.
Cette stratégie comporte également certains risques, notamment:
Des paramètres incorrects du Supertrend peuvent entraîner de faux signaux.
Les signaux de rupture peuvent être des signaux d'inversion à court terme, entraînant des pertes.
La méthode d'arrêt des pertes consiste uniquement en un suivi de tendance, ce qui peut entraîner un arrêt prématuré des pertes.
Les mesures d'amélioration correspondantes comprennent:
Tester les données provenant de différents marchés et optimiser les paramètres.
Les signaux filtrés en combinaison avec d'autres indicateurs.
Jugez de la fiabilité des signaux de rupture combinés à la structure des prix.
Augmenter le stop loss en arrière-plan pour contrôler davantage les risques.
En général, cette stratégie est une stratégie de suivi de tendance relativement simple et intuitive. Elle utilise les canaux Supertrend pour déterminer clairement la direction de la tendance et génère des signaux lorsque le canal change de direction.
Comparé à d'autres indicateurs, le canal Supertrend a une meilleure tolérance aux fluctuations de prix. Mais il y a encore une marge de profit pour cette stratégie. Il peut être optimisé en termes de filtrage des signaux et de méthodes de stop loss pour améliorer davantage la stabilité.
/*backtest start: 2023-02-11 00:00:00 end: 2024-02-17 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend TEST Strategy", overlay = true, format=format.price, precision=2) Periods = input(title="ATR Period", type=input.integer, defval=4) src = input(hlc3, title="Source") Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=4.7) changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true) showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=true) highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true) tp=close sl=close 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 ) plotshape(buySignal and showsignals ? up : na, title="Лонг", text="Лонг", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white ) 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 ) plotshape(sellSignal and showsignals ? dn : na, title="Шорт", text="Шорт", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white ) 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 if (strategy.position_size > 0) tp:=tp[1] sl:=up strategy.exit("Long_TP/SL","Long",limit=tp, stop=sl) if (strategy.position_size < 0) tp:=tp[1] sl:=dn strategy.exit("Short_TP/SL","Short",limit=tp, stop=sl) if buySignal tp:=close+(close-up)*0.382 strategy.entry("Long", strategy.long, limit=tp, comment=tostring(round(tp))) if sellSignal tp:=close-(dn-close)*0.382 strategy.entry("Short", strategy.short, limit=tp, comment=tostring(round(tp)))