Estrategia de trading cuantitativo basada en medias móviles


Fecha de creación: 2024-01-16 17:37:13 Última modificación: 2024-01-16 17:37:13
Copiar: 0 Número de Visitas: 711
1
Seguir
1617
Seguidores

Estrategia de trading cuantitativo basada en medias móviles

Descripción general

La estrategia se basa en el cálculo de las medias móviles de diferentes períodos y en la determinación de la formación de señales de negociación de sus forquillas doradas. Se trata de una estrategia típica de seguimiento de tendencias. Se utilizan principalmente las medias móviles ponderadas WMA y las medias móviles adaptadas ALMA.

Principio de estrategia

La estrategia primero calcula las medianas móviles a corto plazo de los precios ma1 y ma2, donde ma1 tiene un ciclo más corto y ma2 tiene un ciclo más largo. Luego calcula la diferencia entre ma1 y ma2 en ma3, y luego calcula la media móvil lisa de ma4 en ma3. Se genera una señal de compra cuando ma3 atraviesa ma4 y se genera una señal de venta cuando ma3 atraviesa ma4.

De esta manera, ma3 refleja la dirección de la tendencia a medio y corto plazo de los precios, y ma4 filtra parte del ruido en ma3 para formar una señal de negociación más fiable. La comparación periódica de ma1 y ma2 se establece a través del parámetro maLen, que permite al usuario obtener la mejor combinación de parámetros según los diferentes ciclos de ajuste del mercado.

Ventajas estratégicas

La estrategia tiene las siguientes ventajas:

  1. El uso de una media móvil ALMA y una media móvil ponderada WMA adaptada mejor a los cambios en el mercado.

  2. La aplicación de un método de medias de precios de varios períodos hace que las señales de negociación sean más fiables.

  3. Los parámetros son ajustables y los usuarios pueden optimizarlos para diferentes mercados.

  4. La estrategia es clara, fácil de entender y fácil de implementar.

  5. Se puede obtener un buen resultado en mercados con tendencias y convulsiones.

Riesgos y soluciones

La estrategia también tiene sus riesgos:

  1. En situaciones de gran volatilidad, las estrategias de media móviles son propensas a problemas como la incertidumbre y el retraso de las señales comerciales. Se puede optimizar ajustando el ciclo y los parámetros de la media móvil.

  2. Estrategia de seguimiento de tendencias puras, propensas a sufrir pérdidas durante la fase de ajuste de la oscilación. Se puede combinar con otros indicadores como condición de filtración.

  3. La configuración incorrecta de los parámetros puede provocar un exceso de transacciones en períodos muy cortos. Se debe elegir cuidadosamente los parámetros adecuados.

Optimización de la estrategia

La estrategia puede ser optimizada en los siguientes aspectos:

  1. Prueba más tipos de promedios móviles, como promedios móviles lineales, promedios móviles ponderados, etc.

  2. Aumentar los mecanismos de detención de pérdidas basados en indicadores como la volatilidad y el canal de precios.

  3. En combinación con el análisis de varios períodos de tiempo, se adoptan parámetros de optimización de rodaje.

  4. Se añaden algoritmos de aprendizaje automático para optimizar los parámetros.

Resumir

Esta estrategia se basa en las medias móviles para la formación de señales de negociación. Aplicación de las medias móviles adaptadas y las medias de precios de varios períodos de tiempo, lo que hace que la señal sea más precisa y confiable. Los parámetros de la estrategia son ajustables, ampliamente aplicables, la idea es simple y clara, tiene un buen efecto en los mercados de tendencia y tiene un alto valor de combate.

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

//@version=3
strategy("Oracle Move Strategy", overlay=true)

maLen = input(30, "ma period")
mode =  input(defval="wma", options=["alma", "ema", "wma"])
price = close

ma(src, len) =>
     mode=="alma"  ? alma(src, len, 0.85, 6) :
     mode=="ema"? ema(src, len) : 
     wma(src, len)
    

ma1 = ma(price, floor(maLen / 2))
ma2 = ma(price, maLen)
ma3 = 2.0 * ma1 - ma2
ma4 = ma(ma3, floor(sqrt(maLen)))

//plot(ma1, color = red)
//plot(ma2, color = green)
plot(ma3, color = blue)
plot(ma4, color = orange)


mafast = ma3
maslow = ma4

if (crossover(mafast, maslow))
    strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")

if (crossunder(mafast, maslow))
    strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)