Cette stratégie utilise l'indicateur Super Trend pour aider à placer des ordres, et filtre par couches de nuages et couleurs de chandeliers pour placer des ordres limites pour augmenter la rentabilité.
Calculer la moyenne des prix les plus élevés et les plus bas au cours de la période ATR comme référence.
Calculer les bandes supérieure et inférieure en fonction du facteur multiplicateur.
Lorsque la fermeture est au-dessus de la bande supérieure, marquer comme 1; en dessous de la bande inférieure, marquer comme -1. Sinon, maintenir l'état précédent.
Ajustez dynamiquement la ligne de stop loss en fonction de la position du prix de clôture par rapport aux bandes supérieure/inférieure.
Calculer la plage de couche nuageuse sur la base d'un certain pourcentage de l'intervalle de bande supérieure/inférieure.
Pour long, besoin de fermer < ouvert lorsque la Super Tendance est 1.
Placez des ordres d'achat à prix de clôture des barres précédentes pour long.
Filtrez par période, fermez toutes les positions disponibles.
Cette stratégie combine le concept de Super Trend et de Cloud, ce qui permet de capturer rapidement la tendance après le début de la tendance. Super Trend stop loss réagit plus rapidement que le stop loss en mouvement normal.
Super Trend est sensible et suit les tendances avec force.
Le filtre à nuages réduit les pertes de fausses éruptions.
La couleur du chandelier aide à éviter les retours en arrière.
Les ordres limités réduisent l'impact des glissements et augmentent le taux de victoire.
La gestion des positions et des intervalles de temps personnalisables répondent à différents besoins de négociation.
Il y a aussi quelques risques à noter:
Des paramètres de Super Trend inappropriés peuvent provoquer une trop grande sensibilité et des coups de fouet.
Une gamme de nuages excessive peut filtrer les signaux de rupture valides, ce qui a une incidence sur la rentabilité.
Les ordres limités peuvent ne pas être remplis pendant une forte volatilité, des opportunités manquées.
Aucun stop loss ne peut éviter complètement le risque systémique et les pertes énormes.
Les positions plus grandes amplifient également les pertes.
Cette stratégie peut être améliorée dans les domaines suivants:
Tester différents marchés et instruments afin de déterminer les paramètres optimaux de la Super Tendance.
Ajustez dynamiquement le niveau de stop loss en fonction de la volatilité du marché.
Optimiser la portée des nuages pour équilibrer le filtrage du bruit et la rétention du signal.
Ajouter un module de dimensionnement des positions à la dimensionnement dynamique des positions en fonction des conditions du marché.
Utiliser différents ensembles de paramètres pour différentes sessions de négociation afin de s'adapter aux rythmes du marché.
Efficacité des essais en combinaison avec d'autres indicateurs.
En conclusion, cette stratégie a une logique claire et un avantage évident dans la capture de tendance. Mais aucune stratégie ne peut éviter complètement les risques systémiques. Il faut contrôler la taille des positions, continuer à optimiser pour minimiser les risques dans le trading en direct et maximiser l'avantage. Cette stratégie a un grand potentiel pour des tests et des améliorations supplémentaires pour s'adapter à l'évolution de la dynamique du marché.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy("Noro's SuperTrend Strategy v2.0 Limit", shorttitle = "STL str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %") cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR") Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100) ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100) centr = input(true, defval = true, title = "need center of ATR?") border = input(false, defval = false, title = "need border?") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Super Trend ATR 1 src = close Up=hl2-(Factor*atr(ATR)) Dn=hl2+(Factor*atr(ATR)) TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1) Tsl1 = Trend==1? TUp: TDown Tsl2 = Trend==1? TDown: TUp limit = (Tsl1 - Tsl2) / 100 * cloud upcloud = Tsl1 - limit dncloud = Tsl2 + limit //Cloud linecolor = Trend == 1 ? green : red centercolor = centr == true ? blue : na cloudcolor = Trend == 1 ? green : red cline = (Tsl1 + Tsl2) / 2 P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1") P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2") P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center") P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1") P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1") fill(P1, P4, color = linecolor == red ? red : lime, transp = 50) fill(P2, P5, color = linecolor == red ? red : lime, transp = 50) //Signals up = 0.0 dn = 0.0 up := Trend != 1 ? 0 : Trend == 1 and close < open ? close : up[1] dn := Trend != -1 ? close * 1000 : Trend == -1 and close > open ? close : dn[1] //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if true strategy.entry("Long", strategy.long, needlong ? lot : 0, limit = up, when = (Trend == 1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.entry("Short", strategy.short, needshort ? lot : 0, limit = dn, when = (Trend == -1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()