LoginSignup
15

More than 3 years have passed since last update.

mplfinanceでローソク足チャート、出来高、移動平均線、ボリンジャーバンドを表示する

Last updated at Posted at 2020-08-29

mplfinanceでよくあるチャートを表示してみます。

3ヶ月で3.5倍になった ロコンド(3358) を例にします。
環境はGoogle Colaboratoryです。

事前準備

stooq で株価データを取得できるメソッドを作成しておきます。

import pandas as pd
import pandas_datareader.data as pdr
import numpy as np
from pandas.testing import assert_frame_equal

def makeDataFrame(code):
  df_temp = pdr.DataReader("{}.JP".format(code), "stooq")
  df = df_temp.loc[:,['Open','High','Low','Close','Volume']].sort_values('Date')
  return df

確認
直近100営業日のデータを取得します。

df = makeDataFrame(3558).tail(100)
df.tail()

スクリーンショット 2020-08-29 14.07.00.png

mplfinance インストール

pip でインストールします。
スクリーンショット 2020-08-29 13.49.59.png

ローソク足チャートを表示

typeを指定してplotするだけで表示できます。

import mplfinance as mpf
mpf.plot(df, type='candle')

スクリーンショット 2020-08-29 13.46.06.png

出来高を表示

volume=True のオプションをつけるだけです。

スクリーンショット 2020-08-29 13.47.42.png

移動平均線を表示

移動平均線はmavオプションで日付を指定することで表示できます。5, 25, 75日線を表示する例です。

mpf.plot(df, type='candle', mav=(5, 25, 75), volume=True)

スクリーンショット 2020-08-29 14.00.05.png

ボリンジャーバンドの表示

pytiライブラリのインストール

ボリンジャーバンドを計算するライブラリ pyti をインストールします。

スクリーンショット 2020-08-29 13.50.58.png

ボリンジャーバンドの計算

基準線20で計算します。

from pyti.bollinger_bands import upper_bollinger_band as bb_up
from pyti.bollinger_bands import middle_bollinger_band as bb_mid
from pyti.bollinger_bands import lower_bollinger_band as bb_low

data = df['Close'].values.tolist()
period = 20
bb_up = bb_up(data,period)
bb_mid = bb_mid(data,period)
bb_low = bb_low(data,period)
df['bb_up'] = bb_up
df['bb_mid'] = bb_mid
df['bb_low'] = bb_low

確認

プロットして計算できているか確認してみます。
スクリーンショット 2020-08-29 13.54.11.png

mplfinanceで表示

mplfinanceはデフォルトでは 'Open','High','Low','Close','Volume' しか認識しません。
追加したい項目はmake_addplotでmplfinanceが認識できるようにします。
表示するときには、addplotのオプションで一緒に表示する項目を指定します。

apd = mpf.make_addplot(df[['bb_up', 'bb_mid', 'bb_low']])
mpf.plot(df, type='candle', addplot=apd, volume=True)

スクリーンショット 2020-08-29 13.57.58.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15