
La stratégie est basée sur l’indicateur SuperB de Rafael Zioni, qui identifie les tendances à l’aide d’indicateurs de dynamique et permet le suivi automatique des tendances à la hausse et à la baisse.
La stratégie utilise l’indicateur SuperB de Rafael Zioni pour identifier la tendance des prix. L’indicateur SuperB est basé sur la portée des fluctuations des prix, le volume de transactions et le SpreadVol, calculé sur la différence entre le prix d’ouverture et le prix de clôture.
La stratégie consiste à suivre les prix les plus élevés et les prix les plus bas en temps réel pour déterminer le renversement de tendance. Dans une tendance à la hausse, le prix le plus élevé a toujours été élevé et a été jugé comme une hausse continue; lorsque le prix est tombé en dessous d’un certain pourcentage du prix le plus élevé, il est passé à la tendance baissière.
Cette stratégie, combinée à des indicateurs de dynamique pour déterminer la direction de la tendance, puis à un suivi en temps réel des prix les plus élevés et les plus bas, permet d’identifier rapidement les nouvelles directions de tendance, de suivre automatiquement les tendances à la hausse et à la baisse et d’éviter le risque de points de sous-achat et de points de surachat.
L’indicateur SuperB de Rafael Zioni reflète l’intensité et la vitesse des variations des prix, permet de juger avec précision les tendances réelles et de filtrer efficacement les fausses ruptures. Les règles de jugement sont simples et claires, faciles à comprendre et à vérifier.
Il est recommandé de ne faire que des positions multiples pour réduire les coûts de transaction et les pertes de points de glissement liés à des opérations fréquentes.
Cette stratégie est susceptible de générer de multiples erreurs de transaction dans les zones de réglage avant la percée. La sensibilité des zones de réglage peut être réduite en optimisant les paramètres.
Les lignes de stop-loss peuvent être déclenchées en cas de fluctuation de la tendance. La marge de stop-loss peut être élargie de manière appropriée pour permettre une plus longue tenue de position.
Il est nécessaire de changer de position en temps opportun. Si vous ne le faites pas en temps opportun, cela peut entraîner des pertes importantes.
Optimiser les paramètres de l’indicateur SuperB, trouver une meilleure combinaison de paramètres et améliorer la stabilité de l’indicateur.
Optimiser le facteur de proportion du suivi des prix les plus élevés et les plus bas pour réduire la sensibilité des réactions aux zones de comptage.
Augmentation du délai de tenue des positions afin d’éviter les pertes pendant les chocs de tendance.
Cette stratégie utilise l’indicateur SuperB de Rafael Zioni pour déterminer la direction de la tendance des prix et pour déterminer le revirement de tendance en temps réel en suivant les prix les plus élevés et les plus bas, pour réaliser un suivi automatique des tendances à la hausse et à la baisse et éviter le risque de survente. Cette stratégie, combinée à l’indicateur de dynamique pour déterminer la tendance réelle, les règles de jugement sont simples et claires, peuvent être améliorées et optimisées en fonction des recommandations d’optimisation.
/*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')