
Esta estrategia utiliza canales de subida que se forman en las subidas y bajadas calculadas por el indicador de amplitud real promedio y el precio para generar señales de negociación cuando el precio rompe el canal. La estrategia tiene una destacada capacidad de seguimiento de tendencias.
Esta estrategia primero calcula el indicador ATR como una medida de la fluctuación de los precios, y luego combina los valores promedio de los precios más altos, más bajos y los precios de cierre para calcular el alza y la bajada. Cuando los precios suben y rompen la bajada, genera una señal de compra; cuando los precios bajan y rompen la bajada, genera una señal de venta. De esta manera, se forma un canal ascendente adaptado para seguir la tendencia de los precios.
Después de la salida a bolsa, la estrategia establece un objetivo de puntos de ganancias y puntos de pérdidas, se detiene cuando el precio alcanza el objetivo y se detiene si el retiro alcanza el punto de parada.
La mayor ventaja de esta estrategia reside en su excelente capacidad de seguimiento de tendencias. La vía ascendente se puede ajustar de manera adaptativa para capturar los cambios en la tendencia de los precios.
Uno de los principales riesgos de esta estrategia es que es fácil generar una mayor cantidad de períodos de posición libre. Cuando los precios están en estado de oscilación, a menudo causa que los canales de subida y bajada se activen con frecuencia, lo que genera una mayor cantidad de transacciones no válidas. Además, la configuración de los puntos de parada puede afectar directamente a los resultados finales.
Para reducir estos riesgos, se puede considerar la optimización de los parámetros ATR o ajustar el ancho de canal para que el canal esté más cerca de la tendencia real. Además, se puede combinar con otros indicadores para filtrar el tiempo de entrada al mercado.
Esta estrategia puede ser optimizada en los siguientes aspectos:
Optimización de los parámetros ATR. Se pueden probar diferentes parámetros de ciclo para que el ATR refleje mejor las fluctuaciones reales.
Optimización de la anchura del canal. Se pueden probar diferentes valores de multiplicación para determinar el parámetro óptimo.
Añadir filtros de otros indicadores. Por ejemplo, en combinación con el indicador MACD para determinar el punto de compra y venta, se puede reducir en cierta medida los intercambios no válidos.
Optimización de los puntos de parada y de parada. Prueba de la influencia de los diferentes parámetros en la tasa de ganancias final.
Considere la tasa de Sharpe o la tasa de ganancias y pérdidas como objetivo de optimización para evaluar la calidad de la estrategia de manera más integral.
La estrategia logra un excelente seguimiento de tendencias a través de un canal de ascenso adaptativo y un principio de ruptura. Al mismo tiempo, también tiene una lógica de stop-stop relativamente clara. Se espera que, mediante la optimización de ciertos parámetros y reglas, se mejore aún más la capacidad de seguimiento dinámico de la estrategia para que pueda aplicarse a un entorno de mercado más amplio.
/*backtest
start: 2024-02-26 00:00:00
end: 2024-02-26 20:20:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supertrend Strategy", overlay=true)
// Input parameters
atr_length = input.int(10, title="ATR Length")
multiplier = input.float(3.0, title="Multiplier")
target_points = input.int(100, title="Target Points")
stop_loss_points = input.int(50, title="Stop Loss Points")
// Calculate ATR and Supertrend
atr = ta.atr(atr_length)
upper_band = hlc3 + (multiplier * atr)
lower_band = hlc3 - (multiplier * atr)
is_uptrend = close > lower_band
is_downtrend = close < upper_band
trend_changed = (is_uptrend[1] and is_downtrend) or (is_downtrend[1] and is_uptrend)
// Strategy logic
long_condition = is_uptrend and trend_changed
short_condition = is_downtrend and trend_changed
// Plot Supertrend
plot(is_uptrend ? lower_band : na, color=color.green, title="Supertrend Up", style=plot.style_linebr)
plot(is_downtrend ? upper_band : na, color=color.red, title="Supertrend Down", style=plot.style_linebr)
// Strategy entry and exit
if long_condition
strategy.entry("Long", strategy.long)
if short_condition
strategy.entry("Short", strategy.short)
// Calculate target and stop loss levels
long_target = strategy.position_avg_price + target_points
long_stop_loss = strategy.position_avg_price - stop_loss_points
short_target = strategy.position_avg_price - target_points
short_stop_loss = strategy.position_avg_price + stop_loss_points
// Strategy exit
strategy.exit("Long Exit", "Long", limit=long_target, stop=long_stop_loss)
strategy.exit("Short Exit", "Short", limit=short_target, stop=short_stop_loss)