
La estrategia de comercio de la media móvil doble es una estrategia de comercio cuantitativa común. La estrategia utiliza dos promedios móviles de diferentes períodos de tiempo para generar una señal de comercio en función de su cruce. En concreto, se considera una señal de compra cuando se cruza la media móvil a corto plazo sobre la media móvil a largo plazo y se considera una señal de venta cuando se cruza la media móvil a largo plazo por debajo de la media móvil a corto plazo.
El principio central de esta estrategia es que los promedios móviles a corto plazo reflejan la tendencia a corto plazo de los precios de los activos, y los promedios móviles a largo plazo reflejan la tendencia a largo plazo de los precios de los activos. Cuando la línea corta cruza la línea larga, la tendencia a corto plazo se convierte en alza y se puede comprar; cuando la línea corta cruza la línea larga, la tendencia a corto plazo se convierte en baja y se puede vender.
En concreto, la estrategia define dos medias móviles: una media móvil a corto plazo de 5 días, utilizada para capturar tendencias de precios a corto plazo; y otra media móvil a largo plazo de 15 días, utilizada para determinar tendencias de precios a largo plazo. Cuando la línea de 5 días cruza la línea de 15 días desde abajo, indica que los precios a corto plazo han comenzado a subir, lo cual es una señal de compra; y cuando la línea de 5 días cruza la línea de 15 días desde arriba hacia abajo, indica que los precios a corto plazo han comenzado a bajar, lo cual es una señal de venta.
Las ventajas de las estrategias de media móvil doble frente a otras estrategias son:
Las estrategias de medias móviles dobles también presentan algunos riesgos, que incluyen:
Resolución de las mismas:
La estrategia puede ser optimizada en las siguientes direcciones:
En combinación con otros indicadores de filtración de señales, como MACD, KDJ, etc., para evitar la generación de señales falsas
Introducción de promedios móviles adaptativos, ajuste dinámico de los parámetros de las promedios móviles en función de la volatilidad del mercado, mejora de la estabilidad
Optimización de los parámetros de las medias móviles para encontrar la combinación óptima de parámetros y mejorar la eficacia de las estrategias
Incorporación de mecanismos de detención de pérdidas para evitar la expansión de las pérdidas y mejorar la capacidad de control de riesgos
Combinación de múltiples marcos de tiempo que utilizan al mismo tiempo las señales de las líneas de sol y de la circunferencia para mejorar la estabilidad
Cambios de estado de Markov, con diferentes parámetros para diferentes estados de mercado, para mejorar la adaptabilidad
La estrategia de comercio de la media móvil doble es una estrategia de comercio cuantitativa que tiene un efecto más estable en general. Su principio de comercio es simple, fácil de entender y implementar, los parámetros se ajustan con flexibilidad y puede seguir eficazmente las tendencias del mercado. También hay ciertas limitaciones, como la generación de falsas señales, la dificultad para manejar las fuertes fluctuaciones del mercado, etc. Esto requiere ser controlado mediante la introducción de otras herramientas auxiliares y la optimización de los parámetros.
//@version=3
strategy("CS: 2 Moving Averages Script - Strategy (Testing)", overlay=true)
// === GENERAL INPUTS ===
// short ma
ma1Source = input(defval = close, title = "MA 1 Source")
ma1Length = input(defval = 5, title = "MA 1 Period", minval = 1)
// long ma
ma2Source = input(defval = close, title = "MA 2 Source")
ma2Length = input(defval = 15, title = "MA 2 Period", minval = 1)
// === SERIES SETUP ===
/// a couple of ma's..
ma1 = ema(ma1Source, ma1Length)
ma2 = ema(ma2Source, ma2Length)
// === PLOTTING ===
fast = plot(ma1, title = "MA 1", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(ma2, title = "MA 2", color = green, linewidth = 2, style = line, transp = 30)
// === LOGIC ===
enterLong = crossover(ma1, ma2)
exitLong = crossover(ma2, ma1)
// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 2012)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2012)
// === FUNCTION EXAMPLE ===
start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) // backtest finish window
window() => true // create function "within window of time"
// Entry //
strategy.entry(id="Long Entry", long=true, when=enterLong and window())
strategy.entry(id="Short Entry", long=false, when=exitLong and window())