
Esta estrategia se basa en el indicador de la amplitud real media (Average True Range, ATR) para construir el canal SuperTrend, generando señales de compra y venta en función de la ruptura de precios en el canal SuperTrend. La estrategia combina las ventajas del seguimiento de tendencias y la gestión de stop loss para seguir eficazmente la dirección de la tendencia.
La órbita superior y inferior del canal de hipertrend se calculan con la siguiente fórmula:
El precio de salida = (precio máximo + precio mínimo) / 2 + ATR (n) * Factor La línea inferior = (precio más alto + precio más bajo) / 2 - ATR (n) * factor
Donde, ATR ((n) representa la amplitud real promedio de n días, y el factor es un parámetro ajustable, por defecto 3.
Cuando el precio de cierre está por encima de la línea de alza, es una señal de ventaja, y cuando el precio de cierre está por debajo de la línea de baja, es una señal de ventaja. La estrategia determina la entrada y la salida del mercado según las señales de venta y ventaja.
La solución al riesgo:
Esta estrategia utiliza el canal de hipertrend para realizar el seguimiento de tendencias y el manejo de pérdidas. La correspondencia de los parámetros ATR y de los factores es fundamental para la eficacia de la estrategia. El siguiente paso será optimizar aún más la estrategia en términos de optimización de parámetros, filtración de señales, etc., para que pueda adaptarse a un entorno de mercado más complejo.
/*backtest
start: 2023-01-11 00:00:00
end: 2024-01-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Backtest", shorttitle="STBT", overlay=true)
// Input for ATR Length
atrLength = input.int(10, title="ATR Length", minval=1)
atrFactor = input.float(3.0, title="Factor", minval=0.01, step=0.01)
// Calculate SuperTrend
[supertrend, direction] = ta.supertrend(atrFactor, atrLength)
supertrend := barstate.isfirst ? na : supertrend
// Define entry and exit conditions
longCondition = ta.crossover(close, supertrend)
shortCondition = ta.crossunder(close, supertrend)
// Plot the SuperTrend
plot(supertrend, color=color.new(color.blue, 0), title="SuperTrend")
// Plot Buy and Sell signals
plotshape(series=longCondition, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal")
plotshape(series=shortCondition, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")
// Strategy Entry and Exit
strategy.entry("Long", strategy.long, when=longCondition)
strategy.entry("Short", strategy.short, when=shortCondition)