メモ

プログラミングなどの備忘録を書きます

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よくわからずに書いているのでいいコードではないと思う。

gist.github.com