【Python】ヤフーファイナンスからドル円や日経平均の価格(close)を取得する

※本ページはプロモーションが含まれています

Yahooファイナンスからドル円や日経の価格を取得にあたって、スクレイピングではなく、APIを使って取得する方法をまとめます。色々探したけど、ちゃんとしたヘルプも見つからないし、スマートな方法なかったので自分でまとめました。

目次

finance.yahoo.comのAPI仕様

全然情報がなくて、調べるのに苦労しました。ヤフーファイナンスのAPIは、日本のYahooではなくて、アメリカなんですよね。

あわせて読みたい

ブラウザから直接叩いてみる

直接ブラウザから、クエリーを送ってみる

https://query1.finance.yahoo.com/v8/finance/chart/USDJPY=X

結果

為替のコード

ドル円はUSDJPY=Xです。USDJPYだけではエラーになるのでご注意ください。日本のYahooに全てではないけど、少しだけ情報が出てます。

あわせて読みたい

パラメータを加えてみる

以下のパラメーターを加えてみます。interval加えないと、Open、Close、Volumeが出てきません。rangeは時間軸。その期間を、ガバっとまとめて取得するようです。

  • range(取得期間)
  • interval
https://query1.finance.yahoo.com/v8/finance/chart/USDJPY=X?range=1m&interval=1d

結果

OpenとCloseが1つだけになって、結果がシンプルになりました。

あとは、JSON形式で返ってくる結果を、closeまでの要素を取得するだけです。

サンプルコード

postして、返ってきた結果をJSON形式でみてprintしてみました。

import requests
import json

#URL
url = "https://query1.finance.yahoo.com/v8/finance/chart/USDJPY=X?range=1M&interval=1d"

#ヘッダは必須
header = {'Connection': 'keep-alive',
           'Expires': '-1',
           'Upgrade-Insecure-Requests': '1',
           'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) \
           AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
           }

#POST送信
#requests.session()
response = requests.get(url,headers=header)


print(response.status_code)


#JSON変換
res_data = response.json()


print(res_data)

結果

結構、入れ子が複雑ですね。Closeまで辿り着くのが超むずい。

closeへのアクセス

以下を追記すれば、参照可能です。どんだけ、遠いねん!!

usdjpy_close = res_data['chart']['result'][0]['indicators']['quote'][0]['close']

print(usdjpy_close)

まとめ

JSON形式での取得まではすんなり行くと思います。

そこからが、大変。入れ子が複雑すぎて、getだけではなかなか参照が難しかったので、力技でダイレクトに参照しました。ご参考ください。

矢野テックのトレード結果やプログラム使った予測について

パスワードされた記事は、LINEでお友達になってくれた方に公開しています。

また、今ならお友達には矢野テック自作のMT4用のインジケーターをプレゼント中です。

友だち追加

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

仮想通貨botや、MT4のEA開発、インジケーターなどを作ってます。このブログではFXの基礎的な知識から検証のまとめなどを書いていきたいと思ってます。

プログラムや手法のご質問は各記事のコメント欄からお願いします。

なお、トレードの結果などはLINEでお友達になった方に報告してます。ぜひなってください

コメント

コメントする

目次