Google api 我们如何使用谷歌图表API创建具有移动平均值的OHLC图表

Google api 我们如何使用谷歌图表API创建具有移动平均值的OHLC图表,google-api,google-visualization,moving-average,candlestick-chart,Google Api,Google Visualization,Moving Average,Candlestick Chart,我正在使用GoogleAPI创建图表。我能够创建OHLC(烛台)图表。但我想在上面加上移动平均线。有人能告诉我怎么做吗 提前感谢。以下是如何将移动平均线添加到烛台KChart的示例: function drawChart() { var data = new google.visualization.DataTable(); data.addColumn('date', 'Date'); data.addColumn('number', 'Low'); data.

我正在使用GoogleAPI创建图表。我能够创建OHLC(烛台)图表。但我想在上面加上移动平均线。有人能告诉我怎么做吗


提前感谢。

以下是如何将移动平均线添加到烛台KChart的示例:

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});
函数绘图图(){
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低,开启,关闭=45,高;
对于(变量i=0;i<30;i++){
打开=关闭;
close+=~(Math.random()*10)*Math.pow(-1,~~(Math.random()*2));
高=数学最大值(打开、关闭)+~~(Math.random()*10);
low=Math.min(打开、关闭)~~(Math.random()*10);
数据。addRow([新日期(2014年,0,i+1),低位,开盘,收盘,高位];
}
//使用数据视图计算x日移动平均线
var天数=5天;
var view=newgoogle.visualization.DataView(数据);
view.setColumns([0,1,2,3,4,{
键入:“编号”,
标签:天+“-天移动平均线”,
计算:函数(dt,行){
//计算过去x天的平均收盘价,
//如果我们进入数据集中x天或更长时间
如果(行>=天-1){
var合计=0;
对于(变量i=0;i<天;i++){
总计+=dt.getValue(第i行,第3行);
}
var平均值=总天数/天;
返回{v:avg,f:avg.toFixed(2)};
}
否则{
//在

查看此处的工作情况:

使用带“线”系列的移动平均线和带“烛台”系列的OHLC系列。在这种情况下,我需要计算它,并在创建OHLC时提供它。在Jfreecharts中,它自己计算并显示在图表上。我的场景有点不同,但您的示例对我帮助很大。