RafaelZioni Tendencia de impulso siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2023-12-13 14:59:34
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el indicador SuperB creado por Rafael Zioni, que identifica las tendencias a través de indicadores de impulso y rastrea automáticamente las tendencias ascendentes y descendentes, pertenecientes a la estrategia de tendencia siguiente.

Estrategia lógica

La estrategia utiliza el indicador SuperB creado por RafaelZioni para identificar tendencias de precios. El indicador SuperB se basa en el rango de fluctuación de precios, el volumen de negociación y la diferencia de precios entre los precios de apertura y cierre para calcular el indicador SpreadVol. El indicador SpreadVol refleja las características de impulso de los precios.

La estrategia juzga las inversiones de tendencia en tiempo real mediante el seguimiento de precios altos y bajos. En una tendencia al alza, se continúan haciendo nuevos máximos, lo que indica un aumento sostenido. Cuando el precio se rompe por debajo del precio máximo por un cierto porcentaje, se convierte en una tendencia a la baja. El método de juicio es similar en una tendencia a la baja. Esto permite juicios oportunos de los puntos de inversión de tendencia.

Ventajas

La estrategia combina indicadores de impulso para determinar la dirección de la tendencia, y luego rastrea los precios más altos y más bajos en tiempo real, lo que puede identificar rápidamente nuevas direcciones de tendencia y rastrear automáticamente las tendencias alcistas y descendentes, evitando los riesgos de perder puntos de compra y puntos de sobrecompra.

El indicador SuperB de RafaelZioni refleja la fuerza y la velocidad de los cambios de precios y puede determinar con precisión las tendencias verdaderas, filtrando eficazmente las fallas.

Solo realiza posiciones largas para reducir los costes de negociación y las pérdidas por deslizamiento causadas por operaciones frecuentes.

Los riesgos

La estrategia es propensa a múltiples operaciones falsas en el área de consolidación antes de la ruptura. Los parámetros pueden optimizarse para reducir la sensibilidad a las áreas de consolidación.

La línea de stop loss es propensa a activarse durante los shocks de tendencia.

Cuando se cambia entre largo y corto, las posiciones deben cambiarse de manera oportuna.

Sugerencias para optimizar

Optimizar los parámetros del indicador SuperB para encontrar mejores combinaciones de parámetros y mejorar la estabilidad del indicador.

Optimizar el factor de relación de seguimiento de los precios más altos y más bajos para reducir la sensibilidad a las áreas de consolidación.

Aumentar los criterios de tiempo de retención para evitar que se detenga durante los shocks de tendencia.

Resumen de las actividades

Esta estrategia utiliza el indicador SuperB desarrollado por RafaelZioni para determinar la dirección de la tendencia de precios, y juzga las reversiones de tendencia mediante el seguimiento de precios altos y bajos en tiempo real, realizando un seguimiento automático de las tendencias alcistas y descendentes, evitando puntos de compra perdidos y riesgos de sobrecompra. Pertenece a una estrategia de impulso con características de tendencia. Esta estrategia combina indicadores de impulso para determinar las tendencias verdaderas con reglas simples y claras. Puede mejorarse y optimizarse aún más de acuerdo con las sugerencias de optimización y vale la pena investigar y aplicar.


/*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')

Más.