【Python,FX】ローソク足を表示する!


この記事では以下のようなローソク足を表示してみます

ローソク足

データの中身を見てみる

前回取得したデータをもう一度見てみます。

#   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()

終わりに

今回は、OANDA APIから取得したデータを使ってローソク足を表示させてみました。

タイトルとURLをコピーしました