MT5で約定遅延を測る:発注から成立までを記録

EAの実運用では、発注時の価格と実際の約定価格だけでなく、その間に何ミリ秒かかったかが執行品質を左右します。MT5で発注時刻・約定時刻・価格差を記録し、遅延とスリッページの関係を検証する計測方法を整理します。

スリッページだけでは執行劣化の原因が分からない

EAの実運用でバックテストとの差を調べる際、約定価格と発注時の価格との差だけを記録しても原因は特定しにくい。注文処理中に市場価格が動いたのか、流動性が薄く提示価格で成立しなかったのかを分けるには、価格差と同時に時間差を測る必要がある。

MT5では注文要求を送った瞬間と、約定を確認した瞬間を別々に記録できる。ここから発注から成立までの経過時間を計測すれば、スリッページと遅延の関係を実データで検証できる。

発注時と約定時の状態を一組で保存する

計測ログには最低限、注文ID、売買方向、発注時刻、発注時Bid・Ask、約定時刻、約定価格を保存する。時刻は可能な範囲でミリ秒単位を維持し、発注時の価格も後からティック履歴へ依存せず復元できるよう、その場で記録する。

MQL5では注文送信前に時刻と価格を取得し、取引イベントを処理するOnTradeTransactionで成立情報を受け取る設計が使える。同期型の注文処理だけで所要時間を測るより、注文要求と実際の取引成立をIDで対応させる方が、部分約定などにも拡張しやすい。

遅延と価格差を分布で比較する

ログ取得後は、経過時間を50ミリ秒未満、50~100ミリ秒、100~250ミリ秒などの帯に分け、それぞれのスリッページ分布を比較する。区切り自体に普遍的な正解はないため、自分のデータ量と分布に合わせて設定する。

平均値だけでなく中央値、90%点、95%点を確認することも重要だ。遅延が長い帯ほど価格差の上位分位点が拡大するなら、時間経過が執行コストへ影響している可能性を検証できる。時間帯やスプレッド水準も併記すれば、遅延そのものと市場流動性の悪化も切り分けやすい。

まとめ

約定価格の差だけでは、EAの執行劣化がどこで生じたかは分からない。発注時刻、約定時刻、発注時価格、約定価格を一組で保存し、遅延とスリッページを同時に測ることが必要になる。

MT5を売買ロジックの実行環境だけでなく執行の計測器として使えば、バックテストと実運用の差を時間と価格の両面から分解できる。改善すべき対象を特定するためにも、まず注文処理を観測可能なデータへ変えることが重要である。

ABOUTこの記事をかいた人

MetaTrader 5 向けの検証ツールを開発しています。個人開発です。 扱っているのは売買の方向を示すシグナルではありません。スプレッドや手数料といったコスト、スリッページを含む約定の実態、口座全体のエクスポージャー——損益の構造側を数値で可視化する道具です。 実運用の記録は GogoJungle の REAL TRADE で第三者計測・公開しています。 詳細は「このサイトについて」をご覧下さい。 ご要望はこちらで承ります。