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

Estrategia dinámica de seguimiento de tendencias de onda

El autor:¿ Qué pasa?, Fecha: 2024-12-20 16:17:27
Las etiquetas:El EMALa SMAHLC- ¿Qué es?

img

Resumen general

Esta estrategia es un sistema de trading cuantitativo basado en el indicador WaveTrend y el seguimiento de tendencias. Combina el indicador WaveTrend con promedios móviles para formar un marco completo de decisión de trading. La estrategia utiliza EMA y SMA para calcular los valores de tendencia de onda y las tendencias generales del mercado, identifica los puntos de inflexión del mercado a través de umbrales de sobrecompra y sobreventa, e incorpora filtros de tendencia para mejorar la precisión de trading.

Principio de la estrategia

El núcleo de la estrategia se ejecuta a través de los siguientes pasos:

  1. Calcular el precio medio de HLC (promedio de los precios altos, bajos y de cierre)
  2. Aplanar la media HLC utilizando la EMA para obtener la línea ESA
  3. Calcular y suavizar la desviación entre la media HLC y la línea ESA utilizando la EMA
  4. Calcular el valor de K basado en la desviación y suavizado dos veces con EMA para obtener la línea final TCI
  5. Utilice la SMA para calcular la línea de tendencia a largo plazo como filtro de tendencia
  6. Generar señales de negociación cuando la línea TCI rompe los niveles de sobrecompra/sobreventa y se alinea con la dirección de la tendencia

Ventajas estratégicas

  1. Alta fiabilidad de la señal: reduce eficazmente las señales falsas mediante la combinación del indicador WaveTrend y el filtro de tendencia
  2. Control exhaustivo del riesgo: Limitaciones claras de sobrecompra/sobreventa para el stop-loss oportuno
  3. Gran adaptabilidad: los parámetros de la estrategia pueden ajustarse de forma flexible a las diferentes condiciones del mercado
  4. Lógica operativa clara: condiciones de entrada y salida explícitas, fáciles de ejecutar
  5. Análisis exhaustivo: considera tanto las fluctuaciones a corto plazo como las tendencias a largo plazo, mejorando la estabilidad comercial

Riesgos estratégicos

  1. Riesgo de reversión de la tendencia: Puede retrasarse en mercados volátiles
  2. Sensibilidad de los parámetros: diferentes combinaciones de parámetros pueden dar lugar a resultados drásticamente diferentes.
  3. Adaptabilidad del mercado: puede generar operaciones frecuentes en mercados diversos
  4. Gestión de capital: requiere un control razonable de la posición para manejar la volatilidad del mercado
  5. Dependencia técnica: la dependencia de los indicadores técnicos puede pasar por alto factores fundamentales

Direcciones para la optimización de la estrategia

  1. Añadir un filtro de volatilidad: ajustar los umbrales de negociación durante los períodos de alta volatilidad
  2. Incorporar análisis de marcos de tiempo múltiples: Combinar señales de diferentes marcos de tiempo para mejorar la precisión
  3. Optimizar la adaptación de los parámetros: ajustar dinámicamente los parámetros de los indicadores en función de las condiciones del mercado
  4. Mejorar la gestión de las pérdidas y ganancias: añadir mecanismos dinámicos de toma de ganancias y parada de pérdidas
  5. Añadir confirmación de volumen: Incorporar análisis de volumen para mejorar la fiabilidad de la señal

Resumen de las actividades

La estrategia construye un sistema de trading robusto mediante la combinación inteligente del indicador WaveTrend con filtros de tendencia.


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

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mojomarv

//@version=6
strategy("WaveTrend with Trend Filter", shorttitle="WaveTrend Trend", overlay=false, initial_capital = 100000)

// Inputs for the WaveTrend indicator
inputLength = input.int(10, title="Channel Length", minval=1)
avgLength = input.int(21, title="Average Length", minval=1)
obLevel = input.float(45, title="Overbought Level")
osLevel = input.float(-45, title="Oversold Level")
showSignals = input.bool(true, title="Show Buy/Sell Signals")

// Trend filter input
maLength = input.int(500, title="Trend MA Length", minval=1)

// Calculate WaveTrend values
hlc_avg = (high + low + close) / 3  // Renamed from hlc3 to hlc_avg
esa = ta.ema(hlc_avg, inputLength)
d = ta.ema(math.abs(hlc_avg - esa), inputLength)
k = (hlc_avg - esa) / (0.015 * d)
ci = ta.ema(k, avgLength)
tci = ta.ema(ci, avgLength)

// Moving average for trend detection
trendMA = ta.sma(close, maLength)

// Determine trend
bullishTrend = close > trendMA
bearishTrend = close < trendMA

// Generate signals with trend filter
crossUp = ta.crossover(tci, osLevel)
crossDown = ta.crossunder(tci, obLevel)

// Plot WaveTrend
plot(tci, title="WaveTrend Line", color=color.new(color.blue, 0), linewidth=2)
hline(obLevel, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(osLevel, "Oversold", color=color.green, linestyle=hline.style_dotted)
hline(0, "Zero Line", color=color.gray, linestyle=hline.style_solid)

// Plot moving average for trend visualization
plot(trendMA, title="Trend MA", color=color.orange, linewidth=1)

// Plot buy and sell signals
plotshape(showSignals and crossUp, title="Buy Signal", location=location.belowbar, style=shape.labelup, color=color.new(color.green, 0), size=size.small)
plotshape(showSignals and crossDown, title="Sell Signal", location=location.abovebar, style=shape.labeldown, color=color.new(color.red, 0), size=size.small)

// Alerts
alertcondition(crossUp, title="Buy Alert", message="WaveTrend Buy Signal (Trend Confirmed)")
alertcondition(crossDown, title="Sell Alert", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bullishTrend, title="bull", message="WaveTrend Sell Signal (Trend Confirmed)")
alertcondition(bearishTrend, title="bear", message="WaveTrend Sell Signal (Trend Confirmed)")

// Strategy logic
if crossUp and bullishTrend
    strategy.entry("Long", strategy.long)

if crossDown
    strategy.close("Long")

if crossDown and bearishTrend
    strategy.entry("Short", strategy.short)

if crossUp
    strategy.close("Short")

Relacionados

Más.