La estrategia de cruce de promedios móviles dobles es una estrategia comercial cuantitativa común. Esta estrategia utiliza dos promedios móviles con períodos diferentes como señales de compra y venta. Compra cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo y vende cuando el promedio móvil a corto plazo cruza por debajo del promedio móvil a largo plazo.
El principio central de esta estrategia es capturar las tendencias de precios aprovechando las características de tendencia y el retraso de dos promedios móviles con períodos diferentes. En términos generales, el promedio móvil a corto plazo es más sensible a los cambios de precios, mientras que el promedio móvil a largo plazo está relativamente rezagado. Cuando el precio está en una tendencia alcista, el promedio móvil a corto plazo se moverá hacia arriba antes del promedio móvil a largo plazo y finalmente cruzará por encima de él, formando una señal de compra. Por el contrario, cuando el precio está en una tendencia bajista, el promedio móvil a corto plazo se moverá hacia abajo antes del promedio móvil a largo plazo y finalmente cruzará por debajo de él, formando una señal de venta. Al capturar las señales de cruz dorada y cruz de muerte, esta estrategia puede operar en línea con la tendencia principal del precio.
Sencilla y fácil de usar: La Estrategia de cruce de promedio móvil dual es una estrategia de negociación cuantitativa simple, fácil de entender y de implementar, adecuada para que los operadores novatos la aprendan y utilicen.
Amplia aplicabilidad: Esta estrategia se puede aplicar a varios mercados financieros e instrumentos comerciales, como acciones, futuros, divisas, criptomonedas, etc., con una gran versatilidad.
Parámetros flexibles: El código de estrategia admite múltiples tipos comunes de medias móviles y tipos de precios, lo que permite a los usuarios establecer flexiblemente los parámetros de acuerdo con sus necesidades para adaptarse a las diferentes condiciones del mercado y estilos de negociación.
Seguimiento de tendencias: mediante el uso de las señales cruzadas de dos promedios móviles con períodos diferentes, esta estrategia puede capturar eficazmente la tendencia principal del precio, lo que ayuda a seguir la tendencia y evitar la negociación contra tendencia.
Retraso: Las medias móviles son indicadores que siguen la tendencia y presentan un cierto retraso, que puede perder los mejores tiempos de entrada y salida.
Ineficacia en los mercados de rango: en los mercados de rango o laterales, las fluctuaciones de precios son grandes y las señales de cruce de medias móviles ocurren con frecuencia, lo que puede conducir a una negociación frecuente y dar lugar a altos costos de negociación y pérdidas de capital.
Dificultad en la optimización de parámetros: la selección de períodos de media móvil tiene un impacto significativo en el rendimiento de la estrategia, pero los parámetros óptimos a menudo varían según las condiciones del mercado, lo que dificulta encontrar combinaciones óptimas de parámetros universalmente aplicables.
Introducir filtros de tendencia: Además de las señales de cruce de la media móvil, se pueden incorporar otros indicadores de tendencia como el MACD y el ADX para filtrar tendencias, operando solo cuando la tendencia es clara para evitar operaciones frecuentes en mercados de rango.
Optimizar el take-profit y el stop-loss: Incorporar en la estrategia una lógica razonable de take-profit y stop-loss, como el trailing stop-loss y el stop-loss basado en la volatilidad, para controlar el riesgo de una sola operación y mejorar la relación riesgo-recompensación de la estrategia.
Optimización de parámetros dinámicos: para diferentes entornos de mercado, realizar periódicamente una optimización dinámica de parámetros como los períodos de promedio móvil para permitir que la estrategia se adapte a los cambios del mercado y mejore la robustez.
Combinación de múltiples factores: Combinar las señales de cruce de la media móvil dual con otros factores cuantitativos efectivos (como el impulso, el valor, el volumen, etc.) para formar una estrategia multifactorial más sólida y efectiva.
La estrategia de cruce de promedios móviles dobles es una estrategia simple y clásica de seguimiento de tendencias que captura las tendencias de precios a través de las señales de cruce de dos promedios móviles con períodos diferentes, adecuadas para los mercados de tendencias. Sin embargo, esta estrategia también tiene problemas como retraso y dificultad en la optimización de parámetros, que requieren combinaciones con otros métodos para optimización y mejora, como filtrado de tendencias, optimización de parámetros dinámicos, combinación de múltiples factores, etc., para mejorar la aplicabilidad y robustez de la estrategia.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © SustainableInvestment //@version=5 strategy("Moving average strategy (이동평균선 전략)", overlay=true) // === INPUTS === basisType = input.string(defval = "EMA", title = "MA Type: SMA, EMA, DEMA, TEMA, WMA, VWMA ",options=["SMA", "EMA", "DEMA", "TEMA", "WMA", "VWMA"]) shortLen = input.int(defval = 1, title = "Short MA Period", minval = 1) longLen = input.int(defval = 20, title = "Long MA Period", minval = 1) price = input.string(defval = "Typical", title = "Price Type : Close, High, Open, Low, Typical, Center ",options=["Close", "High", "Open", "Low", "Typical", "Center"]) // === BASE FUNCTIONS === // 가격 종류 설정 priceType(price) => Typical = (high+low+close)/3 Center = (high+low) / 2 price=="High"?high : price=="Low"?low : price=="Open"?open : price=="Typical"?Typical : price=="Center"?Center : close // 이동평균선 종류 설정 variant(type, src, len) => v1 = ta.sma(src, len) // Simple v2 = ta.ema(src, len) // Exponential v3 = 2 * v2 - ta.ema(v2, len) // Double Exponential v4 = 3 * (v2 - ta.ema(v2, len)) + ta.ema(ta.ema(v2, len), len) // Triple Exponential v5 = ta.wma(src, len) // Weighted v6 = ta.vwma(src, len) // Volume Weighted type=="EMA"?v2 : type=="DEMA"?v3 : type=="TEMA"?v4 : type=="WMA"?v5 : type=="VWMA"?v6 : v1 longCondition = ta.crossover(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen)) if (longCondition) strategy.entry("Long Entry", strategy.long) exitCondition = ta.crossunder(variant(basisType, priceType(price), shortLen), variant(basisType, priceType(price), longLen)) if (exitCondition) strategy.close("Long Entry","Long Exit")