Algoritmo de combinación dinámica de la estrategia de negociación de tendencias Supertrend de períodos múltiples

ATR MTF EMA RSI
Fecha de creación: 2025-01-06 16:38:12 Última modificación: 2025-01-06 16:38:12
Copiar: 2 Número de Visitas: 482
1
Seguir
1617
Seguidores

Algoritmo de combinación dinámica de la estrategia de negociación de tendencias Supertrend de períodos múltiples

Descripción general

La estrategia es un sistema de seguimiento de tendencias adaptativo basado en el indicador Supertrend de múltiples marcos temporales. Construye un marco integral de identificación de tendencias integrando señales de Supertrend de tres períodos de tiempo diferentes: 15 minutos, 5 minutos y 2 minutos. La estrategia utiliza filtros de tiempo para garantizar que se ejecute solo durante las horas comerciales más activas y cierra automáticamente las posiciones al final del día para evitar el riesgo nocturno.

Principio de estrategia

El núcleo de la estrategia es confirmar las señales comerciales a través de la consistencia de la tendencia en múltiples períodos de tiempo. Específicamente:

  1. La línea de Supertendencia se calcula para cada período de tiempo utilizando el período ATR y el factor de multiplicación.
  2. Se activa una compra cuando aparecen señales alcistas en los tres marcos temporales (el precio está por encima de la línea de supertendencia).
  3. Una venta se activa cuando el precio cae por debajo de la línea de supertendencia de 5 minutos o llega al final del día de negociación.
  4. Controle el horario comercial estableciendo la zona horaria y el filtro de la sesión comercial (predeterminado: 09:30 a 15:30).

Ventajas estratégicas

  1. La confirmación de tendencias multidimensionales mejora la confiabilidad de la señal y reduce eficazmente el riesgo de avances falsos.
  2. La configuración de los parámetros de Supertrend adaptativo permite que la estrategia se adapte a diferentes entornos de volatilidad del mercado.
  3. El estricto mecanismo de gestión del tiempo evita interferencias causadas por períodos comerciales ineficientes.
  4. La interfaz visual clara muestra el estado de la tendencia de todos los períodos de tiempo.
  5. El sistema de gestión de posición flexible admite la configuración de porcentajes.

Riesgo estratégico

  1. En un mercado lateral y volátil, pueden generarse demasiadas señales comerciales, lo que aumenta los costos de transacción.
  2. El uso de múltiples condiciones de filtrado puede provocar que se pierdan algunas oportunidades potencialmente rentables.
  3. Depende de la optimización de parámetros y diferentes entornos de mercado pueden requerir un ajuste de parámetros.
  4. La complejidad computacional es alta y puede haber problemas con la eficiencia de ejecución del programa.

Dirección de optimización de la estrategia

  1. Introducir un mecanismo adaptativo de volatilidad para ajustar dinámicamente los parámetros de Supertrend según las condiciones del mercado.
  2. Agregue indicadores de confirmación de volumen para mejorar la precisión del juicio de tendencias.
  3. Desarrollar algoritmos inteligentes de filtrado de tiempo para identificar automáticamente los mejores horarios de negociación.
  4. Optimizar los algoritmos de gestión de posiciones para lograr un control de riesgos más sofisticado.
  5. Añadir un módulo de clasificación del entorno de mercado y adoptar estrategias diferenciadas en función de las diferentes características del mercado.

Resumir

Esta estrategia construye un sistema comercial sólido a través del análisis de tendencias de múltiples períodos de tiempo y un estricto sistema de control de riesgos. Si bien hay cierto margen de optimización, su lógica central es sólida y adecuada para un mayor desarrollo y aplicación en el mundo real. El diseño modular del sistema también proporciona una buena base para una futura expansión.

Código Fuente de la Estrategia
/*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.")