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