package.es-modules.Stock.Indicators.SlowStochastic.SlowStochasticIndicator.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of highcharts Show documentation
Show all versions of highcharts Show documentation
JavaScript charting framework
The newest version!
/* *
*
* License: www.highcharts.com/license
*
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
*
* */
'use strict';
import SeriesRegistry from '../../../Core/Series/SeriesRegistry.js';
const { sma: SMAIndicator, stochastic: StochasticIndicator } = SeriesRegistry.seriesTypes;
import U from '../../../Core/Utilities.js';
const { extend, merge } = U;
/* *
*
* Class
*
* */
/**
* The Slow Stochastic series type.
*
* @private
* @class
* @name Highcharts.seriesTypes.slowstochastic
*
* @augments Highcharts.Series
*/
class SlowStochasticIndicator extends StochasticIndicator {
/* *
*
* Functions
*
* */
getValues(series, params) {
const periods = params.periods, fastValues = super.getValues.call(this, series, params), slowValues = {
values: [],
xData: [],
yData: []
};
if (!fastValues) {
return;
}
slowValues.xData = fastValues.xData.slice(periods[1] - 1);
const fastYData = fastValues.yData.slice(periods[1] - 1);
// Get SMA(%D)
const smoothedValues = SMAIndicator.prototype.getValues.call(this, {
xData: slowValues.xData,
yData: fastYData
}, {
index: 1,
period: periods[2]
});
if (!smoothedValues) {
return;
}
// Format data
for (let i = 0, xDataLen = slowValues.xData.length; i < xDataLen; i++) {
slowValues.yData[i] = [
fastYData[i][1],
smoothedValues.yData[i - periods[2] + 1] || null
];
slowValues.values[i] = [
slowValues.xData[i],
fastYData[i][1],
smoothedValues.yData[i - periods[2] + 1] || null
];
}
return slowValues;
}
}
/* *
*
* Static Properties
*
* */
/**
* Slow Stochastic oscillator. This series requires the `linkedTo` option
* to be set and should be loaded after `stock/indicators/indicators.js`
* and `stock/indicators/stochastic.js` files.
*
* @sample stock/indicators/slow-stochastic
* Slow Stochastic oscillator
*
* @extends plotOptions.stochastic
* @since 8.0.0
* @product highstock
* @requires stock/indicators/indicators
* @requires stock/indicators/stochastic
* @requires stock/indicators/slow-stochastic
* @optionparent plotOptions.slowstochastic
*/
SlowStochasticIndicator.defaultOptions = merge(StochasticIndicator.defaultOptions, {
params: {
/**
* Periods for Slow Stochastic oscillator: [%K, %D, SMA(%D)].
*
* @type {Array}
* @default [14, 3, 3]
*/
periods: [14, 3, 3]
}
});
extend(SlowStochasticIndicator.prototype, {
nameBase: 'Slow Stochastic'
});
SeriesRegistry.registerSeriesType('slowstochastic', SlowStochasticIndicator);
/* *
*
* Default Export
*
* */
export default SlowStochasticIndicator;
/* *
*
* API Options
*
* */
/**
* A Slow Stochastic indicator. If the [type](#series.slowstochastic.type)
* option is not specified, it is inherited from [chart.type](#chart.type).
*
* @extends series,plotOptions.slowstochastic
* @since 8.0.0
* @product highstock
* @requires stock/indicators/indicators
* @requires stock/indicators/stochastic
* @requires stock/indicators/slow-stochastic
* @apioption series.slowstochastic
*/
''; // To include the above in the js output