今回はTA-Libというライブラリを使って、移動平均線をプロットしてみました。
作成する図は以下のような図になります。
基礎事項
移動平均(復習)
まず移動平均について復習しておきます。
移動平均は直近の\(n\)間の値の平均値です。
例えば時刻\(t\)においての直近\(n\)の移動平均\(a_t\)は、
a_t = \frac{d_{t}+d_{t-1}+\cdots + d_{t-n}}{n}
\end{aligned}$$
で求められます。
ちなみに、\(d_t\)は時刻\(t\)のデータ(価格)を表しています。
チャートの各時間から\(n\)分前の移動平均をプロットしていくことで、チャートのトレンドを把握することができます。
OANDA API
本記事ではOANDA APIからデータをとってきてプロットします。
ちなみに、OANDAはFX会社です。
Pythonからも使えるAPIを提供してくれているので、非常に便利です。
OANDA APIを使うために、最低でもデモ口座を作る必要があります。
デモ口座の作り方は以下の記事で説明したので、参考にしてデモ口座を作ってAPIを使えるようにしておいてください。
PythonからOANDA API V20を使えるライブラリ(oandapyV20)
今回はOANDA API V20をPythonから使えるライブラリoandapyv20を使っていきます。
公式のライブラリより使いやすく、よく使われています。
インストール方法
では、さっそくインストールしてみます。
PyPIでインストールできます。
pip install oandapyV20
TA-Lib
今回は、TA-Lib(Technical Analysis Library)という
マーケットの情報を分析するためのライブラリを使って移動平均を求めます。
TA-Libでは、移動平均以外にも様々なテクニカル分析をすることができます。
今後の記事で紹介していきます!
TA-Libのインストール方法
TA-Libのインストール方法については以下の記事で紹介しています。
実装(ソースコード)
じゃあ実装していきましょう!
まず、必要なライブラリをインストールします。
import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates from mpl_finance import candlestick_ohlc import datetime from oandapyV20 import API import oandapyV20.endpoints.instruments as instruments import talib
データを取得とローソク足チャートをプロットを行います。
今回はUSD/JPYの日足のデータを2000個取得します。
データの取得のためにはOANDA API のアクセストークンが必要になります。
access_token = "your access_token" api = API(access_token=access_token, environment="practice") params = { "granularity": "D", # 取得する足 "count": 2000, # 取得する足数 "price": "B", # Bid } instrument = "USD_JPY" # 通貨ペア instruments_candles = instruments.InstrumentsCandles(instrument=instrument, params=params) api.request(instruments_candles) response = instruments_candles.response df = pd.DataFrame(response["candles"]) ohlc = [] for r in response["candles"]: time = r["time"].replace(".000000000Z", "") time = datetime.datetime.strptime(time, "%Y-%m-%dT%H:%M:%S") time = mdates.date2num(time) r["bid"]["time"] = time ohlc.append(r["bid"]) df = pd.DataFrame(ohlc) df = df.astype(np.float64) # ローソク足のチャートの表示 fig, ax = plt.subplots(figsize=(10, 5)) df = df[["time", "o", "h", "l", "c"]] candlestick_ohlc(ax, df.values, width=.6, colorup="green", colordown="red") times = df["time"].values
もろもろ、データを成形しています。
解説は後日追記していきます。
では、TA-libを使って移動平均をもとめていきます。
移動平均は talib.SMA によって求めることができます。
さっそくソースコードを見てみます。
# 移動平均を計算する sma_25 = talib.SMA(df["c"].values, 25) # 25移動平均 ax.plot(times, sma_25, label="25") sma_75 = talib.SMA(df["c"].values, 75) # 75移動平均 ax.plot(times, sma_75, label="75") sma_200 = talib.SMA(df["c"].values, 200) # 200移動平均 ax.plot(times, sma_200, label="200")
talib.SMAの第一引数に時系列データ、第二引数に区間を指定します。
ここでは、短期(25)、中期(75)、長期(200)の移動平均を求めています。
あとは、グラフを表示します。
x軸を時間にするために、 ax.xaxis.set_major_formatter(mdates.DateFormatter(‘%Y-%m-%d’)) をおこなっています。
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) plt.legend() plt.show()
終わりに
今回はPythonで移動平均線を表示してみました。
TA-libを使うと移動平均を簡単に求められるので便利ですね。
TA-libには他にもテクニカルな指標を簡単に計算できるので、今後使っていきます。