Estrategia de tendencia de aprendizaje automático de latencia cero

ZLEMA ATR supertrend ML
Fecha de creación: 2025-09-19 15:06:40 Última modificación: 2025-09-19 15:06:40
Copiar: 0 Número de Visitas: 496
2
Seguir
319
Seguidores

Estrategia de tendencia de aprendizaje automático de latencia cero Estrategia de tendencia de aprendizaje automático de latencia cero

Mecanismo de doble confirmación: filtro de frecuencia de oscilación de 1,2 veces elimina directamente el 90% de las señales falsas

La lógica central de esta estrategia es simple y cruda: la EMA de cero retraso elimina el retraso de las medias móviles tradicionales, y la SuperTrend proporciona la confirmación de la dirección de la tendencia. Los dos indicadores deben estar a la vez a la baja o a la baja para abrir una posición, y este mecanismo de doble filtración reduce significativamente el efecto de las falsas rupturas en la retroalimentación. La configuración de cero retraso de 70 ciclos está equipada con un factor de fluctuación de 1.2 veces, que puede filtrar efectivamente el ruido del mercado y capturar solo los puntos de inflexión de tendencia reales.

La clave está en el cálculo de la volatilidad:*3) * mult, esta fórmula toma el valor máximo de ATR en 210 ciclos y lo multiplica por 1.2, asegurando que solo se desate la señal si se rompe un umbral de volatilidad lo suficientemente grande. Los datos experimentales muestran que esto reduce en aproximadamente un 40% las transacciones no válidas en comparación con la estrategia que utiliza un umbral fijo.

Diseño de pérdidas de ATR 3.0x: el control de riesgos es mejor que la estrategia tradicional de SuperTrend

La parte de SuperTrend utiliza el ATR de 14 períodos con una multiplicidad de 3.0, una combinación de parámetros que se mantiene estable en la mayoría de los entornos de mercado. En comparación con la configuración de 2.0 a 2.5 veces más común en el mercado, la multiplicidad de 3.0 veces, aunque se pierden algunas oportunidades de rebote a corto plazo, reduce significativamente los paros frecuentes en situaciones de crisis.

La configuración de stop-loss utiliza un porcentaje fijo de 1: 0% de stop-loss, 0.5% de stop-loss y un riesgo-beneficio de 2: 1. Esta configuración es adecuada para un entorno de comercio de alta frecuencia, pero hay que tener en cuenta que en los mercados de baja volatilidad puede haber un stop-loss demasiado sensible. Se recomienda una tolerancia adecuada de stop-loss hasta el 0.8% cuando el VIX es inferior a 15.

Administración de posiciones

En particular, cabe destacar el diseño de las alertas de salida: longTP_hit y longSL_hit determinan el estado de las posiciones a través de strategy.position_size, evitando la interferencia de las señales de repetición. Este diseño es esencial para el comercio de discos reales y puede evitar la repetición de la apertura de posiciones causada por la latencia de la red.

Recomendaciones de optimización de parámetros: estrategias de ajuste en diferentes entornos de mercado

Mercado de tendencias:length ajustable a 50, mult reducido a 1.0, mejora de la sensibilidad de la señal El mercado en crisisLength aumentado a 90, Factor mejorado a 3.5, reducción de brechas falsas Entorno de alta volatilidadCancelación de pérdidas ampliada a 1.0% y ajuste de la parada a 2.0% para adaptarse a mayores fluctuaciones de precios

