OANDA API を使ったシステムトレードの利用例について紹介

こんにちは、システムトレーダーのxinです。

 

私はFXのトレードにOANDA APIを利用しています。

仕事はデータサイエンティストをしていて、データ分析業務にPythonを使っているので、OANDA APIにはoandapyv20というライブラリを使って接続しています。

今回はそんなシステムトレードでの利用例を一部紹介します。

 

1.為替レートを取得する

もちろん為替レートの取得などは自在にできます。

為替レートの取得

写真はローソク足のデータを抽出した様子ですが、中段以降がデータを画面に表示している様子です。

ここでは列は6つあり、それぞれ{時刻、始値、高値、低値、終値、取引量}のデータを格納しています。

今回表示したものは、5分足のローソク足の情報で、通貨ペアはドル円のものになっています。ここら辺も設定を変更することである程度自由に変えることができます。

 

2.任意の時刻の為替レートをチャートで表示する

チャートを表示するにはPythonのグラフ描画ライブラリを使います。

グラフの描画はオプションがけっこうあるので、まだまだ使いこなせているとは全然言えない状態ですが、逐次必要に迫られて調べながら実装を進めています。

任意の時刻の為替レートを描画

こちらは8月近辺のトルコ円相場のチャートです。ローソク足は日足の表示です。
トルコリラは2018年の8月10日に大暴落を起こしました。ただ、その様子を色々なローソク足で検証したくても、FXの業者のツールが対応していないことはよくあります。

確認したい時刻がだいぶ昔のデータだったり、5分足のデータとなるとデータ量も大きくなるため、遡れる期間が制限されてしまったり。。

自分で過去の相場を再現して、実際にシステムトレードの性能を試したりできるのはAPIを利用していないとかなり難しいのでは、という印象ですね。

 

3.為替レートの時間足を変更して表示する

動画で使っている形式の図にはなりますが

時間足を変更したチャートの描画

こちらは5分足でチャートを描画しています。

チャートの上にテキストも重ねて、動画では売買状況がどんな感じなのかをわかりやすく表示しています。

時間足の変更では、他に

 ・秒足  {5秒足 / 10秒足 / 15秒足 / 30秒足}

 ・分足  {1分足 / 2分足 / 4分足 / 5分足 / 10分足 / 30分足}

 ・時間足 {1時間足 / 2時間足 / 3時間足 / 4時間足 / 6時間足 / 8時間足 / 12時間足}

 ・日足  {1日足}

 ・週足  {1週足}

 ・月足  {1月足}

などがあり、かなり幅広いオプションに対応している印象です。

私は基本的には日足で確認したり、5分足で確認したりがメインですが他の情報を取得したいときにも比較的簡単に変更ができたりします。

その他にも微妙な調整オプションも色々あるので、詳細気になる方は公式のドキュメントを確認してみてください。

 

4.任意の時刻のオーダーブック状況を表示する

私がシステムトレードでメインで使っているのがこちらのオーダーブックの状況になります。

サイトにも置いてありますが、こちらは更新は1時間おきですし、詳細な数値を確認したりはできません。

OANDA オーダー状況

 

APIを利用すれば好きな時間のオーダー状況を確認でき、しかもその注文量が全体の何%程度なのかまで数値で確認ができます。

任意の時刻のオーダーブックを表示

こちらは2018/03/07 10:20(UTC時刻)のときのポンドドル相場のオーダーブックの状況です。

データも載せてはいますが、初めて見た人はどう見ればいいかわからないと思います笑

このスナップショットを撮った時点で、レートは1.3872です。そして水色が伸びているところがあるのですが、1.3880のところで売り注文が大きく入っていることがわかります(0.5256)。

なので、例えば「1.3880を超える前に大量の売り注文に押し返されてレートは下がっていくだろう」などと予測を立てることができるのです。

 

実際この相場は、この後1.3889まで上昇しますが、その後一気に1.3852まで下がっていました。ショートを入れていれば勝てた可能性が高いと言えますね。

表示させる幅も調整が利くので、ここでは上下5つずつくらいでカットして表示しています。

 

5.OANDA APIを経由して注文を行う

OANDA APIを経由した注文

最後にOANDAへの注文の例も紹介します。

PythonAPIを経由してOANDAのシステムとつながっているので、もちろん注文を出させることや決済を行うことなども可能です。

APIでは取引通貨量も設定できるので、1通貨単位での取引が可能です。

スプレッドは広めですが、トレーリングストップなども設定できるので、裁量トレードではできないこともできるという点で攻めていくのが賢そうですね。

ちなみに、いつも検証している動画では、OANDAでの取引は想定していません。

APIを経由しなくても自動売買注文は可能だからです。スプレッドが狭いDMMを想定しており、スプレッドも0.3pipsで検証しています。

 

 

今回はシステムトレードで使用しているPythonコードのうち、OANDA APIの利用方法をメインに紹介してきました。Pythonの実行環境が整っている方は簡単に利用できると思うのでおすすめです。

このブログを読んでくれた方のうち、希望する方にはPythonのコードを共有しようと思うのですが、まだ自分以外が利用するには整備されていない部分も多いと思っています。

こちらに申込みのフォームを作成しました。先着何名まででα版のリリース的に共有、といった感じで、まずは数名の方に共有させてもらえたらなと思っています。

今回のプログラムのコードを希望する方で、あまり整備されていないところにも目を瞑っていただける方はこちらのフォームからぜひお申込みをお願いします。

シストレ:プログラムコード申込みフォーム

 

それではまた。