Skip to main content

DemaEngine

Struct DemaEngine 

Source
pub struct DemaEngine { /* private fields */ }
Expand description

Double Exponential Moving Average (DEMA) over the closing price.

DEMA = 2 * e1 - e2. e1 is this crate’s EMA of the closes (EmaEngine: seeded with the first close, published from the period-th bar on); e2 is the same EMA taken over the published values of e1, so the second stage starts with the first published value of the first rather than with the first close.

That chaining differs from super::tema::TemaEngine, whose three stages all run from the first close. The two produce different early values and converge as the seeds decay.

First output: once e2 publishes, i.e. with the 2 * period - 1-th bar. Indicator::reset clears both averages.

Implementations§

Source§

impl DemaEngine

Source

pub fn new(period: usize) -> Self

Trait Implementations§

Source§

impl Indicator for DemaEngine

Source§

fn name(&self) -> &str

Source§

fn warmup_period(&self) -> usize

Source§

fn reset(&mut self)

Source§

fn on_bar(&mut self, bar: &Bar) -> Option<IndicatorOutput>

Source§

fn alerts(&self) -> Vec<IndicatorAlert>

Source§

fn on_checked_bar( &mut self, bar: &Bar, ) -> Result<Option<IndicatorOutput>, BarValidationError>

Validates a bar before forwarding it to Indicator::on_bar.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.