この記事では以下のようなローソク足を表示してみます
![ローソク足](https://i0.wp.com/www.tcom242242.net/wp-content/uploads/2019/10/Figure_1-4.png?resize=660%2C330&ssl=1)
データの中身を見てみる
前回取得したデータをもう一度見てみます。
# complete volume time bid # 0 True 54547 2019-08-14T21:00:00.000000000Z {'o': '105.839', 'h': '106.769', 'l': '105.696... # 1 True 22290 2019-08-15T21:00:00.000000000Z {'o': '106.035', 'h': '106.489', 'l': '106.020... # 2 True 1 2019-08-16T21:00:00.000000000Z {'o': '106.339', 'h': '106.339', 'l': '106.339... # 3 True 15345 2019-08-18T21:00:00.000000000Z {'o': '106.239', 'h': '106.691', 'l': '106.215... # 4 True 15867 2019-08-19T21:00:00.000000000Z {'o': '106.624', 'h': '106.685', 'l': '106.15
このデータは行列形式になっていることがわかります。
どのようなデータが格納されているかは一行目を見ればわかります。
complete,volume,time,bid・・というような形で何種類か格納されていることがわかります。
このデータの中でチャートを表示するために必要な列はbidという列になります。この中に足データ(Open, High, Low, Close)のデータが格納されています。
bid列の1つのデータを見てましょう。
df["bid"][0] # => {'c': '108.373', 'h': '108.717', 'l': '108.358', 'o': '108.632'}
c:Close、h:High、l:Low、o:Open と言った形で値が格納されていることがわかります。
この足データを用いてローソク足のチャートを表示させていきます。
Pythonを使ってローソク足を表示してみる
準備
まずmpl_financeという足をプロットするためのライブラリをインストールします。
pip install https://github.com/matplotlib/mpl_finance/archive/master.zip
以下からはPythonになります。
必要なライブラリをimportします。
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
OANDA APIを使ってデータの取得
OANDA APIを使ってデータを取得し、DataFrameに変換します。
access_tokenは自分のものに変更してください。
access_token = ******* api = API(access_token=access_token, environment="practice") params = { "granularity": "D", # 取得する足 "count": 50, # 取得する足数 "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"])
上述したデータの取得部分に関しては前回の記事を参照してください。
次にデータの時刻の情報(time)を変換します。
データの形式を合わせるために少し手間を加えています。
(若干ややこしいのですが、大したことはしていないので時間がない人はコピペで大丈夫です)
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)
ローソク足チャートのプロット
では、ローソク足チャートをプロットします。
candlestick_ohlcメソッドを使うことでチャートを表示することができます。
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") ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d")) plt.show()
![](https://i0.wp.com/www.tcom242242.net/wp-content/uploads/2019/10/Figure_1-4.png?resize=1000%2C500&ssl=1)
終わりに
今回は、OANDA APIから取得したデータを使ってローソク足を表示させてみました。