Estrategia de seguimiento de tendencia de media móvil dual


Fecha de creación: 2024-03-22 13:56:44 Última modificación: 2024-03-22 13:56:44
Copiar: 1 Número de Visitas: 501
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencia de media móvil dual

Descripción general

La estrategia utiliza la intersección de dos medias móviles para determinar el cambio de tendencia en el mercado y realizar operaciones de compra y venta en función de la tendencia. Cuando el promedio corto atraviesa el promedio largo, se hace más y cuando el promedio corto atraviesa el promedio largo, se hace un espacio para seguir la dirección de la tendencia.

Principio de la estrategia

El núcleo de la estrategia son dos medias móviles: una media rápida (de 32 periodos por defecto) y una media lenta (de 32 periodos por defecto, ajustable a través de parámetros). Cuando el precio de cierre sube/baja a través de los canales formados por estas dos medias, la estrategia genera una señal de compra o venta:

  • Haga más cuando cruza la línea media rápida y la línea media lenta
  • Cuando la línea media rápida atraviesa la línea media lenta, haga espacio
  • Cuando ya tiene un par, el promedio rápido pasa por el promedio lento, el par y el vacío
  • Una vez que se tiene el boleto vacío, se recorre la línea media rápida en la línea media lenta, se vacía y se hace más

A través de esta forma de cruce equilíneo, la estrategia puede seguir la tendencia, manteniendo más órdenes en una tendencia alcista y más órdenes en una tendencia bajista, hasta que la tendencia se vuelva hacia atrás.

Análisis de ventajas

  1. Seguimiento de tendencias: La estrategia es capaz de capturar y adaptarse a las principales tendencias del mercado a través de la medianía de tendencias.
  2. Sencilla y fácil de usar: la lógica de la estrategia es clara, solo se usan dos líneas medias, la configuración de los parámetros es simple, fácil de entender y dominar.
  3. Amplia aplicabilidad: La estrategia tiene una amplia aplicabilidad a variedades y ciclos, y puede usarse en varios mercados.
  4. Detener pérdidas a tiempo: cuando la tendencia se invierte, la estrategia permite cerrar posiciones a tiempo y controlar las pérdidas.

Análisis de riesgos

  1. Peor desempeño en mercados convulsivos: Cuando el mercado está en un movimiento convulsivo, las señales de cruce frecuentes pueden llevar a una estrategia de comercio frecuente y más pérdidas.
  2. Incapacidad de respuesta ante situaciones de emergencia: frente a situaciones extremas (como subidas o caídas rápidas), la estrategia puede no reaccionar a tiempo y causar grandes pérdidas.
  3. La optimización de parámetros es muy difícil: la optimización de parámetros de la línea media requiere una gran cantidad de datos históricos y pruebas de retroalimentación, y la orientación de los parámetros sobre el efecto futuro es limitada.

En respuesta a estos riesgos, se puede considerar la adición de filtros adecuados, como el filtro ATR o el filtro de amplitud real media, para reducir el exceso de operaciones en mercados convulsos; establecer un alto razonable, controlar las pérdidas individuales; optimizar continuamente los parámetros para adaptarse al mercado. Pero las limitaciones de la estrategia en sí son difíciles de evitar por completo.

Dirección de optimización

  1. Confirmación de tendencias: Después de generar una señal de negociación, se pueden agregar algunos indicadores de confirmación de tendencias, como MACD, DMI, etc., para filtrar aún más las señales.
  2. Detención dinámica: el establecimiento de un punto de parada dinámico basado en indicadores como el ATR, en lugar de un porcentaje fijo o una parada de precio, permite un mejor control del riesgo.
  3. Administración de posiciones: ajuste dinámico el tamaño de las posiciones según la intensidad de la tendencia, la volatilidad y otros indicadores, aumentando la posición cuando la tendencia es fuerte y reduciendo la posición cuando la tendencia es débil.
  4. Múltiples ciclos y niveles: Considera el sistema de líneas medias de varios niveles, como las líneas diarias + 4 horas, para filtrar y confirmar entre sí y mejorar la precisión de la captura de tendencias.
  5. Adaptación de parámetros: introducción de métodos de optimización de parámetros de adaptación, como algoritmos genéticos, para que los parámetros de la estrategia se adapten a diferentes estados de mercado.

Las optimizaciones anteriores pueden mejorar la capacidad de la estrategia para hacer frente a mercados complejos, pero hay que tener en cuenta que la optimización excesiva puede conducir a la curva de ajuste y causar un mal rendimiento en el futuro.

Resumen Summary

La estrategia de seguimiento de tendencias de doble línea de equilibrio captura la tendencia a través de la cruz de la línea de equilibrio, tiene características de fácil uso y amplia aplicabilidad. Sin embargo, su desempeño en el mercado de la oscilación es insuficiente, la respuesta a las situaciones extremas es insuficiente y la optimización de los parámetros es más difícil. La estrategia puede optimizarse mediante la introducción de más indicadores de filtrado, stop loss dinámico, gestión de posiciones, combinación de múltiples ciclos y adaptación de los parámetros.

Código Fuente de la Estrategia
/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')