Tendencia de la media móvil doble siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-03-22 13:56:44
Las etiquetas:

img

Resumen general

Esta estrategia utiliza el cruce de dos promedios móviles para determinar los cambios en las tendencias del mercado y toma decisiones de compra / venta basadas en la dirección de la tendencia.

Principio de la estrategia

El núcleo de esta estrategia son dos promedios móviles: un MA rápido (período de impago 32) y un MA lento (también período de impago 32, ajustable a través de parámetros).

  • Cuando el MA rápido cruza por encima del MA lento, ir largo
  • Cuando el MA rápido cruza por debajo del MA lento, corta
  • Cuando ya se mantiene una posición larga, si el MA rápido se cruza por debajo del MA lento, cierre largo y vaya corto
  • Cuando ya se mantiene una posición corta, si el MA rápido se cruza por encima del MA lento, cierre corto y vaya largo

A través de este método de cruce MA, la estrategia puede seguir la tendencia, manteniendo posiciones largas en tendencias alcistas y posiciones cortas en tendencias bajistas, hasta que aparezca una señal de inversión.

Análisis de ventajas

  1. Seguimiento de tendencias: mediante el uso de cruces de MA para identificar tendencias, la estrategia puede capturar y seguir eficazmente las principales tendencias del mercado.
  2. Sencilla y fácil de usar: la lógica de la estrategia es clara, utilizando sólo dos MA.
  3. Amplia aplicabilidad: La estrategia es ampliamente aplicable a diferentes instrumentos y plazos, y puede utilizarse en diversos mercados.
  4. Stop-loss oportuno: cuando la tendencia se invierte, la estrategia puede cerrar posiciones rápidamente para controlar las pérdidas.

Análisis de riesgos

  1. Pobre desempeño en mercados variados: cuando el mercado está en un patrón lateral, las señales cruzadas frecuentes conducirán a operaciones y pérdidas excesivas.
  2. Respuesta inadecuada a movimientos extremos: La estrategia puede reaccionar demasiado lentamente a situaciones extremas (como rápidas oleadas o caídas), lo que conduce a grandes pérdidas.
  3. Dificultad en la optimización de parámetros: la optimización de los parámetros de MA requiere una gran cantidad de datos históricos y backtesting.

Para hacer frente a estos riesgos, se puede considerar la adición de filtros apropiados, como ATR o filtros de rango verdadero promedio, para reducir el exceso de operaciones en los mercados variados; establecer stop-loss razonables para controlar las pérdidas de una sola operación; y optimizar continuamente los parámetros para adaptarse al mercado.

Dirección de optimización

  1. Confirmación de tendencia: después de generar una señal de negociación, se pueden incorporar indicadores adicionales de confirmación de tendencia como MACD o DMI para filtrar aún más las señales.
  2. El valor de las pérdidas de los activos en el mercado se calcula en función de los tipos de interés de los activos en el mercado.
  3. Tamaño de posición: ajusta dinámicamente los tamaños de posición en función de la fuerza de la tendencia, la volatilidad y otros indicadores.
  4. Análisis de marcos de tiempo múltiples: Considere un sistema de MA de marcos de tiempo múltiples, como la combinación de MA diarios y de 4 horas, para filtrarse y confirmarse mutuamente y mejorar la precisión de la identificación de tendencias.
  5. Parámetros adaptativos: introducir métodos de optimización de parámetros adaptativos, como los algoritmos genéticos, para permitir que los parámetros de la estrategia se adapten a las diferentes condiciones del mercado.

Las optimizaciones anteriores pueden mejorar la capacidad de la estrategia para manejar mercados complejos, pero se debe tener cuidado de evitar la sobre-optimización que puede conducir al ajuste de la curva y a un mal rendimiento futuro.

Resumen de las actividades

El doble MA sigue la tendencia de la estrategia y captura las tendencias a través de los cruces de MA. Es simple, fácil de usar y ampliamente aplicable.

La estrategia puede optimizarse introduciendo más indicadores de filtrado, stop-loss dinámicos, dimensionamiento de posiciones, análisis de marcos de tiempo múltiples y parámetros adaptativos.

En general, esta estrategia puede servir como una estrategia básica de seguimiento de tendencias, pero es difícil de mantenerse sola y es más adecuada como parte de una cartera de estrategias.


/*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')


Más.