Я разрабатываю проект, в котором мы используем библиотеку Highcharts.js / Highstock.js.Я использую свечную диаграмму, где я отображаю индикатор VWAP (вот пример кода в JSFiddle: http://jsfiddle.net/ogorobets/vh3y8195/).
var ohlc = JSON.parse(ohlcStringified),
volume = JSON.parse(volumeStringified);
Highcharts.stockChart('container', {
chart: {
borderWidth: 1
},
title: {
text: 'Volume Weighted Average Price (VWAP)'
},
legend: {
enabled: true
},
yAxis: [{
height: '60%'
}, {
top: '65%',
height: '35%',
offset: 0
}],
series: [{
type: 'candlestick',
id: 'AAPL',
name: 'AAPL',
data: ohlc,
tooltip: {
valueDecimals: 2
}
}, {
type: 'column',
id: 'volume',
name: 'Volume',
data: volume,
yAxis: 1
}, {
type: 'vwap',
linkedTo: 'AAPL',
showInLegend: true
}]
});
Для этого графика мне нужно отображать индикатор VWAP только для данных текущего дня. Но в официальной документации (https://www.highcharts.com/docs/chart-and-series-types/technical-indicator-series) Я вижу, что мы можем установить параметры только для некоторого индикатора (например, 'params: {period: 7}' для индикатора EMA), но я не нашел возможности установить период времени, для которого мы показываем индикатор (VWAP).в моем случае). Поведение по умолчанию заключается в том, что индикатор отображается для всей временной шкалы. Пожалуйста, сообщите, возможно ли установить период времени, для которого отображается индикатор VWAP?
Я имею в виду, мне не нужно устанавливать область видимого диапазонагде индикатор отображается с помощью rangeSelector до одного дня. Но вместо этого мне не нужно рисовать индикатор VWAP на другой временной шкале графика, кроме текущего дня. Знаете ли вы, что можно разработать это с highstock.js?
Спасибозаранее!
Обновление 1:
Спасибо, Войцех, Chmiel! По вашей идее (Использование скрытой серии картОн состоит только из данных за текущий день.И на основе этого нового графика для отображения индикатора WVAP) я создал необходимое решение.
Вот ссылка на JSFiddle: http://jsfiddle.net/ogorobets/vh3y8195/50/.Вот мой последний код:
var ohlc = JSON.parse(ohlcStringified),
volume = JSON.parse(volumeStringified);
var wvapSerieData = [];
var lastDayDate = new Date("December 6, 2018 00:00:00");
var lastDayDateTs = lastDayDate.getTime();
for(var i = 0; i < ohlc.length; i++) {
var currentPoint = ohlc[i];
if(lastDayDateTs <= currentPoint.x) {
var pointToAdd = Object.assign({},
currentPoint, {color: 'transparent', lineColor: 'transaprent'});
wvapSerieData.push(pointToAdd);
}
}
Highcharts.stockChart('container', {
chart: {
borderWidth: 1
},
title: {
text: 'Volume Weighted Average Price (VWAP)'
},
legend: {
enabled: true
},
yAxis: [{
height: '60%'
}, {
top: '65%',
height: '35%',
offset: 0
}],
series: [{
type: 'candlestick',
id: 'AAPL',
name: 'AAPL',
data: ohlc,
tooltip: {
valueDecimals: 2
}
}, {
type: 'column',
id: 'volume',
name: 'Volume',
data: volume,
yAxis: 1
},
{
type: 'candlestick',
id: 'wvap-serie',
color: 'transparent',
data: wvapSerieData,
enableMouseTracking: false,
tooltip: {
valueDecimals: 2
}
},
{
type: 'vwap',
linkedTo: 'wvap-serie',
showInLegend: true,
enableMouseTracking: true,
dataGrouping: {
enabled: true,
}
}]
});