La estrategia de negociación de reversión media basada en el oscilador de momento de Chande (CMO) es una estrategia de análisis técnico que identifica zonas de sobrecompra y sobreventa mediante el cálculo del impulso de precios durante un período específico. La estrategia monitorea los cambios de impulso en los precios de los activos y las operaciones cuando los precios muestran desviaciones extremas, con el objetivo de capturar oportunidades de reversión media. Utiliza un indicador de CMO de 9 días como la señal principal, entrando en posiciones largas cuando CMO cae por debajo de -50 y saliendo cuando CMO sube por encima de 50 o el período de tenencia excede los 5 días.
El núcleo de la estrategia radica en el cálculo y la aplicación del indicador de OCM. La OCM mide el impulso calculando la relación entre la diferencia entre las ganancias y las pérdidas y su suma durante un período especificado. OCM = 100 × (Suma de las ganancias - Suma de las pérdidas)/(Suma de las ganancias + Suma de las pérdidas)
A diferencia del RSI tradicional, el CMO utiliza movimientos ascendentes y descendentes en el numerador, proporcionando una medición de impulso más simétrica. La estrategia entra en posiciones largas cuando el CMO cae por debajo de -50, lo que indica condiciones de sobreventa y espera una recuperación del precio. Las posiciones se cierran cuando el CMO sube por encima de 50 o después de mantener durante 5 días.
La estrategia captura oportunidades de sobrecompra y sobreventa del mercado a través del indicador CMO, combinando stop-loss de tiempo fijo para construir un sistema de negociación de inversión media robusto. Cuenta con una lógica clara y un control de riesgo razonable con valor práctico. La estabilidad y rentabilidad de la estrategia se pueden mejorar aún más a través de la optimización de parámetros e indicadores auxiliares adicionales.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-09 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Chande Momentum Oscillator Strategy", overlay=false) // Input for the CMO period cmoPeriod = input.int(9, minval=1, title="CMO Period") // Calculate price changes priceChange = ta.change(close) // Separate positive and negative changes up = priceChange > 0 ? priceChange : 0 down = priceChange < 0 ? -priceChange : 0 // Calculate the sum of ups and downs using a rolling window sumUp = ta.sma(up, cmoPeriod) * cmoPeriod sumDown = ta.sma(down, cmoPeriod) * cmoPeriod // Calculate the Chande Momentum Oscillator (CMO) cmo = 100 * (sumUp - sumDown) / (sumUp + sumDown) // Define the entry and exit conditions buyCondition = cmo < -50 sellCondition1 = cmo > 50 sellCondition2 = ta.barssince(buyCondition) >= 5 // Track if we are in a long position var bool inTrade = false if (buyCondition and not inTrade) strategy.entry("Long", strategy.long) inTrade := true if (sellCondition1 or sellCondition2) strategy.close("Long") inTrade := false // Plot the Chande Momentum Oscillator plot(cmo, title="Chande Momentum Oscillator", color=color.blue) hline(-50, "Buy Threshold", color=color.green) hline(50, "Sell Threshold", color=color.red)