Cette stratégie est basée sur l'indicateur SuperB créé par Rafael Zioni. Il identifie les tendances à travers des indicateurs de dynamique et suit automatiquement les tendances à la hausse et à la baisse, appartenant à la stratégie de tendance suivante.
La stratégie utilise l'indicateur SuperB créé par RafaelZioni pour identifier les tendances des prix. L'indicateur SuperB est basé sur la plage de fluctuation des prix, le volume de négociation et la différence de prix entre les prix d'ouverture et de fermeture pour calculer l'indicateur SpreadVol. L'indicateur SpreadVol reflète les caractéristiques de l'élan des prix.
La stratégie juge les renversements de tendance en temps réel en suivant les prix élevés et bas. Dans une tendance à la hausse, de nouveaux sommets continuent d'être atteints, indiquant une hausse soutenue. Lorsque le prix dépasse le prix maximum d'un certain pourcentage, il se transforme en tendance à la baisse. La méthode de jugement est similaire dans une tendance à la baisse. Cela permet des jugements opportuns des points d'inversion de tendance.
La stratégie combine des indicateurs de dynamique pour déterminer la direction de la tendance, puis suit les prix les plus élevés et les plus bas en temps réel, ce qui permet d'identifier rapidement de nouvelles directions de tendance et de suivre automatiquement les tendances à la hausse et à la baisse, évitant ainsi les risques de manquer des points d'achat et des points de surachat.
L'indicateur SuperB de Rafael Zioni reflète la force et la vitesse des variations de prix et peut déterminer avec précision les vraies tendances, filtrant efficacement les fausses ruptures.
Il ne négocie que des positions longues pour réduire les coûts de négociation et les pertes par glissement causées par des opérations fréquentes.
La stratégie est sujette à de multiples faux trades dans la zone de consolidation avant la rupture.
La ligne de stop loss est susceptible d'être déclenchée lors de chocs de tendance.
Lorsque vous passez d'une position longue à une position courte, il est nécessaire de changer de position en temps opportun.
Optimiser les paramètres de l'indicateur SuperB pour trouver de meilleures combinaisons de paramètres et améliorer la stabilité de l'indicateur.
Optimiser le coefficient de suivi des prix les plus élevés et les plus bas afin de réduire la sensibilité aux zones de consolidation.
Augmenter les critères de temps de rétention pour éviter d'être arrêté pendant les chocs de tendance.
Cette stratégie utilise l'indicateur SuperB développé par RafaelZioni pour déterminer la direction de la tendance des prix, et juge les renversements de tendance en suivant les prix hauts et bas en temps réel, en réalisant le suivi automatique des tendances haussières et baissières, en évitant les points d'achat manquants et les risques de surachat.
/*backtest start: 2023-01-01 00:00:00 end: 2023-08-19 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='SuperB', title='SuperB By RafaelZioni', overlay=true) long_only = input(title="Only Long?", defval=true) hilow = ((high - low)*100) openclose = ((close - open)*100) vol = (volume / hilow) spreadvol = (openclose * vol) VPT = spreadvol + cum(spreadvol) window_len = 28 v_len = 14 price_spread = stdev(high-low, window_len) vp = spreadvol + cum(spreadvol) smooth = sma(vp, v_len) v_spread = stdev(vp - smooth, window_len) shadow = (vp - smooth) / v_spread * price_spread out = shadow > 0 ? high + shadow : low + shadow // len = input(10) vpt=ema(out,len) // INPUTS // st_mult = input(1, title = ' Multiplier', minval = 0, maxval = 100, step = 0.01) st_period = input(10, title = ' Period', minval = 1) // CALCULATIONS // up= vpt - (st_mult * atr(st_period)) dn = vpt + (st_mult * atr(st_period)) c5=close // factor = input(title="Factor", defval=0.05, minval=0.01, maxval=5, step=0.01, type=input.float) hb = 0.00 ,hb := nz(hb[1]) hl = 0.000, hl := nz(hl[1]) lb = 0.00 ,lb := nz(lb[1]) l1 = 0.000,l1 := nz(l1[1]) c = 0 c := nz(c[1]) + 1 trend = 0,trend := nz(trend[1]),n = dn,x =up if barstate.isfirst c := 0 lb := n hb := x l1 := c5 hl := c5 hl if c == 1 if x >= hb[1] hb := x hl := c5 trend := 1 trend else lb := n l1 := c5 trend := -1 trend if c > 1 if trend[1] > 0 hl := max(hl[1], c5) if x >= hb[1] hb := x hb else if n < hb[1] - hb[1] * factor lb := n l1 := c5 trend := -1 trend else l1 := min(l1[1], c5 ) if n <= lb[1] lb := n lb else if x > lb[1] + lb[1] * factor hb := x hl := c5 trend := 1 trend v = trend == 1 ? hb : trend == -1 ? lb : na plot(v, color=trend == 1 ? color.blue : color.yellow, style=plot.style_circles, linewidth=1, title="trend", transp=0, join=true) // long = trend == 1 and trend[1] == -1 short = trend == -1 and trend[1] == 1 // last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) buy = crossover(last_long, last_short) sell = crossover(last_short, last_long) /////////////// Positions ////////////// if long strategy.entry("Buy", long=true) if long_only == false strategy.close("Sell") if short if long_only == false strategy.entry("Sell", long=false) strategy.close("Buy") /////////////// Plotting /////////////// plotshape(buy, title="buy", text="Buy", color=color.green, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0) //plot for buy icon plotshape(sell, title="sell", text="Sell", color=color.red, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0) /////////////// Alerts /////////////// alertcondition(buy, title='buy', message='Buy') alertcondition(sell, title='sell', message='Sell')