Accumulation/Distribution Oscillator

Technical Analysis Indicator: adosc

Fork me on GitHub

Function Prototype

/* Accumulation/Distribution Oscillator */
/* Type: indicator */
/* Input arrays: 4    Options: 2    Output arrays: 1 */
/* Inputs: high, low, close, volume */
/* Options: short period, long period */
/* Outputs: adosc */
int ti_adosc_start(TI_REAL const *options);
int ti_adosc(int size,
      TI_REAL const *const *inputs,
      TI_REAL const *options,
      TI_REAL *const *outputs);

Description

This documentation is still a work in progress. It has omissions, and it probably has errors too. If you see any issues, or have any general feedback, please get in touch.

The Accumulation/Distribution Oscillator is also known as the Chaikin Oscillator after its inventor.

It takes two parameters: a short period n and a long period m. The indicator calculated by taking a moving average of n periods of Accumulation/Distribution Line subtracted from a moving average of m periods of Accumulation/Distribution Line. The moving average used is Exponential Moving Average.

See Also

References

Example Usage

Calling From C

/* Example usage of Accumulation/Distribution Oscillator */
/* Assuming that 'high', 'low', 'close', and 'volume' are pre-loaded arrays of size 'in_size'. */
TI_REAL *inputs[] = {high, low, close, volume};
TI_REAL options[] = {2, 5}; /* short period, long period */
TI_REAL *outputs[1]; /* adosc */

/* Determine how large the output size is for our options. */
const int out_size = in_size - ti_adosc_start(options);

/* Allocate memory for output. */
outputs[0] = malloc(sizeof(TI_REAL) * out_size); assert(outputs[0] != 0); /* adosc */

/* Run the actual calculation. */
const int ret = ti_adosc(in_size, inputs, options, outputs);
assert(ret == TI_OKAY);

Calling From Lua (with Tulip Chart bindings)

-- Example usage of Accumulation/Distribution Oscillator
adosc = ti.adosc(high, low, close, volume, 2, 5)

Example Calculation

short period = 2, long period = 5

datehighlowclosevolumeadosc
2005-11-0182.1581.2981.595,653,100.00
2005-11-0281.8980.6481.066,447,400.00
2005-11-0383.0381.3182.877,690,900.00
2005-11-0483.3082.6583.003,831,400.00
2005-11-0783.8583.0783.614,455,100.001,900,759.85
2005-11-0883.9083.1183.153,798,000.00399,262.04
2005-11-0983.3382.4982.843,936,200.00-241,806.82
2005-11-1084.3082.3083.994,732,000.00757,828.29
2005-11-1184.8484.1584.554,841,300.001,068,830.29
2005-11-1485.0084.1184.363,915,300.00328,526.25
2005-11-1585.9084.0385.536,830,800.001,466,909.30
2005-11-1686.5885.3986.546,694,100.003,475,262.29
2005-11-1786.9885.7686.895,293,600.004,653,474.79
2005-11-1888.0087.1787.777,985,800.005,067,839.27
2005-11-2187.8787.0187.294,807,900.003,474,675.62

Chart

 

Other Indicators

Previous indicator: Vector Addition

Next indicator: Average Directional Movement Index

Random indicator: Average Directional Movement Index