今回もmplfinaceライブラリによる株価チャートの続きです。mplfinanceでは別途コーディングして計算した指標をチャートに付け加えることができます。
今回もまず、必要なライブラリをインポートし、株価データをダウンロードします。
# ライブラリのインポート import pandas as pd from pandas_datareader import data as pdr import mplfinance as mpf import datetime import yfinance as yf # Yahoo! Financeからのデータ獲得 start = "2023-1-1" end = datetime.date.today() ticker = "4755.T" # 4755は楽天グループ yf.pdr_override() # yahooサイトからデータをダウンロード df3 = pdr.get_data_yahoo(ticker, start, end)
ここでは、MACDオシレーターの諸指標をプロットします。最初に諸指標を計算して別途データフレームに格納する関数を定義し、次にその関数を呼び出し、さらに作成したプロットのリストを引数addplot=で指定してチャートの下にMACDのプロットを付け加えます。
# MACDの諸指標を計算する関数 # .ewm(span=n)のとき指数平滑係数α=2/(span+1) ただしspan>=1 def MACD(df, window_slow, window_fast, window_signal): macd = pd.DataFrame() macd['ema_slow'] = df['Close'].ewm(span=window_slow).mean() macd['ema_fast'] = df['Close'].ewm(span=window_fast).mean() macd['macd'] = macd['ema_slow'] - macd['ema_fast'] macd['signal'] = macd['macd'].ewm(span=window_signal).mean() macd['diff'] = macd['macd'] - macd['signal'] macd['bar_positive'] = macd['diff'].map(lambda x: x if x > 0 else 0) macd['bar_negative'] = macd['diff'].map(lambda x: x if x < 0 else 0) return macd # MACD計算関数を呼び出し、結果をデータフレームに格納する macd = MACD(df3, 12, 26, 9) # mplfinanceのmake_addplotメソッドを用いてチャートに付け加えるプロットを作成する macd_plot = [ mpf.make_addplot((macd['macd']), color='#D2691E', panel=2, ylabel='MACD', secondary_y=False), #D2691Eはチョコレート色 mpf.make_addplot((macd['signal']), color='#800080', panel=2, secondary_y=False), #800080は紫 mpf.make_addplot((macd['bar_positive']), type='bar', color='#4dc790', panel=2), mpf.make_addplot((macd['bar_negative']), type='bar', color='#fd6b6c', panel=2), ] # 上記で作成したプロットのリストを引数addplot=で指定してチャートの下にMACDのプロットを付け加える mpf.plot(df3,type='candle',figsize =(12,6), style='yahoo', volume=True, addplot=macd_plot, title = "STOCK PRICE CHART FOR {0}".format(ticker))
このaddplotの機能を利用することにより、Yahoo! Financeで提供されるデータを用いて計算できるあらゆる指標をチャートに付け加えることができ、オリジナルのチャート分析ツールとしてカスタマイズして強力な株価分析ツールを作り上げることができます。