LoginSignup
0
4

More than 1 year has passed since last update.

全株式の20年分の値動きを取得する

Last updated at Posted at 2021-09-12

はじめに

株式運用を始めるにあたって長期的な値動きを把握したいと思ったので。
それだけならYahoo!株式とか見てりゃいいんですけど、
データの加工なんかを想定するとAPIで色々操作したほうが良さそうだよね
ということでYahoo Finance API を使った上場株式の値動きを一気に取得できるプログラムを作りました。

目次

  1. APIから元データを取得する
  2. 元データから日付と終値のみを取得する
  3. Github

APIから元データを取得する

main.py
def get_symbol_data(share_code):
  my_share = share.Share(share_code)
  symbol_data = None

  try:
      symbol_data = my_share.get_historical(share.PERIOD_TYPE_YEAR,
                                            20,
                                            share.FREQUENCY_TYPE_DAY,
                                            1)
  except YahooFinanceError as e:
      print(e.message)
      sys.exit(1)
  return symbol_data

share_codeには "1570.T"のような文字列が入ります。

main.py
symbol_data=get_symbol_data("1570.T")
print(symbol_data.keys())
>>dict_keys(['timestamp', 'open', 'high', 'low', 'close', 'volume'])

各Keyには1日毎に日時や株価を取得した配列が入っています。

main.py
  prices = symbol_data["close"]
  print(prices)
>>[100,101,99...]

元データから日付と終値のみを取得する

main.py
def return_dates_prices(symbol_data):
  dates=symbol_data["timestamp"]
  formated_dates = [datetime.utcfromtimestamp(int(dates[i]/1000)) for i in range(len(dates))]
  formated_dates_only_dates=[formated_dates[i].strftime("%Y-%m-%d") for i in range(len(formated_dates))]
  prices = symbol_data["close"]
  return formated_dates_only_dates,prices

formated_dates,prices=return_dates_prices(symbol_data)
>>formated_dates=["2000-01-01","2000-01-02","2000-01-03"...]
>>prices=[100,101,99...]

みたいな感じで 日付と終値を約20年間くらい取得することが出来ます。

GitHub

0
4
1

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
0
4