google financeのAPIのメモ
株価データを取得するためにGoogle FinanceのAPIを触ってみたときのメモ。
このAPIはおそらくGoogle Financeの裏で使われているAPIで、公式のドキュメントが存在しない。
公式で提供しているAPIではなさそうなので、使い続けられるか怪しいかもしれない。
リクエスト
下記はトヨタの過去1年分の株価を取得する例 。
https://www.google.com/finance/getprices?p=1Y&i=86400&x=TYO&q=7203
p:データを取得する期間。年(Y)または日(d)で指定ができる
i:データの間隔。秒単位で指定する。上記では1日を(86400秒)指定している。
x:銘柄が取引される市場。TYOは東京証券取引所。
q:銘柄のコード。
またデータの取得を開始する日時をts(UNIXタイムスタンプ)で指定できる
https://www.google.com/finance/getprices?p=1Y&i=86400&x=TYO&q=7203&ts=1451574000
※2017/09追記
tsのパラメータがいつのまにか効かなくなっていた(常に現在の時刻がベースになる)
レスポンス
下記のようなレスポンスが返ってくる
EXCHANGE%3DTYO MARKET_OPEN_MINUTE=540 MARKET_CLOSE_MINUTE=900 INTERVAL=86400 COLUMNS=DATE,CLOSE,HIGH,LOW,OPEN,VOLUME DATA_SESSIONS=[MORNING,540,690],[AFTERNOON,750,900] DATA= TIMEZONE_OFFSET=540 a1455861600,5999,6086,5961,6050,14020000 3,5980,6044,5850,5906,11427200 4,5994,6070,5954,6065,10895500 5,5974,5989,5835,5900,10888100 6,5931,5967,5827,5881,15819200 7,5910,6006,5895,5960,12753100 10,5897,6062,5897,6001,18539900 11,5893,5935,5824,5853,11093200 ...
株価のデータは9行目から。どの列が何を表すのかはCOLUMNSを見れば分かる。
DATE 列は一行目がタイムスタンプになっており、2行目以降は最初のデータからiで指定した期間が何回経過したかを表している。
上記はデータの間隔が1日の例だが、dateの数値が飛んでいるのは土日などを挟んでいるため。
Date列の上限は999でそれを超えると一行目のようなタイムスタンプを挟んでまた1から数え始める。
また、終値は単にCLOSEとされているが、ちゃんと調整後終値 (株式分割を反映させた終値)が返ってくる。
サンプル
すごく雑に1年分の株価をcsvにして吐き出すものを書いた。
データ解析に向いていると聞いてpythonで書いてみたが、正直pythonよくわからずに書いているのでいいコードではないと思う。