4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

yahoo_finance_api2で株価取得

Last updated at Posted at 2022-02-06

最近いろいろと手を付けていたらおいている場所がいくつかに分散されてしまったのでまとめて可視化したいと思っていろいろとアプリを探したり、AppSheetで自作してみたりしたのだが、どうにもちょい足りない。
ということで、最終的には自作でどうにかできないかなというところの第一歩として単価を取得する処理を書いてみた。

使ったモジュールはyahoo_finance_api2
https://pypi.org/project/yahoo-finance-api2/

レスポンスの形式が若干使いにくいなとは思うが、それでも割と簡単にデータを取得できるなというのが感想。

from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
import datetime as datetime
import pandas as pd

def get_data(code):

  stock = share.Share(code)
  symbol_data = None

  try:
      # get_historical(period_type, period, frequency_type, frequency)
      symbol_data = stock.get_historical(share.PERIOD_TYPE_DAY, 10, share.FREQUENCY_TYPE_DAY, 1)
  except YahooFinanceError as e:
      print(f">>> [{code}] : {e.message}")
      return None

  # 日付処理のためにDataframeに変換
  df_symbol_data = pd.DataFrame(symbol_data)
  # タイムスタンプを変換
  df_symbol_data["datetime"] = pd.to_datetime(df_symbol_data.timestamp, unit="ms")
  # 日本時間へ変換
  df_symbol_data["datetime_jst"] = df_symbol_data["datetime"] + datetime.timedelta(hours=9)
  # 後でキーに使いやすいように日本時間を文字列に変換
  df_symbol_data["datetime_jst_str"] = df_symbol_data["datetime_jst"].apply(lambda x: x.strftime('%Y%m%d'))

  return df_symbol_data

# 日本株については.Tをつける:code + ".T"
stockList = ["AAPL","AMZN","FB","MSFT","sdasd","GOOGL","4661.T"]

# とりあえずの格納先:'code_日付'をキーとし、終値を格納する
# 取得できなかった場合はSKIPする
dic_stock = {}
for code in stockList:
  res = get_data(code)
  if(res is None):
    print(f">>> [{code}] : NoData : SKIP")
    continue

  print(code)
  # 終値
  num = len(res)
  for index in range(len(res)):
    dic_target = res[index:index+1].to_dict()
    dic_stock[code + "_" + dic_target["datetime_jst_str"][index]] = dic_target["close"][index]

print(dic_stock)

上記はColabで作ったのだがこれをgithubに簡単に連携して保存しておけるんだなということを知ったのが今日の一番の収穫。
https://github.com/RyoNakamae/finance_getdata

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?