UNPKG

moving-averages-js

Version:

The FinTech utility collections of simple, cumulative, and exponential moving averages.

42 lines (41 loc) 1.08 kB
"use strict"; // Weighted moving average Object.defineProperty(exports, "__esModule", { value: true }); var common_1 = require("./common"); exports.default = (function (data, size) { var length = data.length; if (size <= 1) { return data.slice(); } if (size > length) { return Array(length); } var ret = []; var denominator = (size * (size + 1)) / 2; var prepare = size - 1; var sum = 0; var numerator = 0; var datum = 0; var i = 0; var real = -1; for (; i < prepare; i++) { datum = data[i]; if ((0, common_1.isNumber)(datum)) { sum += datum; numerator += (i + 1) * datum; } } for (; i < length; i++, real++) { datum = data[i]; if ((0, common_1.isNumber)(datum)) { sum += datum; numerator += size * datum; } if (real >= 0 && (0, common_1.isNumber)(data[real])) { sum -= data[real]; } ret[i] = numerator / denominator; numerator -= sum; } return ret; });