MT5の注文はどのように計算されるのか
直接の回答
MetaTrader 5 (MT5) では、「注文計算」とは通常、注文を出すために必要な値を計算することを意味します。とりわけ重要なのは、目標価格(またはトリガーレベル)と、期待される取引量(ポジションサイズ)です。これは、インストゥルメントの契約仕様や、注文のパラメータ(注文タイプ、ロット数、価格フィールド)といった入力に基づいて行われます。したがって、正確な数値結果は単一の普遍的な数式ではありません。入力(注文リクエストとインストゥルメント設定)を組み合わせる「小さな一連の仕組み」であり、注文が約定したときに執行エンジンによって最終確定されます。
あなたが「MT5の注文はどのように計算されるのか」を知りたいということで、最も検証可能な説明方法は、次のようなプロセスとして捉えることです:
- 注文タイプと、その価格/トリガーフィールドを決める
- 指定された価格を、執行時点で想定されるマーケットの見積り(クォート)モデルを使って、執行可能な価格へ解決する
- 選んだ出来高(ロット)を、インストゥルメントの契約仕様にもとづいてポジションの名目エクスポージャーへ変換する
- 実現した約定価格から、後で経済的な数量(例:損益)を計算する
仕組みと定義
注文価格と注文トリガーの違い
MT5の注文は、通常、マーケット執行(即時)や、指値/トリガー条件に基づく執行(将来条件)といったカテゴリに分かれます。「計算」における重要な違いは、プラットフォームがどの“作動する価格入力”を使うかです:
- 成行注文: 「計算」は主に、執行時に実際に約定する執行価格(fill price)の選択にあります。
- 指値注文: トリガーレベル(例:目標価格)に対して計算します。その条件をマーケットが満たしたときに、注文が成立(エントリー可能)になります。
計算結果に影響する共通の入力
注文リクエストには通常、次が含まれます:
- 注文タイプ(成行、または指値/トリガー条件ベース)。
- 指定された価格フィールド(成行の場合は通常固定の目標ではなく、指値の場合は明示的なレベル)。
- 出来高(多くの場合 ロット で表されます)。
- インストゥルメント選択(シンボル)。シンボルが、契約設定と注文を結び付けます。
- 執行および口座設定(例:手数料が課されるか、そしてそれがどのように適用されるか)。
一貫した数値を得るには、MT5はさらにインストゥルメント設定も必要とします:
- 契約サイズ/1ロットあたりの単位数:標準ロットが表す、基礎となる単位数。
- ティックサイズとティックバリュー(または同等の価格の粒度):価格が離散的なステップでどのように動くか、そして価格変動に対して価値がどのように変わるかを定義するために使われます。
- 最小/ステップ出来高:指定したロット数を許可された増分に丸めるために使われます。
確認できる実用的な「数式セット」
MT5の内部実装はブローカーごとに完全に同一ではありませんが、一般的で検証可能なモデルは次のようになります:
-
許可されたステップに出来高を正規化する
- V_req を、要求されたロット数とします。
- V_min を最小ロット、V_step をロットステップとします。
- プラットフォームは実質的に、ステップのルールを満たす正規化された出来高 V_used を使います(実装によっては丸め、または拒否が起こり得ます)。
-
ロットを基礎となるエクスポージャーへ変換する
- C を契約サイズ(1ロットあたりの単位数)とします。
- U = V_used × C を、後の損益計算に使われる名目単位(notional units)とします。
-
執行時の約定価格を決定する
- 成行執行は、現在のクォートと執行モデルに基づく実現された 約定価格(fill price) を使います。
- 指値執行は、トリガー条件を満たす最初の価格を使い、その後に実現された約定価格になります。
-
実現した約定価格からP/Lを計算する(後で)
- 損益は、エントリーと決済(出口)の価格差に依存します。「価格単位あたりの価値」は、ティックバリューまたは同等の契約設定によって決まります。
内部のMT5コードを見たことがなくても、これらが入力と関係性であり、インストゥルメント設定と実現した約定価格が分かれば、結果を再現可能にします。
証拠または例(明示的な前提つき)
「calculated(計算された)」が何を意味するのかを示すために、ブローカー固有ではない単純な教育用モデルを仮定します。
例A:成行注文のサイズとエクスポージャー
前提(あなたの環境からこれらを提示する必要があります):
- あなたはシンボルXに対して成行注文を出します。
- 指定する出来高は V_req = 0.20 lots です。
- シンボルXの契約サイズは C = 100,000 units per lot です。
- プラットフォームは0.01ロットステップを許可しており、0.20を拒否しません。
ステップごとの確認:
- 出来高を正規化: V_used = 0.20(ステップの前提のもとで丸めは不要)。
- 単位へ変換: U = V_used × C = 0.20 × 100,000 = 20,000 units。
この時点で、「注文計算(order calculation)」によるエクスポージャーは完了です。なぜなら、これは注文出来高とインストゥルメント設定だけを使っているからです。後の損益は、実現した約定価格を使います。
例B:指値注文のトリガーと約定の違い
トリガーレベル P_trigger のある指値注文を出すと仮定します。計算は次の通りです:
- システムは、マーケット価格がトリガー条件を満たすまで待ちます。
- トリガーされたとき、執行された約定価格は、執行ダイナミクスのために P_trigger より悪くなる可能性があります。
したがって、検証可能な違いは次の通りです:
- トリガー価格が、成立(エントリー可能性)に影響する。
- 約定価格が、実現した結果に影響する。
この分離が、「計算した期待が結果と一致しなかった」と感じる人にとって最も一般的な理由です。
制限とリスク(計算が崩れる可能性があるもの)
-
執行時のスプレッドとクォートの変化 目標の数値を計算できたとしても、実際の約定は執行時点のマーケット状態を使います。計算と約定の間で、ビッド/アスク、または直近の取引価格が変われば、実現結果は異なる可能性があります。
-
スリッページと部分約定 急変するマーケットでは、執行可能な価格が、注文を準備した時点でプラットフォームが表示していた価格を超えて動くことがあります。ブローカーの執行モデルによっては、約定が分割されることもあります。
-
出来高の丸めとバリデーション 指定したロットサイズは、許可された増分に丸められるか、拒否されることがあります。あなたの「計算」が、指定した出来高そのものを前提としている場合、実際に使われた値と一致しない可能性があります。
-
執行/口座設定で適用されるコスト 手数料、スワップ/ロールオーバーの挙動、その他の手数料は、それらを無視した計算と比べて、純粋な経済的結果を変えることがあります。
-
過去の関係は将来の結果を保証しない 同じシンボルと出来高で過去に約定があったとしても、同じスプレッド挙動、約定価格、コストが後で発生するとは想定できません。
検証と次に確認すべきこと
あなたのケースで「MT5の注文がどのように計算されるのか」を独立して検証するには、自分の環境から安定していて検証可能な入力だけを集めてください:
- シンボルの契約仕様(契約サイズ/1ロットあたりの単位数、ティックサイズ/ティックバリュー、出来高の最小/ステップ)。 - 使用した注文タイプ(成行か、指値/トリガーか)。 - 指定した出来高と、正規化/丸めが行われたかどうか。 - 取引/執行履歴に表示される実現した約定価格(realized fill price(s))。