APIの使い方

Pythonを使い「REST API」からアカウント情報を取得する方法について解説


Pythonを使ってREST API(以下、API)からアカウント情報を取得する方法について解説します。

利用可能なアカウントリストを取得したり、アカウントの損益を確認したり、投資余力を確認したり、さまざまな情報にアクセスすることができます。

事前準備

PythonでAPIを利用するためには、次の2点が必要です。

  • 1.APIトークンの発行
  • 2.oandapyV20のインストール

詳細についてはこちらの記事で解説しておりますのでご参照ください。

>Pythonで「REST API」を使用するまでの4つの手順について解説

アカウント情報を取得する

APIでアカウント情報を取得するには、oandapyV20.endpoints.accountsを使います。

このaccountsの中には、さまざまなクラスが用意されています。

  • 1.AccountsList
  • 2.AccountsSummary
  • 3.AccountsChanges
  • 4.AccountInstruments

AccountsList

AccountListでは、指定したAPIトークンに紐づくアカウント一覧を取得することができます。



from oandapyV20 import API
from oandapyV20.endpoints import accounts

access_token = "APIトークンを設定してください"

# API用のクラスを定義
client = API(access_token=access_token, environment="practice")

r = accounts.AccountList()
client.request(r)


AccountListで、指定したAPIトークンに紐づくアカウント一覧を取得

返り値はJson形式で、accountsに利用可能なアカウント一覧がリスト形式で格納されています。

APIが利用できるのはNYサーバーのアカウントのみであるため、ここで表示されるのはNYサーバーのアカウントのみです。

タグやMT4の情報も合わせて取得することができます。

AccountsSummary

AccountsSummaryでは、指定したアカウントIDの口座情報を取得することができます。



from oandapyV20 import API
from oandapyV20.endpoints import accounts

account_id = "アカウントIDを設定してください"
access_token = "APIトークンを設定してください"

# API用のクラスを定義
client = API(access_token=access_token, environment="practice")

r = accounts.AccountSummary(accountID=account_id)
client.request(r)


AccountsSummaryで、指定したアカウントIDの口座情報を取得

作成日時(createdTime)や口座名(alias)、口座残高(balance)、損益(pl)など、さまざまな情報を確認することができます。

marginUsedとmarginAvailableから、投資余力を確認することもできます。

自動売買などのプログラムを作成する際には、この情報に基づいてエントリーの判断を下すこともできます。

AccountsChanges

AccountChangesでは、特定のTransactionID以降のアカウントの変化分を取得することができます。



from oandapyV20 import API
from oandapyV20.endpoints import accounts

account_id = "アカウントIDを設定してください"
access_token = "APIトークンを設定してください"

# API用のクラスを定義
client = API(access_token=access_token, environment="practice")

params={
    "sinceTransactionID": "156"
}
r = accounts.AccountChanges(accountID=account_id, params=params)
client.request(r)


marginUsedとmarginAvailableから投資余力を確認

上記の結果は一部のみです。

返り値のJsonデータは次の3つから構成されています。

  • 1.changes
  • 2.state
  • 3.lastTransactionID

changesの中にはさまざまな変更データが格納されています。

  • 1.ordersCreated
  • 2.ordersCancelled
  • 3.ordersFilled
  • 4.ordersTriggered
  • 5.tradesOpened
  • 6.tradesReduced
  • 7.tradesClosed
  • 8.positions
  • 9.transactions

新規発注、約定された注文、キャンセルされた注文、トランザクション履歴などさまざまなデータを確認することができます。

また、stateには口座情報がまとめられています。

stateには口座情報がまとめられています

AccountInstruments

AccountInstrumentsでは、取引可能な通貨ペア一覧や各通貨の取引条件などの情報を取得することができます。

全通貨ペア取得

次のコードでは、取引可能な通貨ペア一覧を取得しています。



from oandapyV20 import API
from oandapyV20.endpoints import accounts

account_id = "アカウントIDを設定してください"
access_token = "APIトークンを設定してください"

# API用のクラスを定義
client = API(access_token=access_token, environment="practice")

r = accounts.AccountInstruments(accountID=account_id, params={})
client.request(r)


取引可能な通貨ペア一覧を取得

結果は、一部のみしか表示しておりませんが、通貨ペア一覧が取得できています。

各通貨ペアに対して、発注条件などの情報が記載されています。

特定の通貨ペアのみ取得

特定の通貨のみの情報を取得する場合には、paramsでinstrumentsを指定します。



from oandapyV20 import API
from oandapyV20.endpoints import accounts

account_id = "アカウントIDを設定してください"
access_token = "APIトークンを設定してください"

# API用のクラスを定義
client = API(access_token=access_token, environment="practice")

params={
    "instruments": "USD_JPY"
}
r = accounts.AccountInstruments(accountID=account_id, params=params)
client.request(r)


特定の通貨のみの情報を取得する場合には、paramsでinstrumentsを指定

上記のコードでは、ドル円のみの情報を取得しています。

このように、APIからアカウントに関する多くの情報にアクセスすることができます。

本記事の執筆者:TAT

               
本記事の執筆者:TAT 経歴
TAT2016年大学院卒業後、外資系IT企業に入社。
その後は金融情報→不動産テック→アドテク企業で、Pythonを用いたプロセスオートメーション、ダッシュボード開発、データ分析、AI開発などの業務に従事。
プログラミングや株式投資に関する情報を発信する「気ままなブログ」を運営中。

「REST API」をさらに学びたい方へオススメのコンテンツ

API

OANDA証券では、「REST API」に関する記事を豊富に提供しています。
「REST API」を利用するための手順、プログラミング言語の一つPythonを使い「REST API」を使用するまでの手順など、初心者の方向けコンテンツも豊富にあるので、APIを使った取引を始めてみたい方はぜひ参考にしてください。
ただしAPIを利用した取引は、OANDA証券の口座開設+いくつかの条件があります。
事前に確認を行い、ぜひOANDA証券の口座を開設し「REST API」を使った取引をご検討ください。


本ホームページに掲載されている事項は、投資判断の参考となる情報の提供を目的としたものであり、投資の勧誘を目的としたものではありません。投資方針、投資タイミング等は、ご自身の責任において判断してください。本サービスの情報に基づいて行った取引のいかなる損失についても、当社は一切の責を負いかねますのでご了承ください。また、当社は、当該情報の正確性および完全性を保証または約束するものでなく、今後、予告なしに内容を変更または廃止する場合があります。なお、当該情報の欠落・誤謬等につきましてもその責を負いかねますのでご了承ください。

この記事をシェアする

ホーム » APIの使い方 » Pythonを使い「REST API」からアカウント情報を取得する方法について解説