【FX】ローソク足チャートを表示する

OANDAのAPIがV20となりました!
V20用の記事は以下になります。

【FX,V20】Pythonでローソク足チャートを表示する

前回はoanda api を使って為替のデータを取得しました。

【oandapy,fx】oandapyで為替データを取得する方法

今回は、oanda apiで取得したデータを使ってローソク足のチャート
をmatplotlibでプロットしました。

OANDAとは

OANDAはアメリカのfx会社です。
OANDA Japan

pythonから使えるapiを提供しているので、
pythonでfx関連のことをしようとする人はよく使うと思います。
今回はoandaからデータを取得して、ローソク足チャートをプロットするので
oandaの口座を持っている人前提の記事になります。

apiを使うためにはoandaで口座を作る必要があります。
口座を作るだけなら無料できます。以下のリンクからoandaのページにいき口座を作成してから以下をお読みください。


oandapyとは

oandapyはOANDA APIをpythonから簡単に利用できるようにしたライブラリです。

https://github.com/oanda/oandapy

本記事ではoandapyを使って実装していきます。

インストール方法はシンプルで

pip install git+https://github.com/oanda/oandapy.git

実装(ソースコード)

準備

まず必要なライブラリをインストールします。

pip install oandapy
pip install https://github.com/matplotlib/mpl_finance/archive/master.zip

以下からはpythonになります。
必要なライブラリをimportします。

import oandapy
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.dates as mdates
from mpl_finance import candlestick_ohlc

Oanda Apiを使ってデータの取得

Oanda Apiを使ってデータを取得し、DataFrameに変換します。
access_tokenは自分のものに変更してください。

oa = oandapy.API(environment="live", access_token="<>")
data = oa.get_history(instrument="USD_JPY", granularity="D", count=100)
df = pd.DataFrame(data["candles"])

データの時刻の情報(time)を変換します。

df["time"] = pd.to_datetime(df["time"])
df["time"] = df["time"].apply(mdates.date2num)

ローソク足チャートのプロット

では、ローソク足チャートをプロットします。

fig, ax = plt.subplots(figsize=(10,5))
df_ohlc = df[["time","openAsk","highAsk","lowAsk","closeAsk"]].copy()
candlestick_ohlc(ax, df_ohlc.values, width=.6, colorup='green', colordown='red')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.savefig("result.png")
plt.show()

ソースコードの全体像

import oandapy
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
import matplotlib.dates as mdates
from mpl_finance import candlestick_ohlc

# データの取得
oa = oandapy.API(environment="live", access_token="<>")
data = oa.get_history(instrument="USD_JPY", granularity="D", count=100)
df = pd.DataFrame(data["candles"])

# 時間をdatetimeに変換
df["time"] = pd.to_datetime(df["time"])
df["time"] = df["time"].apply(mdates.date2num)

# ローソク足のチャートの表示
fig, ax = plt.subplots(figsize=(10,5))
df_ohlc = df[["time","openAsk","highAsk","lowAsk","closeAsk"]].copy()
candlestick_ohlc(ax, df_ohlc.values, width=.6, colorup='green', colordown='red')
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.show()

参考文献

https://www.techtrekking.com/how-to-plot-simple-and-candlestick-chart-using-python-pandas-matplotlib/

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