 # exponential-moving-average

Calculate an exponential moving average from an array of numbers.

## Stats

StarsIssuesVersionUpdatedCreatedSize
exponential-moving-average
4901.0.06 years ago6 years ago Calculate an exponential moving average from an array of numbers.

## Install

Install with npm:
``\$ npm install --save exponential-moving-average``

## Usage

``````var ema = require('exponential-moving-average');

var arr = [
'22.27',
'22.19',
'22.08',
'22.17',
'22.18',
'22.13',
'22.23',
'22.43',
'22.24',
'22.29',
'22.15',
'22.39',
'22.38',
'22.61',
'23.36',
'24.05',
'23.75',
'23.83',
'23.95',
'23.63',
'23.82',
'23.87',
'23.65',
'23.19',
'23.10',
'23.33',
'22.68',
'23.10',
'22.40',
'22.17'
];

// calculate ema over 10 days
console.log(ema(arr, 10));``````
Results in:
``````[
'22.22',
'22.21',
'22.24',
'22.27',
'22.33',
'22.52',
'22.80',
'22.97',
'23.13',
'23.28',
'23.34',
'23.43',
'23.51',
'23.53',
'23.47',
'23.40',
'23.39',
'23.26',
'23.23',
'23.08',
'22.92'
]``````

## Options

Options may be passed as an object or as a number to specify only the range to use.

### range

The number of array elements to use for the moving average. If no number is specified half of the length of the array is used.
Example
``````ema(arr, 10);
// or
ema(arr, {range: 10});``````

### format

Format the numbers as they're added to the result.
``````ema(arr, {
format: function(num) {
return num.toFixed(3);
}
});``````

### Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

### Building docs

To generate the readme, run the following command:
``\$ npm install -g verbose/verb#dev verb-generate-readme && verb``

### Running tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
``\$ npm install && npm test``