Indicado.EMA (Indicado v0.0.4) View Source

This is the EMA module used for calculating Exponential Moving Average

Link to this section Summary

Functions

Calculates EMA for the list. It needs non empty list of numbers and a positive period argument.

Calculates EMA for the list. It needs non empty list of numbers and a positive period argument.

Link to this section Functions

Specs

eval([list(), ...], pos_integer()) :: {:ok, [float(), ...] | {:error, atom()}}

Calculates EMA for the list. It needs non empty list of numbers and a positive period argument.

Returns {:ok, ema_list} or {:error, reason}

Examples

iex> Indicado.EMA.eval([1, 2, 3, 4], 2)
{:ok, [1.0, 1.6666666666666665, 2.5555555555555554, 3.518518518518518]}

iex> Indicado.EMA.eval([2, 4, 5, 10, 100, 1000], 3)
{:ok, [2.0, 3.0, 4.0, 7.0, 53.5, 526.75]}

iex> Indicado.EMA.eval([2, 4, 5, 10, 100, 1000], 5)
{:ok, [2.0, 2.666666666666667, 3.4444444444444446, 5.62962962962963, 37.08641975308642, 358.0576131687243]}

iex> Indicado.EMA.eval([], 2)
{:error, :not_enough_data}

iex> Indicado.EMA.eval([1, 2, 3, 4], 0)
{:error, :bad_period}

Specs

eval!([list(), ...], pos_integer()) :: [float(), ...] | no_return()

Calculates EMA for the list. It needs non empty list of numbers and a positive period argument.

Raises NotEnoughDataError if the given list is not longh enough for calculating RSI. Raises BadPeriodError if period is an unacceptable number.

Examples

iex> Indicado.EMA.eval!([1, 2, 3, 4], 2)
[1.0, 1.6666666666666665, 2.5555555555555554, 3.518518518518518]

iex> Indicado.EMA.eval!([], 2)
** (NotEnoughDataError) not enough data

iex> Indicado.EMA.eval!([1, 3, 4], 0)
** (BadPeriodError) bad period