Estrategia de cruce de medias móviles de momentum


Fecha de creación: 2024-01-23 14:18:26 Última modificación: 2024-01-23 14:18:26
Copiar: 1 Número de Visitas: 537
1
Seguir
1617
Seguidores

Estrategia de cruce de medias móviles de momentum

Descripción general

Esta estrategia se basa en el cruce de las líneas medias de EMA de diferentes períodos para determinar la dirección de la tendencia y, en consecuencia, para establecer señales de compras más cortas. Se utilizan principalmente 2 líneas medias, las líneas de 10 días y 20 días, respectivamente.

Principio de estrategia

La estrategia utiliza dos líneas medias de EMA, incluidas las líneas de 10 y 20 días. La línea media de EMA refleja muy bien la dirección de la tendencia de los precios. Cuando la línea de EMA a corto plazo cruza la línea de EMA a largo plazo de abajo hacia arriba, indica que el movimiento de los precios se ha movido hacia arriba y hacia abajo, y se considera una señal de falta.

Esta estrategia combina al mismo tiempo los valores máximos y mínimos de la oscilación para filtrar una parte de la señal de negociación. La señal de negociación se emite solo después de que la oscilación de los precios alcanza un cierto alcance. Esto puede filtrar hasta cierto punto algunas señales falsas.

En concreto, la estrategia determina si se ha formado una tendencia de precios al rastrear la llegada de los máximos y mínimos de los precios. La verdadera señal de negociación solo se emite después de que los máximos o mínimos alcanzan un cierto tiempo.

Análisis de las ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. El uso de la línea media de la EMA para determinar la dirección de la tendencia permite un seguimiento eficaz de los movimientos del mercado
  2. La combinación de EMAs de diferentes períodos permite capturar oportunidades de negociación en líneas medias y cortas
  3. Se puede filtrar parte del ruido a través de la filtración de señales extremas para evitar perder oportunidades de negociación
  4. La lógica de la estrategia es simple y clara, fácil de entender y modificar
  5. Parámetros ajustables según las diferentes variedades y preferencias comerciales, adaptabilidad

Análisis de riesgos estratégicos

La estrategia también tiene sus riesgos:

  1. La EMA promedio en sí misma se retrasa y puede perder la inversión de precios a corto plazo.
  2. El filtro de señales de ruido es incompleto y puede haber algún error de transacción.
  3. Necesidad de ajustar adecuadamente los parámetros para adaptarse a diferentes entornos de mercado

El riesgo puede reducirse de la siguiente manera:

  1. Confirmación de la señal en combinación con otros indicadores para evitar problemas de retraso de la línea media de la EMA
  2. Optimización de las condiciones de filtración de los extremos para mejorar la fiabilidad de la señal
  3. Ajuste de parámetros y estrategias de optimización de acuerdo con los resultados de la retroalimentación

Dirección de optimización de la estrategia

La estrategia puede ser optimizada aún más en las siguientes direcciones:

  1. Añadir una combinación de otros indicadores técnicos para mejorar la precisión de las señales de negociación, como MACD, KD, etc.
  2. Optimizar los parámetros de la línea media de la EMA para adaptarla mejor a las variedades específicas.
  3. Optimización de los parámetros de los valores máximos y mínimos para mejorar el juicio sobre las fluctuaciones de los precios.
  4. Añadir una estrategia de stop loss para controlar la pérdida máxima de una sola operación.
  5. La estrategia se ha probado en diferentes variedades para evaluar su adecuación.

Resumir

La estrategia de cruce de EMA es una estrategia de seguimiento de tendencias sencilla y práctica en su conjunto. Utiliza la media EMA para determinar la dirección de la tendencia general y, a continuación, combina las señales de filtración de la fluctuación de los precios para formar decisiones de negociación. La estrategia es fácil de entender y ajustar los parámetros y puede adaptarse a la negociación de líneas cortas y medias.

Código Fuente de la Estrategia
/*backtest
start: 2024-01-15 00:00:00
end: 2024-01-22 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("PierceMAStrat", overlay=true)

lenMA0 = input(title="Length 0",defval=2)
lenMA1=input(title="Length 1",defval=10)
lenMA2=input(title="Length 2", defval=20)
lenMA3 = input(title = "Length3", defval =50)




emaLen0 = ema(close, lenMA0)
emaLen1 = ema(close, lenMA1)
emaLen2 = ema(close, lenMA2)
emaLen3 = ema(close, lenMA3)

    
ascent = if emaLen1[1] < emaLen1[0]
    true
else
    false
    
descent = if emaLen1[1] > emaLen1[0]
    true
else
    false
    
TimeSinceAscensionStart = if ascent == true
    barssince(descent == true)
else
    0
    

StartUp = if TimeSinceAscensionStart < 1
    true
else
    false

StartDown = if TimeSinceAscensionStart < 1
    false
else
    true


AscentBarCounter = barssince(StartUp == true)

DescentBarCounter = barssince(StartDown == true)

MaxAscent = if AscentBarCounter[1] > AscentBarCounter[0] and AscentBarCounter[1] > 10
    true
else
    false
    
MaxDescent = if DescentBarCounter[1] > DescentBarCounter[0] and DescentBarCounter[1] > 5
    true
else
    false
    
longCond = if crossover(emaLen1, emaLen2) and barssince(MaxDescent == true) > 3
    true
else
    false
shortCond = if crossunder(emaLen1, emaLen2) and barssince(MaxAscent == true) > 3
    true
else
    false


//longCond = (crossover(emaLen1, emaLen2) and (emaLen2 > emaLen3))
//shortCond = crossunder(emaLen1, emaLen2) and (emaLen2 < emaLen3)



if longCond == true
    strategy.entry("LONG", strategy.long)

if shortCond == true
    strategy.entry("SHORT", strategy.short)
    


plotshape(series=MaxAscent, title="MaximaReached", style=shape.triangledown, location=location.abovebar, color=green, text="MaximaReached", size=size.small)
plotshape(series=MaxDescent, title="MinimaReached", style=shape.triangleup, location=location.belowbar, color=red, text="MinimaReached", size=size.small)
//plotshape(series=StartUp, title="StartUp", style=shape.triangleup, location=location.belowbar, color=red, text="StartUp", size=size.tiny)
//plotshape(series=StartDown, title="StartDown", style=shape.triangleup, location=location.belowbar, color=green, text="StartDown", size=size.tiny)

//plotshape(series=(crossover(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=green, text="GBXO", size=size.small)
//plotshape(series=(crossover(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=orange, text="RBXO", size=size.small)
//plotshape(series=(crossover(emaLen1, emaLen2)), title="GRXOVER", style=shape.triangledown, location=location.abovebar, color=teal, text="GRXO", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen2)), title="GRXUNDER", style=shape.triangledown, location=location.abovebar, color=purple, text="GRXU", size=size.small)
//plotshape(series=(crossunder(emaLen1, emaLen3)), title="GBXOVER", style=shape.triangleup, location=location.belowbar, color=yellow, text="GBXU", size=size.small)
//plotshape(series=(crossunder(emaLen2, emaLen3)), title="RBXOVER", style=shape.triangledown, location=location.abovebar, color=yellow, text="RBXU", size=size.small)
    
//plotshape(convergence, color=lime, style=shape.arrowup, text="CROSS")
plot(emaLen1, color=green, transp=0, linewidth=2)
plot(emaLen2, color=red, transp=30, linewidth=2)
plot(emaLen3, color=blue, transp=30, linewidth=2)