業者間アービトラージやってみた(開発と配布)[MT4/MT5/API][裁定取引]
公開日:
:
無料配布EA(MT5 用), 無料配布EA(MT4 用), MT4/MT5の仮想通貨自動売買 ea, アービトラージ
目次/もくじ
アービトラージというのは、業者間のレート差を利用した超高速後出しエントリーロジック、あるいは両建てロジックです。昔からある手法ですが、MT5やFIX APIの登場、エクイニクスサーバーのリテール利用、ECN口座が増えたことなどで条件がさまざま変わってきました。
FXフォーラムでは、「もうアービトラージできる環境はない」とか「アービトラージできても出金拒否/口座凍結されるから意味ないとか」言及している人がいます。
この場合、仮にアービトラージできたとしても、すでにアービトラージしている人たちからすれば新規参入者は退けたい訳ですから、”アービトラージはできない”と答えるのが正解で、本当にアービトラージができない場合も”アービトラージはできない”と答える訳なので、結局アービトラージで稼げるのかどうか真偽を確かめるためには自分でやってみる他はありません。
アービトラージの分類
まず、混乱を避けるためにアービトラージの分類を先に説明します。アービトラージの手法には少なくとも3つ以上の種類があります。
レイテンシーアービトラージ(1レッグアービトラージ)
レートが早い業者を先行指標にして、レート配信が遅い業者で後出しジャンケン的なエントリーを行います。瞬間的(数ミリ秒~数秒)のレート遅延がある場合に行う方法で、主に為替・FXで使うアービトラージです。レートが早い方の業者ではエントリーは行いません。
リクイディティプロバイダを兼用しているような大きなFX会社(LMAXなど)を先行指標にすることが一般的です。
場合によっては、FIX API(金融系API)を使います。ポジションの保有時間が数ミリ秒~30秒なので、FX業者がスキャルピングを禁止している場合は出金拒否の対象になります。VPSの位置や約定速度をシビアに追究する必要があります。
うまく当たれば短期間で資産を数倍~数十倍にできます。
ヘッジアービトラージ(2レッグアービトラージ:両建てアービトラージ)
レートが長時間ズレる場合に各業者で反対売買をするアービトラージ手法です。ビットコインやアルトコイン、日経225などで使うアービトラージ手法です。どちらのレートも”正解”とは言えないパターンで使います。
さらに分解すると、
- CFDの両建てアービトラージ
- 現物の両建てアービトラージ
があります。
一般的にはCFD/FXの両建てアービトラージを指すことが多いです。レート差が開いたタイミングで両建てし、レート差が縮まったら決済します。エントリー時よりもレート差がどんどん広がって強制決済されたりすると損失になります。また、レート差が何日も縮まらずにマイナススワップが溜まったりしても損失になるというデメリットがあります。
また、現物の両建てアービトラージというのは、主にビットコインをはじめとした仮想通貨で手動で行われています。実際に現物のビットコインを2つの仮想通貨取引所で反対売買(現金<->ビットコインの交換)して、現金とビットコインを実際に送金しあうことでアービトラージを実現します。これをする人がいないと世界中の取引所のレートがバラバラになります。
2レッグ両建てアービトラージの場合、注文スピードやVPSにはそこまで拘らなくても良いという利点があります。また、ポジションの保有時間が長くなる傾向があるので、FX業者側がスキャルピングを禁止している場合でもOKです。
tただし、資産の増加スピードはかなり緩やかです。
トライアングルアービトラージ/3すくみ
一つの業者内で3つの通貨ペアの乖離を利用したアービトラージです。USDJPYとEURUSD+EURJPYの乖離を利用します。
その他のアービトラージ
他のタイプで細かいところで言えば、スワップアービトラージやボーナスを利用したアービトラージもあります。
スワップアービトラージは長時間ポジションを保有するだけの握力と忍耐が必要です。一般的な口座で勝ち続ける口座を探すのは困難で、現実的なところではイスラム口座(スワップフリー口座)が必要になります。(イスラム口座ではスワップが0になるので、マイナススワップのポジションをイスラム口座で保有すれば、両建てでさや取りが可能。)
以前は雀の涙ほどのスワップでしたが2020年ごろから金利差が拡大し、馬鹿にできない年利になってきました。(極めれば年利200%もそれほどハイリスクではとか…)
トルコリラ、南アランド、豪ドルなどの分かりやすい通貨ペアや、木曜日の朝しかトレードしないスタイルだとバレバレなので口座凍結・利益取り消し・出金拒否のリスクが跳ね上がります。
クッションなしボーナスを利用した両建てアービトラージも、近年業者側も厳しくチェックしているので疑わしきは罰せられる可能性があります。
2レッグアービトラージ用にシステムを開発して、片方のシステムのエントリー条件のパラメータを条件を満たさないような値にすれば、レイテンシーアービトラージのシステムとして利用することが可能です。つまり、両建てアービトラージ用にシステムを開発した方が互換性のあるアービトラージシステムとして扱うことができます。
また、アービトラージの技術的な実装には、MT4/MT5/APIがあります。cTraderも得意な人なら追加してもいいかもしれません。
どの業者が遅いのか/早いのか(業者分析インジケーター(EA))
アービトラージはその性質上、バックテストやデモ口座が全く意味をなさない訳ですが、いきなりライブアカウントでリアルマネーで検証すると結構大きな検証費用がかかります。(特に最小ロットが0.01ではなく単位が大きい業者)
そのためには、アービトラージを実践する前にどの業者がどのような挙動をするのかを把握しておく必要があります。
これはどの業者のレートが早くて、どの業者のレートが遅いのかを調べるためのツールです。指定したレート差以上のタイミングでスクリーンショットを自動で撮影します。上の点線はAskレート、下の点線はBidレート、中心の実線はMedian(平均レート)です。色で業者を分けています。
もともとはiClose(終値)で比較していたのですが、bid≠終値の業者さんも多く、(参照:MT4の”本当の”スプレッドを表示する)スプレッドが広がるタイミングでは終値が先行しているようにダマシの挙動をしてしまうことから、Median(AskとBidの平均値・平均値)に落ち着きました。
使い方は
各FX会社のMT4/MT5にセットして使います。MT4とMT5はクロスプラットフォーム対応しているので、MT4のチャートデータをMT5に表示させたり、MT5のチャートデータをMT4に表示させることができます。
- 各FX会社のMT4/MT5を立ち上げる
- それぞれのMT4/MT5で同じ通貨ペアチャートを開く
- 開いた通貨ペアチャートにこのEAをセットする
だけです。
- AnalyzerMode: Data_Send_and_ReceiveかData_Send。Data_Send_and_Receiveの場合はレートを相手業者に送り、相手業者のレートを表示する。Data_Sendの場合はレートを相手業者に送るだけ。(高速)
- Sleep_in_milsec: 処理をする時間間隔(ミリセカンド)です。100の場合、前回の処理が終了してから0.1秒後に再び処理を繰り返します。
- TakePhoto_when_ThisGap_in_Point: このpoint以上の差が開くブローカー2社があった場合にスクリーンショットを取ります。
- Spread_for_Screenshot: 各業者のスプレッドの中で最も小さいスプレッドがこの値以上の場合はスクリーンショットを撮らない。(仮にレート差が大きく開いても、調査中の業者がすべてスプレッドが広大になっている場合はスクリーンショットをとっても無意味なので無駄なスクリーンショットを避けるためのものです。) よく分からなかったら9999とかにしておいてください。
- IsChartStockIndex: 日経225などの株価指数を調査する場合はtrueにしてください。株価指数の場合、ブローカー毎にNikkei225などのシンボル名が異なることによるバグを回避するためのものです。
- IsChartBTCUSDandGetBinanceRate: BinanceのAPIからレートを取得する場合にtrueに。EA設定で事前に「https://api.binance.com」が許可されている必要があります。
- Screenshot_width:スクリーンショットの横幅(ピクセル)
- Screenshot_height:スクリーンショットの縦幅(ピクセル)
スクリーンショットは、MT4の場合はMQL4/Filesに、MT5の場合はMQL5/Filesに自動的に保存されます。特に権限は必要ありません。写真を削除する機能はないので、写真が溜まったら手動で削除してください。
これでチャートに張り付いて監視していなくても、”どのFX業者のレートが早くて、どのFX業者のレートが遅いのか”を調査・分析することが可能です。
最大10社まで表示させることが可能です。(その関係でインジケーターバッファは使わずにEAのオブジェクトで表示しています。) ただし、体感としては5~6社までにしておいた方が視認性が上がります。
このような状態になるFX会社があればその業者がターゲットになります。(FX会社名は伏せてあります。)
FX業者の中には、
- レート更新が速い業者
- レート更新が遅くてスプレッドが広い業者
- レート更新が遅くてスプレッドが狭い業者
があります。発見するべきは「レートが遅くてスプレッドが狭い業者」です。
また、レートが遅くてスプレッドが狭い業者の中にも、
- レート急変時にスプレッドを笑っちゃうくらい広大にする業者
- レート急変時でもスプレッドをそれほど広げない業者
がいます。ターゲットは下の業者です。
さらに掘り下げると、
- レートが遅いけどティックが全然なくてレートが飛び飛びになる業者
- レートが遅いけどティックが多い業者
があります。
(クロスプラットフォーム対応しています。:MT4の業者とMT5の業者をごちゃまぜにしても調査できます。)
更新情報
- 2020/2/21 インジケーターからEAに変更。(インジケーターだと動作が安定しないため)
- チャート表示を改良。
- 2020/3/3 データを送る側と受け取って表示する側にパラメータによって分け、各処理を高速化。(双方向表示だと無駄な処理が増えるため)
- MaxGapの表示バグを修正。コネクション状態を表示
- ブローカーとのDisconnected時の処理を簡略化&高速化。
- 2020/3/4 各ブローカーのティックを表示するように改良。(同じようなレート変位速度の場合、ティック更新が多い業者の方が流動性が高いと考えられます。)各ブローカーのAskを表示するように改良。各社のカラーリングを変更。デフォルトの演算処理を100msに変更。
- 2020/3/8 MT4/MT5どちらも採用している業者で、MT4/MT5間の比較をできるように。(MT4とMT5で同じ業者名になる場合でも区別できるように)。
- 週明けのタイミングで一社でもレート取得に失敗するとスクリーンショットの条件を満たしてしまう不具合を修正。
- 2020/3/12 会社名が全角文字の場合にバグるのを修正. 金曜日の23時以降及び月曜日の0時台はスクリーンショットを停止。
- Spread_for_Screenshot:追加。 各業者のスプレッドの中で最も小さいスプレッドがこの値以上の場合はスクリーンショットを撮らない。(調査中の業者がすべてスプレッドが広大になっている場合はスクリーンショットをとっても無意味なので避ける)
- 2020/3/17 OnTick+Loop構成からOnTimerに変更。より安定した演算処理に。
- 2020/3/21 日経225に特化して調査できるようにIsChartNikkei225を追加。
- BinanceのAPIを先行指標としたビットコインチャートの分析ができるようにIsChartBTCUSDandGetBinanceRateを追加。
- 2020/7/10 スクリーンショットの縦幅、横幅を変更できるようにパラメータを追加。
- 2020/7/21 スクリーンショットの単位を秒からミリ秒に変更。(同じ秒内で撮られたスクリーンショットもそれぞれ区別し、上書きされないように)
どの通貨ペアにラグがあるのか(通貨ペア分析)
次に、どの通貨ペアがアービトラージに適しているのかを調べる必要があります。先に業者を調べるべきか、通貨ペアを調べるべきかという問題がありますが、通貨ペアの場合はだいたい固定なので、後から通貨ペアを”一応確認のために”調べておくといったニュアンスです。
これは、どの通貨ペアでアービトラージを行うべきかを分析するためのツールです。
TY3 VPS Bigboss vs FXTF (FXTF視点) レート差
ターゲットとなる2社にこのインジケーターをセットすると、
- 現在のレート差(ポイント単位)
- 最大レート差(EAをセットしてからカウント)
- 最小レート差(EAをセットしてからカウント)
- 現在のA社のレート
- 現在のB社のレート
- 現在のスプレッド
- 最大レート差 - 最小レート差 - スプレッド
が通貨ペアごとに表示されます。
レート差はポイント単位なので、たとえば「EURJPYの場合は、最大で1.3pipsのレート差が発生し、最小のときはレート差が0になる。」と言うことが分かります。
設定した通貨ペアがどちらかのFX業者にない場合は、空欄か0が表示されます。画像ではZARJPYが片方の業者で対応していないので、空欄です。
最大レート差と最小レート差の差が大きければ大きいほどアービトラージのチャンスがあるということを意味します。
ただし、それだけではスプレッドによる手数料で負ける可能性あります。
「最大レート差 - 最小レート差 - スプレッド」を加味すると、レート差の変位が激しく、かつ、スプレッドも狭い通貨ペアを見つけることができます。
AUDJPY, GBPCHF, AUDNZD, EURAUD, GBPAUD, USDCAD, USDSGDあたりは”最大レートー最小レート差”が大きいので、スプレッドを考慮しないのであればアービトラージのターゲットとなる通貨ペアですが、スプレッドも考慮すると、GBPUSD, EURUSD, USDJPYのメジャー通貨に軍配が上がります。
ただし、レイテンシーアービトラージで後出しジャンケン的なロジックを利用する場合はスプレッドが狭い通貨ペアでないとアウトですが、2業者間で両建てするタイプのアービトラージの場合はその限りではありません。
アービトラージ分析専用インジケーター(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を初期化すれば直ります。
このEAは特に制限ありません。(パスコード必要ありません。)
- 2020/2/15 仮想通貨ペアを設定した際の表示バグを修正
- 2020/2/18 ティック到達時以外でもチャート表示が更新されるように修正。稼働時間表示を追加
- 2020/2/21 EAからインジケーターに変更。MT4<->MT5のクロスプラットフォームに対応。
- 2020/2/21 インジケーターだと動作が安定しないため、インジケーターからEA形式に戻す。(インジケーターだとループ文による一定間隔の強制演算ができない)
- 2020/3/8 比較するレートをBidからMedian(BidとAskの算術平均)に変更
- 2020/7/15 調査対象のシンボルが自動的に気配値に表示されるように
仮想通貨(BTC)をアービトラージする場合
ビットコインアービトラージと言えば仮想通貨取引所間のAPIを使ったアービトラージが定番ですが、MT4/MT5でビットコインアービトラージをすることも可能です。
ビットコインをトレードできる業者の詳細は
仮想通貨/ビットコイン取引トレードできるMT4/MT5対応業者一覧
にありますが、ざっくり整理すると、
こんな具合です。TitanFXがMT4/MT5両方とも仮想通貨を扱っているので検証用だけでも口座を持っておくと便利です。
また、
為替の場合はリテールのトレーダーがリクイディティプロバイダに直結することはほぼ不可能ですが、仮想通貨の場合はリクイディティプロバイダが世界中の大手仮想通貨取引所そのものになるので、APIを使ってレートの取得が可能です。
Binanceが群を抜いて大きな取引量を誇っているので、BinanceのAPIを使ってレートを取得し、それを先行指標にします。MT4/MT5でBinanceのレートを取得するには、エキスパートアドバイザーの設定で「https://api.binance.com/」を許可しておく必要があります。
あとは、パラメータ「IsChartBTCUSD_vsBinance」をtrueにすればビットコインのレイテンシーアービトラージが可能です。
BinanceのAPIを先行指標にしたMT5ビットコインアービトラージ ダウンロード
Binance(バイナンス)とCryptoGTでビットコインアービトラージ
TTCM(トレーダーズトラスト) vs FXOPEN BTCUSD~XRPUSD レート差 一覧 2020/2/15
トレーダーズトラストとFXOPENの場合、BTCUSD, BTCEUR, ETHEUR, LTCUSDにアービトラージの可能性があります。
LiteForex vs FXOPEN 2020/2/15 一晩寝かせた図
LiteForexを噛ませて一晩寝かせると、結構アービトラージのチャンスがゴロゴロしているのが分かります。特にBTCUSDでは大きなさやが発生したり、レート差が縮まったりするため、絶好のチャンスだと思います。
※LiteForexは日本居住者の口座開設は受け付けていません。
アービトラージとトサーバー環境
MT4/MT5は同じコンピュータ・VPS上で
アービトラージをするには2つのMetaTraderを稼働させることになりますが、その2つのMetaTraderは同じコンピュータ(PC,VPS)上になければなりません。というのも、ファイル関数を使ってMetaTrader間で情報のやりとりをしているため、フォルダ構成が異なるPCの場合、情報の受け渡しができません。
つまり、MetaQuotes社のVPSは使えない、と言うことになります。MetaQuotesのVPSはそれぞれのアカウント毎に管理されているため、ファイル関数によるMetaTrader間の情報の受け渡しができません。
そのため、BeeksVPS(あるいはLD4,LD5,LD8,NY4,TY3内でクロスコネクトしたエクイニクスサーバー)を使う必要があります。
1レッグの場合エクイニクスサーバー(LD8, LD5, NY4, TY3)は統一する
FX会社の多くはエクイニクス社のデータセンターを使っています。LD5,LD8はロンドン、NY4はニューヨーク、TY3は東京のエクイニクスのデータセンターの名称です。
仮にFX会社A社とFX会社B社でアービトラージする場合、その二つのMT5サーバーは同一のデータセンターでなければなりません。A社のMT5サーバーがロンドンにあるなら、VPSもロンドンにするべきですが、もしB社のMT5サーバーがニューヨークにある場合、遅延が大きくなります。
MT5では、右下のネットワークマークをクリックすることで、各データセンターへの接続スピードを知ることができます。
画像ではどれも100ms以上なのでお話になりませんが、その中でもTY3のサーバーが一番近いことが分かります。
FX業者のサーバーロケーション
MT5業者のサーバーの場所はメタクォーツのhttps://www.mql5.com/en/vpsでざっくり調べられます。ただし、100%正確なものではなく、サーバーのDNSが登録されている場所なのか、全然違う場合もあります。
また、実際に口座開設をした段階でどのサーバーに格納されるかもわからないので、最終的には口座開設してみてpingを調べるしかないのですが、だいたいの把握にはなると思います。
- 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:ロンドン
です。
業界の体感としてはロンドン7割、ニューヨーク2割、東京1割の印象なので、ロンドン組は探せばもうちょっとあると思います。
各社のサーバーロケーション参考ページ:https://fxvps.biz/broker-latency/
エクイニクス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
エクイニクスNY4のVPSからのping
- [MT5]TradeView : 0.54ms
- [MT4]OANDA global(≠OANDA Japan) : 0.64ms
- [MT5]TitanFX (NY4 #2) : 2.54ms
- [MT4]FXDD malta : 4.16ms
- [MT4]TitanFX (New York DC#1) : 5.99ms
- [MT4]OANDA JP(NY Live3) : 6.31ms (Live1~Live4は1ms以下なのにLive3だけ遅い)
- —————————————————–10msの壁
- [MT5]CryptoGT(DataCenterDE1) : 47.88ms
- [MT4]Tickmill : 53.28ms
- [MT5]FBS : 56.30ms
- [MT4]LMAX : 71.41ms
- [MT4]FXPRO : 72.31ms
- [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]FinFX : 77.87ms
- [MT4]XM (DC16) : 79.52ms
- [MT4]HotForex (Amsterdam) : 81.45ms
エクイニクスLD5のVPSからのping
- [MT4]Tickmill(London5) : 0.66ms
- [MT4]FXPRO : 2.42ms
- [MT4]LMAX : 2.49ms
- [MT5]FXPRO : 2.90ms
- [MT4]TradeView : 2.91ms
- [MT4]Axiory(Asia03) : 3.54ms
- [MT4]FBS(real7) : 3.54ms
- [MT4]TradersTrust : 4.81ms
- [MT4]XM(7~40) : 5.47ms~9.14ms
- [MT5]XM : 6.38ms
- [MT5]HotForex(Live1) : 8.27ms
- —————————————————–10ms
- [MT4]LiteForex(ECN) : 13.81ms
- [MT4]DukasCopy : 22.94ms
- [MT4]IFCMarkets-real : 23.17ms
- [MT5]CryptoGT : 30.84ms
- [MT4]HotForex(Server 3) : 35.01ms
- [MT4]FXOPEN : 47.91ms
- [MT4]OANDA-v20 Live-3(NY4) : 71.08ms
- [MT4]FXDD(1~7) : 72.56ms
- [MT4]TitanFX(1~3) : 72.39ms~72.84ms
- [MT5]TradeView : 83.79ms
エクイニクスLD8のVPSからのping (≠LD5)
- [MT4]FXPRO : 1.24ms
- [MT4]TradersTrust/TTCM : 1.28ms
- [MT4]Tickmill(LONDON7) : 1.37ms
- [MT4]TradeView : 1.39ms
- [MT4]LMAX : 1.45ms
- [MT5]FXPRO : 1.48ms
- [MT5]FBS : 1.60ms
- [MT4]FBS : 1.60ms
- [MT4]Axiory(03) : 3.72ms
- [MT5]XM (UK1): 5.6ms
- [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
- [MT4]DukasCopy : 22.76ms
- [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
ほんの少しでも早くするために(気配値の通貨ペアを減らす)
アービトラージは”他に同じようなことをしている人たちとのスピード勝負”になるため、ごくわずかな差が大きな結果の差に繋がります。
MT4/MT5の気配値表示は、”すべて表示”にしているとすべての通貨ペアのティックデータを受信するので、非表示の場合よりもごくわずかに遅くなります。
アービトラージの環境が整ったら、アービトラージのターゲット通貨以外の気配値表示は非表示にしましょう。
レイテンシー/両建てアービトラージツール(MT4版)
MT4アービトラージ仕様
- エントリー、決済はとりあえず成行
- 狙った2社に絞ってアービトラージ
- OOpips広がったらそれぞれで両建てエントリー、その後、xxpipsに縮まったら決済
- ただし、スプレッドが△△以上の時はエントリーしない
というシンプルな仕様にしました。
狙った2社のMT4の同じ通貨ペアにこのEAをセットしてください。
MT4アービトラージパラメータ
赤字のパラメータだけ気にすれば基本はOKです。
- Lot:トレードロットです。2レッグアービトラージの場合は2業者の値を同一にします。
- EntryOrderType:エントリーオーダー種別(成行注文か逆指値注文)逆指値注文でオーダーするにはストップレベルが0である必要があります。
- EntryGap_in_point:2社のレートがこの数値以上の場合に、儲かる方向にエントリーします。(point) 1レッグアービトラージの場合は、999などにして先行する業者ではエントリーしないようにします。2レッグアービトラージは同一の数字に設定します。
- ExitGap_in_point:2社のレートがこの数値未満の場合に決済します。(point)
- MaxPosition:最大保有ポジション
- OrderIntervalMin_sec:最後の決済から次のエントリーまでが短すぎる場合、この数字未満の秒数での連続エントリーを見送らせます。(1レッグアービトラージで”やりすぎ”を防ぐための自重機能です。)
- MaxSpread_for_Entry_in_point:エントリーを中止する最大スプレッドです。スプレッドがこれ以上の場合はエントリーを中止・延期します。指標発表時などには、レートが各社ぐじゃぐじゃになりますが、スプレッドも広大になるので、そういった場合に機能します。
- MaxSpread_for_Exit_in_point : 決済時の最大スプレッドです。99など大きな数字にすれば実質的にフィルターがOFFになります。
- ArbitrageGroup: 同じVPS上で複数のアービトラージを同時に並列して実行するときに使用します。2グループ目には適当に「GroupB」とかにしてください。
- Magic:マジックナンバー
- IsChartStockIndex: 日経225などの株価指数などを取引する場合はtrueにしてください。ブローカー毎にNikkei225のシンボル名が異なることによるバグを回避するためのものです。
- IsChartBTCUSD_vsBinance: BTCUSDチャートでBinanceを先行指標としてアービトラージする場合はtrueに。BTCUSDアービトラージでもMT4/MT5業者同士の場合はfalse。EA設定で「https://api.binance.com/」を許可しておく必要があります。
- ChartDisplay:チャートにアービトラージのレートデータを表示させます
- TakeScreenshot: エントリー時と決済時にチャートのスクリーンショットを撮ります。
- CalcInterval_in_milisecond:演算の周期(ミリ秒)
- Slippage_in_point:スリッページ(point)
- SL_in_point: 保険用のSLです。(point単位です) 予約注文だとストップ狩りされる可能性が捨てきれないので、成行でストップロスの注文をだします。
- MinTimeLocalDif: 二つの業者の直近のティック到達時刻がこの値以上の差(秒)ある場合はエントリーを見送ります。
- ExitIFtheOtherCompanyFailToEntry:2レッグアービトラージの場合で、かつ、相手方の業者が約定拒否・広大なスプレッドでエントリーに失敗したにもかかわらず、こちら側だけエントリーしてしまった場合はすぐに決済します。
- BinanceAPI: バイナンスのAPIを使ってBTCUSDレートを取得する場合はON。バイナンスはトークン必要ありません。※レイテンシーアービトラージ用
- OandaAPI: オアンダのAPIによるレート取得をONにする場合true。主にレイテンシーアービトラージの先行指標用
- OandaAPIToken: オアンダのAPIのアクセストークン
複数通貨同時アービトラージ可能です。
レイテンシーアービトラージをする場合は早い業者のEntryGap_in_pointを99999、遅い業者のEntryGap_in_pointを適正な値にして片方だけエントリーさせればいいと思います。
両建てアービトラージする場合は、EntryGap_in_pointとロットを同じ値にしてください。
現在、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にファイル名変更
- 2020/3/3 相手方のブローカーのサーバー接続が切れた際の処理を更新。
- 2020/3/4 レート差の計算をBidからMedian(BidとAskの平均)に変更。(これに伴い、レート差の変位が全体的に小さくなると思います。)
- 2020/3/5 スプレッドフィルターをエントリー時と決済時に分割。
- 2020/3/8 MT4/MT5どちらも採用している業者のMT4とMT5を区別できるように変更。(1つの業者内でMT4口座とMT5口座でアービトラージも可能)
- 2020/3/10 オーダー前のAsk/Bidレートと実際の約定レートをログで比較できるように。また、約定にかかった時間をログで確認できるように更新。
- 2020/3/11 成行決済のSL(SL_in_point)を実装。※予約注文だとストップ狩りされる可能性があるので成行注文。この決済には決済用のスプレッドフィルターは適応されません。
- 2020/3/12 会社名が全角文字の場合にバグるのを修正。最後の決済から次のエントリーまでの最小時間(秒)のフィルターを追加。(OrderIntervalMin_sec) エントリー条件が整っても、この秒数以上経過していないとエントリーしません。(デフォルト:0秒)”やりすぎ”を控えて、自重するための機能です。
- 金曜日の23時以降及び月曜日の0時台はエントリー停止。
- 2020/3/17 OnTick+Loop構成からOnTimerに変更。より安定した演算処理に。
- 2020/3/21 Binanceを先行指標としたビットコインアービトラージができるように改良。
- 2020/3/27 2レッグ両建てアービトラージ用にExitIFtheOtherCompanyFailToEntryを追加。
- 相手方の直近のティックの最終時刻を取得&表示し、5秒以上の差がある場合は、エントリー延期。;1レッグ、2レッグ問わず、相手のブローカーのティックが止まっている場合にはエントリーしない。
- 2020/4/21 ↑の機能をMinTimeLocalDifという変数でパラメータ化
- OandaAPIをレイテンシーアービトラージの際の先行指標にできるように更新。「https://api-fxtrade.oanda.com」をEA設定で許可する必要があります。
- 2020/7/13 約定にかかった時間をログに表示
- 2020/7/16 指定したロットに対して証拠金が足りない場合はzero divideで強制停止
- 2020/9/19 実験的に逆指値注文によるエントリー方式を追加
レイテンシー/両建てアービトラージツール(MT5版)
MT4はもう遅い
MT4の処理速度も高速スキャルピングのトレードロジックを利用する場合、時代にそぐわなくなってきたのでMT5用EAでアービトラージEAを開発しました。(MQL5に書き直しました。)MT5対応のFX会社さんも依然と比較してかなり増えてきたので、さや取りできる環境は整ってきています。
そもそもMT4は32bitで、MT5は64bitなので、その時点で大きな差があります。(32bit版MT5は2019年に終了しました。)
MT5はMT4よりも最高20倍高速なので、cTraderと比較しても高速です。ただし、cTraderの場合はてきとーに口座を選んでもECN口座になるという特典がありますが、MT5の場合は口座タイプもちゃんと選ばないといけません。
MT5にはネッティングモードとヘッジモードがあり、またオーダーにもFOKを受け入れておらずIOCでないと駄目なMT5業者もあるので(XMとか)、MT5業者の選定は重要です。
また、MQL5はMQL4と違って準オブジェクト指向なので、そこでEA開発の参入障壁がちょっとだけあります。そういった意味でもまだ開拓されてない可能性が高いのではと思います。
MT5版アービトラージEAの仕様
MT5版のアービトラージもシンプルです。
- エントリー、決済は成行注文
- 狙った2社に絞ってアービトラージ
- OOpips広がったらそれぞれで両建てエントリー、その後、xxpipsに縮まったら決済
- ただし、スプレッドが△△以上の時はエントリーしない
というシンプルな仕様にしました。仮想通貨/ビットコインのアービトラージに近い仕様です。
より具体的には、
- スプレッドがMaxSpread_in_point未満で
- 口座内のポジションがMaxPosition未満で
- レート差がEntryGap_in_point以上の時に、儲かる方向に成行エントリー
- レート差がExitGap_in_point以内になったら決済
これだけです。
レイテンシーアービトラージをする場合は早い業者のEntryGap_in_pointを9999、遅い業者のEntryGap_in_pointを適正な値にして片方だけエントリーさせればいいと思います。
両建てアービトラージする場合は、EntryGap_in_pointとロットを同じ値にしてください。
MT5アービトラージEAの使い方
MT5版とMT4版は使い方はまったく一緒です。また、MT4版とクロスプラットフォーム対応しているので、MT4版とMT5版をクロスでアービトラージ可能です。
いろいろありますが、赤字だけ気にすれば大丈夫です。
- Lot:エントリーするロット。2レッグアービトラージの場合、二つの業者で同じにする必要があります。
- EntryOrderType:エントリーオーダー種別(成行注文か逆指値注文)逆指値注文でオーダーするにはストップレベルが0である必要があります。
- EntryGap_in_point:エントリーする際のレート差です。Bidベースでこのpoint以上にレート差が広がったらエントリーします。1レッグアービトラージの場合、先行業者は9999にしてエントリーしないようにします。
- ExitGap_in_point:決済する際のレート差です。この指定point以内にレート差が縮まったら決済します。2レッグアービトラージの場合は、同一の数字に設定します。
- MaxSpread_for_Entry_in_point:エントリーを中止する最大スプレッドです。スプレッドがこれ以上の場合はエントリーを中止・延期します。指標発表時などには、レートが各社ぐじゃぐじゃになりますが、スプレッドも広大になるので、そういった場合に機能します。
- MaxSpread_for_Exit_in_point : 決済時の最大スプレッドです。99など大きな数字にすれば実質的にフィルターがOFFになります。
- MaxPosition:最大保有ポジション数です。デフォルトは1です。1のままでいいと思います。
- OrderIntervalMin_sec:最後の決済から次のエントリーまでが短すぎる場合、この数字未満の秒数での連続エントリーを見送らせます。(1レッグアービトラージで”やりすぎ”を防ぐための自重機能です。)
- ArbitrageGroup: 同じVPS上で複数のアービトラージを同時に並列して実行するときに使用します。2グループ目には適当に「GroupB」とかにしてください。
- InpBuyOrSell:MT5にはMT4のように売り・買いをそれぞれ制限する機能がないので、パラメータ設定によって疑似的に追加しました。
- Magic:マジックナンバーです。(ポジションの識別番号。意味わからなかったらそのままで。)
- ChartDisplay:チャート上に各社のレートを表示します。アービトラージが可視化されますが、その分ごくわずかに処理スピードが遅くなります。(ほんのごく僅か)
- TakeScreenshot: エントリー時と決済時にチャートのスクリーンショットを撮ります。
- IsChartStockIndex: 日経225などの株価指数を調査する場合はtrueにしてください。ブローカー毎にNikkei225のシンボル名が異なることによるバグを回避するためのものです。
- IsChartBTCUSD_vsBinance: BTCUSDチャートでBinanceを先行指標としてレイテンシーアービトラージする場合はtrueに。BTCUSDアービトラージでもMT4/MT5業者同士の場合はfalse。EA設定で「https://api.binance.com/」を許可しておく必要があります。
- ChartInterval_in_milsec:演算のサイクル(ミリセカンド)です。このEAはティック到達ベースで演算するのではなく、EA内で定期的にループ処理しています。(アービトラージのタイミングがティック到達時に来るとは限らないため)数字を小さくすれば早くなります。
- SL_in_point: 保険用のSLです。(point単位です) 予約注文だとストップ狩りされる可能性が捨てきれないので、成行でストップロスの注文をだします。
- MinTimeLocalDif: 二つの業者の直近のティック到達時刻がこの値以上の差(秒)ある場合はエントリーを見送ります。
- ExitIFtheOtherCompanyFailToEntry:2レッグアービトラージの場合で、かつ、相手方の業者が約定拒否・広大なスプレッドでエントリーに失敗したにもかかわらず、こちら側だけエントリーしてしまった場合はすぐに決済します。
- FillingMode:MT5のオーダーのフィリングモード。
- BinanceAPI: バイナンスのAPIを使ってBTCUSDレートを取得する場合はON。バイナンスはトークン必要ありません。※レイテンシーアービトラージ用
- OandaAPI: オアンダのAPIによるレート取得をONにする場合true。主にレイテンシーアービトラージの先行指標用
- OandaAPIToken: オアンダのAPIのアクセストークン
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内で並列して複数のアービトラージを実行できるように改良。
- 2020/3/3 相手方のブローカーのサーバー接続が切れた際の処理を更新。
- 2020/3/4 レート差の計算をBidからMedian(BidとAskの平均)に変更。これに伴い、レート差の変位が全体的に小さくなると思います。
- 2020/3/5 スプレッドフィルターをエントリー時と決済時に分割。
- 2020/3/8 MT4/MT5どちらも採用している業者で、MT4/MT5間の比較をできるように。(同じ業者内のMT4口座とMT5口座でアービトラージ可能に)
- 2020/3/10 オーダー前のAsk/Bidレートと実際の約定レートをログで比較できるように。また、約定にかかった時間をログで確認できるように更新。
- 2020/3/11 成行決済のSL(SL_in_point)を実装。※予約注文だとストップ狩りされる可能性があるので成行注文。この決済には決済用のスプレッドフィルターは適応されません。
- 2020/3/12 会社名が全角文字の場合にバグるのを修正。最後の決済から次のエントリーまでの最小時間(秒)のフィルターを追加。(OrderIntervalMin_sec) エントリー条件が整っても、この秒数以上経過していないとエントリーしません。(デフォルト:0秒)”やりすぎ”を控えて、自重するための機能です。
- 金曜日の23時以降及び月曜日の0時台はエントリー停止。
- 2020/3/17 OnTick+Loop構成からOnTimerに変更。より安定した演算処理に。
- 2020/3/21 BinanceのAPIを先行指標としたビットコインアービトラージができるように改良。
- 2020/3/27 2レッグ両建てアービトラージ用にExitIFtheOtherCompanyFailToEntryを追加。主に、ビットコイン、日経225用です。
- 相手方の直近のティックの最終時刻を取得&表示し、5秒以上の差がある場合は、エントリー延期。;1レッグ、2レッグ問わず、相手のブローカーのティックが止まっている場合にはエントリーしない。
- 2020/4/21 ↑の機能をMinTimeLocalDifという変数でパラメータ化
- OandaAPIをレイテンシーアービトラージの際の先行指標にできるように更新。「https://api-fxtrade.oanda.com」をEA設定で許可する必要があります。
- 2020/7/16 指定したロットに対して証拠金が足りない場合はzero divideで強制停止
- 2020/9/19 InpBuyOrSellを追加し、買い制限・売り制限を追加しました。レートが常にズレている場合に売りエントリーと買いエントリーの設定値を変えて稼働させるために使用します。
- 実験的にEntryOrderTypeを追加し、逆指値注文によるエントリーを実装しました。この機能をONにするにはストップレベルが0のチャートである必要があります。
FIX API と C#と cTraderでアービトラージ
1レッグレイテンシーアービトラージをする場合には、レートが遅い業者探しが肝になりますが、早い業者もできるだけ早くしたいものです。FX業界には機関投資家や銀行間のレート通信プロトコルとしてFIX APIという金融専用のAPIがあります。過去レートの取得などでは役に立たないのですが、リアルタイムのレート取得に関しては最速の通信規格です。
しかし、FIX APIを使うには少なくとも2000万円以上の証拠金が必要な業者が多いので指をくわえていた訳ですが、「そういえばcTraderの通信プロトコルってFIX APIだったなぁ~」ということにFIX APIの情報を探していて気づきました。
結局、FIX APIのアクセストークンを取得してもC#かJavaでコーディングすることになるので、だったらもともとC#のcAlgoでもいいじゃん、という安直な帰結にたどり着きました。
確かに、cTraderを採用しているFX業者のレートは、MT4/MT5でレートを比較していても先行指標になるブローカーが多いので、cTraderがECN口座限定であるという制限を顧みても、試してみる価値はあるのではないかと思います。
MT4/MT5ではPC上のアクセスできるディレクトリ権限に制限がありますが、cTrader側からなら(権限を与えれば)どこのファイルでもアクセス可能です。現在のMT4/MT5のデータフォルダの位置が固定なので、C#側でMT4/MT5のディレクトリを内部で記述しています。
1 |
"C:Users" + (Environment.UserName) + "AppDataRoamingMetaQuotesTerminalCommonFiles" + ArbitrageGroup + "ArbitragerData" + SymbolName + ".txt"; |
確か、2014年以前のMT4ではデータフォルダの場所が2パターンあったような気がしますが、build610ぐらいから1パターン固定になった(はず…)
システムのダウンロードはこちらです。
1レッグレイテンシーアービトラージ用cBot(送信のみ)ダウンロード
更新情報:
- 2020/4/21 たまにcbotがクラッシュするバグの修正
- 2020/4/24 複数通貨ペアをセットした際のバグを修正
FIX API利用のcBotのレートがMT4/MT5より遅くなるとは考えずらいので、プログラミングはレートの送信部だけでとどめました。パラメータもアービトラージグループの設定値だけです。アービトラージする通貨ペア毎にセットしてください。
アービトラージ検証
現在のところ、上手くアービトラージできる業者とサーバーの組み合わせを数パターン発見しています。レート更新が早い業者を探すのは簡単ですが、レートが遅い業者を探す方が大変でした。
しかも、暴騰暴落時にスプレッドが広大にならず、約定拒否せず、スキャルピングOKとしている業者で、できればECN口座です。
LandFXやFXTFなどはアービトラージの条件は満たしていたのですが、高速スキャルピングNGを掲げているのでNGです。(確信犯として口座凍結を覚悟で超短期で勝ち逃げするならいいですけどね)
また、”レートが遅いように見せかけて実はレートが断続的に止まっている”業者もあり、そういった業者でアービトラージをしようとすると約定拒否か滅茶苦茶不利なレートで約定させられてしまうという、勉強代を払わされました。
しかし、最終的に適当な業者を見つけられれば、半日でこれまでの損失もペイする(と思います。)
●●●●● MT5 vs bitForex MT5 BTCUSD
bitforexはEAによる自動売買はできませんが、土日でもレートが配信されている業者の中では割と平均的なレート、かつ、配信速度が”遅くはない”という特徴があります。
ある業者ではbitForexを先行側にしてレイテンシーアービトラージが可能です。
半月で、0.01BTC(約1万円)の軍資金を0.21BTC(約20万円)の20倍にすることができました。BTCUSDはレート差が広がりっぱなしになってしまったりする組み合わせが多いので2レッグアービトラージが基本ですが、レイテンシーアービトラージが可能な場合は、短期間で資金を倍増させることが可能です。
追記:2週間程度で上手く稼働しなくなりましたが、出金は無事できました。
●●●● MT4 vs SAXO bank MT4
出金拒否回避とかVDPとかの話
アービトラージは業者側からすると芳しくないトレードスタイルです。DD,NDDに関わらず多くのFX業者は阻止しようとします。その方法は規約だったり、出金拒否だったり、VDP(Virtual Dealer Plugin)だったりする訳ですが、トレーダー側に対抗策がない訳ではありません。
目立たない額でほどほどの出金をしたり、1日に数回までのアービトラージにとどめて置いたり、大量のダミーの保有時間が長い取引でカモフラージュしたりすることによって多かれ少なかれ対抗する手段はあります。
結論
FXアービトラージは電子取引が始まった当初からちらほらありましたが、突き詰めていけばいくほど奥が深い手法ということが分かります。スプレッドやスリッページはもちろん、サーバーがどこにあるかとかリクイディティプロバイダがどこかとか、”細かい積み重ね”が揃って初めて結果を出すことができる訳で、システムそのものはもちろんですが、分析の度合いと情報収集が勝敗を決めるといっても過言ではありません。
また、NDDかDDかを判別することがトレーダー側からでは不可能だと考えていましたが、アービトラージを検証していく過程で”明らかにNDDではないのにNDDとうたっている業者” や ”明らかにECNではないのにECNと言っている業者”が分かるようになりました。
逆に、「ちょっとこの会社大丈夫かな」と思っていた会社が実はとっても優秀な業者だったり、(レートが超絶早かったり)ということも見えてきました。
分析ツールは無料で無制限でダウンロードして使えるので、ぜひご自身でいろいろ検証してみてください。上手くいけば、業者からの口座凍結と出金拒否の連絡に怯える日々が始まります。
ただし、相場自体が凪状態の場合、アビトラチャンスそのものがないので稼働しません。
レイテンシーアービトラージできるFX業者(特にレートが遅く、スプレッドが広大にならず、スキャルピングOKな会社で、規約でアービトラージを禁止していない業者)の有力情報をお持ちのご協力者募集しております。(下記有名どころは調査済みです。)
LMAX, SAXObank, Dukascopy, FXPRO, Tickmill, Axiory, HotForex, XM, TradersTrust, FIBOGroup, MyFXChoice, IronFX, MiltonMarkets, TradeView, FBS, OANDA, FXDD, TitanFX, BlackBullMarkets, CryptoGT, FXOPEN, IFCMarkets, Forex Exchange, FXTF, LandFX, Bigboss, MyFXMarkets, GemForex, RakutenFX, xtb, FXGT, alpari, axitrader, VirtueForex, Rev Trading, Coinexx, evove market
番外編:スワップ両建て業者間アービトラージ(.ex4)
業者間の価格レート差を利用したアービトラージの他に、スワップポイントの差を利用したアービトラージというのも存在します。
ある通貨ペアにおいてA社のロングスワップとB社のショートスワップの合計が0以上なら、それぞれで同数量両建てすればスワップの差益を得られるという仕組みです。
しかし、一つ一つの通貨ペアのスワップを各業者ごとに調べるのはかなり大変です。
そこでセットするだけで各社のロングスワップ、ショートスワップを表示し、どの業者がもっともスワップが高いのかを表示するインジケーター(EA)を作りました。
一度に21通貨ペアまで調べられますが、ディスプレイが大きくないと10通貨ペア分くらいしか表示できないかもしれません。スワップの場合は更新がとっても遅いので、演算処理速度にこだわる必要は全くありません。
各通貨ペアのスワップポイントが最も大きい業者のスワップポイントが大フォントで表示されます。
また、ロングスワップとショートスワップの合計が0を超える組み合わせがある通貨ペアは通貨ペア名が金色になります。
現時点でざっくり調べてみたところ、スワップポイントの両建てで利益を上げられそうな業者と通貨ペアの組み合わせはありませんでした。ただし、メジャーな通貨ペアではなく、特殊な通貨ペアを調べれば何かしらチャンスは転がっていると考えられます。
もしイスラム教徒である証明書が取得可能なのであれば、スワップフリーのイスラム口座を作成すれば楽勝です。マイナススワップになるポジションの口座をイスラム口座にして両建てするだけで簡単にスワップ両建てアービトラージで勝てます。
使い方
各社のMT4にこのインジケーター(EA)をセットします。通貨ペア、時間枠は任意です。
このEAにはパスコードは必要ありません。
関連記事
-
多通貨ペアで勝てるEAは最強EA?[MT4]
バックテスト結果 EURJPY 2019/1/1~2019/12/31 H
-
タートルズのデマーカーのEA(MT5)[無料配布]
基本的なテクニカル指標は、レンジタイプかトレンドタイプに大別されて、それらを使った複合的な指標はユー
-
RSIのシンプルな自動売買EA[MT5]
CCI, RSIを使った割とシンプルなEAです。ちょっとだけマーチンゲール入ってます。  
-
3通貨相関 三角/トライアングルアービトラージEA(MT4MT5)
合成通貨トライアングルアービトラージとは FXは2つの通貨のペアなので、その組み合わせは無数に
-
ハイリスクハイリターンEA (MT4)[一発逆転EA]
バックテスト結果 EURUSD 2019/1/1~2019/12/31 H1 スプレッド:
コメント
LMAX exchange はアービトラージを禁止していますかね?
調べてみてもよくわからなかったので、どなたか教えていただければ幸いです。
LMAXはリクイディティプロバイダ兼の先行指標なので、レイテンシーアービトラージ自体が無理です。
先日LMAXに申し込んでみましたが、日本人お断りのようです
より正確には日本人ではなく日本在住者ですね。
こちらのFX業者間さや取りツールEAと3通貨相関 合成通貨トライアングルアービトラージEAに興味があり、ソースコードの購入を考えているのですが、料金等教えていただけますでしょうか?よろしくお願いします。
ドル円やユロドルでロングもショートもプラススワップのブローカーあるとおもうんですが、それと他のブローカーの組み合わせで両建てしたら、見つかってBANされたりしないですか?
ブローカー探しに協力したいんですけど、よろしくお願いいたしますレイテンシー/両建てアービトラージツール(MT5版、ソースコードの購入を考えているのですが、料金等教えていただけますでしょうか?
海外FXフォーラムでは業者間の両建てがバレるっていう人もごく稀にいますね。
通常では考えにくいですが、もし片方がもう片方のホワイトラベルだったりして、経営者が同じだった場合にはありえない話ではないと思います。
横瀬 様
お世話になっております。
一度 MYFXMarkets を業者検証したのですが、レートが早かったので MYFXMarkets のチャートごと消したのですが、その後もなぜかレシーブチャートにMYFXMarkets が表示され、レートも動いています。レシーブチャートを再起動させたり、ArbitrageBrokerAnalyzer2.3.ex4 を入れ直したりしてみたのですが MYFXMarkets が消えません。どうすればいいでしょうか?
宜しくお願いします。
リノ
チャートをリセットする(時間枠を別のにして戻す)だけですよ。
それでもダメなら
C:\Users\ユーザー名\AppData\Roaming\MetaQuotes\Terminal\Common\Files
のファイルを全部削除してみてください。
直りました、ありがとうございました。
「BinanceのAPIを先行指標にしたMT5ビットコインアービトラージ」のEAについてですが、パラメータの「Binance median jump」はBinance median値のcurrentと1s agoの差でエントリーということでよかったですかね?
その下の「Entry median jump」が何を指しているかわからず、どの値を入力してもエントリーが起きないようでした。Binanceと任意業者のcurrent median値の差のエントリー基準かと思っていましたが、違うのでしょうか?
もしくは、「Binance median jump」の条件かつ「Entry median jump」の条件が満たされた時のみエントリーするのでしょうか。
あと、通常のアービトラージEAについでですが、使い方の説明の所で記載のある「IsChartBTCUSD_vsBinance」と「BinanceAPI」のパラメータが無いのではないかと思います。
追記です。
Binanceパラメータは、MT4の方のEAにはあるようでしたが、MT5の方には無いようです。
Binanceのレート自体は取得できてますか
Binanceのレートは取得できており、表示されています。
Binance APIのEAの使い方が難しそうなので、通常アービトラージEAでBinanceをtrueにするだけで問題なく検証はできるのですが、MT5版のみパラメータ設定がないようなので可能であればセッティングをお願いできればと思います。
修正ありがとうございます(^^
すみません、EAをセットしたとき、レートを比較しているもう片方のブローカーのレートの更新が遅いのですが、原因は何が考えられますか?
(PCのスペック不足のためレートを比較するのに時間がかかっているなどはありえますか?)
また、そのせいで本来レート差が無いのにレート差があると誤認してエントリーを行ってしまっているように見えます。
何か対策などはありますか?
BTCUSDをワンレッグでやる場合、凪の状態の場合は問題ないのですが、分足数百ドルクラスの急落急騰の時はFXと違い決済の設定レート差になかなか辿り着かずに、結果的にマイナス決済になる事象が見られます。しかもレートが動きまくるのでエントリーしまくってマイナスが膨らんでいました(order interval値の調整でエントリーの問題の解決はできますが)。
急落急騰時の対策として、決済の条件にt/pを入れたり保持時間で決済するオプションをかませば安定するように思えますが、いかがでしょうか。
・遅い業者のティックボリュームが少ない
・レート差は発生しているが約定に時間がかかり不利なレートにされている
などあると思います。業者や口座によっては約定に5秒程度かかる場合もあるので、約定時間を確認してください。
昔のバージョンではその機能がありましたが、逆効果だったので削除しました。
BTCUSDはもともとレート差の変位幅が大きくレート差が0になる訳でもないので、2レッグの方が良いと思いますよ。
まさか、まだアービトラージをやっている人がいることに驚きです。
ここ数年の海外FX業者締め出しによって、アービトラージをあきらめた1人です。
過去には、結構稼がせていただいたのですが今は口座が開けないのでなんともなりません。
横瀬さんは、海外在住なのでしょうか?
私も「いまさらアービトラージなんて無理だろう」と思っていたのですが、「MT5が台頭してきたから高速になったMT5ならもしかしたら…」とダメ元で改良してみたら、意外といける業者がありました。
おそらく、数年前のアービトラージブームのときと比較してトライする人そのものが減少したことによって、お粗末なシステムの業者が放置されていることがごく稀にあるようです。
再度、挑戦しようと思わせていただける記事、コメントありがとうございます。
MT5でトライしてみようと思います。Triangular のほうもMT5の可能性あるんですね。
vsサクソバンクの業者はまだアビトラ環境は生きてますか?
苦労して業者を見つけても意外とすぐ対応されることが多くて悲しいですね。
生きてても生きてなくても、生きてないと答えますよ。
>・遅い業者のティックボリュームが少ない
>・レート差は発生しているが約定に時間がかかり不利なレートにされている
基本的に上の事象が起きると撤退でしょうか。
Arbitrager2.60WithPasscode(1)Exe4をHotforexのMT4のIndicatorフォルダにいれました。更新してMT4のチャートへドラッグしても反映されません。何か方法を間違えていますでしょうか?よろしくお願いいたします。
EAなのでIndicatorフォルダではなくExpertフォルダです。
これって名前つきパイプやDDEで通信しているんですか?
それともファイル関数(Common)でやってるんですか?
ファイル関数だと遅くて使えないとかないですか?
レートがちゃんと更新されないとか。
レート差はどれぐらい開いてから仕掛けるのがよいですか?
数Pips、それとも数十Pips 単位ですか?
MT5ならパイプによるプロセス間通信もできますが、VPS上で上手く稼働しないケースがあるのでファイル関数にしています。
https://www.mql5.com/en/articles/115
ファイル関数については、読み込みと書き込みプロセスがバッティングする可能性があるので、それらをうまく回避するコーディングが必要です。
そこら辺は経験ですね。
また、cTraderならC#なのでパイプ周りのコーディングも楽だと思います。
業者や相場のボラティリティによってマチマチです。相場が荒れている場合はナイフが落ち続けやすいので、トリガーとなるサヤが小さくても大丈夫ですが、相場が落ち着いているときは戻しが発生する可能性があるので、条件を厳しくしないと負けることがあります。
すみません、頂いたプログラムをそのまま使って取引しているのですが、実際のレートとファイル関数で読み込んでいるレート(オブジェクトでチャート上に表示しているレート)がずれることがあります。
(というよりファイル関数で読み込んでいるレートのほうが若干遅れているような気がします。)
これは仕様ですか?
そのため、値幅の設定を1Pips くらいにすると本来レートに差がないのに、差があると誤認してエントリーしてしまっています。
そして、損失になってしまいます。
値幅を大きくすればこの問題は解決しますか?
どうすればよいでしょうか?
EAのバージョンにもよりますが、ChartInterval_in_milsecがデフォルトでは250(ms)になっているので、そのままだと同時にティックを受信したとしても0.25秒~の遅延が発生します。これは人間の目で見ても若干の遅れを十分に認識できるレベルです。
この数値を小さくすればするほど遅延が小さくなりますが、その分負荷も大きくなるのでVPSのスペックとの兼ね合いを見ながら数値を下げていくと遅延が0に近づきます。
あと、値幅の設定1pipsはいくらなんでも小さすぎやしませんか。
スプレッドと取引手数料、約定速度やスリップなどを考慮すると負けると思います。
値幅の設定はどのくらいが良いですか?
横瀬さんはどれくらいでやっていますか?
内緒です。
通貨ペアにサフィックスがついている業者では取引しないのですが、原因は何が考えられますか?
サフィックスなしの業者では普通に稼動しています。
また、実際に乖離が発生している状況で取引しないのを目視しているので勘違いとかではないです。
ご返信よろしくお願いいたします。
通貨ペアのサフィックスはあってもなくても稼働するようにプログラミングしていて、実際にこちらの環境ではこれまで問題が発生していないので、
Unknown Symbol~のようなエラーメッセージが出ていない限りはたまたま取引していない業者にサフィックスが付いていただけです。
取引しない原因は、
EAの取引が許可されていないか、
MT4/MT5の自動売買が許可されていないか、
off quotesか、
フィリングモードの不一致か、
証拠金不足か、
約定拒否か、
最低ロット未満か
別の口座タイプの通貨ペアチャートを開いているか
業者側で取引を制限しているか
VPSがときたまダウンしているかだと思います。
いずれにしてもまずはエラーログ、ジャーナルを確認してください。
業者側が業者間アービトラージの対策として約定拒否、或いは注文発注を出来ないようにすることはありますか?
また、EAの内部を業者が知ることは出来ますか?
あるいは特定の関数を使っていたら売買させないようにするなどの処理を行うことは出来ますか?
例えば、FileCommonを使っていたら約定拒否にするなど。
ログを見るとAutomated trading disabled(取引自体が無効)というログが残っていました。
これはいったいどういう状況で出るメッセージなのでしょう。
ちなみに、業者間アービトラージ以外のEAは正常に稼動しています。
やはり、対策されたということなのでしょうか?
申し訳ないですが、何でもかんでも質問せずに少しは自分で調べようとする試みをしてください。すべて検索すれば答えがわかるものです。
すみません、VPSのプランについてお聞きしたいのですが、
VPS| エクイニクス NY4, LD4, TY3 | Beeks Financial Cloud
https://www.beeksfinancialcloud.jp/services/virtual-private-server-equinix-ny4-ld4-ty3/
だと適切にサーバーを選べば、Pingは下がってその点は良いと思うのですが、マシンのスペックがかなり低スペックなPCになってしまうと思います。
それでも問題ないのですか?
横瀬さんはどのプランで取引しているのですか?
また、専用サーバーのプランだとマシンも高スペックですが、料金が恐ろしく高くなるので正直、手が出せません。
専用サーバ ー| エクイニクス NY4, LD4, CHI1, CHI2, TY3 | Beeks Financial Clohttps://www.beeksfinancialcloud.jp/services/dedicated-server-equinix-ny4-ld4-chi1-chi2-ty3/ud
ただ、業者間アービトラージをやるにはこのくらいのスペックが必要になるのでしょうか?
よろしければ是非教えてください。
>>下記協力します。連絡ください。
per*****hft@gmail.com
レイテンシーアービトラージできるFX業者(特にレートが遅く、スプレッドが広大にならず、スキャルピングOKな会社で、規約でアービトラージを禁止していない業者)の有力情報をお持ちのご協力者募集しております。(下記有名どころは調査済みです。)