1

これが私がやろうとしていることです:

  1. papa parse を使用して CSV ファイルを解析します。

  2. その解析済みデータを使用して 2 つの JS オブジェクト (ohlc とボリューム) を作成します。

  3. 次に、そのデータを使用してハイストック チャートを作成します。

papa parse の例を使用した解析:

function doStuff(data) {
    //do stuff here
    console.log(data);
}

function parseData(url, callBack) {
    Papa.parse(url, {
        download: true,
        dynamicTyping: true,
        complete: function(results) {
            callBack(results.data);
        }
    });
}

parseData("https://www.quandl.com/api/v3/datasets/WIKI/AAPL.csv", doStuff);

実際のハイチャートの例: jsfiddle

上の 2 つの例を組み合わせようとしています: jsfiddle

$(function () {

    var ohlc = [],
    volume = [],
    dataLength = data.length,
    // set the allowed units for data grouping
    groupingUnits = [[
        'week',                         // unit name
        [1]                             // allowed multiples
    ], [
        'month',
        [1, 2, 3, 4, 6]
    ]],

    i = 1;

    function parseData(url, callBack) {
        Papa.parse(url, {
            download: true,
            dynamicTyping: true,
            complete: function(results) {
                callBack(results.data);
            }
        });
    }

    function setObjects(data) {
        console.log(data[i][0]);

        for (i; i < dataLength; i += 1) {
            ohlc.push([
                data[i][0], // the date
                data[i][1], // open
                data[i][2], // high
                data[i][3], // low
                data[i][4] // close
            ]);

            volume.push([
                data[i][0], // the date
                data[i][5] // the volume
            ]);
        }
    }

    parseData("https://www.quandl.com/api/v3/datasets/WIKI/AAPL.csv", setObjects);

    // create the chart
    $('#container').highcharts('StockChart', {

        rangeSelector: {
            selected: 1
        },

        title: {
            text: 'AAPL Historical'
        },

        yAxis: [{
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'OHLC'
            },
            height: '60%',
            lineWidth: 2
        }, {
            labels: {
                align: 'right',
                x: -3
            },
            title: {
                text: 'Volume'
            },
            top: '65%',
            height: '35%',
            offset: 0,
            lineWidth: 2
        }],

        series: [{
            type: 'candlestick',
            name: 'AAPL',
            data: ohlc,
            dataGrouping: {
                units: groupingUnits
            }
        }, {
            type: 'column',
            name: 'Volume',
            data: volume,
            yAxis: 1,
            dataGrouping: {
            units: groupingUnits
            }
        }]
    });
});

誰かが私が間違っていることを手伝ってくれますか? まだ行われていないことを 2 つ知っています。日付の昇順になるように、データを逆にする必要があります。また、日付をミリ秒に変換する必要があります。ただし、少なくとも最初にオブジェクトに挿入して現在のデータを取得し、そこから移動すると役立ちます。

4

1 に答える 1