Modified on 2008/04/14 09:54 by Administrator — Categorized as: Standard Indicators


public CADO(Bars bars, string description)
public static CADO Series(Bars bars)

Parameter Description

bars The Bars object


The Chaikin Oscillator allows us to analyze accumulation and distribution in the convenient form of an oscillator. The principle behind this oscillator is the nearer the close is to the high, the more accumulation taken place. Conversely the nearer the close is to the low, the more distribution is taken place. Further, healthy rallies and declines are accompanied by increasing volume levels, conversely price tends to decline as volume dries up. The Chaikin Oscillator allows you to compare price action to volume flow, to help determine market tops and bottoms.



The Chaikin Oscillator is created by subtracting a 10-period EMA of Accumulation/Distribution from a 3-period EMA of Accumulation/Distribution.

CADO = EMA( AccumDist, 3 ) - EMA( AccumDist, 10 ) where,
CADO = Chaikin Oscillator EMA = Exponential Moving Average (using EMACalculation.Modern) AccumDist = Accumulation/Distribution indicator


using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies { public class MyStrategy : WealthScript { protected override void Execute() { // Use RSI to look for divergences between price and CADO WealthLab.LineStyle hist = WealthLab.LineStyle.Histogram; LineStyle ls = LineStyle.Solid; SetBarColors( Color.Silver, Color.Silver );

DataSeries RSIPrice = RSI.Series( Close, 10 ); DataSeries RSICado = RSI.Series( CADO.Series( Bars ), 10 ); DataSeries Diff = RSIPrice-RSICado;

ChartPane CADOPane = CreatePane( 40, true, true ); ChartPane RSIPane = CreatePane( 50, true, true ); ChartPane DiffPane = CreatePane( 50, true, true ); DrawLabel( RSIPane, "RSI of Price and CADO" ); PlotSeries( CADOPane, CADO.Series( Bars ), Color.Brown, hist, 3 ); PlotSeries( RSIPane, RSIPrice, Color.Teal, ls, 1 ); PlotSeries( RSIPane, RSICado, Color.Brown, ls, 1 ); PlotSeries( DiffPane, Diff, Color.Gray, hist, 1 );

/* Both RSI and CADO are "unstable" indicators, and it requires starting the bar at least 3 times the period */ for(int bar = 30; bar < Bars.Count; bar++) { if( Diff[bar] > 30 ) SetBarColor( bar, Color.Red ); else if( Diff[bar] < -30 ) SetBarColor( bar, Color.DarkGreen ); } } } }