【Python】株価推移を取得してローソク足チャートを作成する

雑記Topに戻る

 株価推移を取得してローソク足チャートを作成する

【以下、ChatGPTによる回答】

Pythonでローソク足チャートを作成するには、MatplotlibやBokehなどのグラフ描画ライブラリを使用することができます。まず、株価データを取得するために、「yahoo finance」や「Alpha Vantage」などの株価データプロバイダーのAPIを使用することができます。

以下は、Yahoo FinanceからAMZNの株価データを取得し、Matplotlibを使用してローソク足チャートを作成する例です。

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import matplotlib.ticker as mticker
from matplotlib.finance import candlestick_ohlc
import requests
import pandas as pd

# Yahoo FinanceからAMZNの株価データを取得する
url = 'https://query1.finance.yahoo.com/v7/finance/download/AMZN?period1=1546300800&period2=1609459200&interval=1d&events=history'
response = requests.get(url)

# レスポンスからデータフレームを作成する
df = pd.read_csv(io.StringIO(response.text), index_col='Date', parse_dates=True)
df.sort_index(inplace=True)

# ローソク足データを作成する
df_ohlc = df[['Open', 'High', 'Low', 'Close']].copy()
df_ohlc.reset_index(inplace=True)
df_ohlc['Date'] = df_ohlc['Date'].map(mdates.date2num)

# ローソク足チャートを描画する
fig, ax = plt.subplots()
candlestick_ohlc(ax, df_ohlc.values, width=0.6, colorup='g', colordown='r')

# X軸のフォーマットを設定する
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.xticks(rotation=45)

# Y軸のフォーマットを設定する
ax.yaxis.set_major_formatter(mticker.FormatStrFormatter('$%1.2f'))

# グラフタイトルを設定する
plt.title('AMZN Stock Price')

# グラフを表示する
plt.show()

上記のスクリプトを実行すると、AMZNの株価データを使用したローソク足チャートが表示されます。

以下が、上記のスクリプトを実行する際の注意点です。

    • Yahoo Financeから株価データを取得する場合、Yahoo Financeは2021年8月以降、株価データを提供していないため、このスクリプトを実行することができません。そのため、別のデータプロバイダーを使用する必要があります。例えば、Alpha VantageやIEX Cloudなどのサービスを使用することができます。
    • Matplotlibには、株価データをプロットするための「finance」モジュールがありますが、このモジュールは非推奨になっており、将来的に削除される可能性があります。そのため、Matplotlib以外のグラフ描画ライブラリを使用することを検討することをおすすめします。例えば、BokehやPlotlyなどがあります。
    • グラフのスタイルや軸のフォーマットは、Matplotlibを使用する場合、自由にカスタマイズすることができます。上記のスクリプトでは、X軸を年月で表示し、Y軸を$で表示するようにしていますが、他のフォーマットを使用することもできます。
    • また、上記のスクリプトでは、1日単位のデータを使用していますが、他の期間や単位のデータを使用することもできます。例えば、1週間単位や1時間単位のデータを使用することもできます。

 

 mplfinanceを利用する場合

【以下、ChatGPTによる回答】

mplfinanceを使用する場合、まず、mplfinanceをインストールする必要があります。次のコマンドを実行することで、mplfinanceをインストールできます。

pip install mplfinance

次に、mplfinanceを使用して、ローソク足チャートを描画するには、次のようにします。(※注:株価データのcsvファイルは事前に存在するものと仮定している)

import mplfinance as mpf
import pandas as pd

# AMZNの株価データを読み込む
df = pd.read_csv('AMZN.csv')
df.index = pd.to_datetime(df['Date'])
df.sort_index(inplace=True)
df = df[['Open', 'High', 'Low', 'Close']]
df = df.astype(float)

# ローソク足チャートを描画する
mpf.plot(df, type='candle')

上記のスクリプトを実行すると、AMZNの株価データを使用したローソク足チャートが表示されます。

mplfinanceでは、軸や凡例、マウスオーバーの表示など、さまざまなオプションを設定することができます。詳細は、mplfinanceのドキュメントを参照してください。

