series-processing
Version:
Time-series processing for forex, market analysis, including MA, EMA,...
31 lines (25 loc) • 897 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
/**
* Simple Moving Average
* @see https://en.wikipedia.org/wiki/Moving_average
*
* <output series> = sma(<input series>, length)
*/
var SMA = exports.SMA = function SMA(outputKey, inputKey, length) {
return function (lastPoint, dataStream) {
var segment = dataStream.getLastSegment(length);
var segmentLength = segment.length;
if (segmentLength < length) {
// Not enough to calculate
return null;
}
var sma = segment.reduce(function (n, point) {
return n + point[inputKey];
}, 0) / segmentLength;
return _defineProperty({}, outputKey, sma);
};
};