Estrategia de seguimiento de tendencias de ondas de múltiples marcos temporales

WT MTF WaveTrend ATR Trailing Stop TREND-FOLLOWING HLC3
Fecha de creación: 2025-07-07 16:04:18 Última modificación: 2025-07-07 16:04:18
Copiar: 0 Número de Visitas: 233
2
Seguir
319
Seguidores

Estrategia de seguimiento de tendencias de ondas de múltiples marcos temporales Estrategia de seguimiento de tendencias de ondas de múltiples marcos temporales

Descripción general

La estrategia de seguimiento de tendencias de ondas de múltiples marcos temporales es un sistema de seguimiento de tendencias de múltiples marcos temporales basado en el indicador WaveTrend. La estrategia está optimizada específicamente para los marcos temporales de 15 minutos y utiliza un método de alineación de marcos temporales de tres niveles: el WaveTrend de 240 minutos sirve como un filtro de tendencia macroeconómico, el WaveTrend de 30 minutos sirve para la confirmación de la dinámica y el WaveTrend de 15 minutos se encarga de la generación de señales.

Principio de estrategia

El principio central de esta estrategia es el uso de la sinergia de los indicadores de WaveTrend en varios marcos de tiempo para identificar la dirección de la tendencia y los puntos de inflexión. El indicador de WaveTrend en sí mismo es un indicador técnico que mide el estado de sobrecompra y sobreventa de los precios mediante el cálculo de la relación entre el precio y su promedio móvil indicador (EMA) y luego combina el factor de volatilidad.

El proceso de implementación de la estrategia es el siguiente:

  1. Primero, define la función WaveTrend, que calcula los dos valores principales (wt1 y wt2):

    • El precio calculado es el EMA (generalmente HLC3)
    • Calcula el diferencial absoluto entre el precio y el EMA como medida de la volatilidad
    • Desviación del precio relativo de la construcción de la homogeneización (ci)
    • Calcule el EMA de ci como wt1, y el SMA de wt1 como wt2
  2. La estrategia consiste en aplicar el indicador WaveTrend en tres marcos de tiempo:

    • Gráfico de 15 minutos (en el marco de tiempo actual) para la generación de señales específicas
    • Gráfico de 30 minutos para confirmar la dirección de la dinámica intermedia
    • El gráfico de 60 minutos ofrece un contexto de tendencias más largo
  3. Condiciones de entrada:

    • Haga más: cuando wt1 en el gráfico de 15 minutos atraviesa wt2 hacia arriba, y el valor de wt1 es mayor que 60, mientras que en el gráfico de 30 minutos la tendencia es hacia arriba (wt1 > wt2)
    • Vacío: cuando el wt1 en el gráfico de 15 minutos atraviesa el wt2 hacia abajo, y el valor de wt1 es menor que 20, mientras que en el gráfico de 30 minutos la tendencia es hacia abajo (wt1 < wt2)
  4. El sistema de suspensión y salida de juego es un sistema complejo:

    • Detención marginal de porcentaje fijo
    • Detención de seguimiento basada en ganancias
    • Detención de protección basada en el retiro máximo de ganancias
  5. Las estrategias registran y rastrean el precio de entrada, los pilares de entrada y la rentabilidad máxima de cada operación, que se utilizan para ajustar dinámicamente el punto de salida.

