日本ではフリーでオンラインの株価取得APIが全然ありません。
オンラインで株価を取得しようとすると下記のような状況です。
- Yahooファイナンスをスクレイピング -> Yahooファイナンスに禁止されている
- Google Finance API -> 公式ページに「今はもう使えないよ」
- kabu.com API -> 法人向け。個人には未提供
- 楽天証券RSS, 岡三RSS -> アカウントとExcelが必要
- k-db.com -> CSV。リアルタイム性はなし
しかしGoogle Financeのドキュメントなし非公式APIが存在しており、こちらを使ってリアルタイムに株価を取得することができそうです。
Google Finance
このAPI、実はGoogle Financeで使われています。
ということは、恐らくGoogle Financeで利用しているデータと同じものが得られるはず。
上記のURLをブラウザで開くと、ヘッダー部分とCSV部分で構成されているようなテキストが返ってきます。
APIの使い方
パラメータ
パラメータ | 意味 | 備考 |
---|---|---|
q | 銘柄コード | インデックス系は特殊なのでGoogle Financeで要確認。 |
x | 市場 | 日本の株式はほぼTYO。 マザーズも大証もTYO。 日経225インデックスはNDEXNIKKEI |
i | ティックの長さ(秒) | ローソクの期間。日足だったら86400、5分足なら300。 |
p | 期間 | データ取得期間。1年=1Y、2ヶ月=2M、3日=3d、40分=40m |
f | 取得する値 | d=日時,c=終値,o=始値,h=高値,l=安値,v=出来高 |
df | わかりません | |
auto | わかりません | |
ts | 開始日時? | |
ei | セッションキー? |
このAPI、実際に使ってみると結構クセがあることがわかります。
まず◯日〜◯日まで取得、みたいな期間開始指定での値取得ができません。
常にリアルタイムな日時からの指定期間分を返します(要はrealtime apiなんですね)。
また分足で10年、みたいな大量データが返って来そうなパラメータを指定すると、途中でデータが切れます。
ページング機能もありません。
過去データの取得は別のものを使った方が良さそうです。
レスポンスの見方
APIを叩くと下記のようなレスポンスが返ってきます。
データの意味は図に記した通りなのですが、時刻部分だけ少し変わっています。
時刻のデータは a で始まるタイプと数字のみのものがあります。
どのように見るかといいますと、
a で始まる時刻の先頭 a を取るとUNIX時刻になるのでこちらを基準にします。
a で始まらない時刻は 時刻列の数値に INTERVAL を掛けたものを a で始まる時刻
に足した値が当該時刻となります。
つまり・・・
- a で始まる時刻: aを取った文字列がUNIX時刻
- a で始まらない時刻:
a で始まる時刻 + INTERVAL × この列の数値
です。
1つのデータ内に複数の a 始まりの時刻が出現するケースもあるので、a 始まりの時刻が出現する毎に基準となる時刻を変更する必要があります。
まとめ
少々クセはあるものの、リアルタイムで株価を取得できる貴重なAPIです。
ティック(ローソク)の種類が多いのも良いです。
次回、これを使ってslack-botを作ってみたいと思います。