今回は、OANDA APIとPythonを使って為替データ(価格データ)を取得したいと思います。
Python からOANDA V20 APIを使って為替データを取得します。
前提
環境
まず、私の環境は
- python 3.8
- oandapyV20 : 0.6.3
です。
OANDA APIを使うための環境構築
今回はOANDA APIを使います。
OANDA APIを使うためにデモ、もしくは本番口座を作成して、アクセストークンを取得しておく必要があります。以下の記事を参考にしてください。
また、oandapyV20をpipでインストールしておく必要があります。pipで簡単にインストールできます。
pip install oandapyV20
為替データを取得する
では、実際に為替データを取得していきます。
これ以降はOANDA APIのアクセストークンを持っていることを前提としています。アクセストークンを得るにはデモ口座に登録する必要があります。 この記事を参照してください。
まず、必要なモジュール群をインポートします。
import pandas as pd
from oandapyV20 import API
import oandapyV20.endpoints.instruments as instruments
次にOANDA APIにアクセスします。
access_token = "************************************************" # your access_token
api = API(access_token=access_token, environment="practice")
access_tokenはご自分のアクセストークンに変更してください。
params = {
"granularity": "D", # 取得する足
"count": 50, # 取得する足数
"price": "B", # Bid
}
instrument = "USD_JPY" # 通貨ペア
instruments_candles = instruments.InstrumentsCandles(instrument=instrument, params=params)
response = api.request(instruments_candles)
paramsで取得するデータの設定を行っています。各パラメータの説明はコメントを参照してください。
instrumentで取得したい通貨ペアの設定をしています。
では、取得したデータ(response)の中身を見てみます。
print(response.keys())
#=> dict_keys(['instrument', 'granularity', 'candles'])
instruments, granularity, candlesといったデータがあります。。
instrument, granularityは自分で設定した値ですので、
candlesが目的として足データになります。
では、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(見切れていますが))という形で、始値、高値、安値、終値が格納されています。
無事データが取得できました。
全コードを以下に示します。
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)
response = api.request(instruments_candles)
print(response.keys())
df = pd.DataFrame(response["candles"])
print(df.head())
終わりに
今回はOANDA APIとPythonを使って為替データを取得する方法を紹介しました。
以下の記事で取得したこのデータを使ってローソク足のチャートを表示する方法を紹介していますので、良ければどうぞ。
また、FXの価格予想プログラムを作ったりしているので、こちらもどうぞ。
では!
参考文献
- Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理
Pythonでデータ解析をするなら読んでおくべき一冊。おすすめです。