Stratégie de suivi des super tendances à deux délais

Auteur:ChaoZhang est là., Date: le 22 septembre 2023 à 14 h 27 min 52 s
Les étiquettes:

Résumé

Il s'agit d'une stratégie de suivi de Supertrend à deux délais. Il applique les indicateurs de Supertrend dans deux périodes de temps différentes, l'une comme délai principal pour déterminer la direction de la tendance, et l'autre comme délai auxiliaire pour filtrer les entrées. Il n'entre que lorsque les Supertrends dans les deux délais sont dans le même sens, pour capturer plus précisément les points d'inversion de tendance.

La logique de la stratégie

L'indicateur de base de cette stratégie est Supertrend. Supertrend détermine la direction relative de la tendance des prix en calculant la volatilité des prix. La stratégie utilise Supertrend dans deux périodes de temps, calculant les lignes de Supertrend pour les délais principaux et auxiliaires respectivement.

La logique de négociation spécifique est la suivante:

  1. Utiliser la direction de la période principale Supertrend comme direction générale de la tendance.

  2. Saisissez le nombre d'heures d'exposition correspondant à la période de référence.

  3. Mettez un stop-loss et prenez des points de profit.

  4. Sortez quand le Supertrend tourne à nouveau.

En combinant deux indicateurs de calendrier, certaines divergences peuvent être filtrées pour une saisie plus précise.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. La combinaison de deux délais permet un jugement plus précis de la tendance.

  2. Supertrend est sensible aux changements de tendance, avec une entrée précise.

  3. Arrêtez les pertes et prenez le risque de contrôle des bénéfices.

  4. Une stratégie simple et directe, facile à comprendre.

  5. Les paramètres peuvent être personnalisés pour différents produits.

Analyse des risques

Les principaux risques sont les suivants:

  1. Le retard de la super tendance peut entraîner des signaux mal évalués.

  2. Le fait de ne pas utiliser correctement le stop loss et le take profit peut entraîner une tendance à la poursuite excessive ou un stop loss prématuré.

  3. Le double calendrier peut manquer quelques retours plus courts.

  4. L'optimisation des paramètres repose sur des données historiques, il existe des risques de suradaptation.

  5. Aucune prise en compte des coûts de transaction.

Les solutions sont les suivantes:

  1. Ajuster les paramètres des indicateurs, ajouter d'autres indicateurs pour la vérification des combinaisons.

  2. Optimiser dynamiquement le stop loss et le profit basé sur les résultats des backtests.

  3. Testez des délais plus courts comme jugement auxiliaire.

  4. Élargir la gamme de données de backtest, vérification de backtest sur plusieurs marchés.

  5. Ajoutez les coûts de transaction comme les commissions et les dérapages.

Directions d'optimisation

La stratégie peut être encore optimisée par:

  1. Je teste plus de combinaisons d'indicateurs pour trouver la combinaison optimale.

  2. Utiliser l'apprentissage automatique pour optimiser dynamiquement les paramètres.

  3. Optimiser le stop loss et le profit pour un meilleur rapport risque-rendement.

  4. J'essaie de combiner plus de délais.

  5. Ajustement des fourchettes de prise de profit et de stop loss en fonction du nombre de transactions.

  6. Ajout de commissions et logique de glissement.

  7. Développement d'outils d'optimisation graphique des paramètres.

Conclusion

Cette stratégie permet d'obtenir un jugement et des entrées de tendance relativement précis en utilisant des indicateurs de supertrend à double échéancier. Elle contrôle les risques en définissant un stop loss et un profit. La logique de la stratégie est simple et claire, facile à étendre et à optimiser. Elle peut être améliorée en introduisant plus d'indicateurs, en optimisant dynamiquement les paramètres, en ajoutant des coûts de transaction, etc. pour la rendre plus robuste.


/*backtest
start: 2023-08-22 00:00:00
end: 2023-09-21 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//Supertrend Strategy by breizh29 using *rajandran.r* Supertrend Indicator

// strategy("Super Trend 2", overlay=true, default_qty_value=100)
TrendUp = 0.0
TrendDown = 0.0
Trend = 0.0
MTrendUp = 0.0
MTrendDown = 0.0
MTrend = 0.0

res = input(title="Main SuperTrend Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=security(syminfo.tickerid,res,close)

TrendUp:=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown:=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp:=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown:=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend := close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend := Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main 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)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)



Plus de