Estrategia de seguimiento de tendencias basada en SuperTrend y DEMA


Fecha de creación: 2023-12-08 16:42:14 Última modificación: 2023-12-08 16:42:14
Copiar: 0 Número de Visitas: 1014
1
Seguir
1621
Seguidores

Estrategia de seguimiento de tendencias basada en SuperTrend y DEMA

Descripción general

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.

Principio de estrategia

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:

  1. Un cambio de tendencia produce una señal de compra cuando el precio se desvía de la vía inferior
  2. Cuando el precio se rompe de la vía superior, se produce una señal de venta para el cambio de tendencia
  3. Solo se genera una señal de compra cuando aparece y el precio es superior a la línea DEMA
  4. Solo se generan señales de venta cuando se presentan y el precio está por debajo de la línea DEMA

Con este diseño lógico, se puede seguir adelante en una tendencia positiva y evitar abrir posiciones frecuentes en un mercado convulso.

Ventajas estratégicas

  • Combinación de los indicadores SuperTrend y DEMA para lograr el doble efecto de seguimiento de tendencias y filtración de señales
  • Los parámetros del indicador SuperTrend son fáciles de optimizar y se pueden ajustar según las diferentes variedades y períodos
  • La optimización de los parámetros del indicador DEMA es sencilla y no requiere pruebas repetidas
  • Las estrategias se aplican a situaciones de tendencia, y pueden seguir la tendencia de manera fluida.
  • Las señales falsas de los mercados convulsionados se filtran con eficacia a través del indicador DEMA
  • La implementación de la estrategia es simple, fácil de entender y modificar

Riesgo estratégico

  • Las estrategias no son muy efectivas en situaciones de fuertes fluctuaciones de precios.
  • Los inversores de la tendencia podrían perder dinero
  • Los parámetros del indicador DEMA están mal configurados y puede que se pierda el mejor momento para comprar/vender
  • Los parámetros del indicador SuperTrend, como el ATR, están mal configurados y pueden generar señales falsas

La solución al riesgo:

  • Optimización de los parámetros DEMA y SuperTrend
  • Combinado con una estrategia de parada de pérdidas, para controlar un solo paro de pérdidas
  • Mecanismos de confirmación en puntos clave para evitar señales falsas

Dirección de optimización de la estrategia

La estrategia puede ser optimizada en los siguientes aspectos:

  1. 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.

  2. Optimización de los parámetros del indicador DEMA. Se pueden probar diferentes parámetros para determinar la configuración óptima de los mismos.

  3. 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.

  4. 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.

  5. 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.

Resumir

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.

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