pub struct ADI { /* private fields */ }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.
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 herePerformance
O(1)
See also
Implementations
Trait Implementations
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
type Params = PeriodType
type Params = PeriodType
Method parameters
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
Creates an instance of the method with given parameters and initial value, wrapped by historical data holder
Creates an instance of the method with given parameters and initial value, wrapped by last produced value holder
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
Auto Trait Implementations
impl RefUnwindSafe for ADI
impl UnwindSafe for ADI
Blanket Implementations
Mutably borrows from an owned value. Read more