Struct ta::indicators::ExponentialMovingAverage [] [src]

pub struct ExponentialMovingAverage { /* fields omitted */ }

An exponential moving average (EMA), also known as an exponentially weighted moving average (EWMA), is a type of infinite impulse response filter that applies weighting factors which decrease exponentially. The weighting for each older datum decreases exponentially, never reaching zero.

Formula

EMA formula

Where:

  • EMAt - is the value of the EMA at any time period t.
  • EMAt-1 - is the value of the EMA at the previous period t-1.
  • pt - is the input value at a time period t.
  • α - is the coefficient that represents the degree of weighting decrease, a constant smoothing factor between 0 and 1.

α is calculated with the following formula:

alpha formula

Where:

  • n - number of periods

Parameters

  • n - number of periods (integer greater than 0)

Example

use ta::indicators::ExponentialMovingAverage;
use ta::Next;

let mut ema = ExponentialMovingAverage::new(3).unwrap();
assert_eq!(ema.next(2.0), 2.0);
assert_eq!(ema.next(5.0), 3.5);
assert_eq!(ema.next(1.0), 2.25);
assert_eq!(ema.next(6.25), 4.25);

Links

Methods

impl ExponentialMovingAverage
[src]

[src]

Trait Implementations

impl Debug for ExponentialMovingAverage
[src]

[src]

Formats the value using the given formatter.

impl Clone for ExponentialMovingAverage
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more

impl Next<f64> for ExponentialMovingAverage
[src]

[src]

impl<T: Close> Next<T> for ExponentialMovingAverage
[src]

[src]

impl Reset for ExponentialMovingAverage
[src]

[src]

impl Default for ExponentialMovingAverage
[src]

[src]

Returns the "default value" for a type. Read more