Esta estrategia está construida sobre la base del indicador Average True Range (ATR) para construir una línea de SuperTrend para juzgar la dirección de la tendencia del mercado y generar señales comerciales.
La estrategia calcula el ATR durante un cierto período y lo compara con el precio para determinar si el precio está dentro de un canal de tendencia alcista. Específicamente, primero calcula el ATR, luego utiliza el valor del ATR multiplicado por un factor para trazar las bandas superior e inferior. Cuando el precio es más alto que la banda superior, se identifica una tendencia alcista. Cuando el precio está por debajo de la banda inferior, se identifica una tendencia bajista. En una tendencia alcista, si el precio cambia de tendencia alcista a tendencia alcista, se genera una señal de compra. En una tendencia bajista, si el precio cambia de tendencia alcista a tendencia bajista, se activa una señal de venta.
La clave radica en la construcción del punto de referencia de juicio de tendencia - línea SuperTrend. La línea SuperTrend se basa en el ATR dinámicamente cambiante, que puede filtrar eficazmente el ruido del mercado y determinar la dirección de la tendencia principal. Mientras tanto, la línea SuperTrend tiene un cierto efecto de retraso, que ayuda a confirmar los puntos de inversión de tendencia y evitar la generación de señales comerciales incorrectas.
La mayor ventaja de esta estrategia es la combinación de la identificación de tendencias y las capacidades de seguimiento:
Los principales riesgos de esta estrategia incluyen:
Las soluciones posibles incluyen la optimización de parámetros como el período ATR y el factor SuperTrend, la combinación con otros indicadores para la verificación y la reducción de las probabilidades de señal incorrecta.
Existe un espacio de optimización adicional en áreas como:
Una optimización profunda promete aumentar aún más la estabilidad, la adaptabilidad y la rentabilidad de la estrategia.
La estrategia demuestra una gran estabilidad, fiabilidad y rentabilidad en general. La construcción de la línea SuperTrend para el juicio de tendencias y señales comerciales principales es su mayor destaque. Pero existe cierto grado de efecto de retraso y riesgos de error de juicio. La optimización de parámetros y modelos promete un mejor rendimiento de la estrategia. En resumen, como una estrategia típica basada en tendencias, vale la pena verificarla y utilizarla en el comercio en vivo.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Supertrend Strategy", overlay = true) Periods = input(10, title="ATR Period") src = input(hl2, title="Source") Multiplier = input(3.0, title="ATR Multiplier", step=0.1) changeATR = input(true, title="Change ATR Calculation Method?") showsignals = input(true, title="Show Buy/Sell Signals?") highlighting = input(true, title="Highlighter On/Off?") atr2 = sma(tr, Periods) atr = changeATR ? atr(Periods) : atr2 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 upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green) 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.green, transp=0) plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0) dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red) 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.red, transp=0) plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0) 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) fill(mPlot, dnPlot, title="DownTrend Highlighter", color=shortFillColor) strategy.entry("Buy", strategy.long, when=buySignal) strategy.entry("Sell", strategy.short, when=sellSignal) alertcondition(buySignal, title="SuperTrend Buy", message="SuperTrend Buy!") alertcondition(sellSignal, title="SuperTrend Sell", message="SuperTrend Sell!") changeCond = trend != trend[1] alertcondition(changeCond, title="SuperTrend Direction Change", message="SuperTrend has changed direction!")