%PDF-1.5 %���� ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY
| Server IP : 14.207.165.8 / Your IP : 216.73.216.26 Web Server : Apache/2.4.18 (Ubuntu) System : Linux 246 4.4.0-210-generic #242-Ubuntu SMP Fri Apr 16 09:57:56 UTC 2021 x86_64 User : root ( 0) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : exec,passthru,shell_exec,system,proc_open,popen,pcntl_exec MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/thread-self/root/var/www/html/ppaobm/vendor/bower-asset/highcharts/indicators/ |
Upload File : |
/**
* @license Highcharts JS v7.1.1 (2019-04-09)
*
* Indicator series type for Highstock
*
* (c) 2010-2019 Kacper Madej
*
* License: www.highcharts.com/license
*/
'use strict';
(function (factory) {
if (typeof module === 'object' && module.exports) {
factory['default'] = factory;
module.exports = factory;
} else if (typeof define === 'function' && define.amd) {
define('highcharts/indicators/zigzag', ['highcharts', 'highcharts/modules/stock'], function (Highcharts) {
factory(Highcharts);
factory.Highcharts = Highcharts;
return factory;
});
} else {
factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
}
}(function (Highcharts) {
var _modules = Highcharts ? Highcharts._modules : {};
function _registerModule(obj, path, args, fn) {
if (!obj.hasOwnProperty(path)) {
obj[path] = fn.apply(null, args);
}
}
_registerModule(_modules, 'indicators/zigzag.src.js', [_modules['parts/Globals.js']], function (H) {
/* *
*
* (c) 2010-2019 Kacper Madej
*
* License: www.highcharts.com/license
*
* */
var seriesType = H.seriesType,
UNDEFINED;
/**
* The Zig Zag series type.
*
* @private
* @class
* @name Highcharts.seriesTypes.zigzag
*
* @augments Highcharts.Series
*/
seriesType(
'zigzag',
'sma',
/**
* Zig Zag indicator.
*
* This series requires `linkedTo` option to be set.
*
* @sample stock/indicators/zigzag
* Zig Zag indicator
*
* @extends plotOptions.sma
* @since 6.0.0
* @product highstock
* @optionparent plotOptions.zigzag
*/
{
/**
* @excluding index, period
*/
params: {
/**
* The point index which indicator calculations will base - low
* value.
*
* For example using OHLC data, index=2 means the indicator will be
* calculated using Low values.
*/
lowIndex: 2,
/**
* The point index which indicator calculations will base - high
* value.
*
* For example using OHLC data, index=1 means the indicator will be
* calculated using High values.
*/
highIndex: 1,
/**
* The threshold for the value change.
*
* For example deviation=1 means the indicator will ignore all price
* movements less than 1%.
*/
deviation: 1
}
},
/**
* @lends Highcharts.Series#
*/
{
nameComponents: ['deviation'],
nameSuffixes: ['%'],
nameBase: 'Zig Zag',
getValues: function (series, params) {
var lowIndex = params.lowIndex,
highIndex = params.highIndex,
deviation = params.deviation / 100,
deviations = {
'low': 1 + deviation,
'high': 1 - deviation
},
xVal = series.xData,
yVal = series.yData,
yValLen = yVal ? yVal.length : 0,
Zigzag = [],
xData = [],
yData = [],
i, j,
ZigzagPoint,
firstZigzagLow,
firstZigzagHigh,
directionUp,
zigZagLen,
exitLoop = false,
yIndex = false;
// Exit if not enught points or no low or high values
if (
xVal.length <= 1 ||
(
yValLen &&
(
yVal[0][lowIndex] === UNDEFINED ||
yVal[0][highIndex] === UNDEFINED
)
)
) {
return false;
}
// Set first zigzag point candidate
firstZigzagLow = yVal[0][lowIndex];
firstZigzagHigh = yVal[0][highIndex];
// Search for a second zigzag point candidate,
// this will also set first zigzag point
for (i = 1; i < yValLen; i++) {
// requried change to go down
if (yVal[i][lowIndex] <= firstZigzagHigh * deviations.high) {
Zigzag.push([xVal[0], firstZigzagHigh]);
// second zigzag point candidate
ZigzagPoint = [xVal[i], yVal[i][lowIndex]];
// next line will be going up
directionUp = true;
exitLoop = true;
// requried change to go up
} else if (
yVal[i][highIndex] >= firstZigzagLow * deviations.low
) {
Zigzag.push([xVal[0], firstZigzagLow]);
// second zigzag point candidate
ZigzagPoint = [xVal[i], yVal[i][highIndex]];
// next line will be going down
directionUp = false;
exitLoop = true;
}
if (exitLoop) {
xData.push(Zigzag[0][0]);
yData.push(Zigzag[0][1]);
j = i++;
i = yValLen;
}
}
// Search for next zigzags
for (i = j; i < yValLen; i++) {
if (directionUp) { // next line up
// lower when going down -> change zigzag candidate
if (yVal[i][lowIndex] <= ZigzagPoint[1]) {
ZigzagPoint = [xVal[i], yVal[i][lowIndex]];
}
// requried change to go down -> new zigzagpoint and
// direction change
if (yVal[i][highIndex] >= ZigzagPoint[1] * deviations.low) {
yIndex = highIndex;
}
} else { // next line down
// higher when going up -> change zigzag candidate
if (yVal[i][highIndex] >= ZigzagPoint[1]) {
ZigzagPoint = [xVal[i], yVal[i][highIndex]];
}
// requried change to go down -> new zigzagpoint and
// direction change
if (yVal[i][lowIndex] <= ZigzagPoint[1] * deviations.high) {
yIndex = lowIndex;
}
}
if (yIndex !== false) { // new zigzag point and direction change
Zigzag.push(ZigzagPoint);
xData.push(ZigzagPoint[0]);
yData.push(ZigzagPoint[1]);
ZigzagPoint = [xVal[i], yVal[i][yIndex]];
directionUp = !directionUp;
yIndex = false;
}
}
zigZagLen = Zigzag.length;
// no zigzag for last point
if (
zigZagLen !== 0 &&
Zigzag[zigZagLen - 1][0] < xVal[yValLen - 1]
) {
// set last point from zigzag candidate
Zigzag.push(ZigzagPoint);
xData.push(ZigzagPoint[0]);
yData.push(ZigzagPoint[1]);
}
return {
values: Zigzag,
xData: xData,
yData: yData
};
}
}
);
/**
* A `Zig Zag` series. If the [type](#series.zigzag.type) option is not
* specified, it is inherited from [chart.type](#chart.type).
*
* @extends series,plotOptions.zigzag
* @since 6.0.0
* @product highstock
* @excluding dataParser, dataURL
* @apioption series.zigzag
*/
});
_registerModule(_modules, 'masters/indicators/zigzag.src.js', [], function () {
});
}));