投資のためのデータサイエンス

個人の投資活動に役立つデータ分析にまつわる話題を綴ります。

mplfinanceライブラリを用いた株価チャートの描画(その5)

今回も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で提供されるデータを用いて計算できるあらゆる指標をチャートに付け加えることができ、オリジナルのチャート分析ツールとしてカスタマイズして強力な株価分析ツールを作り上げることができます。