
Esta estrategia es un sistema de trading de seguimiento de tendencias basado en el indicador de movilidad de la oscilación de Chad (CMO). La estrategia busca oportunidades de compra en zonas de sobreventa y oportunidades de venta en zonas de sobreventa, a través de la computación y el análisis de la dinámica de los precios, y combina los límites de tiempo de tenencia para administrar el riesgo. Este método capta las oportunidades de reversión de los precios y evita el comercio frecuente en mercados de oscilación.
El núcleo de la estrategia es el uso del indicador CMO para medir la dinámica del mercado. El CMO genera un indicador que oscila entre 100 y 100 al calcular la diferencia entre el aumento y la disminución de la diferencia con respecto a la suma. Cuando el CMO es inferior a 50, lo que indica que el mercado está en una situación de sobreventa, el sistema emite varias señales.
Esta es una estrategia de seguimiento de tendencias basada en la dinámica para capturar oportunidades de sobreventa y sobreventa en el mercado a través de indicadores de CMO. La estrategia está diseñada de manera razonable, con reglas de negociación claras y mecanismos de control de riesgos. Aunque existen algunos riesgos inherentes, la estabilidad y la rentabilidad de la estrategia se pueden mejorar aún más mediante la optimización.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 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)