Super Tendencia V Estrategia

El autor:¿ Qué pasa?, Fecha: 2023-10-18 12:35:53
Las etiquetas:

img

Resumen general

La estrategia Super Trend V es una estrategia de trading a corto plazo basada en promedios móviles y desviaciones estándar. Utiliza el indicador Super Trend para determinar la dirección de tendencia del precio y combina el soporte y la resistencia formados por promedios móviles para entrar al mercado. Mientras tanto, utiliza el canal de desviación estándar para predecir las zonas potenciales de soporte y resistencia del precio y establece el rango de precios de stop loss y take profit para implementar una estrategia de trading a corto plazo de tendencia eficiente.

Estrategia lógica

En primer lugar, esta estrategia calcula el indicador de Super Tendencia. El indicador de Super Tendencia utiliza la relación entre ATR y el precio para determinar la dirección de la tendencia. Cuando el precio está por encima de la tendencia al alza, es alcista. Cuando el precio está por debajo de la tendencia a la caída, es bajista.

Luego calcula la EMA del precio y la EMA del precio abierto. Cuando el precio cruza por encima de la EMA y es superior a la EMA del precio abierto, es una señal de compra. Cuando el precio cruza por debajo de la EMA y es inferior a la EMA del precio abierto, es una señal de venta.

Luego, utiliza la desviación estándar para calcular las bandas superior e inferior del canal de precios y realiza un procesamiento de suavizado. Cuando el precio rompe la banda superior de la desviación estándar, es una señal de stop loss. Cuando el precio rompe la banda inferior de la desviación estándar, es una señal de take profit.

Por último, combina las medias móviles de diferentes plazos para determinar la dirección de la tendencia, junto con el indicador Super Trend, para formar un juicio de tendencia estable.

Ventajas de la estrategia

  • Usar el indicador Super Trend para determinar la dirección de la tendencia del precio, evitando las pérdidas causadas por la inversión de la tendencia
  • Las medias móviles combinadas con el precio abierto ayudan a determinar el momento de entrada, evitando desgloses falsos
  • El canal de desviación estándar predice las posibles zonas de soporte y resistencia del precio para el stop loss y el take profit
  • La combinación de múltiples marcos de tiempo mejora la estabilidad del juicio de tendencia

Riesgos de la estrategia

  • Indicador de Super Tendencia tiene efecto de retraso, puede perder puntos de cambio de tendencia
  • Los cruces de medias móviles tienen un efecto de retraso, el tiempo de entrada puede no ser preciso
  • El rango del canal de desviación estándar es demasiado fijo para reflejar las fluctuaciones del mercado en tiempo real
  • Los juicios basados en múltiples plazos pueden entrar en conflicto entre sí.

Gestión de riesgos:

  • Acortar los parámetros de Super Trend adecuadamente para mejorar la sensibilidad
  • Optimizar los períodos de media móvil o añadir otros indicadores para determinar la entrada
  • Ajustar el canal de desviación estándar dinámicamente para adaptarse al mercado
  • Definir una lógica clara para las sentencias de varios plazos para manejar conflictos

Direcciones de optimización

  • Optimice los parámetros de Super Trend para encontrar la mejor combinación
  • Pruebe otros indicadores combinados con medias móviles para determinar la entrada
  • Pruebe el ajuste dinámico del canal de desviación estándar
  • Prueba diferentes combinaciones de marcos de tiempo múltiples para encontrar la mejor coincidencia
  • Optimizar las estrategias de stop loss y tomar ganancias para mejorar el espacio de ganancia

Conclusión

La estrategia de Super Trend V integra las ventajas de la tendencia, la media móvil, el canal de desviación estándar y otros indicadores para lograr un juicio de tendencia estable, un tiempo de entrada adecuado, y un stop loss y take profit basados en las zonas de precios. Al optimizar los parámetros, indicadores, stop loss y take profit, etc., puede mejorar la estabilidad y la rentabilidad de la estrategia. Su lógica sólida y su pensamiento riguroso merecen ser aprendidos e investigados.


