La estrategia de cruce de promedios móviles es una estrategia de comercio de acciones común. Genera señales de compra y venta mediante el cálculo de promedios móviles rápidos y lentos y la detección de sus puntos de cruce. Específicamente, cuando el promedio móvil rápido cruza por encima del promedio móvil lento desde abajo, genera una señal de compra; cuando el promedio móvil rápido cruza por debajo del promedio móvil lento desde arriba, genera una señal de venta.
La lógica central de esta estrategia es: el promedio móvil rápido representa la tendencia a corto plazo de una acción, mientras que el promedio móvil lento representa su tendencia a largo plazo.
En esta estrategia, se definen el promedio móvil rápido maFast y el promedio móvil lento maSlow. maFast tiene un período de 9 días que representa la tendencia a corto plazo de 9 días de una acción. maSlow tiene un período de 18 días que representa la tendencia a largo plazo de 18 días.
Las ventajas de esta estrategia son:
También hay algunos riesgos con esta estrategia:
Estos riesgos pueden reducirse ajustando los parámetros de los MA, estableciendo estrategias de stop loss, etc.
Hay otros espacios de optimización para esta estrategia:
En conclusión, la estrategia de cruce de promedios móviles es una estrategia muy clásica y práctica en general. Tiene una lógica simple y amplias aplicaciones en el comercio real. Al ajustar los parámetros y combinar otros indicadores técnicos, se puede mejorar aún más para lograr mejores ratios riesgo-recompensa. En general, es una piedra angular importante del comercio cuantitativo y merece una investigación y aplicación profundas.
/*backtest start: 2024-01-04 00:00:00 end: 2024-02-03 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(title="Moving Average Cross", overlay=true, initial_capital=10000, currency='USD') // === GENERAL INPUTS === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 9, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = close, title = "Slow MA Source") maSlowLength = input(defval = 18, title = "Slow MA Period", minval = 1) // === SERIES SETUP === /// a couple of ma's.. maFast = ema(maFastSource, maFastLength) maSlow = ema(maSlowSource, maSlowLength) // === PLOTTING === fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30) slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30) // === LOGIC === enterLong = crossover(maFast, maSlow) exitLong = crossover(maSlow, maFast) // Entry // strategy.entry(id="Long Entry", long=true, when=enterLong) strategy.entry(id="Short Entry", long=false, when=exitLong) // === FILL ==== fill(fast, slow, color = maFast > maSlow ? green : red)