La stratégie de négociation de réversion moyenne basée sur l'oscillateur de momentum de Chande (CMO) est une stratégie d'analyse technique qui identifie les zones de surachat et de survente en calculant la dynamique des prix sur une période spécifique.
Le noyau de la stratégie réside dans le calcul et l'application de l'indicateur de l'OCM. L'OCM mesure la dynamique en calculant le rapport entre la différence entre les gains et les pertes et leur somme sur une période spécifiée. L'OMC = 100 × (Sommée des gains - Somme des pertes)/(Sommée des gains + Somme des pertes)
Contrairement au RSI traditionnel, le CMO utilise à la fois des mouvements ascendants et descendants dans le numérateur, fournissant une mesure de l'élan plus symétrique.
La stratégie capte les opportunités de surachat et de survente du marché grâce à l'indicateur CMO, combinant un stop-loss à temps fixe pour construire un système de négociation à inversion moyenne robuste.
/*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)