FX API(OANDA v20)で保持中の注文一覧や詳細、一部決済などをPythonでやってみる(トレード編)

2018年6月27日

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

こんばんは、新米データサイエンティスト(@algon_fx)です。気づいたらゴールデンウィークもあっという間に終わってしまいました。FX予測機械学習で定番のLSTMやら、テクニカル指標の一般的なシストレストラテジーの検証をXGBoostなどで行ってみたりしました。

さて、今日はFX APIシリーズとして、Oanda API v20を使ってトレードを管理する基本的な操作方法をまとめます。公式ドキュメントはかなり親切にしっかりしているんですが、エラーなどの詳細が漏れていたりと少し手間がかかりました。

【人気記事】

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

まずは適当に複数の買い注文を建てます

ちなみに前回のAPIシリーズでは、API経由でオーダーの建て方をやりましたので、そちらを参考にしてみて下さい。では、早速、APIに接続をしてみましょう。

上記のAPIトークンと口座IDは各自のものに変更してください。最後にoandapyV20経由でapiに接続をします。

では、まずは適当に注文を建てましょう。とりあえずドル円を成り行き注文で1万通貨買いの注文を2つ入れます。

次に下のコードでAPI経由でオーダーを建てます。こちらですが、少し時間をあけて2回実行すると、2つの異なる注文が入ります。

ではOANDAの管理画面で注文が入っているか、念のため確認をしましょう。

少し見辛いですが、ドル円で買いの注文が1万通貨ごとに2つ建っているのが確認できます。少し分かりづらいですが、管理画面上の「チケットID」がAPI上の「Order ID」となっています。

API経由で講座のオープントレードを全て取得

上記の通り、現在、私の口座には2つのトレードが入っています。まずは、API経由でこのオープントレードの詳細を取得してみましょう。

コードは非常に単純で、 trades.OpenTrades() の関数へ、口座IDを投げると、オープントレードの一覧の取得が可能です。

管理画面で確認した通り、先ほど適当に入れた買い注文のトレード詳細が戻ってきているのが確認できます。idが5149のトレードですね。

initialMarginRequired=これはトレードが作成された時点の必要なマージン
MarginUsed=現時点でのマージン
realizedPL=トレードの一部が決済された際の利益/損のトータル
unrealizedPL=トレードの未決済状態の利益/損のトータル

今後FX機械学習でAPI経由でトレードを管理する場合は、各トレードのごとの利益/損を定期的に取得する必要が出てきそうなので、これは便利な機能ですね。

トレードIDを指定して詳細を取得

次は、特定のトレードID(管理画面上はチケットIDと呼ばれる)の詳細をAPI経由で取得して見ましょう。上で使った OpenTrades() は、口座全体のリスク管理やらオオートフォリオで使えそうですが、それぞれ個別のトレードの詳細情報も追っておきたいところですよね。

トレードIDを指定して詳細の取得ですが、trades.TradeDetails()で可能です。

今回は先ほど適当に作ったトレードID=51の詳細を取得しました。返ってくる内容は、 OpenTrades() と同様なんですね。

特定のトレードの一部のみ決済する

さて、トレード編の基本的な操作として、すでに注文済みのトレードに対して、一部のみを決済したいという操作の必要性も出てくるかと思います。

ってことで、やってみましょう。オープントレード(取引中の注文)の一部を決済するには、 trades.TradeClose() を使います。トレードID、決済注文の詳細を渡してあげるだけです。

では、次はドル円1万通貨買いで入れたトレードID49に対して、1000通貨のみ決済をする操作をAPIで行いましょう。

少し見づらいですが、しっかり1万通貨の成行注文で建てたトレードID49ですが、上記の通り9000通貨と1000通貨のみ決済が行われているのが確認できます。

参考までにですが、トレードID49のトレード詳細をAPIから引っ張ってみると・・・

上記の通り、一部決済をするまでは「0」として戻ってきていた unrealizedPL ですが、1000通貨のみ決済を行ったので今回は「0.1925」と決済された分の損益が戻ってきています。

まとめと次の課題へ

さて、今回はFX APIシリーズとして、OANDA v20で口座のオープントレードの一覧取得や特定トレードの詳細、さらに取引中のトレードの一部決済などをAPIで行いました。

トレードも含めて、まだまだ色々と操作して検証しなくてはいけない部分が残っていますので、引き続きFX APIシリーズとして継続してまとめていきます。

以上です!勉強にお付き合い頂いてありがとうございます!コメントやTwitterで絡んでもらえると嬉しいです!

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

2018年6月27日FX API

Posted by algon