Estrategia de cruce de la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-11-23 13:38:02
Las etiquetas:

img

Resumen general

La estrategia de cruce de promedios móviles es una estrategia de negociación basada en promedios móviles. Utiliza el cruce de un promedio móvil rápido y un promedio móvil lento como señales de compra y venta. Cuando el MA rápido cruza por encima del MA lento desde abajo, se genera una señal de compra. Cuando el MA rápido cruza por debajo del MA lento desde arriba, se genera una señal de venta.

Estrategia lógica

La estrategia utiliza la función sma para calcular promedios móviles simples de un período especificado como el MA rápido y el MA lento.

Cuando el MA rápido cruza por encima del MA lento desde abajo, la función crossunder detecta la señal de cruce y genera una señal de compra.

La estrategia realiza el comercio automatizado a través de señales de pista y señales de salida. La entrada larga se activa cuando el MA rápido cruza por encima del MA lento, y la entrada corta se activa cuando el MA rápido cruza por debajo del MA lento. Las señales de salida correspondientes también se generan en cruces inversos.

Análisis de ventajas

  • Las medias móviles tienen la capacidad de rastrear las tendencias de manera efectiva y captar el impulso del precio
  • Las estrategias de la OMA son simples y directas, fáciles de entender e implementar
  • Los parámetros se pueden optimizar para adaptarse a diferentes entornos de mercado
  • La estrategia automatiza el comercio sin intervención manual, reduciendo los costes de negociación

Riesgos y soluciones

  • Las oscilaciones de precios pueden causar múltiples señales falsas y una alta frecuencia de negociación.
  • La optimización de parámetros es crucial y puede afectar significativamente el rendimiento.
  • En el caso de los indicadores de mercado, los indicadores de mercado se pueden combinar para filtrar o complementar las señales comerciales.
  • El stop loss puede controlar la pérdida de una sola operación.

Direcciones de optimización

  • Los promedios móviles adaptativos pueden utilizarse para ajustar dinámicamente los parámetros MA para un mejor seguimiento.
  • Los filtros adicionales, como los volúmenes de negociación, pueden evitar señales falsas cuando la tendencia no es clara.
  • La combinación de otros indicadores como las bandas de Bollinger como filtros o condiciones suplementarias puede mejorar el rendimiento de la estrategia.
  • La estrategia de stop loss controla las pérdidas de una sola operación dentro de niveles aceptables.

Conclusión

La estrategia de cruce de MA es una estrategia clásica y sencilla de seguimiento de tendencias. Utiliza principalmente cruces de MA como señales comerciales con lógica e implementación fáciles. Se puede adaptar a través del ajuste de parámetros. Pero también tiene inconvenientes como susceptibilidad a oscilaciones e inversiones de tendencia, alta frecuencia de señal, etc. Estos pueden mejorarse a través de filtros, parámetros dinámicos, stop loss, etc. La estrategia tiene un amplio espacio y direcciones de optimización, y es una de las estrategias comerciales cuantitativas fundamentales.


/*backtest
start: 2023-11-15 00:00:00
end: 2023-11-17 04:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(title = "MA Close Strategy", shorttitle = "MA Close",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

MASource   = input(defval = open, title = "MA Source")
MaLength   = input(defval = 18, title = "MA Period", minval = 1)

StartYear = input(2018, "Backtest Start Year")
StartMonth = input(1, "Backtest Start Month")
StartDay = input(1, "Backtest Start Day")
UseStopLoss = input(true,"UseStopLoss")
stopLoss = input(50, title = "Stop loss percentage(0.1%)") 

window() => time >=  timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false

MA = sma(MASource,MaLength)

plot(MA, title = "Fast MA", color = green, linewidth = 2, style = line, transp = 50)

long = crossunder(MA, close)
short = crossover(MA, close)

if (long)
    strategy.entry("LongId", strategy.long, when = long)
    strategy.exit("ExitLong", from_entry = "LongId", when = short)

if (short)
    strategy.entry("ShortId", strategy.short, when = short)
    strategy.exit("ExitShort", from_entry = "ShortId", when = long)

if (UseStopLoss)
    strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick)
    strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)


Más.