見出し画像

MACDを計算する簡易Pythonコード

MACDを解説するブログ記事のオマケとして、MACDを計算するPythonコードでも紹介しておきます。
ネットにも同様のものがあるのですが、なぜかどれもtalib(だっけ?)とかいうモジュール要求してくるのがダルかったので自分で作りました。

このコードの良い所
・pandasとmatplotlibがあればOK
・パラメータなどをいじって自由にMACD計算可能

このコードの悪い所
・表示がみにくい
・株価と同時表示ができない
・正確さの検証を全くしていない

なぜか深夜になんとなく書きたくなったから書いたという感じです。
メンドイのでデバッグとか株価同時表示とか一切実装してませんが、需要あればそれもするかも。

使い方
このコードと同じディレクトリにdata.csvという株価時系列データのファイルを置いて実行する。
↓の感じで、株価列はtargetっていう名前にする。
他の列(画像の例だとDATE)はあってもなくてもOK。

画像1

んで実行するとこんなのが出る。

画像2

以上。
下がそのコードです。

import pandas as pd
import matplotlib.pyplot as plt


short_duration = 9
long_duration = 26
signal_duration=9
df = pd.read_csv("data.csv")

df["short_SMA"] = df["target"].rolling(window=short_duration).mean()
df["long_SMA"] = df["target"].rolling(window=long_duration).mean()
df["short_EMA"] = df["short_SMA"]*(1-1/(short_duration+1))+df["target"]/(short_duration+1)
df["long_EMA"] = df["long_SMA"]*(1-1/(long_duration+1))+df["target"]/(long_duration+1)
df["MACD"]=df["short_EMA"]-df["long_EMA"]
df["signal"]=df["MACD"].rolling(window=signal_duration).mean()

plt.plot(df["MACD"],"r",label="MACD")
plt.plot(df["signal"],"b",label="SIGNAL")
plt.legend(bbox_to_anchor=(0, 0), loc='lower left', borderaxespad=0, fontsize=9)
plt.show()

まあ、愚直にただ書きましたって感じっすね。
他の機能欲しい人がいたら、言ってくれたら色々ちゃんと書き直すかもしれん。

投げ銭くれ(投げやり)

関連記事)
MACDを使用したビットコイン自動売買botを作ってみた
ボリジャーバンドを利用したPython自動売買botへの足がかり?
【コピペOK】仮想通貨をPythonで自動売買する方法を初心者向けに解説

ご覧いただきありがとうございます! 少しでもサポートいただければモチベーションになります!