OANDAのAPIがV20となりました!
V20用の記事は以下になります。
V20用の記事は以下になります。
前回は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()