今回はチャート分析の基本に立ち返り、長期・中期・短期の株価チャートと主要な指標値を描画するPythonコードを掲載します。指標の計算にはpandas-taライブラリを用い、描画にはmplfinanceライブラリを用いています。
まず、データ取得から描画まで行う関数を定義します。尚、RSI(相対力指数)とボリンジャーバンドのパラメータはデータ種別によらず固定しています。
# ライブラリのインポート import pandas as pd from pandas_datareader import data as pdr import mplfinance as mpf from datetime import date, datetime, timedelta import yfinance as yf import pandas_ta as ta # 関数の定義 def chart_check(ticker, dttype='d'): # パラメータ設定 if dttype=='m': dtdays=4000; dtterm='1mo'; sma=6; lma=12; stitle='MONTHLY' elif dttype=='w': dtdays=900; dtterm='1wk'; sma=13; lma=26; stitle='WEEKLY' else: dtdays=180; dtterm='1d'; sma=5; lma=25; stitle='DAILY' # yahooサイトからデータをダウンロード end_date = datetime.today() start_date = end_date - timedelta(days=dtdays) yf.pdr_override() df = pdr.get_data_yahoo(ticker, start_date, end_date, interval=dtterm) # 指標値の計算 df['RSI'] = ta.rsi(df['Adj Close'], length=14) df.ta.bbands(close='Adj Close', length=20, std=2, append=True) # mplfinanceのmake_addplotメソッドを用いてチャートに付け加えるプロットを作成する idx_plot = [ mpf.make_addplot((df['RSI']), panel=2, ylabel='RSI', secondary_y=False), mpf.make_addplot((df['BBU_20_2.0']), panel=3, ylabel='Bollinger', secondary_y=False), mpf.make_addplot((df['Adj Close']), panel=3, secondary_y=False), mpf.make_addplot((df['BBL_20_2.0']), panel=3, secondary_y=False), ] # 表題と凡例 ch_title = stitle+" STOCK PRICE CHART FOR {0}".format(ticker) line_titles1 = ['RSI'] line_titles2 = ['Upper','Close','Lower'] # チャート描画 fig, axes = mpf.plot(df,type='candle',figsize =(16,8), style='yahoo', addplot=idx_plot,volume=True,mav=(sma,lma), returnfig=True) # 表題と凡例の指定 axes[0].set_title(ch_title) axes[4].legend(line_titles1) axes[6].legend(line_titles2)
後は、銘柄コードとデータ種別を与えて実行するだけです。
ticker = '9984.T' # 9984はソフトバンクグループ chart_check(ticker, dttype='m') # 月足チャート chart_check(ticker, dttype='w') # 週足チャート chart_check(ticker, dttype='d') # 日足チャート
図は月足のみ掲載しています。移動平均は目先の上下、ボリンジャーバンドはタイミング、出来高は人気、RSIは過熱感をみる指標となります。