mplfinanceでMACDを描写する

2021-10-09

 前回の「mplfinanceで指数平滑移動平均線(EMA)を描写する」の続きで、次はMACDを描写してみたいと思います。

変数については過去の内容を反映しています。そのため、まだ過去の記事を読まれていない方は、「mplfinanceでSBI証券Likeなチャートを記載してみる」から始めてください。

 MACDについては、auカブコム様のサイトに詳細が載っています。MACDはMoving Average Convergence -Divergenceの略で移動平均収束-発散法と言われています。MACDでは12日と26日の指数平滑移動平均の差分で表されます。

$$\mathrm{MACD=EMA(12)-EMA(26)}$$

 次に「シグナル」ですが、こちらはMACDの9日指数平滑移動平均になります。

$$\mathrm{シグナル=EMA(MACD)}$$

 MACDではMACDとシグナルの差分の変化を見やすくするために、ヒストグラムもよく活用されます。ヒストグラムは下記式で表されます。

$$\mathrm{ヒストグラム=MACD-シグナル}$$

MACDをPythonで表現する

 mplfinanceで描写をするために、まずはMACDをPythonの数式で表していきます。

ema12 = df['close'].ewm(span=12, adjust=False).mean()
ema26 = df['close'].ewm(span=26, adjust=False).mean()
macd = ema12 - ema26
signal = macd.ewm(span=9, adjust=False).mean()
histogram = macd - signal

 前回と同様にewm関数で指数平滑移動平均を計算しています。先程までの定義をそのままPythonに置き換えただけなので分かりやすいと思います。

mplfinanceでMACDを描写する

 次に先程計算した値を描写していきます。以下の記述でグラフが描写できます。

macd_line  = [
    mpf.make_addplot(macd[datefrom:], panel=2, color='blue', width=0.7),
    mpf.make_addplot(signal[datefrom:], panel=2, color='lime', width=0.7, secondary_y = False),
    mpf.make_addplot(histogram[datefrom:], type='bar',width=0.7,panel=2, color='#6E6E6E', secondary_y = False)
]
setup = dict(type='candle', volume=True, datetime_format='%Y/%m/%d', figsize=(9,5), style=cs, xrotation=False, ylabel='', ylabel_lower='')
mpf.plot(df[datefrom:], **setup,scale_width_adjustment=dict(volume=0.6), addplot=macd_line)

 addplotの使い方については前回説明をしているので、ある程度コードの想像はついたのではないかと思います。前回と異なる点が何個かあるので解説していきます。

 まずはヒストグラムの表現について、type=’bar’が追加されています。今までは直線のグラフしか表示してこなかったため記載は不要でしたが、その他のグラフを記載したい場合はtypeの指定が必要となります。今回は棒グラフを記載したいのでbarを指定しています。

 次にsetupという変数について説明していきます。前回、SBI証券のグラフに近づけるためにVolumeの幅を調整用のwidth_adjuster_version=’v0’という引数を使いました。そのまま適応してグラフを記載すると、Volume幅のみにスタイルが適応されているためヒストグラムのスタイルと幅が違っていて違和感があります。

 そこで、グラフの調整方法の指示に従ってボリュームの幅をヒストグラムに合わせていきます。記載を見ると、setupに一部のパラメータを格納して、描写をするときにscale_width_adjustment=dict(volume=XX)と記載することでグラフの幅が調整できるようです。試したところ0.6くらいにするとヒストグラムと幅が合います。

 幅を調整した結果がこちらです。

 先程のグラフよりもVolumeの幅が調整されて見やすくなっていると思います。ちなみに、青線がMACD、黄緑色がシグナルを表しています。

 いかがでしょうか。そろそろmplfinanceの描写にも慣れてきたのではないでしょうか?
 次回はDMIのグラフを作成していきたいと思います。お楽しみに!