はじめに
こんにちは。FXや暗号資産の自動売買のサーバの構築の説明を続けます。前回まではAWS EC2インスタンスのUbuntuにPython環境を構築しました。
今回はOANDA APIを利用して価格を取得してみます。
準備
本番口座及びデモ口座の開設と、APIへのアクセスに必要なREST APIトークンを取得します。
本番口座の開設
OANDAのAPIを利用するには本番口座の開設が必要です。以下URLの「本番口座 新規開設」で手続きしてください。本番口座の開設手続き後、ログインIDとパスワードが郵送で送られてきます。
REST APIトークンの取得
REST APIトークンの取得には、以下の3条件が必要です。
①ゴールド会員であること
②NYサーバーの口座残高が25万円以上であること
③プロコースであること
①のゴールド会員の条件については、翌月末以降のゴールド会員の資格を維持するために、月に50万ドル相当超の取引を行う必要があります。ただ、50万ドルというのはそれほどハードルは高くはないです。なお、新規に本番口座を開設した場合、開設後は翌月末までゴールド会員の資格がプレゼントされます。②については25万円以上の入金が必要となります。③についてはプロコースで申し込まなかった場合、取引コースの変更を行う必要があります。
上記条件をクリアすれば、REST APIトークンの発行が可能となります。マイページの下部に、 「口座の管理を行う」の枠があり、その中に「APIアクセスの管理」がありますのでクリックします。そうすると、REST APIトークンを発行するページになりますので、トークンを取得してください。
デモ口座の開設とデモ口座用のトークンの取得
いきなり本番口座でAPIを使うのは危険なので、まずはデモ口座で試してみます。デモ口座用のAPIトークンをあらためて取得する必要があるので、デモ口座を開設します。マイページログインからデモ口座のタブをクリックして、「デモ口座の新規お申込み」で手続きしてください。
デモ口座のログインIDとパスワードを入手したら、上記マイページログインからデモ口座にログインします。ページの下部に「口座の管理を行う」の枠があり、その中に「APIアクセスの管理」がありますのでクリックし、本番口座と同様にデモ用のトークンを取得してください。併せて、デモ口座のマイページのアカウント情報の中のアカウントIDも控えておいてください。
デモ口座の継続利用設定
デモ口座は口座開設後30日間で終了しますので、継続利用設定をしておきましょう。マイページから本番口座にログインして、下部の「口座の管理を行う」の枠の中の、「デモ口座の継続利用設定」でデモ口座の設定を行ってください。
APIを利用して最新の為替レートを取得する
それでは、いよいよAPIを利用して最新の為替レートを取得してみます。
仮想環境の設定
condaによる仮想環境を設定します。AWS Cloud9のターミナルで次のように入力してください。
$ conda create -n fx python=3 requests
$ . activate fx
(fx) ユーザー名:~/environment $
1行目のコマンドで仮想環境を設定しています。-nの後が仮想環境の名前で、任意の名前で構いません。ここでは「fx」としています。「python=3」でpythonのバージョンを指定しています。このように指定することで、pipでインストールしたライブラリがbaseのpythonに紐づいてしまうことを防いでいます。「requests」は後ほど必要になってくるモジュールです。
2行目のコマンドで仮想環境「fx」に入ります。
3行目のように、プロンプトの先頭に丸カッコに囲われた仮想環境名が表示されていれば、仮想環境に入ったことを表しています。
oandapyV20のインストール
APIにアクセスするためのPython用ラッパーであるoandapyV20をインストールします。
$ pip install oandapyV20
最新為替データを取得するプログラムのファイルを作成
AWS Cloud9で最新為替データを取得するプログラムを記述したファイルを作成します。左上メニューのFile-New Fileをクリックすると、ターミナルの上のペインに「Untitle1」というタブが作られます。
次に以下のコードをコピペしてください。3行目、4行目のアクセストークンとアカウントIDは先ほど取得した値に書き換えてください。
from oandapyV20 import API
import oandapyV20.endpoints.pricing as pricing
access_token = "---" # アクセストークン
account_id = "---" # アカウントID
def get_pricinginfo(api, ins):
"""
最新レートの取得
"""
params = {"instruments" : ins}
request = pricing.PricingInfo(accountID = account_id, params = params)
response = api.request(request)
return response
if __name__ == "__main__":
import pprint
# 通貨ペアの指定
ins = "USD_JPY"
# APIインスタンスの生成
api = API(access_token=access_token, environment="practice")
# 最新レート取得
res = get_pricinginfo(api, ins)
# 結果の表示
pprint.pprint(res)
プログラムのコピペと書き換えが終わったら、ファイルを保存します。左上のメニューからFile-Save asをクリックすると、以下の画面が出ますので、ファイル名を適当に(ここでは[「oandaAPItest.py」)入力します。念のため、保存先のディレクトリが作業用(ここでは「environment」)になっているかを確認して「Save」をクリックします。
保存先のディレクトリがenvironmentではない場合には下記を実行してください。作業ディレクトリであるenvironmentに移るコマンドです。
$ cd ~/environment
実行
ファイルを保存出来たら、実行します。ターミナルから、以下のコマンドを入力します。
$ python oandaAPItest.py
または、このタブを選択した状態で「Run」ボタンをクリックしても実行できます。
実行結果は以下のようなものが出ると思います。ドル円の最新のレートが取得できました。データの詳細の内容についてはまた別の機会にご説明します。
{'prices': [{'asks': [{'liquidity': 250000, 'price': '109.747'}],
'bids': [{'liquidity': 250000, 'price': '109.663'}],
'closeoutAsk': '109.755',
'closeoutBid': '109.655',
'instrument': 'USD_JPY',
'quoteHomeConversionFactors': {'negativeUnits': '1.00000000',
'positiveUnits': '1.00000000'},
'status': 'non-tradeable',
'time': '2021-09-03T20:59:57.024268896Z',
'tradeable': False,
'type': 'PRICE'}],
'time': '2021-09-03T21:00:2
おわりに
OANDAのAPIを使って、最新レートを取得するまでを説明しました。
コメント