| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /* *
- *
- * License: www.highcharts.com/license
- *
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
- *
- * */
- 'use strict';
- import U from '../../Core/Utilities.js';
- var isArray = U.isArray, seriesType = U.seriesType;
- /**
- * The Trend line series type.
- *
- * @private
- * @class
- * @name Highcharts.seriesTypes.trendline
- *
- * @augments Highcharts.Series
- */
- seriesType('trendline', 'sma',
- /**
- * Trendline (linear regression) fits a straight line to the selected data
- * using a method called the Sum Of Least Squares. This series requires the
- * `linkedTo` option to be set.
- *
- * @sample stock/indicators/trendline
- * Trendline indicator
- *
- * @extends plotOptions.sma
- * @since 7.1.3
- * @product highstock
- * @requires stock/indicators/indicators
- * @requires stock/indicators/trendline
- * @optionparent plotOptions.trendline
- */
- {
- /**
- * @excluding period
- */
- params: {
- /**
- * The point index which indicator calculations will base. For
- * example using OHLC data, index=2 means the indicator will be
- * calculated using Low values.
- *
- * @default 3
- */
- index: 3
- }
- },
- /**
- * @lends Highcharts.Series#
- */
- {
- nameBase: 'Trendline',
- nameComponents: false,
- getValues: function (series, params) {
- var xVal = series.xData, yVal = series.yData, LR = [], xData = [], yData = [], sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0, xValLength = xVal.length, index = params.index, alpha, beta, i, x, y;
- // Get sums:
- for (i = 0; i < xValLength; i++) {
- x = xVal[i];
- y = isArray(yVal[i]) ? yVal[i][index] : yVal[i];
- sumX += x;
- sumY += y;
- sumXY += x * y;
- sumX2 += x * x;
- }
- // Get slope and offset:
- alpha = (xValLength * sumXY - sumX * sumY) /
- (xValLength * sumX2 - sumX * sumX);
- if (isNaN(alpha)) {
- alpha = 0;
- }
- beta = (sumY - alpha * sumX) / xValLength;
- // Calculate linear regression:
- for (i = 0; i < xValLength; i++) {
- x = xVal[i];
- y = alpha * x + beta;
- // Prepare arrays required for getValues() method
- LR[i] = [x, y];
- xData[i] = x;
- yData[i] = y;
- }
- return {
- xData: xData,
- yData: yData,
- values: LR
- };
- }
- });
- /**
- * A `TrendLine` series. If the [type](#series.trendline.type) option is not
- * specified, it is inherited from [chart.type](#chart.type).
- *
- * @extends series,plotOptions.trendline
- * @since 7.1.3
- * @product highstock
- * @excluding dataParser, dataURL
- * @requires stock/indicators/indicators
- * @requires stock/indicators/trendline
- * @apioption series.trendline
- */
- ''; // to include the above in the js output
|