import mplfinance as mpf
import pandas as pd

# AMZNの株価データを読み込む
df = pd.read_csv('AMZN.csv')
df.index = pd.to_datetime(df['Date'])
df.sort_index(inplace=True)
df = df[['Open', 'High', 'Low', 'Close']]
df = df.astype(float)

# ローソク足チャートを描画する
mpf.plot(df, type='candle', style='yahoo', title='AMZN Stock Price', ylabel='Price ($)')

上記のスクリプトを実行すると、AMZNの株価データを使用した、Yahoo Finance風のローソク足チャートが表示されます。

 

 Alpha Vantageを利用する場合

【以下、ChatGPTによる回答】

Alpha Vantageを使用する場合、まず、Alpha VantageのサイトでAPIキーを取得する必要があります。APIキーを取得するには、Alpha Vantageのサイトにアクセスし、登録(無料)を行います。登録が完了すると、APIキーが発行されるので、このAPIキーを使用して、Alpha VantageのAPIを呼び出すことができます。

次に、Alpha VantageのAPIを使用して、株価データを取得するには、次のようにします。

import requests
import pandas as pd

# Alpha Vantage APIキー
API_KEY = 'YOUR_API_KEY'

# AMZNの株価データを取得する
symbol = 'AMZN'
function = 'TIME_SERIES_DAILY_ADJUSTED'
url = f'https://www.alphavantage.co/query?function={function}&symbol={symbol}&apikey={API_KEY}'
response = requests.get(url)

# レスポンスからデータフレームを作成する
data = response.json()
df = pd.DataFrame(data['Time Series (Daily)']).T
df.index = pd.to_datetime(df.index)
df.sort_index(inplace=True)
df = df.astype(float)
df.head()

上記のスクリプトを実行すると、AMZNの株価データがデータフレームとして取得できます。このデータフレームを使用して、ローソク足チャートを作成することができます。

注意点として、Alpha VantageのAPIには、1日あたり最大500リクエストの制限があります。そのため、株価データを取得する頻度を抑えるようにする必要があります。また、Alpha Vantageでは、株価データの期間や単位を指定することができますが、期間や単位によっては、無料で取得できるデータの上限があるため、その点も注意する必要があります。詳細は、Alpha Vantageのサイトで確認してください。

 

 IEX Cloudを利用する場合

【以下、ChatGPTによる回答】

IEX Cloudを使用する場合、まず、IEX Cloudのサイトでアカウントを作成する必要があります。アカウントを作成するには、IEX Cloudのサイトにアクセスし、サインアップ(無料のプランもあります)を行います。サインアップが完了すると、IEX CloudのAPIを使用するためのAPIトークンが発行されるので、このAPIトークンを使用して、IEX CloudのAPIを呼び出すことができます。

次に、IEX CloudのAPIを使用して、株価データを取得するには、次のようにします。

import requests
import pandas as pd

# IEX Cloud APIトークン
API_TOKEN = 'YOUR_API_TOKEN'

# AMZNの株価データを取得する
symbol = 'AMZN'
url = f'https://cloud.iexapis.com/stable/stock/{symbol}/chart/5y?token={API_TOKEN}'
response = requests.get(url)

# レスポンスからデータフレームを作成する
data = response.json()
df = pd.DataFrame(data)
df.index = pd.to_datetime(df['date'])
df.sort_index(inplace=True)
df = df[['open', 'high', 'low', 'close']]
df = df.astype(float)
df.head()

上記のスクリプトを実行すると、AMZNの株価データがデータフレームとして取得できます。このデータフレームを使用して、ローソク足チャートを作成することができます。

注意点として、IEX Cloudでは、無料のプランと有料のプランがあります。無料のプランでは、1日あたり最大50,000リクエストの制限があります。また、IEX Cloudでは、株価データの期間や単位を指定することができますが、期間や単位によっては、無料で取得できるデータの上限があるため、その点も注意する必要があります。詳細は、IEX Cloudのサイトで確認してください。


雑記Topに戻る