Files
QuanTAlib/docs/EMA.md
T
Miha Kralj 3aaa1c95c6 docs
2022-11-28 10:54:37 -08:00

1013 B

EMA: Exponential Moving Average

EMA needs very short history buffer and calculates the EMA value using just the previous EMA value. The weight of the new datapoint (k) is k = 2 / (period-1)

Calculation

There is an adopted practice to calculate SMA when n < period.


EMA_n = \left\{ \begin{array}{cl}
\frac{1}{p}\left( data_{n}-data_{n-p}\right)+SMA_{n-1} & : \ n \leq period \\
{k}\times ({data_{n}} - EMA_{n-1}) + EMA_{n-1} & : \ x > period
\end{array} \right.

Implementation

EMA_Series mean = new(source: data, period: p, useNaN: false);
  • TSeries source - List of value tuples (DateTime, double)
  • int period - Integer representing the period of SMA
  • bool useNaN - if true, initial values from 1 to period-1 will be replaced with NaN. If false, the initial calculation will return values for SMA(length) instead of SMA(period)

Comparison & Validation

Validation tests Performance tests

Visual analysis

Alt text

References