moving-average-ts
v1.0.3
Published
[![Build Status](https://travis-ci.org/kaelzhang/moving-averages.svg?branch=master)](https://travis-ci.org/kaelzhang/moving-averages) [![Coverage](https://codecov.io/gh/kaelzhang/moving-averages/branch/master/graph/badge.svg)](https://codecov.io/gh/kaelzh
Downloads
46
Maintainers
Readme
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:
- simple moving average (MA)
- dynamic weighted moving average (DMA)
- exponential moving average (EMA)
- smoothed moving average (SMA)
- weighted moving average (WMA)
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 coefficientsalpha
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 than1
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.
- If
- 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