【OANDA】デモ口座を開設して取引してみる

 

2021年7月26日追記

※2021年からAPI利用に制限がかかるようになりました、、、

 現在、デモ口座は一定の基準を満たさなければ30日間しか使えません。

OANDA Japan 無料デモ口座の開設

 

AIを使ってシステムトレードを始めたいけど、いきなり自分のお金を使うのはリスクが大きいし、なかなか一歩が踏み出せない。

そんな人にオススメなのがOANDAのデモ口座です。

OANDAのデモ口座は期間無制限で無料で利用できますし、デモ口座で動作確認したものを本番口座で使えるので大変便利なサービスです。

本記事ではOANDAのデモ口座の開設から実際にAPIを利用して注文をするところまでをやっていきます。

 

 

今回利用するもの

今回デモ口座でシストレをするにあたって以下のものを使います。

  • python 3.6+
  • Oandaのデモ口座
  • Oanda APIを利用するためのAccess Token

Pythonを使ってシストレをします。Pythonの使い方については本記事では特に説明をしません。Oandaのデモ口座とAccess Tokenの導入方法、注文方法を中心に本記事で紹介します。

環境構築

デモ口座でシストレをするために、必要なものを用意します。

デモ口座の開設

本番口座と違ってデモ口座はすぐに開設することができます。

必要なものはメールアドレス電話番号です。

こちらからデモ口座の開設ページにいき、必須項目の入力をします。

完了したら、デモ口座のIDパスワードが記載されたメールが登録したメールアドレスに届きます。メールを受信したらOANDAのデモ口座にログインします。

デモ口座にログインするにはoandaのページにいき、下に少しスクロールすると、

f:id:pytry3g:20190526100810p:plain

ログインボタンがあるので、こちらからログインします。

Account IDとAccess Tokenの取得

Account IDとAccess TokenはoandaのAPIに接続するときに使います。

Account IDはログイン後の画面中央、口座情報に記載されています。

(例、Account ID: XXX-XXX-XXXXXX-XXX)

Access Tokenも同様にログイン後の画面から取得できます。ログインすると、画面下半分はこんな感じになっています。

f:id:pytry3g:20190526101355p:plain

Access TokenはAPIアクセスの管理から進めていくと発行することができます。

oandapyV20のインストール

今回使用するAPIのバージョンはv20です。

インストールはpipでできます。

pip install oandapyV20

バージョン情報はログイン後の画面中央、口座情報のPrimaryの右に記載されています。(例、V20

基本的な使い方

今回は注文から決済までを簡単に紹介します。

Oanda APIを利用するので、はじめにライブラリをインポートしてAPIを利用する準備をします。

from oandapyV20 import API

ACCOUNT_ID = "ACCOUNT_ID"
ACCESS_TOKEN = "ACCESS_TOKEN"

api = API(access_token=ACCESS_TOKEN)

ACCOUNT_IDACCESS_TOKENは自分のものを入れておいてください。

残高の確認

残高の情報は口座情報にあるので、口座情報を取得します。口座情報はoandapyV20.endpointsaccountsから見ることができ、accountsAccountSummary()を使うと口座情報の概要、AccountDetails()だと口座の詳細な情報を取得することができます。

今回はAccountSummary()を使って口座情報から残高の確認をしてみます。

コードは以下のようになります。

from oandapyV20.endpoints.accounts import AccountSummary

ret = AccountSummary(ACCOUNT_ID)
req = api.request(ret)

まずAccountSummaryのインポートをしています。

次に、AccountSummary()にアカウントIDを渡して、AccountSummaryインスタンスを生成しています。

生成したインスタンスrequest()に渡して口座情報を受け取ります。

口座情報の中身は辞書形式になっており、自分の口座情報を見るにはreq["account"]とすれば中身を見ることができます。残高は口座情報のなかのbalanceに当たります。つまり、残高を見たければ以下のようにします。

print(req["account"]["balance"])

出力した結果、現在の残高は300万円でした。

3000000.0000

この300万円を使って注文をします。

注文してみる

せっかく300万円もの大金(架空)が手元にあるので、このお金を使って注文してみます。

注文するにはordersOrderCreate()を使います。

・サンプルコード1

from oandapyV20.endpoints.orders import OrderCreate

data = {
    "order": {
        "instrument": "USD_JPY",
        "units": "+100",
        "type": "MARKET",
        "positionFill": "DEFAULT"
    }
}

ret = OrderCreate(accountID=ACCOUNT_ID, data=data)
req = api.request(ret)

OrderCreateインスタンスを生成したあとに、生成したインスタンスrequest()に渡して注文をしています。

OrderCreateの引数のdataで注文内容の設定をします。今回はドル/円を100通貨で成行(MARKET)注文しています。ちなみに、売りのときは-100指値注文をしたいときは以下のようにします。

・サンプルコード2

from oandapyV20.endpoints.orders import OrderCreate

data = {
    "order": {
        "price": "108.503",
        "instrument": "USD_JPY",
        "units": "-100",
        "type": "LIMIT",
        "positionFill": "DEFAULT"
    }
}

ret = OrderCreate(accountID=ACCOUNT_ID, data=data)
req = api.request(ret)

決済する

注文してみるのサンプルコード1でドル/円を100通貨で買い注文をしたので、買いポジションになっています。決済して利益(もしくは損失)を確定させます。

決済はpositionsPositionCloseから行います。

from oandapyV20.endpoints.positions import PositionClose
from oandapyV20.exceptions import V20Error

data = {"longUnits": "ALL"}
ret = PositionClose(
    accountID=ACCOUNT_ID, instrument="USD_JPY", data=data
)
try:
    req = api.request(ret)
except V20Error as e:
    print(e)

上記コードは今までと同じようにインスタンスを生成するときに必要なデータを渡しています。生成したインスタンスrequest()に渡すことで決済を完了させることができます。

残高の確認

決済をして買った通貨を売り払ったので、利益(損失)を確認してみます。

残高の確認はさきほど同じようにAccountSummary()を使いました。

from oandapyV20.endpoints.accounts import AccountSummary

ret = AccountSummary(ACCOUNT_ID)
req = api.request(ret)
print(req["account"]["balance"])

結果は以下のようになりました。

2999999.9000

減ってますね。

決済するタイミングは適当だったのでしょうがないです。

おわりに

とまぁ、ここまでOANDAのデモ口座を開設して注文から決済までをやってみました。別に損失を出してもリアルの自分のお金が減るわけではないので、安心して取引の練習ができますね。

まだまだAPIの利用方法やFX取引について理解していないので、少しずつ理解を深めていずれは本番口座でAIを自動売買システムを構築します。