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

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

基本編:長期・中期・短期のチャート分析

今回はチャート分析の基本に立ち返り、長期・中期・短期の株価チャートと主要な指標値を描画する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は過熱感をみる指標となります。