An open API service indexing awesome lists of open source software.

https://github.com/jonschlinkert/exponential-moving-average

Calculate an exponential moving average from an array of numbers.
https://github.com/jonschlinkert/exponential-moving-average

array average calculate exponential-moving-average math moving-average numbers

Last synced: 10 months ago
JSON representation

Calculate an exponential moving average from an array of numbers.

Awesome Lists containing this project

README

          

# exponential-moving-average [![NPM version](https://img.shields.io/npm/v/exponential-moving-average.svg?style=flat)](https://www.npmjs.com/package/exponential-moving-average) [![NPM monthly downloads](https://img.shields.io/npm/dm/exponential-moving-average.svg?style=flat)](https://npmjs.org/package/exponential-moving-average) [![NPM total downloads](https://img.shields.io/npm/dt/exponential-moving-average.svg?style=flat)](https://npmjs.org/package/exponential-moving-average) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/exponential-moving-average.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/exponential-moving-average)

> Calculate an exponential moving average from an array of numbers.

## Install

Install with [npm](https://www.npmjs.com/):

```sh
$ npm install --save exponential-moving-average
```

## Usage

```js
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:

```js
[
'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](#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**

```js
ema(arr, 10);
// or
ema(arr, {range: 10});
```

### format

Format the numbers as they're added to the result.

```js
ema(arr, {
format: function(num) {
return num.toFixed(3);
}
});
```

## About

### Contributing

Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).

Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.

### Building docs

_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_

To generate the readme, run the following command:

```sh
$ 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:

```sh
$ npm install && npm test
```

### Author

**Jon Schlinkert**

* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)

### License

Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).

***

_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.5.0, on April 09, 2017._