Struct ux_indicators::indicators::AverageTrueRange [−][src]
Average true range (ATR).
A technical analysis volatility indicator, originally developed by J. Welles Wilder. The average true range is an N-day smoothed moving average of the true range values. This implementation uses exponential moving average.
Formula
ATR(length)t = EMA(length) of TRt
Where:
- EMA(n) - exponential moving average with smoothing period length
- TRt - true range for period t
Parameters
- length - smoothing period of EMA (integer greater than 0)
Example
extern crate core; #[macro_use] extern crate assert_approx_eq; use core::{Next, DataItem}; use core::indicators::AverageTrueRange; fn main() { let data = vec![ // open, high, low, close, atr (9.7 , 10.0, 9.0, 9.5 , 1.0), // tr = high - low = 10.0 - 9.0 = 1.0 (9.9 , 10.4, 9.8, 10.2 , 0.95), // tr = high - prev_close = 10.4 - 9.5 = 0.9 (10.1 , 10.7, 9.4, 9.7 , 1.125), // tr = high - low = 10.7 - 9.4 = 1.3 (9.1 , 9.2 , 8.1, 8.4 , 1.3625), // tr = prev_close - low = 9.7 - 8.1 = 1.6 ]; let mut indicator = AverageTrueRange::new(3).unwrap(); for (open, high, low, close, atr) in data { let di = DataItem::builder() .high(high) .low(low) .close(close) .open(open) .volume(1000.0) .build().unwrap(); assert_approx_eq!(indicator.next(&di), atr); } }
Implementations
impl AverageTrueRange
[src]
Trait Implementations
impl Clone for AverageTrueRange
[src]
fn clone(&self) -> AverageTrueRange
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
impl Debug for AverageTrueRange
[src]
impl Default for AverageTrueRange
[src]
impl Display for AverageTrueRange
[src]
impl<'a, T: High + Low + Close> Next<&'a T> for AverageTrueRange
[src]
impl Next<f64> for AverageTrueRange
[src]
impl Reset for AverageTrueRange
[src]
Auto Trait Implementations
impl RefUnwindSafe for AverageTrueRange
impl Send for AverageTrueRange
impl Sync for AverageTrueRange
impl Unpin for AverageTrueRange
impl UnwindSafe for AverageTrueRange
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,