MT4/MT5/APIでビットコインアービトラージするためのツール無料ダウンロード
公開日:
:
MT4/MT5の仮想通貨自動売買
目次/もくじ
ビットコインアービトラージと言えば仮想通貨取引所間のAPIを使ったアービトラージが定番ですが、昨今はAPIの取引制限が強化されたり、APIのリクエスト回数が制限されたりで、なかなかアービトラージのチャンスが減ってしまいました。
しかし、現物の仮想通貨を使わずともCFDでもアービトラージは可能です。ということで、MT4/MT5/APIでビットコインアービトラージをする方法について考察し、ツールを開発しました。
仮想通貨(BTC)がトレードできるMetaTrader対応業者を探す
まず、何はともあれビットコインおよび周辺のアルトコインをトレードできるMT4/MT5対応の業者を探さないことには始まりません。
ビットコインをトレードできる業者の詳細は
仮想通貨/ビットコイン取引トレードできるMT4/MT5対応業者一覧
にありますが、ざっくり整理すると、
- MT4対応:ビッグボス、TradersTrust、TradeView、HotForex、FXOPEN、
xtb、FXDD、LiteForex - MT5対応:TradeView、HotForex、FXDD、
(CryptoGT)、LiteForex、XM、Coinexx, bitForex
こんな具合です。
どの業者も2017年以降に徐々に採用しだしてきているので、今後はFX会社でも仮想通貨対応がデフォルトになると考えられます。
- ※CryptoGTはマーケットデプス採用なので、上手くいかない可能性が高いです。
- ※XMはMT5でのみ仮想通貨チャートに対応していましたが、また、撤退しました。
- BTCUSDのスプレッドはLiteForex>FXOPEN>TradersTrust>bigboss
仮想通貨トレードは口座タイプが限定的であることが多いので、口座開設前に仮想通貨/ビットコインがトレードできる口座であることを十分に確認する必要があります。
各業者がビットコインにどれくらいレート差があるのかを調べる
次に、それぞれの業者にビットコインレートにどの程度のレート差(さや)があるのかを調べる必要があります。アナログな方法では、各MT4/MT5を立ち上げてチャートを一覧表示し、目視で調べるという原始的な方法もありますが、すべてのレートを一か所に集めて比較した方が視認性が上がります。
これは各MT4/MT5対応業者のそれぞれのレートを1枚のチャートに集約させたものです。FX版をそのまま流用しました。
各FX会社のMT4/MT5にセットして使います。MT4とMT5にクロスプラットフォーム対応しているので、MT4のチャートデータをMT5に表示させたり、MT5のチャートデータをMT4に表示させることができます。
使い方は
- 各FX会社のMT4/MT5を立ち上げる
- MQL4/Experts あるいはMQL5/ExpertsにEAを保存する
- それぞれのMT4/MT5で同じ通貨ペア(BTCUSD)チャートを開く
- 開いた通貨ペアチャートにこのEAをセットする
だけです。
パラメータ
- Sleep_in_milsec: 処理をする時間間隔(ミリセカンド)
- TakePhoto_when_ThisGap_in_Point: このpoint以上の差が開くブローカー2社があった場合にスクリーンショットを取ります。
スクリーンショットは、MT4の場合はMQL4/Filesに、MT5の場合はMQL5/Filesにレート差が開いた瞬間に保存されます。
これでチャートに張り付いて監視していなくても、”どのFX業者のレートが早くて、どのFX業者のレートが遅いのか”を調査・分析することが可能です。また、最大でどの程度のレート差が発生していたのかも”事後確認”することができます。
最大10社まで表示させることが可能です。(その関係でインジケーターバッファは使わずにオブジェクトで表示しています。)
このツールは下記からダウンロード可能です。
アービトラージ業者分析インジケーター(EA)MT4版ダウンロード
アービトラージ業者分析インジケーター(EA)MT5版ダウンロード
- 2020/2/21 インジケーターからEAに変更。(インジケーターだと動作が安定しないため)
- チャート表示を改良。
例としてPOLONIEXのAPIからMT4にビットコインレートを流す
ポロニエックスのAPIからレートを引っ張てっきて、MT4にデータを流す方法について紹介します。
背景
今までMQLしか触ったことがない人にとって、jSONだのHASHだのが出てくるAPIの処理は荷が重かったりします。
そこで今回はちょっと指向を変えたアービトラージを行います。
アービトラージと一口に言っても、信用や現物などいろいろあるわけで、
「本来はまったく同じ値になるはずなのに、実際にはズレが生じるもの」
はすべてアービトラージの対象になるわけです。
仮想通貨取引所のビットコインレートとMT4業者のビットコインレートもそのパターンです。
しかし、今回仮想通貨取引所同志のアービトラージと大きく違うのは、
”レート差が常に広がっている可能性がある”という点です。
とくにMT4業者は対USDで表示することがあるので、
その点も注意です。
仮想通貨FXトレードができるおすすめ海外FX会社一覧(MT4)
ポロニエックスのAPIを使う
さて、
MQL特化のプログラマーの人にとってはいろいろと大変なAPI処理ですが、
レートを取得するだけなら特定のURLにアクセスすればいいだけなので、かんたんです。
具体的には、
https://poloniex.com/public?command=returnOrderBook¤cyPair=USDT_BTC&depth=1
これで現在レートが取れます。
1 |
{"asks":[["8294.24999991",0.00162756]],"bids":[["8292.99999995",0.00096491]],"isFrozen":"0","seq":158256503} |
WebRequestを使う
WebRequestは2014年のbuild610から実装されたMQL4の関数で、主にWEBアクセス全般を担っている関数です。
WebRequestの処理ですが、今回はGETでアクセスすればいいだけなので
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
string URL = "https://poloniex.com/public?command=returnOrderBook¤cyPair=USDT_BTC&depth=1"; string GetWebData() { int WebR; int timeout = 5000; string cookie = NULL,headers; char post[],ReceivedData[]; string str; StringToCharArray( str, post ); WebR = WebRequest( "GET", URL, cookie, NULL, timeout, post, 0, ReceivedData, headers ); if(!WebR) Print("Web request failed"); string ReceivedText = CharArrayToString(ReceivedData); return(ReceivedText); } |
この関数でURLのリクエストはOKです。よく分からなければコピペすればOKです。
MT4側でhttps://poloniex.comへのアクセスを許可するのを忘れないでください。
取得したデータを整える
あとはこの形式をデコードしても良いのですが、
今回はなるべくAPIやphpの知識を使わずに実装したいので、
mql側でスクレイピング(いらない文字を削除)します。
mqlの文字列関数でできることは、
・特定の文字列を入れ替える
・特定の文字列がある場所を探す
です。
この二つの操作ができれば十分取り出せます。
まずaskの後ろに[[“の文字列があるので、
この文字列がある場所を探します。
1 2 3 |
string str="{"asks":[["8294.24999991",0.00162756]],"bids":[["8292.99999995",0.00096491]],"isFrozen":"0","seq":158256503}"; int WhereAskIs = StringFind(str,"[["",0); |
次に、レートはこの文字列の出現の3文字目に現れるので、
3足します。
1 |
WhereAskIs = WhereAskIs + 3; |
そして、適当に8文字ほど取り出せば完了です。
1 2 |
string AskRate = StringSubstr(str,WhereAskIs,8); Print("ask"+AskRate); |
bidも同じように取り出せます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
string str="{"asks":[["8294.24999991",0.00162756]],"bids":[["8292.99999995",0.00096491]],"isFrozen":"0","seq":158256503}"; int WhereAskIs = StringFind(str,"[["",0); WhereAskIs = WhereAskIs + 3; string AskRate = StringSubstr(str,WhereAskIs,8); Print("ask"+AskRate); string str2 = StringSubstr(str,WhereAskIs+3); Print(str2); int WhereBidIs = StringFind(str2,"[["",0); WhereBidIs = WhereBidIs + 3; string BidRate = StringSubstr(str2,WhereBidIs,8); Print("bid"+BidRate); |
MT4のビットコインチャートでPoloniexのレートを比較
これでMT4のビットコインチャート上にセットして、
レート差を確認します。
上から順に、
取引所のASK
取引所のBID
MT4のASK
MT4のBID
です。
やっぱりかなりズレがありますね。
(MT4のスプレッドでかすぎやしませんか。)
二つのビットコインレートをさや取りするには
あとは戦略ですが、その前に
このレート差がどのような動きをするのか検証する必要があります。
1.このレート差はどれくらいの時間、離れているのか
2.レート差が縮まるときはあるのか
3.全く異なる動きをすることはあるのか(長いひげなど)
これによって、一般的なアービトラージが良いのか、
それともストップ狩り返し的な手法が良いのかは変わってきます。
そこら辺は読者さんにお任せします。
何か気づいた点があれば教えてください。
仮想通貨FXトレードができるおすすめ海外FX会社一覧(MT4)
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ void OnTick() { //--- string str=GetWebData(); int WhereAskIs = StringFind(str,"[["",0); WhereAskIs = WhereAskIs + 3; string AskRate = StringSubstr(str,WhereAskIs,8); Print("ask"+AskRate); string str2 = StringSubstr(str,WhereAskIs+3); int WhereBidIs = StringFind(str2,"[["",0); WhereBidIs = WhereBidIs + 3; string BidRate = StringSubstr(str2,WhereBidIs,8); Print("bid"+BidRate); double AskRate_ = StringToDouble(AskRate); if( ObjectFind(ChartID(),"ASK") != -1 ) { ObjectCreate(ChartID(),"ASK",OBJ_HLINE,0,0,AskRate_); ObjectSet("ASK",OBJPROP_COLOR,clrRed); } ObjectSetDouble(ChartID(),"ASK",OBJPROP_PRICE,AskRate_); double BidRate_ = StringToDouble(BidRate); if( ObjectFind(ChartID(),"ASK") != -1 ) { ObjectCreate(ChartID(),"BID",OBJ_HLINE,0,0,BidRate_); ObjectSet("BID",OBJPROP_COLOR,clrBlue); } ObjectSetDouble(ChartID(),"BID",OBJPROP_PRICE,BidRate_); //--- } //+------------------------------------------------------------------+ string URL = "https://poloniex.com/public?command=returnOrderBook¤cyPair=USDT_BTC&depth=1"; string GetWebData() { int WebR; int timeout = 5000; string cookie = NULL,headers; char post[],ReceivedData[]; string str; StringToCharArray( str, post ); WebR = WebRequest( "GET", URL, cookie, NULL, timeout, post, 0, ReceivedData, headers ); if(!WebR) Print("Web request failed"); string ReceivedText = CharArrayToString(ReceivedData); return(ReceivedText); } |
各MT5業者がどこの仮想通貨取引所からレートを引っ張ってきているのか調べる(おまけ)
FXの場合、レートの大元は世界の超大手銀行がリクイディティプロバイダとして提示しているレートなので、そこら辺のリテールトレーダーがアクセスできるような代物ではありませんが、仮想通貨の場合、取引の実体は銀行ではなく仮想通貨取引所にあります。
つまり、末端のトレーダーでも取引上が多い仮想通貨取引所のAPIを使ってレートを取得すれば、先行指標となるレートを取得することが可能です。
そこでBTCUSD,BTCUSDTの取り扱いがあり、Public APIを提供している仮想通貨取引所の各レートを同一のBTCUSDチャートに表示するインジケーター(EA)を作りました。(CoinCheck, ZAIFはBTCJPYはありますが、BTCUSDはありません。)
すべて表示させると非常に見ずらい&遅くなるので、1~2社ずつ表示させて調べるのが良いと思います。点線がAsk,Bidラインで実線がAskとBidの平均値(Median)です。
HatioはCryptoGTのことです。(親会社の名前です。)ビットコインの取引量で考えるとBinanceが圧倒的なので、Binanceだけを見れば良さそうですが、どうやら大陸ごとにまとまったレート群が存在するようです。
また、このインジケーター(EA)を利用するにあたり、API接続が必要になるので、「エキスパートアドバイザー」タブで各社のAPIドメインを許可する必要があります。
仮想通貨取引所APIのレート比較インジケーター(EA)ダウンロード
※bitFlyerはAPIのレスポンスが非常に遅く、フリーズする可能性が高いです。
※bitMEXはAPIのアクセス頻度制限が非常に厳しいので、2秒間隔未満だと0になります。
BTCUSD,BTCJPY,ETHUSD,ETHJPY…どれがアービトラージに良いのか調べる
次に、数ある仮想通貨ペアの中からどの通貨ペアがもっともアービトラージに適しているのかを調べる必要があります。具体的には、「BTCUSDとBTCJPYがあり、BTCJPYの方がレート差が発生しやすかったら、BTCJPYでアービトラージした方が良い」という判断をするための分析工程です。
これも目視で分析するよりもプログラムを組んだ方が正確なので、ツールを開発しました。
TTCM(トレーダーズトラスト) vs FXOPEN BTCUSD~XRPUSD レート差 一覧 2020/2/15
ターゲットとなる2社にこのインジケーターをセットすると、
- 現在のレート差(ポイント単位)
- 最大レート差(EAをセットしてからカウント)
- 最小レート差(EAをセットしてからカウント)
- 現在のA社のレート
- 現在のB社のレート
- 現在のスプレッド
- 最大レート差 - 最小レート差 - スプレッド
が通貨ペアごとに表示されます。
レート差はポイント単位なので、たとえば「BTCJPYの場合は、最大で1.3pipsのレート差が発生し、最小になるときはレート差が0になる。」と言うことが分かります。
設定した通貨ペアがどちらかのFX業者にない場合は、空欄か0が表示されます。
最大レート差と最小レート差の差が大きければ大きいほどアービトラージのチャンスがあるということを意味します。
ただし、それだけではスプレッドによる手数料で負ける可能性あります。
「最大レート差 - 最小レート差 - スプレッド」を加味すると、レート差の変位が激しく、かつ、スプレッドも狭い通貨ペアを見つけることができます。
アービトラージ分析専用インジケーター(EA)の使い方
- このインジケーターをターゲットとなる2つのFX会社の{MQL4orMQL5}/Expertsにセットする。
- 任意の通貨ペアチャートを開き、片方はData_Receiver、片方はData_Senderになるようにパラメータを設定する。
- 調査通貨ペアが気配値表示されるようにする。
アービトラージ分析専用インジケーター(EA)のパラメータ
- AnalyzerMode:モードにはData_ReceiverとData_Senderがあります。Data_Senderにした場合、そのMT5のデータがData_ReceiverのMT5に送信されます。逆に、Data_Receiverにした場合、先ほどの画像のようにチャート上にレート差データが表示されます。
- PairName1~PairName21:同時に21通貨ペアまで検査することができます。Data_Sender側でのみ有効になります。Data_Receiver側はData_Sender側のパラメータに入力された通貨ペアを自動取得します。通貨ペア名を変えればもっとマイナーな通貨ペアも検査できます。FX会社のシンボルにUSDJPY_mのようにサフィックスがついている場合でも、サフィックスなしで入力してください。
- Td_width:チャート上に表示される表のセルの横幅です。レイアウトが崩れたら変更してください。Data_Receiver側でのみ有効です。
- Td_height:チャート上に表示される表のセルの縦幅です。レイアウトが崩れたら変更してください。Data_Receiver側でのみ有効です。
- TextColor:チャート上に表示される表の色です。Data_Receiver側でのみ有効です。
- CalcInterval_in_milisec:レートデータを更新するミリ秒間隔です。
稀にMaxGapが表示されないことがありますが、その場合は時間枠を切り替えてEAを初期化すれば直ります。
アービトラージ通貨分析専用MT4EAのダウンロード(.ex4)
アービトラージ通貨分析専用MT5EAのダウンロード(.ex5)
このEAは特に制限ありません。(パスコード必要ありません。)
- 2020/2/15 仮想通貨ペアを設定した際の表示バグを修正
- 2020/2/18 ティック到達時以外でもチャート表示が更新されるように修正。稼働時間表示を追加
- 2020/2/21 EAからインジケーターに変更。MT4<->MT5のクロスプラットフォームに対応。
- 2020/2/21 インジケーターだと動作が安定しないため、インジケーターからEA形式に戻す。(インジケーターだとループ文による一定間隔の強制演算ができない)
ビッグボス vs TradersTrust 仮想通貨ペア さや 一覧 2020/2/15
(ビッグボス) vs FXOPEN BTCUSD~EOSUSD レート差 一覧 2020/2/15
ビッグボスvsFXOPEN間の場合、BTCUSDでのみ可能性があります。(最大レート差3052.1pips, 最小レート差2217.4pips, スプレッド691.4pips)
TTCM(トレーダーズトラスト) vs FXOPEN BTCUSD~XRPUSD レート差 一覧 2020/2/15
トレーダーズトラストとFXOPENの場合、BTCUSD, BTCEUR, ETHEUR, LTCUSDにアービトラージの可能性があります。
LiteForex vs FXOPEN 2020/2/15 一晩寝かせた図
LiteForexを噛ませて一晩寝かせると、結構アービトラージのチャンスがゴロゴロしているのが分かります。特にBTCUSDでは大きなさやが発生したり、レート差が縮まったりするため、絶好のチャンスだと思います。
※LiteForexは日本居住者の新規口座開設は受け付けていません。
MT4で実際に仮想通貨アービトラージをする
業者と通貨ペアが決定したら実際にアービトラージをします。こればっかりはスピード勝負なので手動・裁量でどうにかなる領域ではありません。
MT4アービトラージ仕様
- エントリー、決済はとりあえず成行
- 狙った2社に絞ってアービトラージ
- OOpips広がったらそれぞれで両建てエントリー、その後、xxpipsに縮まったら決済
- ただし、スプレッドが△△以上の時はエントリーしない
というシンプルな仕様にしました。
狙った2社のMT4の同じ通貨ペアにこのEAをセットしてください。
MT4アービトラージパラメータ
- Lot:トレードロットです。
- EntryGap_in_point:2社のレートがこの数値以上の場合に儲かる方向にエントリーします。(point)
- ExitGap_in_point:2社のレートがこの数値未満の場合に決済します。(point)
- MaxPosition:最大保有ポジション
- MaxSpread_point:エントリー時に、このスプレッド以上だったらアービトラージを中止します
- Magic:マジック
- ChartDisplay:チャートにアービトラージのレートデータを表示させます
- CalcInterval_in_milisecond:演算の周期(ミリ秒)
- Slippage_in_point:スリッページ(point)
複数通貨同時アービトラージ可能です。
仮想通貨はFXと違い、最小ロットや最大ロットがバラバラなので十分に注意してください。
現在、EAを持て余したプログラマによる EA無料使い放題企画をしています。詳しくはこちら
更新情報
- 2020/2/12 決済のバグを修正&演算サイクルの高速化実装
- 2020/2/17 pipsからpointに単位を統一。チャート表示を高速化
- 2020/2/20 MT5版とクロスプラットフォームアービトラージできるように改良。
- チャート表示にping, MagGap, MinGap, 稼働時間, 設定値を表示。
- 内部アルゴリズムをごくわずかに高速化
- 2020/2/26 MaxPositionを口座全体のポジション数から通貨ペア毎のポジションの最大数に意味合いを変更
- 2020/2/28 チャート表示に他社のAskレートを表示。
- 1.0の名残りの配列処理を修正し高速化。
- 相手方のFX会社がポジションを保持している場合はそれを表示(0:なし -1:売りポジション 1:買いポジション)
- ArbitrageGroupパラメータを追加し、同一VPS内で並列して複数のアービトラージを実行できるように改良。
- ArbitragerBetweenFXBrokers2.1_with_passcode.ex4にファイル名変更
MT5でビットコイン業者間アービトラージをする
MT4は遅い
MT4の処理速度も高速スキャルピングのトレードロジックを利用する場合、時代にそぐわなくなってきたのでMT5用EAでアービトラージEAを開発しました。(MQL5で書き直しました。)MT5対応のFX会社さんも依然と比較してかなり増えてきたので、さや取りできる環境は整ってきています。
MT5はMT4よりも最高20倍高速なので、cTraderと比較しても高速です。ただし、cTraderの場合はてきとーに口座を選んでもECN口座になるという特典がありますが、MT5の場合は口座タイプもちゃんと選ばないといけません。
MT5にはネッティングモードとヘッジモードがあり、またオーダーにもFOKを受け入れておらずIOCでないと駄目なMT5業者もあるので(XMとか)、MT5業者の選定は重要です。
また、MQL5はMQL4と違って準オブジェクト指向なので、そこでEA開発の参入障壁がちょっとだけあります。そういった意味でもまだ開拓されてない可能性が高いのではと思います。
ただし、MT5対応&仮想通貨トレード可の業者となるとかなりマイナーな業者さんなので、対象はかなり限定的です。XMなどはMT5でしか仮想通貨トレードができなかったので、XMのために開発したようなものだったのですが、断続的に仮想通貨トレードができなくなったりしているので、時機を見て行う必要があります。(CyptoGTがせめてもの救いか….)
MT5版アービトラージEAの仕様
MT5版のアービトラージもシンプルです。
- エントリー、決済は成行注文
- 狙った2社に絞ってアービトラージ
- OOpips広がったらそれぞれで両建てエントリー、その後、xxpipsに縮まったら決済
- ただし、スプレッドが△△以上の時はエントリーしない
というシンプルな仕様にしました。仮想通貨/ビットコインのアービトラージに近い仕様です。
より具体的には、
- スプレッドがMaxSpread_in_point未満で
- 口座内のポジションがMaxPosition未満で
- レート差がEntryGap_in_pips以上の時に、儲かる方向に成行エントリー
- レート差がExitGap_in_pips以内になったら決済
これだけです。
MT5アービトラージEAのパラメータ設定
- Lot:エントリーするロット。二つの業者で同じにする必要があります。
- EntryGap_in_point:エントリーする際のレート差です。Bidベースでこのpoint以上にレート差が広がったらエントリーします。
- ExitGap_in_point:決済する際のレート差です。この指定point以内にレート差が縮まったら決済します。
- MaxSpread_in_point:エントリーを中止する最大スプレッドです。スプレッドがこれ以上の場合はエントリーを中止・延期します。指標発表時などには、レートが各社ぐじゃぐじゃになりますが、スプレッドも広大になるので、そういった場合に機能します。
- MaxPosition:最大保有ポジション数です。デフォルトは1です。1のままでいいと思います。
- Magic:マジックナンバーです。(ポジションの識別番号。意味わからなかったらそのままで。)
- ChartDisplay:チャート上に各社のレートを表示します。アービトラージが可視化されますが、その分ごくわずかに処理スピードが遅くなります。(ほんのごく僅か)
- ChartInterval_in_milsec:演算のサイクル(ミリセカンド)です。このEAはティック到達ベースで演算するのではなく、EA内で定期的にループ処理しています。(アービトラージのタイミングがティック到達時に来るとは限らないため)数字を小さくすれば早くなります。
- FillingMode:MT5のオーダーのフィリングモード。
MT5アービトラージEAダウンロード
現在、EAを持て余したプログラマによる EA無料使い放題企画をしています。詳しくはこちら
更新:
- 2020/2/12 : 決済ロジックのバグ修正&Askライン表示&オブジェクト周りの表示を高速化
- 2020/2/20 MT4シンプル版とクロスプラットフォームアービトラージできるように改良。
- チャート表示にping, MagGap, MinGap, 稼働時間, 設定値を表示。
- 内部アルゴリズムをごくわずかに高速化
- 2020/2/26 MaxPositionを口座全体のポジション数から通貨ペア毎のポジションの最大数に意味合いを変更
- 2020/2/28 チャート表示に他社のAskレートを表示。
- 1.0の名残りの配列処理を修正し高速化。
- 相手方のFX会社がポジションを保持している場合はそれを表示(0:なし -1:売りポジション 1:買いポジション)
- ArbitrageGroupパラメータを追加し、同一VPS内で並列して複数のアービトラージを実行できるように改良。
【口座番号の制限なしexファイル(0.1BTC~)、ソースコードmqファイル 譲渡可(価格応相談 0.3BTC~)】
BinanceのAPIを先行指標にしてMT4/MT5でアービトラージする
為替の場合はリテールのトレーダーがリクイディティプロバイダに直結することはほぼ不可能ですが、仮想通貨の場合はリクイディティプロバイダが世界中の大手仮想通貨取引所そのものになるので、APIを使ってレートの取得が可能です。
Binanceが群を抜いて大きな取引量を誇っているので、BinanceのAPIを使ってレートを取得し、それを先行指標にします。MT4/MT5でBinanceのレートを取得するには、エキスパートアドバイザーの設定で「https://api.binance.com/」を許可しておく必要があります。(MT4/MT5から外部サイトにアクセスするには各MT4/MT5の設定でアクセスするURL・ドメインを指定する必要があります。)
あとは、パラメータ「IsChartBTCUSD_vsBinance」をtrueにすればビットコインのレイテンシーアービトラージが可能です。
Binance(バイナンス)とCryptoGTでビットコインアービトラージ
アービトラージのトレード環境を極める
MT4/MT5は同じコンピュータ・VPS上で
このアービトラージをするには2つのMT4/MT5を稼働させることになりますが、その2つのMT4/MT5は同じコンピュータ(PC,VPS)上になければなりません。というのも、ファイル関数を使ってMT4/MT5間で情報のやりとりをしているため、フォルダ構成が異なるPCの場合、情報の受け渡しができません。
具体的には、MetaQuotesの純正VPSは使えない、と言うことになります。MetaQuotesのVPSはそれぞれのアカウント毎に管理されているため、ファイル関数によるMT5間の情報の受け渡しができません。
そのため、BeeksVPS(あるいはLD5,NY4,TY3内でクロスコネクトしたエクイニクスサーバー)を使う必要があります。
エクイニクスサーバーLD5, NY4, TY3は統一する必要がある
FX会社の多くはエクイニクス社のデータセンターを使っています。LD5はロンドン、NY4はニューヨーク、TY3は東京のエクイニクスのデータセンターの名称です。
仮にFX会社A社とFX会社B社でアービトラージする場合、その二つのMT5サーバーは同一のデータセンターでなければなりません。A社のMT5サーバーがロンドンにあるなら、VPSもロンドンにするべきですが、もしB社のMT5サーバーがニューヨークにある場合、遅延が大きくなります。
MT5では、右下のネットワークマークをクリックすることで、各データセンターへの接続スピードを知ることができます。
画像ではどれも100ms以上なのでお話になりませんが、その中でもTY3のサーバーが一番近いことが分かります。
BeeksのNY4サーバーの場合、
BeeksNY4 <-> TitanFX-03 – Titan FX Limited MT5
BeeksNY4 <-> XMTrading-MT5
この場合、XMはロンドンで、Titanはニューヨークで、VPSはニューヨークなのでミスマッチです。必然的にTitanのデータが早く、XMのデータが遅れやすくなります。
各業者のサーバーロケーション
MT5業者のサーバーの場所はメタクォーツのhttps://www.mql5.com/en/vpsでざっくり調べられます。ただし、100%正確なものではなく、サーバーのDNSが登録されている場所なのか、全然違う場合もあります。
また、実際に口座開設をした段階でどのサーバーに格納されるかもわからないので、最終的には口座開設してみてpingを調べるしかないのですが、MT5業者も数が多いので、だいたいの把握にはなると思います。
- XM : ロンドン
- FBS:ロンドン
- Titan:ロンドン、ニューヨーク
- HotForex:オランダのアムステルダム
- TradeView:ロンドン(MT4)、ニューヨーク(MT5)
- IFC:フランスのパリ
- FXOPEN:ロシアのモスクワ、イギリスのシェフィールド、ラトビアのリガ
- LandFX:ニューヨーク、ロンドン、東京
- FXCHOICE:アムステルダム(MT5),フランクフルト(MT4)
- FXDD:ニューヨーク
- BlackBullMarkets:ニューヨーク
- ICMarkets:ニューヨーク
- LiteForex:オランダのアムステルダム
- FXPRO:ロンドン、キプロス
- OANDA(ジャパン):東京(OANDA-Japan FX Live)、ニューヨーク(OANDA-Japan Live)
- AVATRADE:ロンドン
ニューヨーク組は、TitanFX, TradeView(MT4), LandFX, FXDD, BlackBullMarkets, ICMarkets, (OANDA)
ロンドン組は、XM, FBS, TitanFX, TradeView(MT5), LandFX, FXPRO, AVATRADE
東京組は、LandFX, OANDA
です。
業界の体感としてはロンドン6割、ニューヨーク3割、東京1割の印象なので、ロンドン組は探せばもうちょっとあると思います。
各社のサーバーロケーション参考ページ:https://fxvps.biz/broker-latency/
エクイニクスNY4のVPSからのping
BeeksVPSのエクイニクスNY4サーバーからのpingです。やっぱり実際に測ってみないと見えてこないことが多いことの実例だと思います。規模が大きいFX会社の場合、収容されるサーバーによってpingが大きく変わる可能性があります。
- [MT5]TradeView : 0.54ms
- [MT5]CryptoGT(DataCenterDE1) : 47.88ms
- [MT4]Tickmill : 53.28ms
- [MT5]FBS : 56.30ms
- [MT4]TradersTrust (main) : 72.65ms
- [MT4]TradeView : 73.17ms
- [MT5]FXPRO (London) : 73.94ms
- [MT4]FBS : 74.08ms
- [MT4]IFCMarkets : 75.06ms
- [MT5]XM : 75.56ms(UK1)
- [MT4]Axiory (Axiory UK1) : 75.98ms
- [MT4]XM (DC16) : 79.52ms
- [MT4]HotForex (Amsterdam) : 81.45ms
- ——————————————————————————————–100msの壁
- [MT4]FXOPEN (DC10) : 111.32ms
- [MT4]FXPIG : 116.14ms
- [MT4]MyFXMarkets : 161.88ms(JP04)
- [MT4]LandFX : 162.69ms
- [MT4]FXTF (Primary DC) : 170.20ms
- [MT4]MyFXMarkets : 174.35ms(US01)
- [MT4]Rakuten : 174.38ms
- [MT5]OANDA(TOKYOサーバー) : 209.67ms
- [MT4]Bigboss (DataCenter2) : 227.21ms
- [MT5]XM : 384.47ms(JP1)
エクイニクスTY3のVPSからのping
- [MT4]俺のFX(ForexExchange) : 0.25ms
- [MT4]Bigboss(DataCenter2) : 0.46ms
- [MT4]Bigboss(DataCenter1) : 0.48ms
- [MT4]OANDA Japan(TY3 DC1) : 0.53ms
- [MT5]OANDA(TOKYO) : 0.60ms
- [MT4]FXTF : 3.13ms
- [MT4]MyFXMarekts : 4.05ms
- [MT4]Landfx : 4.09ms
- [MT4]AXIORY(JP4) : 4.67ms
- [MT4]AXIORY(JP1) : 4.83ms
- ———————————————10msの壁
- —————————————————————————-100msの壁
- [MT4]FXCM/楽天FX : 108.43ms
- [MT5]TitanFX(TY3) : 161.89ms !?
- [MT4]TitanFX(NY4 #2) : 140.44ms
- [MT4]TitanFX : 140.63ms
- [MT4]FXDD : 148.47ms
- [MT5]TradeView : 158.54ms
- [MT4]TradersTrust : 207.86ms
- [MT4]TradeView : 208.37ms
- [MT4]FBS : 208.15ms
- [MT4]FXPRO : 213.35ms
- [MT4]LMAX : 213.76ms
- [MT4]HotForex : 220.06ms
- [MT5]XM(JP1) : 227.95ms
- [MT5]CryptoGT(Dtat Center JP1) : 228.79ms
- [MT4]XM(DC1~DC12) : 228.45ms
- [MT5]XM(JP2) : 233.16ms
- [MT5]FBS : 236.30ms
エクイニクスLD8のVPSからのping (≠LD5)
- [MT5]FXPRO : 1.22ms
- [MT4]FXPRO : 1.24ms
- [MT4]TradersTrust/TTCM : 1.26ms
- [MT4]Axiory(03,04) : 1.31ms
- [MT4]TradeView : 1.35ms
- [MT5]FBS : 1.44ms
- [MT4]LMAX : 1.45ms
- [MT4]FBS : 1.60ms
- [MT5]XM (UK1): 4.93ms
- [MT4]XM (DC07,DC08) : 5.87ms
- [MT4]HotForex (Server6): 6.68ms
- [MT5]HotForex (Amsterdam DC) : 6.76ms
- [MT4]LiteForex : 7.76ms
- [MT5]HotForex(London DC) : 8.36ms !?
- ——————————————————10msの壁
- [MT4]IFCMarkets : 18.54ms
- [MT5]CryptoGT/Hatio (DE1): 29.75ms
- [MT4]FXOPEN : 37.16ms
- [MT5]FXOPEN : 48.72ms
- [MT4]TitanFX : 68.47ms
- [MT4]FXDD : 68.86ms
- [MT5]TradeView : 70.20ms
- [MT5]TitanFX : 70.58ms
- —————————————————————————-100msの壁
- [MT4]俺のFX : 207.93ms
- [MT4]OANDA (TY3) : 212.53ms
- [MT4]Axiory(01,02) : 213.04ms
- [MT4]MyFXMarkets(JP4) : 218.98ms
- [MT4]FXTF : 221.43ms
- [MT4]LandFX : 224.58ms
- [MT4]FXCM(楽天) : 233.71ms
ほんの少しでも早くするために(気配値の通貨ペアを減らす)
アービトラージは”他に同じようなことをしている人たちとのスピード勝負”になるため、ごくわずかな差が大きな結果の差に繋がります。
MT4/MT5の気配値表示は、”すべて表示”にしているとすべての通貨ペアのティックデータを受信するので、非表示の場合よりもごくわずかに遅くなります。
アービトラージの環境が整ったら、アービトラージのターゲット通貨以外の気配値表示は非表示にしましょう。
アービトラージと口座タイプ
FX会社では現在さまざまな口座タイプがありますが、アービトラージをする上で、FX会社選別と同様に口座タイプの選別も重要なファクターとなってきます。
NDD vs DDの話で言えば、DD口座の場合はアカウントがbanされたり、出金拒否の可能性あるので、NDDは必要条件です。
可能であれば、低スプレッドのECNが良いように考えられるのですが、取引手数料による手数料負けが考慮しにくいので、実はマークアップ口座の方が管理する上では楽な気もします。
マークアップ口座の場合、パラメータで上限スプレッドを設定できるので、アービトラージのレート差が取引スプレッドよりも十分に大きくなるようにパラメータを設定すれば、手数料負けすることはなくなります。
結局やってみなければわからないのですが、一概に低スプレッド口座(取引手数料別取り口座)の方が適しているとは断定できません。
アービトラージ検証
FXOPEN MT4 vs TTCM MT4 仮想通貨 at
Coming soon…
CryptoGT MT5 vs Binance API BTCUSD
Coming soon…
??? MT5 vs bitForex MT5 BTCUSD
bitforexはEAによる自動売買はできませんが、土日でもレートが配信されている業者の中では割と平均的なレート、かつ、配信速度が”遅くはない”という特徴があります。
ある業者ではbitForexを先行側にしてレイテンシーアービトラージが可能です。
半月で、0.01BTC(約1万円)の軍資金を0.21BTC(約20万円)の20倍にすることができました。BTCUSDはレート差が広がりっぱなしになってしまったりする組み合わせが多いので2レッグアービトラージが基本ですが、レイテンシーアービトラージが可能な場合は、短期間で資金を倍増させることが可能です。
関連記事
-
BitPoint(ビットポイント)で仮想通貨の自動売買を始める方法
注:現在、bitpointはMT4の採用を取りやめたので、国内業者かつMT4で仮想通貨を扱える業者は
-
仮想通貨MT4注文システム
このサイトでもMT4で仮想通貨トレードを行う方法はいくつか紹介していますが、 bitbank等MT
-
業者間アービトラージやってみた(開発と配布)[MT4/MT5/API][裁定取引]
アービトラージというのは、業者間のレート差を利用した超高速後出しエントリーロジック、あるいは両建てロ
-
MT4のチャート上に複数の仮想通貨取引所のビットコインレートを表示するやり方
先日、ブログを読んでいただいてる方からコードをいただいたので、ご紹介します。(OKをもらいました。)
-
[MT4]仮想通貨(ビットコイン)のシステムトレード検証(ソースコードあり)
MT4/MT5でも仮想通貨の取扱業者が増えてきたので、そろそろ自動売買やらバックテストやらができるよ