TradingViewのアラート(Webhook)機能を用いて自動売買を行う際のAPI選択候補
今回はオンラインチャートサービス TradingView のアラート(Webhook)機能を用いた自動売買に対応可能なAPIの種類、それらAPIを利用可能なブローカーについて調査・検討した結果について紹介
今回、個人的に選択候補としてあがったものは OANDA JAPAN(REST API), MT5(Pythonパッケージ), Dukascopy Japan, cTrader(いづれもFIX API)の4つ
ちなみに、TradingView の無料プランでも価格、テクニカルに対するアラートを各1件までなら利用(登録)することが可能だが、Webhook通知は有料プラン限定の機能となっている
また、このWebhookを活用して自動売買をするには多少なりともPython等のサーバーサイドプログラミング言語の知識がないとちょっと難しいと思われる点には注意。
参考記事: TradingView 有料プランで利用することにした決定的な理由
選択候補1️⃣ OANDA JAPAN の REST API
まず一番メジャーだと思われるのが OANDAのREST API
を利用した方法で、ネットで「TradingView, アラート, 自動売買」といったキーワードで検索すると、どの記事も OANDA REST API を使用している印象
FIX APIよりもWebAPIとして一般的なREST API
の方が個人的にも圧倒的に利用しやすいと感じているが、2021年3月以降 OANDAではAPIの利用条件が変更され、以前よりも利用する為のハードルは高くなってしまった
OANDA REST API の利用条件
- 会員ステータスがGold(=前月の取引量 往復50万USD 以上)
- プロコース(NYサーバー)の口座
- 口座残高 25万以上
参考ページ: OANDA API サービス
個人的に日足or週足ベースでの順張りトレード(1ポジション 0.1Lot以下)がメインということもあり、月間のトレード数量が往復50万USDを超えることはまずない為、条件1の会員ステータスGoldを維持する為には意図的にトレード数, ポジション数量を増やす必要があるので残念ながら今回はパス
月間の取引量が往復50万USD以上なら余裕という方も少なくないと思うので、そういった方はOANDA REST APIを利用するのが無難。というか一番情報量も多く、システムの構築も簡単だと思う
選択候補2️⃣ MT5 + Python用パッケージ MetaTrader5
MT5といえば、MT4と同じくEAを用いて自動売買を行うのが一般的だが、Python用MetaTraderパッケージ を利用することで、PythonからMT5を操作することが可能となっている
参考記事: MT5をPythonで操作してレート取得・注文する方法まとめ
このケースで個人的に感じるメリット&デメリットは以下
メリット
- MT5に対応さえしていれば、好きなブローカーで利用可能
- ドキュメントの内容も充実しており、コードも理解しやすい
デメリット
- Python用MetaTraderパッケージはwindows環境でしか使えない
- 同じwindows環境下でMT5, MT5を操作するPythonプログラムを実行する必要がある
- 常時起動しておく必要がある為、サーバーコストが発生する
私はMacをメインのPCとして使用していることもあり、Python用MetaTraderパッケージがMacのPythonでは使えないというのは個人的に大きなデメリット(仮想環境でWindowsも動かせるが、メモリの消費やショートカットキーが違う点などが煩わしい)
また、それなりに月額コストのかかるWindowsのレンタルサーバーを契約する or Windows環境の自宅PCを常時起動させておく必要がある為、サーバーコストが発生してしまう
Macユーザーとしては少し使い勝手が悪い点と運用コストの面で個人的に「ちょっとイマイチかなぁ」と感じたので現時点ではパス(今後もしかしたら利用する可能性はアリ)
ちなみに、Macユーザーの方は仮想化ソフト Parallels Desktop for Mac を利用することで、Mac上でwindowsを起動させ2つのOSを同時使用することが出来るので結構オススメ!
選択候補3️⃣ Dukascopy Japan Jforex + FIX API
dukascopy.jp FIX API のページに記載されているように、デューカスコピー・ジャパンではFIX APIの提供も行っている
しかし、FIX APIを利用するには口座残高100万円以上 + FIX API利用申込書, 印鑑登録証明書の郵送手続きが必要となっており、いろいろと面倒な印象を受けたのでパス
ちなみに、デューカスコピー・ジャパン Jforex に対する評価は個人的にかなり高い
参考記事: 【本音レビュー】デューカスコピー・ジャパンのECNプラットフォーム JForexは使える?
選択候補4️⃣ cTrader + FIX API
cTraderで自動売買というと、プログラミング言語c#
で cBot を作成して行うのが一般的だが、cTraderにおいても FIX API が利用可能で、こちらは OANDA や Dukascopy のように口座残高●万円以上といった条件は現状では設けられていおらず、条件なしでAPIの利用が可能となっている
このcTrader FIX APIを利用するケースで個人的に感じるメリット&デメリットは以下
メリット
- cTraderに対応しているブローカーであればOK
- FIX APIを利用する為に一定額以上の証拠金や、書類での申請などが不要
- cTrader = ECNなので透明性が高く、約定拒否や取引制限が発生しない
- MT4やMT5のように、常時起動の必要なし
デメリット
- cTraderに対応しているブローカーが少ない
- FIX APIを用いたトレード方法についての情報量が少ない(特に日本語の場合)
cTraderもデューカスコピー・ジャパン Jforexと同様、ノーディーリングデスク ECN方式で個人的に取引プラットフォームとしての使い勝手はMT4,MT5よりも間違いなく優秀だと思っている
しかし(以前はあったが)現在国内FX業者でcTraderに対応しているブローカーが存在せず、Tradeview, Axiory, FxPro といった海外ブローカーを利用するしかないのが現状
海外のブローカーを利用することに抵抗がある方はこの時点でパスとなるだろうが、個人的には問題なし(特に Tradeview, FxPro に関しては数多くある海外ブローカーの中でも安全性はトップクラスだと思っている)
参考記事: 海外FXを利用する上での落とし穴(危険性)について
これら候補から cTrader (FIX API) を選んだ理由
cTrader (FIX API)を選んだ理由
- 取引プラットフォームとしての使い勝手は Jforex と比べても互角レベルに良い
- cTrader (FIX API)用の Pythonパッケージ が存在し、テストして問題なかった
- MT4やMT5のように、常時起動しておく必要がない為
- cTraderのFIX APIはデモ口座であっても開設すればすぐに利用できる為
といった感じ。
ちなみに、cTrader (FIX API)用の Pythonパッケージは ejtraderCT というものを使用させてもらった
8=FIX.4.4|9=126|35=A|49=theBroker.12345|56=CSERVER|34=1|52=20170117- 08:03:04|57=TRADE|50=any_string|98=0|108=30|141=Y|553=12345|554=passw0rd!|10=131|
cTraderでは↑のような暗号文字列のように見えるバイト配列のメッセージを作成し、FIXサーバーとやり取りする必要があるが、Pythonパッケージ ejtraderCT
を利用することで、注文したい内容をこのようなバイト配列メッセージに変換して送受信することができる
ある程度Pythonの知識がある方は試してみると良いでしょう
さいごに
私は今回cTraderのFIX APIを選択したが、毎月 往復50万USD以上はトレードする + OANDA JAPAN プロコースの取引環境に不満はないという方であれば、やはりOANDAの REST APIを利用するのが簡単でオススメ!
ちなみにTradingView から Webhook通知を受け取って注文処理を行うPOSTサーバーに関しては、私は Pythonフレームワーク FastAPIで構築し、サーバーは無料の Deta Spaceを利用している
POSTサーバーの構築方法などについては、気が向いたら今後また別の記事にて紹介したいと思います。
続編記事①: 【コピペでOK】cTraderをFIX APIで操作する簡単なPythonコードの紹介と実行手順について補足&注意点を交えて解説