
La estrategia se basa en los puntos de inflexión de las medias móviles para juzgar la tendencia del mercado, haciendo más puntos de inflexión hacia arriba en la MA, haciendo un punto de inflexión hacia abajo en la MA, y pertenece a la típica estrategia de seguimiento de tendencias.
La estrategia utiliza price=security (tickerid, period, close) para obtener el precio de cierre como análisis estratégico, y luego calcula el promedio de sma o el promedio de ema, con una longitud de ma1, obteniendo el primer promedio de price1. Luego define roc1 como la tasa de cambio diaria de price1 para determinar si el promedio está subiendo o bajando de forma evidente a través del umbral de tendenciaStrength1. Cuando roc1 supera la tendenciaStrength1, define ma1uptrue, la línea sube; cuando roc1 es inferior a la tendenciaStrength1 negativa, define ma1downtrue, la línea baja.
De esta manera, la estrategia utiliza los puntos de inflexión de las medias móviles para capturar cambios en la tendencia de los precios de las acciones, lo que es típico de las estrategias de seguimiento de tendencias.
La mayor ventaja de esta estrategia es que utiliza los puntos de inflexión de las medias móviles para determinar la tendencia, un método de análisis técnico más maduro y confiable en el comercio cuantitativo. Las ventajas concretas son:
El movimiento de la media utiliza un filtro de ruido para capturar con precisión los puntos de cambio de tendencia. El movimiento de la media se ha suavizado en los precios y puede filtrar parte del ruido, lo que hace que la identificación de los cambios de tendencia sea más precisa y confiable.
La estrategia no solo detecta los puntos de inflexión, sino que también establece un umbral para el radiante de la tasa de cambio, lo que evita que las falsas rupturas en las medias móviles provoquen transacciones innecesarias.
Parámetros sencillos, fáciles de manejar y de retroceder. La estrategia tiene una sola media móvil. Los parámetros, configuración y optimización son sencillos, fáciles de entender y de manejar.
Los principales riesgos de esta estrategia son:
La estrategia de seguimiento de la tendencia, no puede predecir el punto más bajo. La estrategia es una estrategia de seguimiento de la tendencia, sólo puede seguir la tendencia, no puede predecir el punto más bajo del mercado, es fácil perderse la oportunidad de reversión instantánea.
Problemas con el retraso de las medias móviles. Las medias móviles tienen un cierto retraso en el movimiento de los precios, lo que puede afectar la puntualidad de la identificación de cambios de tendencia.
La optimización incorrecta de los parámetros de la primera etapa afecta directamente a la eficacia. La configuración de los parámetros de la estrategia, como el promedio de los períodos y el límite de radiante de la tasa de cambio, afectan directamente al nivel de retirada de ganancias de la estrategia. Se requiere una prueba y optimización cuidadosas.
La solución es la siguiente:
La combinación adecuada de otros indicadores puede predecir el nivel más alto de un mercado bajista y el nivel más bajo de un mercado bajista.
Prueba el SMA sustituyendo el promedio por respuestas más rápidas como la EMA.
Se recomienda la optimización multicombinante para encontrar la mejor configuración de parámetros.
La estrategia puede ser optimizada aún más en las siguientes direcciones:
Añade una segunda media móvil para formar una estrategia de bifurcación. De esta manera, se puede utilizar la relación entre las dos líneas de igualdad para juzgar la tendencia y filtrar el ruido.
Añadir análisis de la cantidad de tránsito. Se puede verificar aún más la fiabilidad de los puntos de inflexión observando los cambios en la cantidad de tránsito en los puntos de inflexión de la línea media.
Prueba el papel auxiliar de otros indicadores técnicos, como el RSI, MACD, etc. Estos indicadores pueden ayudar a determinar las tendencias y formar estrategias combinadas con el giro de la línea media.
Se seleccionan varios parámetros de optimización de las condiciones del mercado. Se prueba una combinación de parámetros de optimización para el mercado alcista, el mercado bajista y el movimiento de la oscilación.
Parámetros de optimización dinámica utilizando métodos de aprendizaje automático. Permitir que el programa evalúe automáticamente la estabilidad de los parámetros en diferentes entornos de mercado para lograr la optimización dinámica de los parámetros.
La estrategia en su conjunto es una estrategia de seguimiento de tendencias más madura, con cierto valor en la batalla. La idea de la estrategia es simple y clara, los parámetros no son muchos, las pruebas son fáciles de entender. También hay problemas como el retraso en el seguimiento. Se recomienda su uso en combinación con otros indicadores, la optimización de pruebas en múltiples situaciones o la introducción de mecanismos para ajustar dinámicamente los parámetros, lo que puede mejorar aún más la estabilidad de la estrategia y la eficacia en la batalla.
/*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)