PythonでMACDを計算する
MACD (Moving Average Convergence Divergence) | FX・証券取引のマネーパートナーズ -外為を誠実に-
このあたりを参考に、EMAはこんなかんじ。
def ema(l, t): result = [] for p in l: i = len(result) if i < t: # t日目までは単純平均 result += [float(sum(result) + p) / (i + 1)] else: last = result[-1] result += [last + 2. * (p - last) / (t + 1)] return result
あとは式通り。
ema12 = np.array(ema(prices, 12)) ema24 = np.array(ema(prices, 24)) macd = ema12 - ema24 signal = np.array(ema(macd, 9))
matplotlibで描画してみる。
x = np.arange(0, len(dates)) plt.figure(figsize=(150, 4)) # サイズは適当に調整 plt.xticks(x, dates[::-1]) plt.plot(x, macd) plt.plot(x, signal)
ipython notebookとか使うと便利。