
Pythonライブラリ(株価の可視化):mlpfinance
1.概要・前提
株価や仮想通貨の価格を可視化するするためのライブラリとしてmlpfianceを紹介します。
前提として自作取引ツールを作る時に可視化したいためmlpfinanceを使用しており、ローソクチャートや計算されたテクニカル指標から自分で売買判断する場合は証券会社の取引ツールを使うほうが圧倒的に便利です。
2.サンプルデータの準備
2-1.株価データ
pandas_datareaderにより商船三井の株価を使用します。取得データの都合上、前処理を2つ加えておきます。
前処理1:別のライブラリ使用のためにデータを昇順にします。
前処理2:データが500個以上あると見えにくくなるため1年分に絞ります。
※今回処理は不要ですが、カラムは「Open, High, Low, Close」の順である必要があります。
[In]
import pandas_datareader as pdr
import pandas as pd
df = pdr.data.DataReader('9104.jp', 'stooq') #商船三井:9104.jp
df_sorted = df.sort_index(ascending=True) #処理前に昇順ソート
df_sorted = df_sorted.iloc[-365:, :] #見にくいためデータを365に絞る
df_sorted
[Out]
下記参照(※左図:df、右図:df_sorted)
2-2.MACD(テクニカル指標)のデータ
テクニカル指標用ライブラリtalibを使用してMACDも計算しておきます。
[In]
import talib
df_MACD = pd.DataFrame(talib.MACD(df_sorted['Close'], fastperiod=12, slowperiod=26, signalperiod=9), index=["MACD(12,26)","MACDsignal", "MACDhist"]).T
df_MACD
[Out]
3.mlpfianceの基礎
3-1.ローソクチャートのプロット
mlpfinanceは簡単にローソクチャートを作成できます。各引数に値を設定することで形状、スタイル、移動平均線の追加、出来高の追加ができます。
[In]
import numpy as np
import pandas as pd
import talib
import pandas_datareader as pdr
import matplotlib.pyplot as plt
import mplfinance as mpf
df = pdr.data.DataReader('9104.jp', 'stooq') #商船三井:9104.jp
df_sorted = df.sort_index(ascending=True) #処理前に昇順ソート
df_sorted = df_sorted.iloc[-365:, :] #見にくいためデータを365に絞る
plt.figure(figsize=(24, 20))
ax1 = plt.subplot(2,2,1)
ax1.set(title='mpf.plot(df_sorted)')
ax2 = plt.subplot(2,2,2)
ax2.set(title="mpf.plot(df_sorted, type='candle')")
ax3 = plt.subplot(2,2,3)
ax3.set(title="mpf.plot(df_sorted, type='candle', style='yahoo')")
ax4 = plt.subplot(2,2,4)
ax4.set(title="mpf.plot(df_sorted, type='candle', style='yahoo', mav=(5,25,100))")
mpf.plot(df_sorted, ax=ax1)
mpf.plot(df_sorted, ax=ax2, type='candle')
mpf.plot(df_sorted, ax=ax3, type='candle', style='yahoo')
mpf.plot(df_sorted, ax=ax4, type='candle', style='yahoo', mav=(5,25,100))
[Out]
下図参照:コードはタイトル参照
[In]
mpf.plot(df_sorted, type='candle', style='yahoo', mav=(5,25,100), volume=True)
3-2 グラフ追加:mpf.make_addplot()
テクニカル指標のデータを追加する場合はaddplotにmpf.make_addplot(テクニカル指標)とします。
[In]
import talib
df_MACD = pd.DataFrame(talib.MACD(df_sorted['Close'], fastperiod=12, slowperiod=26, signalperiod=9), index=["MACD(12,26)","MACDsignal", "MACDhist"]).T
addplot = [
mpf.make_addplot((df_MACD['MACD(12,26)']),panel='lower', ylabel='MACD(12,26)', color='g'),
mpf.make_addplot((df_MACD['MACDsignal']),panel='lower', ylabel='MACDsignal', color='r')
]
mpf.plot(df_sorted, addplot=addplot ,type='candle',mav=(5,25,100),volume=True, figratio=(10,4), style='yahoo')
[Out]
panelはプロット位置になり整数を入れると場所を指定できます。
[In]
addplot = [
mpf.make_addplot((df_MACD['MACD(12,26)']),panel=1, ylabel='MACD(12,26)', color='g'),
mpf.make_addplot((df_MACD['MACDsignal']),panel=2, ylabel='MACDsignal', color='r')
]
mpf.plot(df_sorted, addplot=addplot ,type='candle',mav=(5,25,100),volume=True, figratio=(10,4), style='yahoo')
[Out]
4.mlpfianceの応用
4-1.体裁の修正
普段は気にしていないですが体裁を調整も可能です。コードは下記を参考にしました。
[In]
mc = mpf.make_marketcolors(up="#DF0101", down="#00008b", volume="#6E6E6E", edge="inherit", wick="inherit")
cs = mpf.make_mpf_style(marketcolors=mc, gridcolor="#778899", y_on_right=True,
rc={"xtick.labelsize":8, "ytick.labelsize":8})
mpf.plot(df_sorted, type='candle', volume=True, datetime_format='%Y/%m/%d', figsize=(9,5),
style=cs, width_adjuster_version='v0', xrotation=False, ylabel='', ylabel_lower='')
[Out]
下図参照:綺麗になってますね
あとがき
いろいろな機能はあるけど、ローソク足+テクニカル指標をサクッと表示できれば良かったため量は少ないけどとりあえず完成。