QuantStudio Financial Data Analysis and Trading Framework

CMO Class

Change Momentum Oscillator (CMO)

For a list of all members of this type, see CMO Members.

System.Object
   RQuant.Indicator.TTimeArray
      RQuant.Indicator.TDoubleArray
         RQuant.Indicator.TIndicator
            RQuant.Indicator.CMO

[Visual Basic]
Public Class CMO
    Inherits TIndicator
[C#]
public class CMO : TIndicator

Thread Safety

Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.

Remarks

The primary method of interpreting the CMO is looking for extreme overbought and oversold conditions. As a general rule, Mr. Chande quantifies an overbought level at +50 and the oversold level at -50. At +50, up-day momentum is three times the down-day momentum. Likewise, at -50, down-day momentum is three times the up-day momentum. These levels correspond to the 70/30 levels on the RSI indicator.

You could also establish overbought/oversold entry and exit rules by plotting a moving average trigger line on the CMO. For example, if you are using the default 20-period CMO, a 9-period moving average may serve as a good trigger line. Buy when the CMO crosses above the 9-period trigger line; sell when it crosses below The CMO is closely related to, yet unique from, other momentum oriented indicators such as Relative Strength Index Stochastic, Rate-of-Change, etc.

Formula:

Example

TDataManager.cd("Demo");

TDailyArray Daily1 = TDataManager.GetStock("YHOO").DailyArray;

DateTime Date1 = DateTime.Parse("1999/02/08"); 
DateTime Date2 = DateTime.Parse("2000/12/29"); 

TDailyArray Daily = Daily1.Clone(Date1, Date2);

TCanvas Canvas = new TCanvas("Canvas","CMO DEMO",600,400);
    
Canvas.Divide(1,2);

CMO CMO = new CMO(Daily, 14);

Canvas.cd(1);
Daily.Draw("c");

Canvas.cd(2);
CMO.Draw(Color.Red);

Requirements

Namespace: RQuant.Indicator

Assembly: RQuant.Indicator (in RQuant.Indicator.dll)

See Also

CMO Members | RQuant.Indicator Namespace