最近巷でよく耳にする言語python。いざさわってみるといろんなことができて便利。使いこなさないと損だと気が付いた。
今回は株のチャート表示をpythonで作成してみた。
どうやって株価を取得するの?
Yahoo! Finance APIを使用すると株価データが取得できる。
APIリファレンス – pypi.org
いつの株価が取得できるの?
当日は15分遅れの株価が取得できる。残念ながらリアルタイム値は取得できない。
過去のデータについては数十年前の株価も取得できるらしい。(まだ未確認)
作成
まずはYahoo! Finance APIのライブラリをインストールする。
pip install yahoo-finance-api2
2日分の株価のチャートを作成する。ここでは表示する銘柄はJALとする。
import sys
from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
from pandas_datareader import data
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
def company_stock(period_type, period, company_code):
my_share = share.Share(company_code)
symbol_data = None
try:
symbol_data = my_share.get_historical(share.PERIOD_TYPE_DAY,
period_type,
share.FREQUENCY_TYPE_MINUTE,
period)
except YahooFinanceError as e:
print(e.message)
sys.exit(1)
from datetime import datetime, timezone, timedelta
date = symbol_data["timestamp"]
old_date = date[0]
now_date = date[len(date) - 1]
old_time = datetime.fromtimestamp(old_date/1000)
now_time = datetime.fromtimestamp(now_date/1000)
price = symbol_data["close"]
old_price = price[0]
now_price = price[len(date) - 1]
print(str(old_time) + "の時の株価: " + str(old_price))
print(str(now_time) + "の時の株価: " + str(now_price))
df = pd.DataFrame(symbol_data.values(), index=symbol_data.keys()).T
df.timestamp = pd.to_datetime(df.timestamp, unit='ms')
df.index = pd.DatetimeIndex(df.timestamp, name='timestamp').tz_localize('UTC').tz_convert('Asia/Tokyo')
plt.title(company_code, color='black', size=15, loc='center') # title(タイトル, 線の色, 背景色, フォントサイズ, タイトル位置)
plt.plot(df.index, price, label='close', color='blue')
plt.show()
plt.figure(figsize=(10 ,5))
import time
company_stock(2, 1, '9201.T')
出力結果
2020-08-11 09:03:00の時の株価: 1914.5
2020-08-12 14:59:00の時の株価: 1984.0
無事にJALのチャートが表示されました。
株、上がってきちゃったな。買い時逃したかも。。。