FX API(OANDA v20)とPythonを使って口座のポジション一覧などを取得する操作方法のまとめ(ポジション編)

2018年6月27日

使っている取引会社はどこ?
仮想通貨用(2019年5月からAPI取引対応) → GMOコイン
Python API用(FX APIはここしかない) → OANDA ジャパン

【記事要約】
FX APIシリーズとして、OANDA API v20とPythonを使って自分の口座のポジションのリストの取得、特定ポジションの詳細確認、ポジション決済をAPI経由で操作する方法のまとめ

こんにちは、新米データサイエンティスト(@algon_fx)です。今日は本業は休みでしたので、ジムで10km走って、そのあとは、現在参加しているデータコンペのモデルを作っていました。

コンペって楽しいですよね。ただ、デメリットがありまして、コンペに参加してしまうと、それ以外のことが手がつかなくなります(笑)。朝起きてから寝るまで、取り憑かれたようにコンペに夢中になってしまい、本業の作業中すらコンペ用の時間がかかる処理を回してしまうという。

少し、話がずれましたが、今日はFX APIシリーズとして、基本的なポジションの管理/操作をAPI経由実行する方法をまとめました。

【人気記事】

私の機械学習の開発環境&トレード環境を解説

APIへ接続しよう

まずはおきまりのAPIへの接続です。私はOANDA API v20を使っていますが、今現在(2018年5月時点)で、日本オアンダでは対応されています。日本でのOANDAではv1のみしか使えないです。口座開設やAPIトークンの取得について、詳しくは「OANDA API v20を使ってみる(デモ口座開設編)」をご参照ください。

では、APIへ接続しましょう。今回は口座のポジション操作ですので、endpoints.positionsをインポートします。

下記、accountID(口座ID)とaccess_tokenはダミーです。ご自身の情報を入れてください。

これで準備が整いましたので、最後にAPIへ接続をしましょう。

これでOKです。

口座のポジションのリストを取得する

まずは、現在、口座内で現在保有してるポジションの全てを一覧で取得してみましょう。私の口座には現在2つのトレード注文がオープンとして建っています。

両方ともドル円の買い注文ですので、ポジションとしては下記の通りです。

では、これらのポジションをAPIを使ってPythonで取得してみましょう。

大丈夫そうですね。買い(long)の取引量(units)が19000通貨となっており、評価損益(unrealizedPL)が48.80ドルとなっています。

このように口座のポジション詳細が一覧で取得可能です。シストレをする際は、定期的に自己口座のポジションを評価する必要があるので、必須の操作かと。

条件(通貨 / 注文の状態)を指定してポジション取得

さて、口座のポジション一覧は上記の操作で行えますが、実際のシステムに組み込む時は、「特定の通貨別」や「オープン注文のみ」のポジション情報が必要ですよね。

まずは、「ドル円のポジション」をAPIで取得してみましょう。難しいことはなく、単純にPositionDetails()instrument(通貨)の情報を投げるだけです。

現在、注文がドル円しか建っていないので…上記と同じ結果が帰ってきて判りづらいですが…このように通貨を指定することも可能です。参考までにですが、ポジションに含まれるない通貨ペアを投げると、下記のエラーがresponseとして帰ってききます。

{“errorMessage”:”Invalid value specified for ‘instrument'”}

また、オープンのトレードのみのポジションは、OpenPositions()を使って取得することも可能です。

ポジションを決済する

現在のポジションを決済するには、PositionClose()を使うことで実行が可能です。では、今回は「ドル円の買い注文の全て」のポジションを決済するという操作を行ってみましょう。

まずはAPIへのリクエス用のdataに、longUnitsALLと指定してあげましょう。

参考までにですが、売り注文の場合はshortUnitsに決済したい通貨量を指定します。また、買いも売りもデフォルトは「ALL」となっているので、注意が必要です。

では、こちらのdataを使って、さらにinstrumentにドル円を指定して、APIへ投げてみましょう。

あれ?APIから戻ってきたresponseがORDER_CANCELになっている…。あぁ、今日は日曜日でマーケットが閉まっていましたね(笑)ちゃんとAPIのreasonにもMARKET_HALTED(マーケットが閉じてる)と帰ってきています。

まとめと次への課題

いかがでしたでしょうか?今回はFX APIシリーズとして、OANDA API v20とPythonを使って自分の口座のポジションのリストの取得、特定ポジションの詳細確認、ポジション決済をAPI経由で操作する方法のまとめました。

実際のPythonを使ってのトレードシステムでは、定期的にポジション情報を取得して、ポートフォリオの管理をしなくてはいけません。なので、ポジション情報の取得は必須かと思います。

ブログ読んでいただきありがとうございます!Twitterでも色々と発信しているので、是非フォローお願いします!

使っているFX会社はどこ?
仮想通貨用(2019年5月からAPI取引対応) → GMOコイン
Python API用(FX APIはここしかない) → OANDA ジャパン

2018年6月27日FX API

Posted by algon