En la carga de los recursos... Cargando...

Algorismo de negociación de tendencias dinámicas de supertrend de marcos de tiempo múltiples

El autor:¿ Qué pasa?, Fecha: 2025-01-06 16:38:12
Las etiquetas:El ATRFFT más largoEl EMAIndicador de riesgo

img

Resumen general

Esta estrategia es un sistema de seguimiento de tendencias adaptativo basado en el indicador Multi-Timeframe Supertrend. Integra señales de Supertrend de marcos de tiempo de 15 minutos, 5 minutos y 2 minutos para construir un marco integral de identificación de tendencias. La estrategia emplea un filtro de tiempo para garantizar la operación solo durante las sesiones de negociación más activas y cierra automáticamente las posiciones al final del día para evitar el riesgo de la noche a la mañana.

Principios de estrategia

El mecanismo básico se basa en la consistencia de la tendencia a través de múltiples marcos de tiempo para confirmar las señales comerciales.

  1. Calcula las líneas de Supertrend utilizando el período ATR y el factor multiplicador para cada período de tiempo.
  2. Los activadores compran señales cuando las condiciones alcistas se alinean en los tres marcos de tiempo (precio por encima de las líneas de Supertrend).
  3. Los iniciados venden señales cuando el precio se rompe por debajo de la línea Supertrend de 5 minutos o llega al final del día de negociación.
  4. Controla las horas de negociación a través de la configuración de la zona horaria y el filtro de sesión (por defecto 09:30-15:30).

Ventajas estratégicas

  1. La confirmación multidimensional de tendencias mejora la fiabilidad de la señal y reduce los riesgos de ruptura falsa.
  2. Los parámetros de Supertrend adaptativos permiten ajustar la estrategia a diferentes entornos de volatilidad del mercado.
  3. Un mecanismo de gestión del tiempo estricto elimina las interferencias de los períodos de negociación ineficientes.
  4. La interfaz de visualización clara muestra el estado de la tendencia en todos los plazos.
  5. El sistema flexible de gestión de posiciones admite una configuración basada en el porcentaje.

Riesgos estratégicos

  1. Puede generar señales comerciales excesivas en mercados variados, aumentando los costos de transacción.
  2. Las condiciones de filtración múltiples pueden causar oportunidades rentables perdidas.
  3. La dependencia de optimización de parámetros requiere ajustes para diferentes entornos de mercado.
  4. La alta complejidad computacional puede conducir a problemas de eficiencia de ejecución.

Direcciones de optimización

  1. Introducir un mecanismo adaptativo de volatilidad para ajustar dinámicamente los parámetros de Supertrend.
  2. Añadir indicadores de confirmación de volumen para mejorar la precisión de la evaluación de la tendencia.
  3. Desarrollar un algoritmo inteligente de filtrado de tiempo para identificar automáticamente las sesiones de negociación óptimas.
  4. Optimizar el algoritmo de gestión de posiciones para un control de riesgos más preciso.
  5. Añadir el módulo de clasificación del entorno de mercado para implementar estrategias diferenciadas para diversas características del mercado.

Resumen de las actividades

La estrategia construye un sistema de trading robusto a través de análisis de tendencias de múltiples marcos de tiempo y mecanismos estrictos de control de riesgos.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Multi-Timeframe Supertrend Strategy", 
         overlay=true, 
         shorttitle="MTF Supertrend TF", 
         default_qty_type=strategy.percent_of_equity, 
         default_qty_value=100, 
         initial_capital=50000, 
         currency=currency.USD)

// === Input Parameters === //
atrPeriod = input.int(title="ATR Period", defval=10, minval=1)
factor = input.float(title="Factor", defval=3.0, step=0.1)

// === Time Filter Parameters === //
// Define the trading session using input.session
// Format: "HHMM-HHMM", e.g., "0930-1530"
sessionInput = input("0930-1530", title="Trading Session")

// Specify the timezone (e.g., "Europe/Istanbul")
// Refer to the list of supported timezones: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
timezoneInput = input.string("Europe/Istanbul", title="Timezone", tooltip="Specify a valid IANA timezone (e.g., 'Europe/Istanbul', 'America/New_York').")

// === Calculate Supertrend for Different Timeframes === //
symbol = syminfo.tickerid

// 15-Minute Supertrend
[st_15m, dir_15m] = request.security(symbol, "15", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 5-Minute Supertrend
[st_5m, dir_5m] = request.security(symbol, "5", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// 2-Minute Supertrend
[st_2m, dir_2m] = request.security(symbol, "2", ta.supertrend(factor, atrPeriod), lookahead=barmerge.lookahead_off)

// === Current Timeframe Supertrend === //
[st_current, dir_current] = ta.supertrend(factor, atrPeriod)

// === Time Filter: Check if Current Bar is Within the Trading Session === //
in_session = true

// === Define Trend Directions Based on Supertrend === //
is_up_15m = close > st_15m
is_up_5m  = close > st_5m
is_up_2m  = close > st_2m
is_up_current = close > st_current

// === Buy Condition === //
buyCondition = is_up_15m and is_up_5m and is_up_2m and is_up_current and in_session and strategy.position_size == 0

// === Sell Conditions === //
// 1. Price falls below the 5-minute Supertrend during trading session
sellCondition1 = close < st_5m

// 2. End of Trading Day: Sell at the close of the trading session
is_new_day = ta.change(time("D"))
sellCondition2 = not in_session and is_new_day

// Combined Sell Condition: Only if in Position
sellSignal = (sellCondition1 and in_session) or sellCondition2
sellCondition = sellSignal and strategy.position_size > 0

// === Execute Trades === //
if (buyCondition)
    strategy.entry("Buy", strategy.long)

if (sellCondition)
    strategy.close("Buy")

// === Plot Supertrend Lines === //
// Plotting current timeframe Supertrend
plot(st_current, title="Current TF Supertrend", color=is_up_current ? color.green : color.red, linewidth=2, style=plot.style_line)

// Plotting higher timeframe Supertrend lines
plot(st_15m, title="15m Supertrend", color=is_up_15m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_5m, title="5m Supertrend", color=is_up_5m ? color.green : color.red, linewidth=1, style=plot.style_line)
plot(st_2m, title="2m Supertrend", color=is_up_2m ? color.green : color.red, linewidth=1, style=plot.style_line)

// === Plot Buy and Sell Signals === //
plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, 
          color=color.green, style=shape.labelup, text="BUY", size=size.small)

plotshape(series=sellCondition, title="Sell Signal", location=location.abovebar, 
          color=color.red, style=shape.labeldown, text="SELL", size=size.small)

// === Optional: Background Color to Indicate Position === //
bgcolor(strategy.position_size > 0 ? color.new(color.green, 90) : na, title="In Position Background")

// === Alerts === //
// Create alerts for Buy and Sell signals
alertcondition(buyCondition, title="Buy Alert", message="Buy signal generated by MTF Supertrend Strategy with Time Filter.")
alertcondition(sellCondition, title="Sell Alert", message="Sell signal generated by MTF Supertrend Strategy with Time Filter.")


Relacionados

Más.