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