2

我正在使用谷歌API创建图表。我能够创建OHLC(烛台)图表。但是我想添加移动平均线到它的覆盖。任何人都可以请指导我如何做到这一点?我们如何使用谷歌API图表创建一个移动平均线的OHLC图表

在此先感谢。

+0

使用[ComboChart(HTTPS://google-developers.appspot .com/chart/interactive/docs/gallery/combochart),用于移动平均线的“线”系列和用于OHLC系列的“烛台”系列。 – asgallant 2014-08-28 00:24:30

+0

在这种情况下,我需要计算它并在创建OHLC时提供它。在Jfreecharts中,它自行计算并显示在图表上。 – user3592376 2014-08-28 06:17:36

回答

7

下面是如何在移动平均线添加到K线为例:看到它在这里工作

function drawChart() { 
    var data = new google.visualization.DataTable(); 
    data.addColumn('date', 'Date'); 
    data.addColumn('number', 'Low'); 
    data.addColumn('number', 'Open'); 
    data.addColumn('number', 'Close'); 
    data.addColumn('number', 'High'); 

    var low, open, close = 45, high; 
    for (var i = 0; i < 30; i++) { 
     open = close; 
     close += ~~(Math.random() * 10) * Math.pow(-1, ~~(Math.random() * 2)); 
     high = Math.max(open, close) + ~~(Math.random() * 10); 
     low = Math.min(open, close) - ~~(Math.random() * 10); 
     data.addRow([new Date(2014, 0, i + 1), low, open, close, high]); 
    } 

    // use a DataView to calculate an x-day moving average 
    var days = 5; 
    var view = new google.visualization.DataView(data); 
    view.setColumns([0, 1, 2, 3, 4, { 
     type: 'number', 
     label: days + '-day Moving Average', 
     calc: function (dt, row) { 
      // calculate average of closing value for last x days, 
      // if we are x or more days into the data set 
      if (row >= days - 1) { 
       var total = 0; 
       for (var i = 0; i < days; i++) { 
        total += dt.getValue(row - i, 3); 
       } 
       var avg = total/days; 
       return {v: avg, f: avg.toFixed(2)}; 
      } 
      else { 
       // return null for < x days 
       return null; 
      } 
     } 
    }]); 

    var chart = new google.visualization.ComboChart(document.querySelector('#chart_div')); 
    chart.draw(view, { 
     height: 400, 
     width: 600, 
     chartArea: { 
      left: '7%', 
      width: '70%' 
     }, 
     series: { 
      0: { 
       type: 'candlesticks' 
      }, 
      1: { 
       type: 'line' 
      } 
     } 
    }); 
} 
google.load("visualization", "1", {packages:["corechart"], callback: drawChart}); 

http://jsfiddle.net/asgallant/74u6ox8b/

+0

我的场景有点不同,但你的例子帮了我很多。 – RST 2018-01-19 16:08:21