UNPKG

@syncfusion/ej2-charts

Version:

Feature-rich chart control with built-in support for over 25 chart types, technical indictors, trendline, zooming, tooltip, selection, crosshair and trackball.

100 lines (99 loc) 4.06 kB
var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); import { TechnicalAnalysis } from './indicator-base'; /** * The `AccumulationDistributionIndicator` module is used to render the accumulation distribution indicator. */ var AccumulationDistributionIndicator = /** @class */ (function (_super) { __extends(AccumulationDistributionIndicator, _super); function AccumulationDistributionIndicator() { return _super !== null && _super.apply(this, arguments) || this; } /** * Defines the predictions using accumulation distribution approach. * * @private * @param {TechnicalIndicator} indicator - The technical indicator for which the data source is to be initialized. * @returns {void} */ AccumulationDistributionIndicator.prototype.initDataSource = function (indicator) { var adPoints = []; var validData = indicator.points; if (validData.length > 0 && validData.length > indicator.period) { adPoints = this.calculateADPoints(indicator, validData); } this.setSeriesRange(adPoints, indicator); }; /** * Calculates the accumulation distribution (AD) points for a technical indicator. * * @param {TechnicalIndicator} indicator - The technical indicator for which the AD points are calculated. * @param {Points[]} validData - The valid data points used for calculation. * @returns {Points[]} - The calculated accumulation distribution (AD) points. */ AccumulationDistributionIndicator.prototype.calculateADPoints = function (indicator, validData) { var temp = []; var sum = 0; var i = 0; var value = 0; var high = 0; var low = 0; var close = 0; var signalSeries = indicator.targetSeries[0]; for (i = 0; i < validData.length; i++) { high = Number(validData[i].high); low = Number(validData[i].low); close = Number(validData[i].close); /** * Money Flow Multiplier = [(Close - Low) - (High - Close)] /(High - Low) * Money Flow Volume = Money Flow Multiplier x Volume for the Period * ADL = Previous ADL + Current Period's Money Flow Volume */ value = ((close - low) - (high - close)) / ((high - low) ? (high - low) : 1); /** * Sum is to calculate the Y values of the Accumulation distribution indicator */ sum = sum + value * Number(validData[i].volume); /** * To calculate the x and y values for the Accumulation distribution indicator */ temp[i] = this.getDataPoint(validData[i].x, sum, validData[i], signalSeries, temp.length); } return temp; }; /** * To destroy the Accumulation Distribution Technical Indicator. * * @returns {void} * @private */ AccumulationDistributionIndicator.prototype.destroy = function () { /** * Destroys the Accumulation Distribution Technical indicator. */ }; /** * Get module name. * * @returns {string} - Returns the module name. */ AccumulationDistributionIndicator.prototype.getModuleName = function () { /** * Returns the module name of the Indicator. */ return 'AccumulationDistributionIndicator'; }; return AccumulationDistributionIndicator; }(TechnicalAnalysis)); export { AccumulationDistributionIndicator };