Struct yata::methods::ADI[][src]

pub struct ADI { /* fields omitted */ }
Expand description

Accumulation Distribution Index of specified length for timeseries of OHLCV

CLV ranges from -1.0 when the close is the low of the day, to +1.0 when it’s the high. For instance if the close is 3/4 the way up the range then CLV is +0.5. The accumulation/distribution index adds up volume multiplied by the CLV factor, i.e.

ADI = ADI_prev + CLV * volume

The name accumulation/distribution comes from the idea that during accumulation buyers are in control and the price will be bid up through the day, or will make a recovery if sold down, in either case more often finishing near the day’s high than the low. The opposite applies during distribution.

The accumulation/distribution index is similar to on balance volume, but acc/dist is based on the close within the day’s range, instead of the close-to-close up or down that the latter uses.

Can be used by a shortcut ADI

Used in indicators: Chaikin Money Flow, Chaikin Oscillator

Parameters

Has a single parameter length: PeriodType

When length == 0, ADI becomes windowless. That means full ADI value accumulation over time.

When length > 0, ADI will be calculated over the last length values.

Input type

Input type is reference to OHLCV

Output type

Output type is ValueType

Examples

use yata::prelude::*;
use yata::methods::ADI;
use yata::helpers::RandomCandles;

let mut candles = RandomCandles::default();
let mut windowless = ADI::new(0, &candles.first()).unwrap();
let mut windowed = ADI::new(3, &candles.first()).unwrap(); // <----- Window size 3

let candle = candles.next().unwrap();
assert_ne!(windowless.next(&candle), windowed.next(&candle));

let candle = candles.next().unwrap();
assert_ne!(windowless.next(&candle), windowed.next(&candle));

let candle = candles.next().unwrap();
assert!((windowless.next(&candle)-windowed.next(&candle)).abs() < 1e-5); // Must be equal here

Performance

O(1)

See also

ADI

Implementations

Returns last calculated value

Trait Implementations

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Deserialize this value from the given Serde deserializer. Read more

Method parameters

Input value type

Output value type

Static method for creating an instance of the method with given parameters and initial value (simply first input value)

Generates next output value based on the given input value

Returns a name of the method

Returns memory size of the method (size, align)

Iterates the Method over the given inputs slice and returns Vec of output values. Read more

Applies method to the sequence in-place.

Creates new Method instance and iterates it over the given inputs slice and returns Vec of output values. Read more

Creates new Method instance and applies it to the sequence.

Creates a function from the Method instance

Creates new function based on the method

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.