【Python,FX】OANDA APIを使って為替データを取得する

今回はPythonを使って為替データを取得していきます。

ちなみに今回の記事で作成するプログラムを実行すると以下のように出力されます。
(イメージです。)

#   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

OANDA APIを使う

Pythonから為替データを取得するためにOANDA APIというものを使います。

この記事ではOANDA APIを使います。OANDAを使うためにはOANDA Japan からデモ口座か本番口座を作ってください

ちなみに本番口座の作り方は以下の記事で丁寧に紹介しています。

【かんたん】OANDA Japanの口座の作り方

口座を作成した後にOANDA APIを使うにはアクセストークンというものを取得する必要があります。

アクセストークンの取得の仕方に関しては以下の記事で紹介しています。

【OANDA、API】OANDA APIのアクセストークンの取得方法

OANDA APIから為替データを取得する

アクセストークンを取得できてれば、OANDA APIを使えるようになったので、データを取得していきます。

OANDA APIをPythonから使いやすくするためのライブラリをまずインストールします。
colabの場合にはセルに

!pip install oandapyV20

を入れて実行してみてください。

するとライブラリがインストールされるはずです。

では、実際にコードを書いていきましょう!

まずいくつか必要なライブラリを以下のコードでimportします。

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

次のコードでOANDA APIに接続します。ここでaccess_tokenに先程取得したアクセストークンを記述します。

access_token = "************************************************"

api = API(access_token=access_token, environment="live")

どのような為替のデータを取得するかを設定します。今回は日足で50個のUSD/JPYのデータを取得します。

params = {
    "granularity": "D",  # 取得する足
    "count": 50,         # 取得する足数
    "price": "B",        # Bid
}

instrument = "USD_JPY"   # 通貨ペア

ではAPIにリクエストを投げ、為替の情報を取得してみます。

instruments_candles = instruments.InstrumentsCandles(instrument=instrument, params=params)

api.request(instruments_candles)
response = instruments_candles.response

response変数の中に為替データが格納されています。

responseは辞書型ですので、以下のようにすることでどのようなデータが格納されているか確認できます。

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

instruments, granularity, candlesといったデータがあります。

足データはcandlesに格納されています。

ここでは、データ解析でよく用いられるPandasというライブラリを使ってデータの中身を確認してみます。

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...

ここでは、PandasのDataFrameというデータ構造を使います。

上のコードでは、head関数を使って最初の5つのデータを取得して表示しています。

うまく為替データを取得できていることがわかります。

終わりに

今回はOANDA APIを使って単純に為替データをとるところまでやってみました。

以下の記事ではこのデータからローソク足のチャートをプロットしますので、ぜひ参考にしてみてください

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