如何在高图中实现移动平均线

时间:2013-07-08 09:48:31

标签: highcharts

我想在hightchart中实现移动平均线。 高屏中是否有任何选项。

赞:我有系列10, 20, 30, 40, 50, 60, 70

此处移动平均线为2

然后第二个系列将生成系列1

的平均值

喜欢:15, 35, 105(取每两个数据点的平均值)

将此series1移动平均值系列嵌入到同一图表中。

4 个答案:

答案 0 :(得分:4)

你可以计算移动平均线并像这样添加:

$('#buttonAddSeries').click(function() {
    var series = chart.series[0];
    var data = [];
    var period = 2;
    var sumForAverage = 0;
    var i;
    for(i=0;i<series.data.length;i++) {
        sumForAverage += series.data[i].y;
        if(i<period) {
            data.push(null);
        } else {
            sumForAverage -= series.data[i-period].y;
            data.push([series.data[i].x, sumForAverage/period]);
        }
    }
    chart.addSeries({
        name: 'Moving Average',
        data: data
    });
});

您可以使用任意数量的点作为句点,而不仅仅是2。

答案 1 :(得分:3)

不,目前HighCharts不会像这样进行任何数据分析。您需要生成自己的移动平均线并将其创建为自己的系列或plotLine / plotBand。

答案 2 :(得分:2)

现在有一个Highcharts插件,你可以添加一个SMA(简单移动平均线)。

请参阅:http://www.highcharts.com/plugin-registry/single/16/technical-indicators

答案 3 :(得分:2)

使用找到here

的技术指标插件支持移动平均线

以下是您需要提供的JavaScript source链接:

通过在类型图表中添加另一个系列来实现:'trendline',算法:'SMA',它通过id引用相关数据系列:

series : [
{
  name: 'AAPL Stock Price',
  type : 'line',
  id: 'primary',
  data : [100,101,105,107,104,105,106,104,...]
}, {
  name: '15-day SMA',
  linkedTo: 'primary',
  showInLegend: true,
  type: 'trendline',
  algorithm: 'SMA',
  periods: 15
}]

这是JSFiddle