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

Punto de inflexión de la estrategia MA

El autor:¿ Qué pasa?, Fecha: 2024-01-17 11:56:53
Las etiquetas:

img

Resumen general

Esta estrategia juzga la tendencia basada en los puntos de inflexión de la línea de la media móvil para ir largo en el punto de inflexión de la tendencia alcista de MA y ir corto en el punto de inflexión de la tendencia bajista de MA. Pertenece a una estrategia típica de seguimiento de tendencias.

Principio de la estrategia

La estrategia utiliza el precio=seguridad ((tickerid, período, cierre) para obtener el precio de cierre como el precio para el análisis de la estrategia, luego calcula el SMA o EMA basado en la selección de entrada de la longitud ma1 para obtener el primer precio de línea promedio1. roc1 se define entonces como la tasa de cambio de un día del precio1. Por la tendencia de umbralStrength1, juzga si la línea promedio tiene un aumento o caída significativo. Cuando roc1 excede la tendenciaStrength1, ma1up se define como verdadero, lo que indica que la línea promedio está subiendo. Cuando roc1 está por debajo de la tendencia negativaStrength1, ma1down se define como verdadero, lo que indica que la línea promedio está cayendo. Se emite una señal larga cuando la línea promedio sube y el día anterior estaba cayendo. Se emite una señal corta cuando la línea promedio cae y el día anterior estaba subiendo.

Por lo tanto, la estrategia utiliza los puntos de inflexión de la línea media móvil para capturar el cambio de tendencia del precio de las acciones, que pertenece a una estrategia típica de tendencia.

Análisis de ventajas

La mayor ventaja de esta estrategia es que utiliza los puntos de inflexión de la línea media móvil para juzgar la tendencia, que es un método de análisis técnico relativamente maduro y confiable en el comercio cuantitativo.

  1. Utilice promedios móviles para filtrar el ruido y capturar con precisión los puntos de inflexión de la tendencia.

  2. Esta estrategia no solo detecta puntos de inflexión, sino que también establece un umbral para el gradiente de tasa de cambio, por lo que puede evitar operaciones innecesarias causadas por falsos breakouts en el promedio móvil.

  3. Esta estrategia tiene sólo un promedio móvil y unos pocos parámetros que son fáciles de entender y dominar para los usuarios.

Análisis de riesgos

Los principales riesgos de esta estrategia son:

  1. Esta estrategia es una estrategia de seguimiento de tendencias que sólo puede seguir las tendencias y no puede predecir los picos y los fondos del mercado, perdiendo fácilmente oportunidades de reversión instantánea.

  2. Los promedios móviles tienen un cierto retraso en el reflejo de los movimientos de precios, lo que puede afectar la puntualidad de la identificación de las inversiones de tendencia.

  3. La configuración de parámetros de esta estrategia, como el número de períodos de la línea media y el umbral del gradiente de tasa de cambio, afectará directamente a la ganancia de la estrategia, el descenso, etc. y debe probarse y optimizarse cuidadosamente.

Las soluciones correspondientes son:

  1. Combine adecuadamente otros indicadores para predecir los principales puntos de inflexión alcista y bajista.

  2. Prueba la EMA y otras medias móviles más rápidas en lugar de la SMA.

  3. Se recomienda la optimización múltiple para encontrar los mejores parámetros.

Direcciones de optimización

Esta estrategia se puede optimizar aún más en las siguientes direcciones:

  1. Añadir una segunda línea de media móvil para formar una cruz dorada y una estrategia de cruz muerta.

  2. Añadir análisis de volumen: mediante la observación de cambios en el volumen en los puntos de inflexión de la media móvil, puede verificar aún más la fiabilidad de los puntos de inflexión.

  3. Estos indicadores también pueden ayudar a determinar tendencias y formar estrategias de combinación con puntos de inflexión de la media móvil.

  4. Optimización y detección de parámetros de condiciones de mercado múltiples. Prueba y optimiza por separado la configuración de parámetros para combinaciones bajo condiciones de mercado alcista, mercado bajista y mercado de rango.

  5. Utilizar métodos de aprendizaje automático para optimizar dinámicamente los parámetros en diferentes entornos de mercado y evaluar la robustez de los parámetros para la optimización dinámica.

Conclusión

En resumen, se trata de una estrategia de seguimiento de tendencia relativamente madura con cierto valor práctico. La idea de la estrategia es simple y clara, con pocos parámetros ajustables, lo que es fácil de entender y probar. Al mismo tiempo, también hay problemas como el retraso de la tendencia. Se recomienda combinar con otros indicadores, probar y optimizar en todas las situaciones, o introducir mecanismos para el ajuste dinámico de parámetros para mejorar aún más la estabilidad y el efecto práctico de la estrategia.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("MA Turning Point Strategy", overlay=true)
src = input(close, title="Source")

price = request.security(syminfo.tickerid, timeframe.period, src)
ma1 = input(25, title="1st MA Length")
type1 = input("SMA", "1st MA Type", options=["SMA", "EMA"])

price1 = if (type1 == "SMA")
    sma(price, ma1)
else
    ema(price, ma1)

plot(series=price1, style=line,  title="1st MA", color=blue, linewidth=2, transp=0)

lookback1 = input(1, "Lookback 1")
roc1 = roc(price1, lookback1)

ma1up = false
ma1down = false
ma2up = false
ma2down = false

ma1up := nz(ma1up[1])
ma1down := nz(ma1down[1])
ma2up := nz(ma2up[1])
ma2down := nz(ma2down[1])

trendStrength1 = input(2.5, title="Minimum slope magnitude * 100", type=float) * 0.01

if crossover(roc1, trendStrength1)
    ma1up := true
    ma1down := false
    
if crossunder(roc1, -trendStrength1) 
    ma1up := false
    ma1down := true

longCondition = ma1up and ma1down[1]
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ma1down and ma1up[1]
if (shortCondition)
    strategy.entry("Short", strategy.short)



Más.