
La stratégie de trading Supertrend est une stratégie de suivi de tendance basée sur la moyenne de la gamme réelle (ATR) et la moyenne mobile (MA). Elle combine les avantages du suivi de la tendance et des transactions de rupture afin d’identifier la direction de la tendance à moyen terme et de générer des signaux de trading en fonction des changements de tendance.
L’idée principale de cette stratégie est que lorsque le prix franchit le canal de la super-tendance, il indique qu’il y a un renversement de tendance, ce qui entraîne des achats ou des ventes. Il définit simultanément des niveaux de stop-loss et de stop-loss pour verrouiller les gains et contrôler les risques.
Le processus de calcul de la stratégie de super-tendance se compose des étapes suivantes:
L’avantage de cette stratégie réside dans le fait qu’elle combine à la fois le suivi d’une tendance et la négociation d’un renversement de tendance. Elle permet à la fois de déterminer la direction de la grande tendance et de saisir les occasions de renversement en temps opportun.
Les stratégies de super-tendance présentent les avantages suivants:
1. Suivre les tendances à moyen terme
Le canal de super-tendance est basé sur le calcul de l’ATR et permet de refléter efficacement la portée des fluctuations des prix à moyen terme. Il est plus capable de suivre les tendances à moyen terme que la moyenne mobile ordinaire.
2. Capturer le renversement à temps
En cas de rupture du canal, un signal de transaction rapide est émis, permettant de capturer en temps opportun le renversement de la tendance majeure. Cela garantit un ajustement approprié de la position et une réduction des détentions à plus long terme.
3. Un mécanisme anti-collision
La stratégie impose un stop loss et un stop loss simultanément, ce qui réduit considérablement le risque d’un stop loss généralisé, ce qui permet de maîtriser la tendance.
4. La mise en œuvre est simple
La stratégie utilise principalement la moyenne et l’indicateur ATR, ce qui rend la mise en œuvre plus simple et plus facile à maîtriser. Cela réduit la difficulté des opérations sur disque dur.
5. Une utilisation efficace des fonds
Les stratégies de super tendances suivent les tendances à moyen terme et maîtrisent les points de glissement individuels, ce qui entraîne une meilleure efficacité globale de l’utilisation des fonds.
Il y a aussi des risques potentiels avec les stratégies de super-trends:
1. Coûts d’opportunité plus élevés des tendances choquantes
Les stratégies de super-trends se concentrent sur le suivi des tendances à moyen et à long terme, avec des coûts plus élevés et des occasions de faillite potentiellement manquées dans les marchés en crise.
2. L’effet de l’optimisation des paramètres
Le choix du cycle ATR et du multiplicateur ATR a un impact significatif sur l’efficacité de la stratégie de négociation. Si les paramètres sont mal configurés, l’effet du signal de négociation est décompté.
3. Il y a un certain retard
Le calcul des canaux de super-tendance présente un certain retard, ce qui peut entraîner un retard dans la production de signaux. C’est le principal problème à résoudre dans cette stratégie.
4. Un contrôle strict des pertes
Si la position d’arrêt est trop grande ou si le contrôle du vent est imparfait, cela peut entraîner des pertes plus importantes dans des situations extrêmes. Il faut donc appliquer strictement la stratégie d’arrêt de perte pour obtenir des gains stables.
La stratégie de super-tendance a également de la place pour d’autres optimisations, notamment:
1. La combinaison de plusieurs cycles ATR
On peut combiner plusieurs cycles d’ATR, par exemple 10 jours, 20 jours, pour former un indicateur combiné d’ATR. Cela permet d’améliorer la sensibilité de l’indicateur et d’améliorer le retard.
2. Ajout d’un module de stratégie de stop loss
En outre, le renforcement du contrôle des pertes peut être renforcé par l’ajout de modules stratégiques tels que le triple stop, le stop oscillant et le stop séquentiel, ce qui réduit le risque de pertes.
3. Optimiser les paramètres
L’optimisation des paramètres tels que le cycle ATR, la multiplication de l’ATR, la recherche de la combinaison optimale de paramètres peut améliorer encore les gains stratégiques. En outre, les paramètres peuvent également être optimisés dynamiquement, en choisissant les valeurs appropriées en fonction des différentes variétés et des différentes étapes du marché.
4. Modèles intégrés d’apprentissage automatique
Enfin, il est possible d’essayer d’intégrer des modèles d’apprentissage automatique pour l’automatisation de la détection des tendances et des signaux. Cela réduit l’interférence des facteurs subjectifs et peut améliorer encore la stabilité des systèmes stratégiques.
La stratégie de trading de super-tendance utilise l’indicateur de ligne moyenne et l’indicateur ATR pour déterminer la tendance à mi-parcours et générer des signaux de négociation pour réaliser des arrêts de perte automatiques aux points de retournement de la tendance. La stratégie capte les grandes tendances tout en saisissant en temps opportun certaines opportunités de retournement.
Cependant, cette stratégie présente également certaines lacunes, principalement en ce qui concerne le manque de compréhension et de retard des conditions de choc. Cela nécessite une optimisation de plusieurs aspects, tels que la combinaison des cycles ATR, l’amélioration des modules de stop loss, l’optimisation des paramètres et l’introduction de l’apprentissage automatique. Cela peut sans aucun doute renforcer davantage la stabilité et le taux d’or de cette stratégie de super-tendance.
/*backtest
start: 2022-11-30 00:00:00
end: 2023-11-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy("Supertrend V1.0 - Buy or Sell Signal",overlay=true)
Factor=input(3, minval=1,maxval = 100)
Pd=input(7, minval=1,maxval = 100)
//Calculating ATR
atrLength = input(title="ATR Length:", defval=14, minval=1)
Stop_Loss_Factor = input(1.5, minval=0,step=0.01)
factor_profit = input(1.0, minval=0,step=0.01)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 4, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 10, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2016, title = "From Year", minval = 2009)
ToMonth = input(defval = 4, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 10, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 2039, title = "To Year", minval = 2017)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// Calculate ATR
atrValue=atr(atrLength)
decimals = abs(log(syminfo.mintick) / log(10))
Atr = atrValue
if(decimals == 5)
Atr := atrValue * 10000
if(decimals == 4)
Atr := atrValue * 1000
if(decimals == 3)
Atr := atrValue * 100
if(decimals == 2)
Atr := atrValue * 10
//VJ2 Supertrend
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
TrendUp = 0.0
TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown = 0.0
TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
Trend = 0.0
Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = 0.0
Tsl := Trend==1? TrendUp: TrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)
//plot(Trend==1 and Trend[1]==-1,color = linecolor, style = circles, linewidth = 3,title="Trend")
plotarrow(Trend == 1 and Trend[1] == -1 ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(Trend == -1 and Trend[1] == 1 ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)
//Strategy
Trend_buy = Trend == 1
Trend_buy_prev = Trend[1] == -1
algo_buy_pre = Trend_buy and Trend_buy_prev
algo_buy = algo_buy_pre == 1 ? 1 : na
Trend_sell= Trend == -1
Trend_sell_prev = Trend[1] == 1
algo_sell_pre = Trend_sell and Trend_sell_prev
algo_sell = algo_sell_pre == 1 ? 1:na
strategy.entry("Long1", strategy.long, when= window() and algo_buy==1)
strategy.entry("Short1", strategy.short, when=window() and algo_sell==1)
bought = strategy.position_size > strategy.position_size
sold = strategy.position_size < strategy.position_size
longStop = Stop_Loss_Factor * valuewhen(bought, Atr, 0)
shortStop = Stop_Loss_Factor * valuewhen(sold, Atr, 0)
longProfit = factor_profit * longStop
shortProfit = factor_profit * shortStop
if(decimals == 5)
longStop := longStop *100000
longProfit := longProfit *100000
if(decimals == 4)
longStop := longStop * 10000
longProfit := longProfit * 10000
if(decimals == 3)
longStop := longStop * 1000
longProfit := longProfit * 1000
if(decimals == 2)
longStop := longStop * 100
longProfit := longProfit *100
if(decimals == 5)
shortStop := shortStop * 100000
shortProfit := shortProfit * 100000
if(decimals == 4)
shortStop := shortStop * 10000
shortProfit := shortProfit * 10000
if(decimals == 3)
shortStop := shortStop * 1000
shortProfit := shortProfit * 1000
if(decimals == 2)
shortStop := shortStop * 100
shortProfit := shortProfit * 100
strategy.exit("Exit Long", from_entry = "Long1", loss =longStop, profit = longProfit)
strategy.exit("Exit Short", from_entry = "Short1", loss =shortStop, profit = shortProfit)