
La estrategia de seguimiento de tendencias duales es una estrategia compleja que combina un indicador de tendencia súper, un promedio móvil de dos índices (DEMA) y un cinturón de Brin. Su objetivo es aprovechar las ventajas de varios indicadores técnicos para capturar señales de compra y venta en el momento oportuno cuando la tendencia se invierte.
La estrategia tiene tres partes principales:
Indicador de supertrend: calcula la línea de ruptura hacia arriba y la línea de ruptura hacia abajo para determinar la dirección de la tendencia actual. Genera una señal de compra cuando el precio rompe la línea de supertrend desde abajo hacia arriba; genera una señal de venta cuando rompe la línea de supertrend desde arriba hacia abajo.
Media móvil de doble índice (DEMA): un indicador de seguimiento de tendencias que combina las características de las medias móviles simples y las medias móviles de índice para responder más rápidamente a los cambios de precios. La estrategia establece una DEMA de 200 días para determinar la dirección de la tendencia a largo plazo.
Las bandas de Brin: indican el rango de fluctuación de los precios. Cuando las bandas de Brin se contraen o amplían de manera inusual, indican una posible reversión de la tendencia.
Cuando el indicador de tendencia súper y el DEMA emiten una señal de compra/venta, se entra en la posición correspondiente. Además, las anomalías de la banda de Bryn también pueden servir como señal de juicio auxiliar.
La combinación de múltiples indicadores de estrategias de seguimiento de tendencias duales, aprovechando las ventajas de las tres supertrends, DEMA y Brin, mejora la calidad de la señal al mismo tiempo que capta la tendencia, y se espera obtener un mejor efecto estratégico a través de la optimización de los parámetros. La adición de mecanismos de parada de pérdidas también es un foco de optimización en el futuro.
/*backtest
start: 2023-01-09 00:00:00
end: 2024-01-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Supertrend + DEMA + Bollinger Bands", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10, precision=2)
// Input parameters for Supertrend
atrLength = input(title="ATR Period", type=input.integer, defval=12)
src = input(hl2, title="Source")
multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR = input(title="Change ATR Calculation Method?", type=input.bool, defval=true)
showSupertrend = input(title="Show Supertrend Indicator?", type=input.bool, defval=true)
// Input parameters for DEMA
demaLength = input(200, title="DEMA Period")
showDEMA = input(title="Show DEMA Indicator?", type=input.bool, defval=true)
// Calculate ATR for Supertrend
atr2 = sma(tr, atrLength)
atr = changeATR ? atr(atrLength) : atr2
// Calculate Supertrend
up = src - (multiplier * atr)
up1 = nz(up[1], up)
up := close[1] > up1 ? max(up, up1) : up
dn = src + (multiplier * atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? 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
// Plot Supertrend
upPlot = plot(showSupertrend ? (trend == 1 ? up : na) : 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 ? 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(showSupertrend ? (trend == 1 ? na : dn) : na, 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 ? 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))
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = (trend == 1 ? color.new(color.green, 80) : color.new(color.white, 0))
shortFillColor = (trend == -1 ? color.new(color.red, 80) : color.new(color.white, 0))
fill(mPlot, upPlot, title="UpTrend Highlighter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor)
// Alert conditions
alertcondition(buySignal, title="Custom Supertrend Buy", message="Custom Supertrend Buy!")
alertcondition(sellSignal, title="Custom Supertrend Sell", message="Custom Supertrend Sell!")
// Calculate DEMA
ema1 = ema(close, demaLength)
dema = 2 * ema1 - ema(ema1, demaLength)
// Plot DEMA with white color
plot(showDEMA ? dema : na, color=color.new(color.white, 0), title="DEMA", linewidth=2)
// Add push notification on mobile if buy and sell occurred
if (buySignal)
strategy.entry("Buy", strategy.long)
strategy.exit("Sell")
alert("Buy Signal - Supertrend")
if (sellSignal)
strategy.entry("Sell", strategy.short)
strategy.exit("Cover")
alert("Sell Signal - Supertrend")