
La estrategia se basa en el indicador SuperB de Rafael Zioni, que identifica tendencias mediante indicadores de dinámica y permite el seguimiento automático de tendencias al alza y a la baja, y es una estrategia de seguimiento de tendencias.
La estrategia utiliza el indicador SuperB de Rafael Zioni para identificar la tendencia de los precios. El indicador SuperB se basa en el rango de fluctuación de los precios, el volumen de transacciones y el SpreadVol, que se calcula a partir de la diferencia entre el precio de apertura y el precio de cierre. El SpreadVol refleja las características de movimiento de los precios.
Esta estrategia determina el cambio de tendencia en tiempo real al rastrear el precio más alto y el precio más bajo. En una tendencia ascendente, el precio más alto siempre es innovador y se juzga como un aumento continuo; cuando el precio cae por debajo de una cierta proporción del precio más alto, se convierte en una tendencia descendente. En una tendencia descendente, el método de juicio es similar.
Esta estrategia, combinada con un indicador de dinámica para determinar la dirección de la tendencia, y el seguimiento en tiempo real de los precios más altos y más bajos, permite identificar rápidamente la dirección de la nueva tendencia, realizar un seguimiento automático de las tendencias alcistas y bajistas, y evitar el riesgo de perder puntos de compra y puntos de sobrecompra.
El indicador SuperB de Rafael Zioni refleja la intensidad y velocidad de los cambios en los precios, lo que permite determinar con precisión la tendencia real y filtrar eficazmente las brechas falsas. Las reglas de juicio son simples y claras, fáciles de entender y verificar.
Solo realice posiciones de varios titulares, reduciendo los costos de transacción y pérdidas de puntos de deslizamiento generados por la frecuencia de las operaciones.
Esta estrategia es propensa a generar múltiples transacciones erróneas en las zonas de ajuste antes de la ruptura. Se puede reducir la sensibilidad a las zonas de ajuste mediante la optimización de los parámetros.
La línea de pérdidas puede ser fácilmente activada cuando la tendencia se tambalea. Se puede ampliar el rango de pérdidas adecuadamente para mantener la posición por más tiempo.
En el caso de la conversión de más espacio, es necesario cambiar la posición a tiempo. Si el cambio no es lo suficientemente pronto, puede traer grandes pérdidas.
Optimizar los parámetros de los indicadores de SuperB, buscar una mejor combinación de parámetros y mejorar la estabilidad de los indicadores.
Optimización del factor proporcional de seguimiento de precios máximos y mínimos, reduciendo la sensibilidad de respuesta a la zona de comprobación.
Aumentar el tiempo de tenencia de las posiciones para evitar pérdidas durante las fluctuaciones de tendencia.
La estrategia utiliza el indicador SuperB de Rafael Zioni para determinar la dirección de la tendencia de los precios y para determinar la reversión de la tendencia en tiempo real mediante el seguimiento de los precios más altos y más bajos, para realizar un seguimiento automático de las tendencias ascendentes y descendentes y evitar el riesgo de sobrecompra, pertenece a la estrategia de impulso de seguimiento de tendencias. La estrategia, combinada con el indicador de impulso para determinar la tendencia real, las reglas de juicio son simples y claras, y pueden mejorarse y optimizarse aún más según las recomendaciones de optimización.
/*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')