Diese Strategie verwendet den Chande Momentum Oscillator (CMO), um Überkauf- und Überverkaufswerte für Handelssignale zu bestimmen. Die absoluten CMO-Werte über 3 Perioden werden durchschnittlich berechnet, um den Oszillator für die Identifizierung von Extremen zu glätten. Eine typische Mittelumkehr-Oszillator-Handelsstrategie.
Die wichtigste Logik umfaßt:
Die CMO spiegelt die Dynamik der Preisänderungen wider. Hohe absolute Werte repräsentieren die Preisdivergenz, die in Überkauf-/Überverkaufszonen eintritt. Die Strategie nutzt diese Eigenschaft der CMO, indem sie einen mehrjährigen Durchschnitt verwendet, um die Kurve für die Identifizierung von Extremen zu glätten.
Abmilderung:
Die Strategie kann durch folgende Maßnahmen verbessert werden:
Diese Strategie verwendet CMO, um Überkauf/Überverkauf für den durchschnittlichen Umkehrhandel zu identifizieren. Mehrperioden-Durchschnittswerte helfen, falsche Signale zu vermeiden. CMO selbst hat eine solide theoretische Grundlage für die Messung von Divergenzen. Verbesserungen durch bessere Parameter, Stops und Filter können es zu einer stabilen Oszillator-Handelsstrategie machen.
/*backtest start: 2023-09-11 00:00:00 end: 2023-09-14 07:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 ////////////////////////////////////////////////7//////////// // Copyright by HPotter v1.0 21/02/2017 // This indicator plots the absolute value of CMO averaged over three // different lengths. This indicator plots a classical-looking oscillator, // which is really an averaged value based on three different periods. // // You can change long to short in the Input Settings // Please, use it only for learning or paper trading. Do not for real trading. //////////////////////////////////////////////////////////// strategy(title="CMOabsav", shorttitle="CMOabsav") Length1 = input(5, minval=1) Length2 = input(10, minval=1) Length3 = input(20, minval=1) TopBand = input(58, minval=1) LowBand = input(5, minval=0) reverse = input(false, title="Trade reverse") hline(0, color=green, linestyle=hline.style_dashed) hline(TopBand, color=purple, linestyle=hline.style_solid) hline(LowBand, color=red, linestyle=hline.style_solid) xMom = close - close[1] xMomabs = abs(close - close[1]) nSum1 = sum(xMom, Length1) nSumAbs1 = sum(xMomabs, Length1) nSum2 = sum(xMom, Length2) nSumAbs2 = sum(xMomabs, Length2) nSum3 = sum(xMom, Length3) nSumAbs3 = sum(xMomabs, Length3) nRes = abs(100 * (nSum1 / nSumAbs1 + nSum2 / nSumAbs2 + nSum3 / nSumAbs3 ) / 3) pos = iff(nRes > TopBand, 1, iff(nRes < LowBand, -1, nz(pos[1], 0))) possig = iff(reverse and pos == 1, -1, iff(reverse and pos == -1, 1, pos)) if (possig == 1) strategy.entry("Long", strategy.long) if (possig == -1) strategy.entry("Short", strategy.short) barcolor(possig == -1 ? red: possig == 1 ? green : blue ) plot(nRes, color=blue, title="CMOabsav")