La fórmula para calcular el retraso de Zero Lag EMA math.floor (((length - 1) / 2) asegura la velocidad de respuesta del indicador, pero en casos extremos aún puede haber retraso. Se recomienda una segunda confirmación de la combinación de indicadores de volumen de transacción y la suspensión de la señal de negociación cuando el volumen de transacción es inferior a la media de 20 ciclos.

Evaluación de desempeño en combate: los datos de retroalimentación no representan ganancias futuras

Según los datos de retroalimentación histórica, la estrategia funciona mejor en un entorno de mercado con una clara tendencia, pero es susceptible a pequeñas pérdidas continuas en la fase de liquidación horizontal. El rendimiento ajustado al riesgo es superior al índice de referencia en la mayoría de los períodos de prueba, pero existe el riesgo de un retiro máximo de más del 15%.

Algunas advertencias importantes

  • Estrategia con riesgo de pérdidas continuas, se recomienda una sola posición no superior al 10% del capital total
  • Los resultados de la retrospectiva histórica no garantizan los beneficios futuros, y los cambios en el entorno del mercado pueden afectar la estrategia.
  • Se requiere una estricta disciplina para detener los pérdidas y evitar la aplicación de estrategias de intervención de transacciones emocionales.
  • La variación de la tasa de variación entre las diferentes variedades es grande, se recomienda ajustar los parámetros de ajuste de acuerdo con el estándar específico
Código Fuente de la Estrategia
/*backtest
start: 2025-01-01 00:00:00
end: 2025-09-18 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/

//@version=5
strategy("Zero Lag + ML SuperTrend Strategy (Multi-Symbol)", overlay=true, 
     default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === Inputs ===
length      = input.int(70, "Zero Lag Length")
mult        = input.float(1.2, "Band Multiplier")
atrPeriod   = input.int(14, "ATR Period (SuperTrend)")
factor      = input.float(3.0, "ATR Multiplier (SuperTrend)")
tpPerc      = input.float(1.0, "Take Profit %")
slPerc      = input.float(0.5, "Stop Loss %")

// === Symbol Info ===
sym = syminfo.ticker

// === Zero Lag Trend ===
src  = close
lag  = math.floor((length - 1) / 2)
zlema = ta.ema(src + (src - src[lag]), length)
volatility = ta.highest(ta.atr(length), length*3) * mult

bullZL = close > zlema + volatility
bearZL = close < zlema - volatility

// === ML SuperTrend ===
atr = ta.atr(atrPeriod)
upperband = hl2 + factor * atr
lowerband = hl2 - factor * atr

var float trend = na
if close > nz(trend[1], hl2)
    trend := math.max(lowerband, nz(trend[1], hl2))
else
    trend := math.min(upperband, nz(trend[1], hl2))

bullST = close > trend
bearST = close < trend

// === Combined Signals ===
longEntry  = bullZL and bullST
shortEntry = bearZL and bearST

// === Strategy Execution ===
if (longEntry)
    strategy.entry("Long", strategy.long)
if (shortEntry)
    strategy.entry("Short", strategy.short)

// Exit conditions (fixed SL & TP)
longSL = strategy.position_avg_price * (1 - slPerc/100)
longTP = strategy.position_avg_price * (1 + tpPerc/100)

shortSL = strategy.position_avg_price * (1 + slPerc/100)
shortTP = strategy.position_avg_price * (1 - tpPerc/100)

strategy.exit("Exit Long",  from_entry="Long",  stop=longSL,  limit=longTP)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL, limit=shortTP)

// === Plotting ===
plot(zlema, "ZeroLagEMA", color=color.yellow)
plot(trend, "SuperTrend", color=color.blue)

// === Alerts for Webhook ===
// Entry alerts
alertcondition(longEntry, title="Long Entry", 
     message='{"action":"long","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortEntry, title="Short Entry", 
     message='{"action":"short","symbol":"{{ticker}}","price":{{close}}}')

// Exit alerts (triggered only on TP/SL)
longTP_hit  = strategy.position_size <= 0 and close >= longTP
longSL_hit  = strategy.position_size <= 0 and close <= longSL
shortTP_hit = strategy.position_size >= 0 and close <= shortTP
shortSL_hit = strategy.position_size >= 0 and close >= shortSL

alertcondition(longTP_hit, title="Long TP Hit", 
     message='{"action":"close_long","type":"tp","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(longSL_hit, title="Long SL Hit", 
     message='{"action":"close_long","type":"sl","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortTP_hit, title="Short TP Hit", 
     message='{"action":"close_short","type":"tp","symbol":"{{ticker}}","price":{{close}}}')

alertcondition(shortSL_hit, title="Short SL Hit", 
     message='{"action":"close_short","type":"sl","symbol":"{{ticker}}","price":{{close}}}')