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

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

mplfinanceライブラリを用いた株価チャートの描画(その6) - TA-Libによる株価テクニカル分析

前回はmplfinanceで別途コーディングして計算した指標をチャートに付け加える方法を説明しました。だいたいの指標はPythonで一からコーディングすれば実現できるようですが、手間がかかるのと、計算結果が正確かどうかを確かめるのが難しいという欠点があります。そこで、ここではテクニカル指標を計算するPythonライブラリである「TA-Lib」を使うこととします。このライブラリのインストールは通常のpipコマンドによるものではなく、環境上のコマンドプロンプトで「conda install -c conda-forge ta-lib」にて行います。

今回もまず、必要なライブラリをインポートし、株価データをダウンロードします。

# ライブラリのインポート
import pandas as pd
from pandas_datareader import data as pdr
import mplfinance as mpf
import datetime
import yfinance as yf
import talib as ta
# Yahoo! Financeからのデータ獲得
start = "2023-2-28"
end = datetime.date.today()
ticker = "4755.T" # 4755は楽天グループ
yf.pdr_override()
# yahooサイトからデータをダウンロード
df = pdr.get_data_yahoo(ticker, start, end)

ここでは、オシレーターの一つである「商品チャンネル指数(CCI)」をTA-Libで計算して、mplfinanceによりローソク足チャートの下にプロットしています。商品チャンネル指数は、ティピカル値〔(高値+安値+終値)÷3〕で計算した移動平均乖離幅を過去の移動平均乖離幅と比較したものです。

# subplotとして商品チャンネル指数(CCI)を描画する
# 各種指標の計算関数
def OSC_CCI(df, window):
  osc_cci = pd.DataFrame()
  # 商品チャンネル指数 (ta-lib)
  osc_cci['cci'] = ta.CCI(df['High'], df['Low'], df['Close'], timeperiod=window)
  return osc_cci
# 指標計算関数を実行して結果をデータフレームに格納する
osc_cci = OSC_CCI(df, 20)
# 追加プロットのリストを作成する
osc_plot = [
    mpf.make_addplot((osc_cci['cci']), panel=2, ylabel='CCI', secondary_y=False)
]
# 表題と凡例
ch_title = 'Stock Price Chart for ' + ticker
line_titles1 = ['cci']
# チャート描画
fig, axes = mpf.plot(df,type='candle',figsize =(15,7), style='yahoo',
         addplot=osc_plot,volume=True,mav=(15,25,75), returnfig=True)
# 表題と凡例の指定
axes[0].set_title(ch_title)
axes[4].legend(line_titles1)


前回投稿したコードでは付け加えたチャートの凡例が表示されませんでしたが、今回は凡例が表示されるよう改良しています。