今回は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 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を使って単純に為替データをとるところまでやってみました。
以下の記事ではこのデータからローソク足のチャートをプロットしますので、ぜひ参考にしてみてください