pub struct AverageDailyRange { /* private fields */ }Expand description
Average Daily Range over the last period completed sessions.
The indicator tracks the running high / low of the current session (the
wall-clock day of Candle::timestamp shifted by
utc_offset_minutes). When a new day begins, the just-finished session’s
range (high - low) joins a rolling window of the last period completed
days, and the reported value is their mean. The current, still-forming day is
excluded until it closes. No value is produced until the first session
completes.
§Example
use wickra_core::{Candle, Indicator, AverageDailyRange};
let hour = 3_600_000;
let mut adr = AverageDailyRange::new(2, 0).unwrap();
// Day 1 range 10 (high 110, low 100) — still forming, so None.
assert!(adr.update(Candle::new(105.0, 110.0, 100.0, 108.0, 1.0, 0).unwrap()).is_none());
// First bar of day 2 closes day 1: ADR = 10.
let v = adr.update(Candle::new(108.0, 112.0, 106.0, 109.0, 1.0, 24 * hour).unwrap()).unwrap();
assert!((v - 10.0).abs() < 1e-9);Implementations§
Source§impl AverageDailyRange
impl AverageDailyRange
Trait Implementations§
Source§impl Clone for AverageDailyRange
impl Clone for AverageDailyRange
Source§fn clone(&self) -> AverageDailyRange
fn clone(&self) -> AverageDailyRange
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for AverageDailyRange
impl Debug for AverageDailyRange
Source§impl Indicator for AverageDailyRange
impl Indicator for AverageDailyRange
Source§type Input = Candle
type Input = Candle
Type of one input data point (typically
f64 for a price, or Candle / Tick).Source§fn update(&mut self, candle: Candle) -> Option<f64>
fn update(&mut self, candle: Candle) -> Option<f64>
Feed one new data point into the indicator and return the freshly computed
output, or
None if the indicator is still warming up.Source§fn reset(&mut self)
fn reset(&mut self)
Reset all internal state, leaving the indicator equivalent to a freshly
constructed instance with the same parameters.
Source§fn warmup_period(&self) -> usize
fn warmup_period(&self) -> usize
Number of inputs required before the first non-
None output can be produced.Auto Trait Implementations§
impl Freeze for AverageDailyRange
impl RefUnwindSafe for AverageDailyRange
impl Send for AverageDailyRange
impl Sync for AverageDailyRange
impl Unpin for AverageDailyRange
impl UnsafeUnpin for AverageDailyRange
impl UnwindSafe for AverageDailyRange
Blanket Implementations§
Source§impl<T> BatchExt for Twhere
T: Indicator,
impl<T> BatchExt for Twhere
T: Indicator,
Source§fn batch(&mut self, inputs: &[Self::Input]) -> Vec<Option<Self::Output>>
fn batch(&mut self, inputs: &[Self::Input]) -> Vec<Option<Self::Output>>
Run the indicator over a slice of inputs in order, returning one output (or
None during warmup) per input.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more