Google visualization 在这种情况下,为什么移动平均线无法按预期显示

Google visualization 在这种情况下,为什么移动平均线无法按预期显示,google-visualization,Google Visualization,我试图在我的蜡烛棒图表上画SMA 这是我的密码 google.load("visualization", "1", { packages: ["corechart"] }); google.setOnLoadCallback(drawChart); var mydata = [ ['13-Oct', 1097.95, 1113.45, 1109.95, 1132], ['14-Oct', 1095.6, 1101.15, 1113.45, 1117], ['

我试图在我的蜡烛棒图表上画SMA

这是我的密码

google.load("visualization", "1", {
    packages: ["corechart"]
});

google.setOnLoadCallback(drawChart);


var mydata = [
    ['13-Oct', 1097.95, 1113.45, 1109.95, 1132],
    ['14-Oct', 1095.6, 1101.15, 1113.45, 1117],
    ['15-Oct', 1092.1, 1129.2, 1116, 1132],
    ['16-Oct', 1130, 1170.3, 1130, 1182.4],
    ['19-Oct', 1144.5, 1162.15, 1174, 1182.2]
];


function drawChart() {

    var data = google.visualization.arrayToDataTable(mydata, true);

    var options = {
        legend: 'none',
        colors: ['red', 'brown'],
        candlestick: {
            fallingColor: {
                fill: "orange",
                strokeWidth: 0.5,
                stroke: 'black'
            },
            risingColor: {
                fill: "yellowgreen",
                strokeWidth: 0.5,
                stroke: 'black'
            }
        }
    };


    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 < data; i++) {
                    total += data.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.CandlestickChart(document.getElementById('chart_div'));

        chart.draw(view, {
        height: 400,
        width: 600,
        chartArea: {
            left: '7%',
            width: '70%'
        },
        series: {
            0: {
                type: 'candlesticks'
            },
            1: {
                type: 'line'
            }
        }
    });


}
google.load(“可视化”,“1”{
软件包:[“corechart”]
});
setOnLoadCallback(drawChart);
var mydata=[
[10月13日,1097.951113.451109.951132],
[10月14日,1095.61101.15113.451117],
[10月15日,1092.1119.211132],
[10月16日,11301170.31130、1182.4],
[10月19日,1144.51162.1511741182.2]
];
函数绘图图(){
var data=google.visualization.arrayToDataTable(mydata,true);
变量选项={
图例:“无”,
颜色:[“红色”、“棕色”],
烛台:{
fallingColor:{
填充:“橙色”,
冲程宽度:0.5,
笔画:“黑色”
},
risingColor:{
填充:“黄绿色”,
冲程宽度:0.5,
笔画:“黑色”
}
}
};
var天数=5天;
var view=newgoogle.visualization.DataView(数据);
view.setColumns([0,1,2,3,4,{
键入:“编号”,
标签:天+“-天移动平均线”,
计算:函数(dt,行){
//计算过去x天的平均收盘价,
//如果我们进入数据集中x天或更长时间
如果(行>=天-1){
var合计=0;
对于(变量i=0;i
你能告诉我如何使SMA正确可见吗

在添加SMA之前,一切都与我的数据点一起工作

这是我的小提琴

您的SMA行不可见,因为计算列在前四行返回
null
,在最后一行返回零

calc
函数中,
从零开始。
对于
days=5
if(row>=days-1)
直到最后一行才通过

我有点不明白你想如何计算移动平均线,但我试了一下

使用数据中的第四列,我计算了平均值

第0行:值:1109.95
第1行:值:1111.70-->(1109.95+1113.45)/2
第2行:值:1113.13-->(1109.95+1113.45+1116.00)/3
等等

google.load(“可视化”,“1”,“{packages:[“corechart”]});
setOnLoadCallback(drawChart);
var mydata=[
[10月13日,1097.951113.451109.951132],
[10月14日,1095.61101.15113.451117],
[10月15日,1092.1119.211132],
[10月16日,11301170.31130、1182.4],
[10月19日,1144.51162.1511741182.2]
];
函数绘图图(){
var data=google.visualization.arrayToDataTable(mydata,true);
变量天数=mydata.length;
var view=newgoogle.visualization.DataView(数据);
view.setColumns([0,1,2,3,4,{
键入:“编号”,
标签:天+“-天移动平均线”,
计算:函数(dt,行){
//计算过去x天的平均收盘价,
//如果我们进入数据集中x天或更长时间
var平均值=0;
var合计=0;
对于(var i=0;i您的SMA行不可见,因为计算列在前四行返回
null
,在最后一行返回零

calc
函数中,
从零开始。
对于
days=5
if(row>=days-1)
直到最后一行才通过

我有点不明白你想如何计算移动平均线,但我试了一下

使用数据中的第四列,我计算了平均值

第0行:值:1109.95
第1行:值:1111.70-->(1109.95+1113.45)/2
第2行:值:1113.13-->(1109.95+1113.45+1116.00)/3
等等

google.load(“可视化”,“1”,“{packages:[“corechart”]});
setOnLoadCallback(drawChart);
var mydata=[
[10月13日,1097.951113.451109.951132],
[10月14日,1095.61101.15113.451117],
[10月15日,1092.1119.211132],
[10月16日,11301170.31130、1182.4],
[10月19日,1144.51162.1511741182.2]
];
函数绘图图(){
var data=google.visualization.arrayToDataTable(mydata,true);
变量天数=mydata.length;
var view=newgoogle.visualization.DataView(数据);
view.setColumns([0,1,2,3,4,{
键入:“编号”,
标签:天+“-天移动平均线”,
计算:函数(dt,行){
//计算过去x天的平均收盘价,
//如果我们进入数据集中x天或更长时间
var平均值=0;
var合计=0;

对于(var i=0;我希望这有帮助,如果这是不正确的,请描述移动平均线的精确计算……非常感谢,我能够成功地生成烛台图,但当我需要显示SimpleMovingAreage时,也会是这种方式,例如,对于3个数据点,例如100、105、106,它将是100+105+106/3h正是您所做的。我需要立即显示5、10、30天的SMA,这可能吗?我已经修改了答案,使用数据中的行数来确定天数,所以这个答案是