/*backtest
start: 2022-10-11 00:00:00
end: 2023-10-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// © theCrypster 2020

//@version=4
strategy(title = "Super trend V Strategy version", overlay = true, pyramiding=1,initial_capital = 1000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075)
strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"])
strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all
strategy.risk.allow_entry_in(strat_dir_value)
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)

v =  spreadvol + cum(spreadvol)
smooth = sma(v, v_len)
v_spread = stdev(v - smooth, window_len)
shadow = (v - smooth) / v_spread * price_spread

out = shadow > 0 ? high + shadow : low + shadow
//
src = out
src1=open
src2=low
src3=high
tf =input(720)
len = timeframe.isintraday and timeframe.multiplier >= 1 ? 
   tf / timeframe.multiplier * 7 : 
   timeframe.isintraday and timeframe.multiplier < 60 ? 
   60 / timeframe.multiplier * 24 * 7 : 7

c = ema(src, len)
plot(c,color=color.red)
o = ema(src1,len)
plot(o,color=color.blue)
//h = ema(src3,len)
//l=ema(src2,len)
//
col=c > o? color.lime : color.orange
vis = true
vl = c
ll = o
m1 = plot(vl, color=col, linewidth=1, transp=60)
m2 = plot(vis ? ll : na,  color=col, linewidth=2, transp=80)

fill(m1, m2,  color=col, transp=70)
//

vpt=ema(out,len)

// INPUTS //
st_mult   = input(1,   title = 'SuperTrend Multiplier', minval = 0, maxval = 100, step = 0.01)
st_period = input(10, title = 'SuperTrend Period',     minval = 1)

// CALCULATIONS //
up_lev = vpt - (st_mult * atr(st_period))
dn_lev = vpt + (st_mult * atr(st_period))

up_trend   = 0.0
up_trend   := close[1] > up_trend[1]   ? max(up_lev, up_trend[1])   : up_lev

down_trend = 0.0
down_trend := close[1] < down_trend[1] ? min(dn_lev, down_trend[1]) : dn_lev

// Calculate trend var
trend = 0
trend := close > down_trend[1] ? 1: close < up_trend[1] ? -1 : nz(trend[1], 1)

// Calculate SuperTrend Line
st_line = trend ==1 ? up_trend : down_trend

// Plotting
plot(st_line[1], color = trend == 1 ? color.green : color.red , style = plot.style_cross, linewidth = 2, title = "SuperTrend")
buy=crossover( close, st_line) and close>o
sell=crossunder(close, st_line) and close<o
//plotshape(crossover( close, st_line), location = location.belowbar, color = color.green,size=size.tiny)
//plotshape(crossunder(close, st_line), location = location.abovebar, color = color.red,size=size.tiny)
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)  //plot for sell icon


//
multiplier = input(title="TP VWAP Deviation", type=input.float, defval=2, minval=1)
src5 = vwap
len5 = input(title="TP length", defval=150, minval=1)
offset = 0

calcSlope(src5, len5) =>
    sumX = 0.0
    sumY = 0.0
    sumXSqr = 0.0
    sumXY = 0.0
    for i = 1 to len5
        val = src5[len5-i]
        per = i + 1.0
        sumX := sumX + per
        sumY := sumY + val
        sumXSqr := sumXSqr + per * per
        sumXY := sumXY + val * per
        
        
    slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX)
    average = sumY / len5
    intercept = average - slope * sumX / len5 + slope
    [slope, average, intercept]

var float tmp = na
[s, a, i] = calcSlope(src5, len5)

vwap1=(i + s * (len5 - offset))
sdev = stdev(vwap, len5)
dev = multiplier * sdev
top=vwap1+dev
bott=vwap1-dev

//
z1 = vwap1 + dev
x1 = vwap1 - dev

low1 = crossover(close, x1)  
high1 = crossunder(close, z1) 

plotshape(low1, title="low", text="TP", color=color.red, style=shape.labelup, location=location.belowbar, size=size.small, textcolor=color.white, transp=0)  //plot for buy icon
plotshape(high1, title="high", text="TP", color=color.green, style=shape.labeldown, location=location.abovebar, size=size.small, textcolor=color.white, transp=0)  //plot for sell icon



//
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)


testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false

l = buy
s1 = sell
        
if l and testPeriod()
    strategy.entry("buy", strategy.long)
if s1 and testPeriod()
    strategy.entry("sell", strategy.short)



Más.