OANDA API V20とPythonを使って為替データを取得する

Python からOANDA V20 APIを使って為替データを取得します。

OANDA V20とは

V20はOANDA の新しい取引エンジンです。

今まではv1エンジンでしたが、2018年以降、OANDAはv1のAPIをサポートしていないようです。

なので、基本的はV20を使うほうが無難です。

V1とV20の違いについては以下の公式サイトを参照してください。

https://oanda.secure.force.com/AnswersSupport?urlName=V20-Trading-Platform-FAQ&language=ja

PythonからOANDA API V20を使えるライブラリ(oandapyV20)

OANDA V20をPythonから使えるライブラリとして、oandapyv20を今回は用います。

https://github.com/hootnot/oanda-api-v20

公式のライブラリより使いやすく、よく用いられています。

インストール方法

では、さっそくインストールしてみます。
PyPIでインストールできます。

pip install oandapyV20

oandapyV20を使って為替データを取得する

注意

これ以降はOANDA APIのアクセストークンを持っていることを前提としています。アクセストークンを得るにはデモ口座に登録する必要があります。
この記事を参照してください。

では、実際にデータを取得していきます。

import pandas as pd
from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments

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

上記のコードでデータを取得できました。
paramsで取得するデータの設定を行っています。
instrumentで取得したい通貨ペアの設定をしています。

では、取得したデータ(response)の中身を見てみます。

print(response.keys())
#=> dict_keys(['instrument', 'granularity', 'candles'])

instruments, granularity, candlesといったデータがあります。。
instrument, granularityは自分で設定した値ですので、
candlesが目的として足データになります。

では、データを見てみます。
今回はpandasのDataFrame型にして見てみます。

df = pd.DataFrame(response["candles"])↲
print(df.head())↲
#=> 
#   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.156...

足データが取得できていることがわかります。
bidの中にはo(open), h(high), l(low), c(close(見切れていますが))が格納されています。

参考文献

  1. Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理
    Pythonでデータ解析をするなら読んでおくべき一冊。おすすめです。
タイトルとURLをコピーしました