Die Mean-Reversion Trading Strategy basiert auf dem Chande Momentum Oscillator (CMO) ist eine technische Analyse-Strategie, die überkaufte und überverkaufte Zonen durch Berechnung der Preisdynamik über einen bestimmten Zeitraum identifiziert. Die Strategie überwacht Dynamikveränderungen in den Vermögenswertpreisen und Trades, wenn die Preise extreme Abweichungen zeigen, um Chancen für eine Mittelumkehr zu erfassen. Sie verwendet einen 9-tägigen CMO-Indikator als Kernsignal, der lange Positionen eintritt, wenn die CMO unter -50 fällt und aussteigt, wenn die CMO über 50 steigt oder die Haltezeit 5 Tage übersteigt.
Der Kern der Strategie liegt in der Berechnung und Anwendung des CMO-Indikators. CMO misst die Dynamik, indem das Verhältnis der Differenz zwischen Gewinnen und Verlusten zu ihrer Summe über einen bestimmten Zeitraum berechnet wird. CMO = 100 × (Gewinnsumme - Verlustsumme)/(Gewinnsumme + Verlustsumme)
Im Gegensatz zum traditionellen RSI verwendet CMO sowohl Auf- als auch Abwärtsbewegungen im Zähler, was eine symmetrischere Momentummessung ermöglicht. Die Strategie tritt in Long-Positionen ein, wenn CMO unter -50 fällt, was auf Überverkäufe hinweist und eine Erholung des Preises erwartet. Positionen werden geschlossen, wenn CMO über 50 steigt oder nach 5 Tagen gehalten.
Die Strategie erfasst Marktüberkauf- und Überverkaufsmöglichkeiten durch den CMO-Indikator und kombiniert festzeitigen Stop-Loss, um ein robustes Handelssystem mit mittlerer Umkehrung aufzubauen.
/*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)