Estrategia de impulso de RafaelZioni siguiendo tendencias


Fecha de creación: 2023-12-13 14:59:34 Última modificación: 2023-12-13 14:59:34
Copiar: 0 Número de Visitas: 733
1
Seguir
1621
Seguidores

Estrategia de impulso de RafaelZioni siguiendo tendencias

Descripción general

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.

Principio de estrategia

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.

Las ventajas

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.

El riesgo

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.

Recomendaciones para la optimización

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.

Resumir

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.

Código Fuente de la Estrategia
/*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')