Chaikin A/D Oscillator (CAD)
For a list of all members of this type, see CAD Members.
System.Object
RQuant.Indicator.TTimeArray
RQuant.Indicator.TDoubleArray
RQuant.Indicator.TIndicator
RQuant.Indicator.CAD
Public static (Shared in Visual Basic) members of this type are safe for multithreaded operations. Instance members are not guaranteed to be thread-safe.
Inspired by the prior work of Joe Granville and Larry Williams, Marc Chaikin developed a new volume indicator, extending the work done by his predecessors. The Chaikin Oscillator is a moving average oscillator based on the Accumulation/Distribution indicator.
The most important signal generated by the Chaikin Oscillator occurs when prices reach a new high or new low for a swing, particularly at an overbought or oversold level, and the oscillator fails to exceed its previous extreme reading and then reverses direction.
Signals in the direction of the intermediate-term trend are more reliable than those against the trend. A confirmed high or low does not imply any further price action in that direction.
A second way to use the Chaikin Oscillator is to view a change of direction in the oscillator as a buy or sell signal, but only in the direction of the trend. For example, if we say that a stock that is above its 90-day moving average of price is in an up-trend, then an upturn of the oscillator while in negative territory would constitute a buy signal only if the stock were above its 90-day moving average--not below it. A downturn of the oscillator while in positive territory (above zero) would be a sell signal if the stock were below its 90-day moving average of closing prices."
This indicator is described in more details in the Steve Achelis' book "Technical Analysis from A to Z".
Formula:
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","CAD DEMO",600,400);
Canvas.Divide(1,2);
CAD CAD = new CAD(Daily, 3, 10);
Canvas.cd(1);
Daily.Draw("c");
Canvas.cd(2);
CAD.Draw(Color.Red);
Namespace: RQuant.Indicator
Assembly: RQuant.Indicator (in RQuant.Indicator.dll)
CAD Members | RQuant.Indicator Namespace