Ventajas estratégicas

  1. Conjunto de marcos de tiempo múltiplesAl analizar el indicador WaveTrend en diferentes marcos de tiempo, la estrategia puede capturar la tendencia del mercado de manera más completa, reducir la interferencia de falsas señales y mejorar la precisión de las operaciones. El marco de tiempo bajo proporciona un punto de entrada preciso y el marco de tiempo alto asegura que la dirección de las operaciones coincida con la tendencia principal.

  2. Mecanismo de detención de pérdidas dinámicasLa estrategia utiliza un triple sistema de protección contra pérdidas, que incluye pérdidas por ciento fijas, pérdidas de seguimiento basadas en ganancias y mecanismos de protección de la máxima ganancia. Esta estrategia de protección contra pérdidas compleja permite capturar al máximo los beneficios de la tendencia al mismo tiempo que protege el capital.

  3. Sistema de retroalimentación visualLos puntos de entrada y salida de las operaciones se indican intuitivamente en el gráfico con las etiquetas de color ((🔴) y contienen información sobre los pilares para facilitar el análisis de retrospectiva y el reporte de operaciones.

  4. Los parámetros son flexibles: La estrategia ofrece varios parámetros personalizables, incluyendo el porcentaje de seguimiento de los estancamientos, el porcentaje de seguimiento y el porcentaje máximo de retiro permitido, que el usuario puede ajustar según sus propias preferencias de riesgo y las condiciones del mercado.

  5. La estructura del código es clara.: La estrategia adopta un diseño funcional, las partes de la lógica son claras, fáciles de entender y mantener, pero también son fáciles de optimizar y ampliar.

Riesgo estratégico

  1. La respuesta a la reversión de la tendencia está rezagadaComo una estrategia de seguimiento de la tendencia, puede haber una reacción de retraso en los puntos de cambio de tendencia, lo que lleva a una mayor retroceso en el caso de una reversión. La solución es ajustar los parámetros de seguimiento de stop loss o agregar un indicador adicional de cambio de tendencia como ayuda.

  2. Los mercados fluctuantes no están funcionando bien: En un entorno de mercado de corrección horizontal o de gran volatilidad, la estrategia puede generar falsas señales y paros frecuentes, lo que lleva a pérdidas continuas. Se recomienda activar la estrategia solo cuando se confirme que el mercado está en una tendencia evidente.

  3. Sensibilidad de los parámetrosLa estrategia es muy sensible a la configuración de los parámetros de WaveTrend (n1 = 10, n2 = 21) y a los parámetros de stop loss. Los parámetros demasiado flojos pueden causar un stop loss demasiado tarde y los parámetros demasiado apretados pueden salir prematuramente de una tendencia favorable. Estos parámetros deben optimizarse a través de la retroalimentación histórica.

  4. Riesgo de liquidez: El código utiliza de forma predeterminada el uso de la cantidad relativa de capital ((10%) para negociar, pero en mercados con baja liquidez, esto puede causar un aumento de puntos de deslizamiento o dificultad para negociar. El tamaño de la posición debe ajustarse según la liquidez de la variedad de negociación real.

  5. Solicitud de dependencia de datos externosLa estrategia utiliza la función request.security (..) para obtener datos de marcos de tiempo más altos, lo que puede suponer un riesgo de retraso o de no disponibilidad de datos en algunas plataformas de negociación. Se debe asegurar que el entorno de negociación admita solicitudes de datos de marcos de tiempo múltiples.

Dirección de optimización de la estrategia

  1. Ajuste de parámetros dinámicos: La estrategia actual utiliza parámetros de WaveTrend y porcentajes de pérdidas fijos, se puede considerar ajustar estos parámetros de acuerdo con la volatilidad del mercado (como el ATR). Por ejemplo, aumentar la distancia de parada en entornos de alta volatilidad y endurecer los parámetros de parada en entornos de baja volatilidad para adaptarse a diferentes condiciones del mercado.

  2. Filtrado de intensidad de tendenciaSe puede agregar ADX o indicadores similares para medir la fuerza de la tendencia, ejecutando operaciones solo cuando la fuerza de la tendencia supera un umbral específico, para evitar exceso de operaciones en mercados de tendencia débil o horizontal.

  3. Optimización de las opciones de marcos de tiempoLas estrategias actuales utilizan marcos de tiempo de 15 minutos, 30 minutos y 60 minutos, para encontrar la combinación óptima de marcos de tiempo mediante el análisis de retroceso, o para ajustar los marcos de tiempo según las características de las diferentes variedades de operaciones.

  4. Confirmación del volumen de la transacción: integrar los indicadores de volumen de transacciones en las condiciones de entrada, asegurando que la entrada se realice solo en una tendencia apoyada por el volumen de transacciones, y mejorar la calidad de la señal.

  5. Mejoras en el mecanismo de salidaLa salida actual depende principalmente del deterioro de los estímulos, y se puede considerar la adición de objetivos de ganancias o señales de reversión basadas en el indicador WaveTrend en sí como condición de salida activa, en lugar de depender únicamente del deterioro pasivo.

  6. Logística de gestión de posicionesLas estrategias actuales utilizan un porcentaje fijo de gestión de fondos, se puede considerar ajustar el tamaño de la posición de forma dinámica en función de la volatilidad o la intensidad de la señal, aumentar la posición en operaciones más seguras, reducir la apertura de riesgo en operaciones con mayor incertidumbre.

Resumir

La estrategia de seguimiento de tendencias de ondas de marco temporal múltiple es un sistema de seguimiento de tendencias bien diseñado que capta efectivamente las tendencias del mercado y controla el riesgo a través de la sinergia de los indicadores de WaveTrend de marco temporal múltiple, combinado con un mecanismo de seguimiento de pérdidas flexible. La principal ventaja de la estrategia reside en su perspectiva integral del mercado y su método de gestión de riesgos dinámico, pero puede enfrentar desafíos en mercados de volatilidad.

Código Fuente de la Estrategia
/*backtest
start: 2024-07-07 00:00:00
end: 2024-11-28 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("WT-FLOW: MTF WaveTrend Trend-Follower", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// === WaveTrend Fonksiyonu ===
waveTrend(_src, _n1, _n2) =>
    esa = ta.ema(_src, _n1)
    d = ta.ema(math.abs(_src - esa), _n1)
    ci = (_src - esa) / (0.015 * d)
    wt1 = ta.ema(ci, _n2)
    wt2 = ta.sma(wt1, 4)
    [wt1, wt2]

// === Giriş Fiyatı ve Maksimum Kazanç Değişkenleri ===
var float longEntryPrice = na
var float shortEntryPrice = na
var float maxGainLong = 0.0
var float maxGainShort = 0.0
var int longEntryBar = na
var int shortEntryBar = na
var string currentPosition = ""

// === WT Değerlerini Al (Farklı Zaman Dilimleri) ===
var int n1 = 10
var int n2 = 21
ap = hlc3
[wt1_15, wt2_15] = waveTrend(ap, n1, n2)
[wt1_30, wt2_30] = request.security(syminfo.tickerid, "30", waveTrend(ap, n1, n2))
[wt1_60, wt2_60] = request.security(syminfo.tickerid, "60", waveTrend(ap, n1, n2))

// === Kullanıcı Girdileri: Trailing Stop Parametreleri ===
marginStopPerc = input.float(2.0, "Marjinal Stop (%)")
trailTriggerPerc = input.float(1.5, "Trailing Tetikleyici (%)")
trailFollowPerc = input.float(0.8, "Trailing Takip (%)")
trailMaxDropPerc = input.float(3.0, "Maksimum Düşüş (%)")

// === ATR için tr hesaplaması ===
tr = ta.tr(true)

// === Sinyal Koşulları ===
trendUp = wt1_30 > wt2_30
trendDown = wt1_30 < wt2_30
entryLong = ta.crossover(wt1_15, wt2_15) and wt1_15 > -60 and trendUp
entryShort = ta.crossunder(wt1_15, wt2_15) and wt1_15 < 20 and trendDown

// === Pozisyon Girişleri ===
if entryLong and currentPosition != "Long"
    strategy.entry("Long", strategy.long)
    longEntryPrice := close
    maxGainLong := 0.0
    longEntryBar := bar_index
    currentPosition := "Long"
    label.new(bar_index, high + 2 * tr, "🟢 Giriş Long #" + str.tostring(bar_index), style=label.style_label_up, color=color.green, textcolor=color.white)

if entryShort and currentPosition != "Short"
    strategy.entry("Short", strategy.short)
    shortEntryPrice := close
    maxGainShort := 0.0
    shortEntryBar := bar_index
    currentPosition := "Short"
    label.new(bar_index, low - 2 * tr, "🔴 Giriş Short #" + str.tostring(bar_index), style=label.style_label_down, color=color.red, textcolor=color.white)

// === Trailing Stop ve Marjinal Stop Seviyeleri ===
if currentPosition == "Long" and not na(longEntryPrice)
    gainFromEntry = (close - longEntryPrice) / longEntryPrice * 100
    maxGainLong := math.max(maxGainLong, gainFromEntry)
    trailTriggerReached = gainFromEntry >= trailTriggerPerc
    trailStop = close * (1 - trailFollowPerc / 100)
    dropStop = longEntryPrice * (1 + (maxGainLong - trailMaxDropPerc) / 100)
    finalStop = trailTriggerReached ? math.max(trailStop, dropStop) : longEntryPrice * (1 - marginStopPerc / 100)
    if close <= finalStop
        strategy.close("Long")
        label.new(bar_index, low - 2 * tr, "❅ Çıkış Long #" + str.tostring(longEntryBar), style=label.style_label_down, color=color.red, textcolor=color.white)
        longEntryPrice := na
        longEntryBar := na
        currentPosition := ""

if currentPosition == "Short" and not na(shortEntryPrice)
    gainFromEntryShort = (shortEntryPrice - close) / shortEntryPrice * 100
    maxGainShort := math.max(maxGainShort, gainFromEntryShort)
    trailTriggerReachedShort = gainFromEntryShort >= trailTriggerPerc
    trailStopShort = close * (1 + trailFollowPerc / 100)
    dropStopShort = shortEntryPrice * (1 - (maxGainShort - trailMaxDropPerc) / 100)
    finalStopShort = trailTriggerReachedShort ? math.min(trailStopShort, dropStopShort) : shortEntryPrice * (1 + marginStopPerc / 100)
    if close >= finalStopShort
        strategy.close("Short")
        label.new(bar_index, high + 2 * tr, "❄ Çıkış Short #" + str.tostring(shortEntryBar), style=label.style_label_up, color=color.green, textcolor=color.white)
        shortEntryPrice := na
        shortEntryBar := na
        currentPosition := ""