moving-average-ts

1.0.3 • Public • Published

WARNING

This module is still under development

If you are familiar with python programming maybe you could check stock-pandas which provides powerful statistic indicators support, and is backed by `numpy` and `pandas`, The performance of stock-pandas is many times higher than JavaScript libraries, and can be directly used by machine learning programs.

moving-averages

The complete collection of utility methods for Moving average, including:

And `moving-averages` will also handle empty values.

install

`\$ npm i moving-averages`

usage

```import { dynamicWeightedMA, smoothingMA, ExponentialMA, MA, WeightedMA } from "moving-averages";

ma([1, 2, 3, 4, 5], 2);
// [<1 empty item>, 1.5, 2.5, 3.5, 4.5]```

Simple Moving Average: `ma(data, size)`

• data `Array.<Number>` the collection of data inside which empty values are allowed. Empty values are useful if a stock is suspended.
• size `Number` the size of the periods.

Returns `Array.<Number> | null`

Special Cases

```import { MA } from "moving-average-ts";

// If the size is less than `1`
MA([1, 2, 3], 0.5); // [1, 2, 3]

// If the size is larger than data length
MA([1, 2, 3], 5); // [<3 empty items>]

MA([, 1, , 3, 4, 5], 2);
// [<2 empty items>, 0.5, 1.5, 3.5, 4.5]```

And all of the other moving average methods have similar mechanism.

Dynamic Weighted Moving Average: `dma(data, alpha, noHead)`

• data
• alpha `Number|Array.<Number>` the coefficient or list of coefficients `alpha` represents the degree of weighting decrease for each datum.
• If `alpha` is a number, then the weighting decrease for each datum is the same.
• If `alpha` larger than `1` is invalid, then the return value will be an empty array of the same length of the original data.
• If `alpha` is an array, then it could provide different decreasing degree for each datum.
• noHead `Boolean=` whether we should abandon the first DMA.

Returns `Array.<Number> |undefined`

```import { dynamicWeightedMA } from "moving-average-ts";

dynamicWeightedMA([1, 2, 3], 2); // [<3 empty items>]

dynamicWeightedMA([1, 2, 3], 0.5); // [1, 1.5, 2.25]

dynamicWeightedMA([1, 2, 3, 4, 5], [0.1, 0.2, 0.1]); // [1, 1.2, 1.38]```

Exponential Moving Average: `ema(data, size)`

Calulates the most frequent used exponential average which covers about 86% of the total weight (when `alpha = 2 / (N + 1)`).

• data
• size `Number` the size of the periods.

Returns `Array.<Number|undefined>`

Smoothed Moving Average: `sma(data, size, times)`

Also known as the modified moving average or running moving average, with `alpha = times / size`.

• data
• size
• times `Number=1`

Returns `Array.<Number|undefined>`

Weighted Moving Average: `wma(data, size)`

Calculates convolution of the datum points with a fixed weighting function.

Returns `Array.<Number|undefined>`

MIT

Package Sidebar

Install

`npm i moving-average-ts`

0

1.0.3

ISC

23.4 kB

31