2021年7月26日追記
※2021年からAPI利用に制限がかかるようになりました、、、
現在、デモ口座は一定の基準を満たさなければ30日間しか使えません。
AIを使ってシステムトレードを始めたいけど、いきなり自分のお金を使うのはリスクが大きいし、なかなか一歩が踏み出せない。
そんな人にオススメなのがOANDAのデモ口座です。
OANDAのデモ口座は期間無制限で無料で利用できますし、デモ口座で動作確認したものを本番口座で使えるので大変便利なサービスです。
本記事ではOANDAのデモ口座の開設から実際にAPIを利用して注文をするところまでをやっていきます。
今回利用するもの
今回デモ口座でシストレをするにあたって以下のものを使います。
Pythonを使ってシストレをします。Pythonの使い方については本記事では特に説明をしません。Oandaのデモ口座とAccess Tokenの導入方法、注文方法を中心に本記事で紹介します。
環境構築
デモ口座でシストレをするために、必要なものを用意します。
デモ口座の開設
本番口座と違ってデモ口座はすぐに開設することができます。
必要なものはメールアドレスと電話番号です。
こちらからデモ口座の開設ページにいき、必須項目の入力をします。
完了したら、デモ口座のIDとパスワードが記載されたメールが登録したメールアドレスに届きます。メールを受信したらOANDAのデモ口座にログインします。
デモ口座にログインするにはoandaのページにいき、下に少しスクロールすると、
ログインボタンがあるので、こちらからログインします。
Account IDとAccess Tokenの取得
Account IDとAccess TokenはoandaのAPIに接続するときに使います。
Account IDはログイン後の画面中央、口座情報に記載されています。
(例、Account ID: XXX-XXX-XXXXXX-XXX)
Access Tokenも同様にログイン後の画面から取得できます。ログインすると、画面下半分はこんな感じになっています。
Access TokenはAPIアクセスの管理から進めていくと発行することができます。
oandapyV20のインストール
インストールはpip
でできます。
pip install oandapyV20
バージョン情報はログイン後の画面中央、口座情報のPrimaryの右に記載されています。(例、V20)
基本的な使い方
今回は注文から決済までを簡単に紹介します。
Oanda APIを利用するので、はじめにライブラリをインポートしてAPIを利用する準備をします。
ACCOUNT_ID
とACCESS_TOKEN
は自分のものを入れておいてください。
残高の確認
残高の情報は口座情報にあるので、口座情報を取得します。口座情報はoandapyV20.endpoints
のaccounts
から見ることができ、accounts
のAccountSummary()
を使うと口座情報の概要、AccountDetails()
だと口座の詳細な情報を取得することができます。
今回はAccountSummary()
を使って口座情報から残高の確認をしてみます。
コードは以下のようになります。
まずAccountSummary
のインポートをしています。
次に、AccountSummary()
にアカウントIDを渡して、AccountSummary
のインスタンスを生成しています。
生成したインスタンスをrequest()
に渡して口座情報を受け取ります。
口座情報の中身は辞書形式になっており、自分の口座情報を見るにはreq["account"]
とすれば中身を見ることができます。残高は口座情報のなかのbalance
に当たります。つまり、残高を見たければ以下のようにします。
出力した結果、現在の残高は300万円でした。
3000000.0000
この300万円を使って注文をします。
注文してみる
せっかく300万円もの大金(架空)が手元にあるので、このお金を使って注文してみます。
注文するにはorders
のOrderCreate()
を使います。
・サンプルコード1
OrderCreate
のインスタンスを生成したあとに、生成したインスタンスをrequest()
に渡して注文をしています。
OrderCreate
の引数のdata
で注文内容の設定をします。今回はドル/円を100通貨で成行(MARKET)注文しています。ちなみに、売りのときは-100
、指値注文をしたいときは以下のようにします。
・サンプルコード2
決済する
注文してみるのサンプルコード1でドル/円を100通貨で買い注文をしたので、買いポジションになっています。決済して利益(もしくは損失)を確定させます。
決済はpositions
のPositionClose
から行います。
上記コードは今までと同じようにインスタンスを生成するときに必要なデータを渡しています。生成したインスタンスをrequest()
に渡すことで決済を完了させることができます。
残高の確認
決済をして買った通貨を売り払ったので、利益(損失)を確認してみます。
残高の確認はさきほど同じようにAccountSummary()
を使いました。
結果は以下のようになりました。
2999999.9000
減ってますね。
決済するタイミングは適当だったのでしょうがないです。
おわりに
とまぁ、ここまでOANDAのデモ口座を開設して注文から決済までをやってみました。別に損失を出してもリアルの自分のお金が減るわけではないので、安心して取引の練習ができますね。
まだまだAPIの利用方法やFX取引について理解していないので、少しずつ理解を深めていずれは本番口座でAIを自動売買システムを構築します。