@symblight/react-stockcharts
Version:
Highly customizable stock charts with ReactJS and d3
78 lines (61 loc) • 2.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
exports.default = function () {
var options = _defaultOptionsForComputation.ATR;
var source = function source(d) {
return { open: d.open, high: d.high, low: d.low, close: d.close };
};
function calculator(data) {
var _options = options,
windowSize = _options.windowSize;
var high = function high(d) {
return source(d).high;
},
low = function low(d) {
return source(d).low;
},
close = function close(d) {
return source(d).close;
};
var cciAlgorithm = (0, _utils.slidingWindow)().windowSize(windowSize).source(source).accumulator(function (values) {
var highestHigh = (0, _d3Array.max)(values, low);
var lowestLow = (0, _d3Array.min)(values, high);
var currentClose = close((0, _utils.last)(values));
var TP = (highestHigh + lowestLow + currentClose) / 3;
var smaTP = TP / windowSize;
var meanDeviation = TP / smaTP;
var cciData = (TP - smaTP) / (0.15 * meanDeviation);
return cciData;
});
var newData = cciAlgorithm(data);
return newData;
}
calculator.undefinedLength = function () {
var _options2 = options,
windowSize = _options2.windowSize;
return windowSize - 1;
};
calculator.options = function (x) {
if (!arguments.length) {
return options;
}
options = _extends({}, _defaultOptionsForComputation.ATR, x);
return calculator;
};
calculator.source = function (x) {
if (!arguments.length) {
return source;
}
source = x;
return calculator;
};
return calculator;
};
var _d3Array = require("d3-array");
var _defaultOptionsForComputation = require("./defaultOptionsForComputation");
var _utils = require("../utils");
var _indicator = require("../indicator");
//# sourceMappingURL=cci.js.map