
Esta estrategia combina el indicador SuperTrend con el indicador DEMA para lograr una estrategia de negociación de seguimiento de tendencias. La estrategia genera una señal de compra cuando el precio supera la vía ascendente y una señal de venta cuando el precio baja la vía descendente, combinada con el indicador DEMA para filtrar las falsas señales. La estrategia se aplica a situaciones de tendencia y puede seguir la tendencia de manera efectiva y filtrar las oscilaciones.
La estrategia se basa principalmente en el indicador SuperTrend para determinar la dirección de la tendencia del precio. El indicador SuperTrend, combinado con el indicador ATR, puede determinar la tendencia del precio de manera eficiente.
Para filtrar señales falsas, la estrategia también combina con el indicador DEMA. La señal de compra se genera solo cuando el precio supera la línea de subida y está por encima de la línea DEMA; la señal de venta se genera solo cuando el precio baja y está por debajo de la línea DEMA.
En concreto, la lógica de la señal de negociación de esta estrategia es la siguiente:
Con este diseño lógico, se puede seguir adelante en una tendencia positiva y evitar abrir posiciones frecuentes en un mercado convulso.
La solución al riesgo:
La estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros de los indicadores de SuperTrend. Se pueden probar diferentes parámetros de los períodos ATR para encontrar la combinación óptima de parámetros.
Optimización de los parámetros del indicador DEMA. Se pueden probar diferentes parámetros para determinar la configuración óptima de los mismos.
Mecanismo de aumento de la pérdida. Se puede ajustar el nivel de pérdida de acuerdo con el valor de ATR para evitar pérdidas excesivas.
Se puede agregar la confirmación de otros indicadores en los puntos clave, para evitar señales falsas. Por ejemplo, la confirmación de indicadores de aumento de energía en los puntos de cambio de tendencia.
Optimización de la gestión de posiciones. Se pueden ajustar las posiciones en función de la volatilidad del mercado y la situación de riesgo.
Esta estrategia integra las ventajas del indicador SuperTrend y el indicador DEMA para implementar una estrategia de negociación cuantitativa basada en el seguimiento de tendencias y la filtración de señales. Hay un gran espacio para la optimización de la estrategia, que puede mejorar aún más la estabilidad y la rentabilidad de la estrategia a través de medidas como la optimización de parámetros, el mecanismo de stop loss y la filtración de señales. La idea de la estrategia es simple, clara y fácil de implementar, el riesgo general es controlable y adecuado para el comercio cuantitativo.
/*backtest
start: 2023-11-07 00:00:00
end: 2023-12-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Krish\'s Supertrend Strategy', overlay=true)
// Supertrend Settings
Periods = input(title='ATR Period', defval=10)
src = input(hl2, title='Source')
Multiplier = input.float(title='ATR Multiplier', step=0.1, defval=3.0)
changeATR = input(title='Change ATR Calculation Method ?', defval=true)
showsignals = input(title='Show Buy/Sell Signals ?', defval=true)
highlighting = input(title='Highlighter On/Off ?', defval=true)
atr2 = ta.sma(ta.tr, Periods)
atr = changeATR ? ta.atr(Periods) : atr2
up = src - Multiplier * atr
up1 = nz(up[1], up)
up := close[1] > up1 ? math.max(up, up1) : up
dn = src + Multiplier * atr
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? math.min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title='Up Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.green, 0))
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title='UpTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.green, 0))
plotshape(buySignal and showsignals ? up : na, title='Buy', text='Buy', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.green, 0), textcolor=color.new(color.white, 0))
dnPlot = plot(trend == 1 ? na : dn, title='Down Trend', style=plot.style_linebr, linewidth=2, color=color.new(color.red, 0))
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title='DownTrend Begins', location=location.absolute, style=shape.circle, size=size.tiny, color=color.new(color.red, 0))
plotshape(sellSignal and showsignals ? dn : na, title='Sell', text='Sell', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.red, 0), textcolor=color.new(color.white, 0))
// DEMA Settings
dema_length = 200
dema = ta.ema(close, dema_length)
// Long and Short Conditions
longCondition = buySignal and close > dema
shortCondition = sellSignal and close < dema
// Strategy Entry and Exit
strategy.entry('Long', strategy.long, when=longCondition)
strategy.entry('Short', strategy.short, when=shortCondition)
strategy.close('Long', when=ta.change(trend) or close < dema)
strategy.close('Short', when=ta.change(trend) or close > dema)
// Plotting
mPlot = plot(ohlc4, title='', style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? trend == 1 ? color.green : color.white : color.white
shortFillColor = highlighting ? trend == -1 ? color.red : color.white : color.white
fill(mPlot, upPlot, title='UpTrend Highlighter', color=longFillColor, transp=90)
fill(mPlot, dnPlot, title='DownTrend Highlighter', color=shortFillColor, transp=90)
// Alerts (using plotshape for alerts in strategies)
plotshape(buySignal, title='SuperTrend Buy', color=color.new(color.green, 0), style=shape.triangleup, size=size.small)
plotshape(sellSignal, title='SuperTrend Sell', color=color.new(color.red, 0), style=shape.triangledown, size=size.small)
changeCond = trend != trend[1]
plotshape(changeCond, title='SuperTrend Direction Change', color=color.new(color.yellow, 0), style=shape.triangleup, size=size.small)