ロット計算・意思決定ガイド · 13

部分約定では、約定済みポジションと未約定のライブ注文を別々に測る

発注した1.00ロットは、0.55ロットが約定した時点で1.00ロットのポジションになったわけではありません。ただし残り0.45ロットがライブなら、現在の0.55ロットの停止損失に、今後その残りが約定する条件の予約損失を足して予算と比べます。

先に押さえる三点

  • 各約定識別子の数量と価格から累積数量と出来高加重平均約定価格を再構成する。
  • 残数量は数量だけでなく、有効、取消処理中、取消済みの状態も保存する。
  • 約定済み損失とライブ残注文の追加損失を合算し、超過なら残注文を減らすか取り消す。

長期参照の見取り図

条件が変わるたびに使える三段階

相場予想ではなく、入力・計算・適用外判定の順を固定すると、同じ記事を繰り返し検算に使えます。

  1. 入力と単位をそろえる式と定義へ累積約定数量・約定出来高加重平均約定価格・約定済みと残注文の価格差リスク予約額
  2. 仮想例で計算を戻す数値表と手順へ1.00ロット注文が二回に分かれて0.55ロット約定した例
  3. 適用外と次の確認を決める判断ルールと反例へ現在数量は送信量ではなく一意な約定明細の合計から求める。

注文数量は現在ポジションを表さない

1.00ロットを送信しても、板や注文条件によって複数回に分かれて約定します。リスク計算の現在数量は、受理された発注量ではなく、重複を除いた約定明細の数量合計です。

注文状態の約定済み数量や平均約定価格は累積照合に便利ですが、各部分約定を一意に識別する明細とは役割が違います。永続的な約定識別子を主キーにして、約定明細と累積値が一致するか照合します。

  • 親注文識別子と約定識別子を保存する
  • 重複通知を数量へ二重加算しない
  • 取消要求と取消確認を別時刻で記録する

出来高加重平均約定価格から約定済みの停止損失を出す

0.30ロットを1.1000、0.25ロットを1.1010で買った例の出来高加重平均約定価格は1.10045455です。停止価格1.0950までの損失は各約定を個別計算して足しても、出来高加重平均約定価格と累積0.55ロットから計算しても300米ドルになります。

価格精度は表示桁へ途中丸めせず、最後の通貨金額で丸めます。売り注文では損失方向の符号が逆になるため、ポジション方向を明示します。

  • 累積約定数量は0.30 + 0.25 = 0.55ロット
  • 出来高加重平均約定価格は数量加重であり、二価格の単純平均ではない
  • 停止価格と契約単位は同じ価格単位にそろえる

ライブの残りは将来の追加損失として予約する

残り0.45ロットがまだ市場で有効なら、現在ポジションへ含めない一方、ゼロとも扱いません。仮に1.1020で約定し同じ1.0950停止を持つなら315米ドルの価格差リスクを追加予約し、約定済み300米ドルとの価格差合計は615米ドルです。

価格差だけで600米ドル予算を15米ドル超えるため、この仮定では残注文の数量削減または取消確認が必要です。手数料、口座通貨への換算差、追加の不利約定は615米ドルへ含まれないため、該当額を別途加えます。約定価格が未確定な残りには、指値、最悪許容価格、停止注文の連結可否を使って条件付きで計算します。

  • 有効なら予約する
  • 取消処理中なら約定可能性が消えるまで予約を維持する
  • 取消済みを確認した後だけ残注文リスクをゼロにする

即時約定・残余取消と残置注文では同じ残数量でも意味が違う

即時約定・残余取消で未約定分が取り消されたなら、0.45ロットをライブ注文として予約しません。反対に残余継続や無期限で残りが有効なら、画面に部分約定と表示されたまま追加約定が起こり得ます。

注文方針、会場応答、取消確認を一つの真偽値へ潰さず、状態遷移として記録するのが安全です。

部分エントリーと段階決済を混同しない

本稿は、希望したエントリー数量がまだ全部は約定しておらず、残注文が生きている局面を扱います。記事14は、すでに保有したポジションの一部を意図的に決済し、実現損益と残存ポジションを再計算する別の判断です。

  • 未完了の新規注文なら本稿
  • 意図した部分決済後なら記事14
  • 停止価格を建値へ移した後の執行差と費用は記事15

計算の骨格

累積約定数量

先に式の役割を把握し、その後で数値例を追うと判断の流れを確認しやすくなります。

01

累積約定数量

累積約定数量 = 重複を除いた各約定数量の合計
各約定数量: 重複を除いた各約定の数量(ロット)

式を言葉にすると: 現在保有している数量を約定明細から再構成する。

この結論を適用しない条件: 各各約定数量が0以上で同じ数量単位の場合だけ合計し、取消済みの未約定数量や重複イベントは含めません。

02

約定出来高加重平均約定価格

出来高加重平均約定価格 = 各約定数量 × 各約定価格 の合計 ÷ 累積約定数量
各約定価格: 各約定価格
累積約定数量: 累積約定数量

式を言葉にすると: 数量の異なる複数約定を一つの加重平均エントリー価格へまとめる。

この結論を適用しない条件: 累積約定数量が0なら出来高加重平均約定価格を計算せず、未定義として扱う。

03

約定済みと残注文の価格差リスク予約額

価格差リスク予約額 = 約定済み部分の価格差損失 + 未約定残注文の価格差損失
約定済み部分の価格差損失: 約定済みポジションが停止価格まで動く価格差損失
未約定残注文の価格差損失: ライブ残注文が仮定価格で約定して同じ停止へ達する価格差損失

式を言葉にすると: 約定済みと追加約定の価格差損失だけを同じ通貨で予約し、費用、換算差、追加の不利約定は別項目で加える。

この結論を適用しない条件: 約定済み部分の価格差損失と未約定残注文の価格差損失を0以上の同じ口座通貨で定義します。取消確認済みの残りは0、取消要求中は0にしません。本式だけを総損失とは呼ばず、手数料、換算、追加の不利約定を加えてから予算と比較します。

検算可能な例

1.00ロット注文が二回に分かれて0.55ロット約定した例

価格、数量、100,000単位契約、1.0950停止、600米ドル予算はすべて教育用の仮定です。計算は価格差だけで、手数料、換算差、追加の不利約定を含みません。特定市場の流動性や約定結果ではありません。
約定識別子約定数量ロット約定価格米ドル/基軸通貨単位累積約定数量ロット残注文数量ロット
約定10.31.10.30.7
約定20.251.1010.550.45

計算手順

  1. 累積約定数量は0.30 + 0.25 = 0.55ロット、未約定は1.00 − 0.55 = 0.45ロット。

  2. 出来高加重平均約定価格は(0.30 × 1.1000 + 0.25 × 1.1010) ÷ 0.55 = 1.10045455。

  3. 約定済み停止損失は(1.10045455 − 1.0950) × 100,000 × 0.55 = 300米ドル。

  4. ライブ残りを1.1020での約定と仮定すると、追加予約は(1.1020 − 1.0950) × 100,000 × 0.45 = 315米ドル。

  5. 合計価格差予約額は300 + 315 = 615米ドルで、費用などを加える前でも600米ドル予算を15米ドル超える。

結論: 現在ポジションは0.55ロットだが、0.45ロットの残注文がライブなら価格差だけで615米ドルを予約する。費用などを別途加える前に予算を超えるため、残りをそのまま維持しない。

この結論を適用しない条件: 即時約定・残余取消応答で0.45ロットの取消が確認済みなら、ライブ残注文の315米ドルは加えず、約定済み0.55ロットの300米ドルだけを現在の停止リスクとして扱う。

送信数量と現在建玉を切り離す

1.00ロットを送信したという事実は、1.00ロットを保有したことを意味しません。市場や注文条件によっては一部だけが約定し、残りがライブ、取消済み、拒否、期限切れのいずれかになります。現在ポジションは一意な約定明細の数量合計から求め、注文時数量を代用しません。送信イベント、受付イベント、各約定、取消応答を別レコードにし、同じ注文識別子へ結び付けます。画面の進捗率だけを保存すると、後から約定量と残注文の法的状態を再現できません。注文時値は計画履歴として残しますが、停止注文の数量へ自動流用しません。再読込後も三状態が同じ列へ折り畳まれないかを確認し、表形式ファイルにも状態を出力します。送信量、保有量、残注文量の三値には同じ時点の版番号を付け、更新途中の混成値を注文判断へ渡しません。

0.30ロットと0.25ロットの二約定が確認できる時点では、累積約定は0.55ロットです。元注文との差0.45ロットは数学上の未約定量ですが、追加約定し得るライブ量かどうかは注文方針と状態応答で決まります。差分を自動的に建玉へ足さず、残数量と残注文状態を対で持ちます。現在保有0.55、将来増え得る0.45という二層を同じ「実効ロット」へ押し込むと、停止損失と予約損失のどちらを示すか曖昧になります。残り0.45の表示には有効、取消済み、不明のいずれかを必須にします。数量だけの通知が来た場合は状態を前回値で補わず、関連更新事象を再照会します。残数量0.45は状態確認前なら予約対象であり、単なる引算結果を有効注文または取消済みへ決め打ちしません。

SEC規則605のよくある質問が、一注文が複数価格で部分約定し残数量が取り消される例を示すことは、注文数量ではなく個別約定を集計する必要性を支えます。ただしその例が本稿の仮想価格、損失予算、外国為替契約を実証するわけではありません。一次資料から得るのは部分約定という状態構造であり、価格差リスクの合算方法は記事の実装判断です。出典の直接事実と計算上の推論を注記で分けます。資料が扱う株式市場の報告例と本稿の仮想外国為替数量は適用対象が違います。この違いを伏せて、一次資料が600米ドル境界を検証したかのように引用しません。引用範囲の検査では、裏付け範囲文と本文推論を別列に抽出し、仮定数値が出典裏付け済みとして誤分類されないことを確認します。引用箇所が示す市場構造と本稿の仮想損失額を別欄に保ち、出典変更が教育例の金額へ伝播しない設計にします。

画面設計では、注文時、約定済み、残数量、取消保留を隣接表示します。約定済みだけを大きく見せると残注文を忘れ、注文時だけを見せると現在リスクを過大表示します。各値の基準時点の更新事象識別子を示し、更新途中には古い印を付けます。数量の合計整合が取れない瞬間は新規注文候補を出さず、イベント再同期を要求します。状態不一致を0.55か1.00のどちらかへ丸めて進めるのではなく、未確定という第三の結果を許容します。不一致画面には注文時数量−約定済み数量−取消済み数量の残差を表示します。残差が0へ戻った版だけを計算可能にし、同期中の一瞬の値をコピー履歴へ残しません。注文時数量と約定済み数量の残差が解消するまで、コピー操作と新規計算を無効化して一時的不整合を閉じ込めます。

約定識別子を台帳の最小単位にする

部分約定の集計単位は通知メッセージではなく、一意な約定識別子です。同じ約定が注文状態と約定明細の双方で通知される、再接続後に再送される、順序を変えて届くことがあります。メッセージ到着回数を足すと数量を二重計上します。約定識別子を冪等キーにし、既知識別子の再受信は内容一致を検査してから集計を変えません。同じ識別子で数量や価格が異なる場合は訂正イベントとして扱い、黙って最新値で上書きしない設計が必要です。冪等キーが衝突した場合、受信時刻の新しさだけで勝者を決めません。提供元の訂正規則を確認し、元明細と訂正明細の関連が証明できるまで両方を隔離します。同じ約定識別子へ訂正が届いた場合は旧行の有効印を外し、訂正関係が証明されるまで新旧どちらも合計しません。

IBKRの開発者資料の実装例は注文状態で約定済み、残数量、平均約定価格、最終約定価格を受け、約定明細で個別約定を受ける構造を示します。約定参照資料は部分約定ごとに約定識別子、数量、価格、累積数量、平均価格のフィールドを定義します。本稿では個別明細を主台帳にし、ブローカーの累積値を照合値として使います。両者が一致しなければどちらかを自動採用せず、欠測、訂正、重複、単位差を調査します。累積値との照合差は数量と価格を別々に報告します。平均約定価格だけ一致しても約定済みが違えば通過にせず、注文状態の更新版を再取得します。累積値との差異は数量と価格へ分解し、平均価格だけの一致で個別明細が完全だと判定しないようにします。

台帳には約定識別子、注文識別子、銘柄、売買方向、約定数量、約定価格、サーバー時刻、受信時刻を持たせます。複数口座で注文識別子が再利用される可能性を考え、口座識別子や接続時間帯を複合キーへ含めます。個人情報や認証情報を保存せず、監査に必要な非機密識別子へ限定します。部分約定を跨いで銘柄や方向が一致しない場合は、同じ注文の明細として集計しません。サーバー時刻を端末時刻へ変換した値は表示用とし、並び替えには原サーバー処理順を優先します。時計差で同一注文の明細順が逆転しても数量合計は変わりません。複合キーへ口座と接続時間帯を含めることで、別口座で再利用された注文番号を同一約定へ結合しません。

訂正や取消の扱いも追加行で表現します。元明細を削除すると、過去に0.55と表示された理由が消えます。旧版約定への参照を持つ訂正イベントを加え、集計版ごとに有効明細集合を再構成します。約定取消が法的に確定した場合だけ数量から除き、単なる画面取消操作と区別します。集計版、使用した明細識別子一覧、計算ハッシュを保存すれば、後日の修正前後を同じデータから再生できます。訂正前のスナップショットを参照した帳票には旧版印を付けます。集計結果が更新された時点で、影響した停止損失と残量予約を自動的に再評価します。訂正版の適用日時より前の帳票は再発行対象として列挙し、静かに最新値へ差し替えません。訂正前後の帳票を同じ集計版で上書きせず、影響した損失予約の差額を訂正事象へ関連付けます。

出来高加重平均約定価格を数量加重で再構成する

二つの約定価格を単純平均すると、数量が異なる場合に実際の取得原価を表しません。出来高加重平均約定価格はΣ(各約定数量×各約定価格)を累積約定累積約定数量で割ります。0.30ロットを1.1000、0.25ロットを1.1010で約定した例では、分母は0.55で、結果は1.10045455です。価格だけを平均した1.1005との差は小さく見えても、契約数量や停止距離が大きいと金額差になります。式へ投入した各約定識別子を紐付け、どの明細が分子へ入ったかを追えるようにします。計算例の各積を高精度十進数で保持し、1.10045455という表示値を分子へ戻しません。元の0.30×1.1000と0.25×1.1010から再生します。加重平均の分子には採用明細の識別子一覧を持たせ、表示済み出来高加重平均約定価格から元の数量配分を逆算しません。

累積約定数量が0のとき出来高加重平均約定価格は0ではなく未定義です。0を価格として後段へ渡すと、停止距離が巨大になったり符号が反転したりします。結果型に値と状態を分け、約定なしなら建玉損失を計算しません。負数量、異なる数量単位、欠測価格を含む明細も分子へ加えず、入力不正として集計全体を保留します。部分的に正常な明細だけで暫定出来高加重平均約定価格を出す場合は、既知部分という範囲を明示し、全注文の平均とは呼びません。約定なし状態で残注文が有効なら、建玉損失は未発生でも将来予約額は別途必要です。出来高加重平均約定価格未定義を理由に注文全体の状態を消さず、入口価格仮定へ分岐します。約定なしと価格0を別状態にするため、建玉損失と将来予約額がそれぞれどの式を使ったか追跡できます。

売り注文やショート入口でも出来高加重平均約定価格の加重式自体は同じですが、停止損失の符号は方向で決まります。数量へ負符号を埋め込んで方向の代わりにすると、取消や反対売買との区別が崩れます。各約定数量は非負、売買方向は+1または−1の独立フィールドにします。出来高加重平均約定価格は価格中心、損失式で売買方向を用いる構造なら、ロングとショートを対称にテストできます。方向未確定時は損失額を出さず、価格平均だけを検証します。売買方向の分岐試験ではロングの下側の損切りとショートの上側の損切りを用意します。不利方向でない停止は利益シナリオとして混ぜず、入力矛盾を返します。ロングとショートで同じ明細集合を反転した対称試験を行い、数量平均と損失符号の責任を混ぜないようにします。方向の符号と数量の大きさを別項目へ置けば、売買反転時にも出来高加重平均約定価格式を変えず損失方向だけを検査できます。

ブローカーが返す平均約定価格との照合では表示丸めを考慮します。自前値を表示桁へ丸めてから比較せず、可能なら原精度を使い、許容差を記録します。差がある場合、手数料内包、契約単位、訂正未反映、別原価方式を候補にします。値を合わせるため一約定の価格を書き換えません。差額と原因状態を保存し、明細一致が回復するまで残注文を含む新規数量判断を閉鎖します。照合差を許容する場合、価格刻みの半分など根拠を単位付きで設定します。固定小数桁だけの許容幅は、価格水準やティックが変わる商品へ流用しません。照合不能が長引く場合は新しい明細追加を止めず受信しますが、確定集計への昇格だけを保留します。未処理件数を表示します。ブローカー平均値との許容差はティック幅で定義し、表示桁数が変わっても同じ経済差を判定するようにします。

残注文の生存状態を注文方針から読む

未約定0.45ロットが存在するという算術だけでは、その注文が将来約定するか決まりません。即時約定・残余取消では利用可能分だけ約定して残りが取り消される場合があり、残余継続や無期限では残りが処理継続または待機する場合があります。MQL5の銘柄プロパティの注文充足方針定義は、この違いを確認する一次資料です。実際の注文がどの方針で送られ、会場がどの状態を返したかを読み、一般的な名称だけで推定しません。即時約定・残余取消指定がサーバーで別方針へ正規化された場合、要求値ではなく受理された方針を使います。要求と受付の差を注文イベントへ記録し、知らないうちの方針変更を検出します。注文方針の要求値と受理値が違う場合は双方を残し、サーバー側の正規化を利用者の入力履歴から消しません。

取消要求を送った時点は取消保留であり、取消確認済みではありません。要求と確認の間に追加約定が届く競合があるため、0.45を直ちにゼロへしません。確認イベントが元注文と同じ識別子、対象残量、サーバー時刻を持つことを照合します。取消拒否、期限切れ、接続断ではライブ可能性を残します。画面の取消ボタンが押されたことをリスク台帳の消滅条件にせず、外部状態の確定を待つ設計が必要です。取消保留中の予約額には要求時刻と経過時間を付けます。長時間未確認なら0へ近づけず、再照会または接続復旧が必要な状態として強調します。取消保留の経過時間が長くても予約額を逓減せず、確認応答または追加約定が届くまで全残量を維持します。

指値注文なら残りの最悪約定価格を注文上限から置けますが、成行または価格保護のない注文へ現在値を固定値として使うと、実行可能範囲を過小に見積もる可能性があります。予約損失の価格仮定は注文種別、指値、会場規則、観測執行履歴に整合させます。履歴がない場合は仮定と明示し、一次資料がその価格を保証すると表現しません。価格を確定できなければ範囲または未確定として扱います。価格保護のない残りには単一点の最悪値を捏造しません。複数の明示ストレスか未確定範囲を出し、そのどれも停止約定の保証ではないと区別します。仮定価格の作成者、根拠時刻、注文上限との距離を保存します。現在値更新で仮定を無通知に動かさないことも重要です。価格保護のない残注文には単一点の将来価格を置かず、複数ストレスと未確定状態を注文条件から分けて示します。

残注文状態は受信済み、有効、部分約定済み、取消保留、取消済み、拒否済み、期限切れ、不明などの状態機械で管理します。文字列を受信順に上書きするだけでは、遅れて届いた古い有効通知が取消済みを戻す危険があります。サーバー処理順または更新事象の版を比較し、許可された遷移だけを適用します。未知の状態コードを有効でも取消済みでもない閉鎖状態として隔離し、仕様更新を確認するまで数量を確定しません。状態遷移表は提供元の資料の版へ結び付けます。新しい未知コードが届いたら旧コードへ文字列類似で写像せず、元の更新事象とともに調査待ちへ送ります。状態遷移は受信順ではなくサーバー処理順で適用し、古い有効通知が取消済み状態を巻き戻す経路を拒否します。

約定済みと有効な残りの価格差予約を足す

現在の価格差リスクは約定済み0.55ロットの停止損失です。しかし残り0.45ロットがライブなら、追加約定した場合の価格差損失も予算から予約する必要があります。価格差リスク予約額 = 約定済み部分の価格差損失,価格 + 未約定残注文の価格差損失,価格として同じ口座通貨で足します。取消確認済みの残りは0にできますが、取消要求中は含めます。この合計は価格差成分であり、手数料、換算差、停止の不利約定を含む総損失とは呼びません。二項のどちらかが通貨未換算なら加算しません。300米ドルと円建ての別額を数字だけで足す事故を型検査で止め、換算ノードの完了を待ちます。約定済み成分と残注文成分の通貨が違う場合は換算完了まで加算せず、数字だけの615表示を作りません。

仮想例では約定済み出来高加重平均約定価格1.10045455、停止1.0950、契約100,000、数量0.55から価格差損失300米ドルが得られます。残り0.45が1.1020で約定する仮定なら、同じ停止まで315米ドルです。合計615米ドルは600米ドル予算を費用前に15米ドル超えます。ここで1.1020は教育用仮定であり、将来約定の予測や保証ではありません。式の役割は、ライブ残注文を無視した300米ドル表示が不完全であることを示す点にあります。再現表には300、315、615の計算経路とともに、1.1020が仮定であるラベルを各行へ保持します。表外注記だけに頼らずデータ属性にも残します。仮定1.1020の作成者と時刻を行内へ残すことで、相場予測ではなく予約額検査の入力であることを再現できます。

残注文を維持するかという実行判断は本稿が自動推奨しません。計算器は価格差予約が予算を超えた状態を返し、残注文削減または取消後に確認イベントを待って再計算する手順を示します。取消要求だけで315米ドルを消さず、確認済み状態へ遷移した版で0へ更新します。逆に追加約定が届けば、新しい約定を約定済み側へ移し、残数量側から同量を減らします。総量の連続性を各版で検査します。減額や取消という操作候補を表示しても、自動送信は行いません。確認応答が届く前に再計算ボタンが押された場合は、旧予約を保持します。取消要求後も確認前の315米ドルを維持し、応答前の再計算が予算超過を都合よく消さないようにします。

価格差予約額へ費用を加える場合は、範囲と時点を分けます。既に発生した入口手数料、残りが約定した場合の追加手数料、停止執行の滑りを別成分にします。既存出来高加重平均約定価格へ手数料を内包した原価を使うなら二重計上を避けます。換算が必要なら各成分を同じ口座通貨と時刻へそろえます。成分不明の総額を足す場合は重複可能性を示し、精密な損失上限として表示しません。価格差以外の成分が欠測なら既知の価格差予約と未確定の追加費用を並べます。下限615を総額と命名せず、未確定費用件数を近接表示します。未確定の追加費用が解消した順に成分版を更新し、旧下限値には計算時点と未確定項目数を残します。費用内訳が不足する版では既知の価格差予約と未確定件数を並べ、下限値を総損失上限と呼びません。

保護注文の数量カバレッジを照合する

部分約定が起きた後、停止注文が自動的に0.55ロットを保護するとは限りません。連結注文の挙動、会場規則、ブローカー実装によって、親注文完了まで保護が出ない、約定ごとに増える、固定量のままになる場合があります。建玉の約定済み数量と有効な保護注文数量を別接続仕様から取得し、差を未保護数量として表示します。注文画面に損切り価格が見えるだけで数量カバレッジを確認済みとしません。有効な保護注文数量は停止注文の送信量ではなく、会場が受け付けた有効残量から取得します。部分約定済みの停止を全量有効と誤読しません。有効保護量は会場受理後の残量から取得し、送信した停止数量や画面上の線だけをカバレッジ証拠にしません。

保護注文を手動更新する場合、変更要求と確認の間に約定または価格変化が起きます。旧停止の残量、新停止の受付量、取消状態を時系列で追い、一時的な重複や空白を検出します。二つの停止が同時に有効なら過剰決済の可能性があり、どちらも未確認なら未保護です。処理を一つの最終状態だけで記録せず、遷移区間の継続時間と最大未保護金額を監査します。一時的重複で両停止が約定する可能性は、単なる表示ちらつきではありません。注文識別子ごとの有効量を合計し、建玉を超える量を過剰保護として警告します。重複区間の二注文が同時発動した仮想更新事象も作り、建玉反転を起こし得る数量が検出されるかを確認します。二つの保護注文が同時に有効な区間では合計数量を計算し、建玉超過分が反対建玉へ変わる可能性を示します。

残注文0.45ロットが追加約定したとき、保護量が連動するかをテストします。約定通知が先、停止更新が後、取消確認が遅延という順序を入れ替え、どの時点でも現在ポジションと保護量の差が表示されることを確認します。自動化が追随できない場合、新規追加量の計算を止めます。未保護時間を価格差予約615米ドルへ単純加算できる固定値とはせず、別の執行リスク状態として扱います。追加約定テストでは0.45全部と一部0.10の双方を用意します。後者なら約定済み0.65、残数量0.35へ連続的に変わり、保護量の差も0.10単位で更新されるべきです。0.10追加後に残り全量取消となる順序も試し、保護量更新と取消量の合計が注文時数量1.00へ一致するかを見ます。追加0.10約定後は約定済み0.65と残り0.35を同時更新し、注文時1.00との数量保存則を版ごとに確認します。

保護注文の価格がティック格子や最小距離規則に違反して拒否された場合、親の部分約定は消えません。拒否を受けたら損切り損失額を0と仮定せず、未保護状態へ遷移します。代替価格を自動で遠ざける場合は、分析上の損切り水準との距離差と損失増加を再計算し、利用者の承認前に旧数量を安全と表示しません。注文仕様の変更は数量リスクへ反映し、別画面のエラーで終わらせないことが重要です。自動代替損切りが遠くなるほど価格差損失が増える単調性を検査します。拒否後に停止価格欄が空でも、旧損失値を現行通過として残しません。拒否理由が最小距離なのか市場休止なのかを区別し、再送可能時刻と再計算条件を別フィールドで持たせます。損切り注文拒否の理由と再送可能時刻を分け、価格を遠ざけた代替注文の損失増加を承認前に再計算します。

非同期の更新事象を一貫したスナップショットへ束ねる

注文状態、約定明細、取消応答は別チャネルから異なる順序で届き得ます。受信した最新行をそのまま画面へ足すと、一時的に約定済み+残数量が注文時を超えることがあります。イベントを注文集計へ適用する際、版管理スナップショットを作り、明細合計、累積値、残量の整合を検査します。不一致版は監査用に残しつつ、数量判断へ公開しません。一定時間後も解消しない場合は再同期を要求し、都合のよいフィールドだけを採用しません。不一致スナップショットの件数と継続時間を品質指標にします。すぐ解消する順序差と長期欠測を分け、同期警告を減らす目的で待機窓を無制限に延ばしません。不一致スナップショットを判断用へ昇格させず、継続時間を測って一時的順序差と長期欠測を区別します。

ネットワーク再接続後は、ローカルキャッシュとサーバー上の保有注文、約定を突合せます。切断中の約定が抜けている可能性があるため、前回約定済みを現在値として継続しません。約定識別子で差分を取り、未知明細を追加し、サーバーにない有効注文は取消確認か履歴を照会します。再接続時刻以前の遅延通知を新規約定として二重加算しないよう、識別子とサーバー時刻の両方を見ます。再接続照合の基準時点を明示し、切断直前に受信済みだった更新事象まで重複追加しません。照合完了まで保護量と残注文を不明表示にします。再接続時には未知約定の追加と重複除外を識別子で行い、照合完了まで残注文と保護量を不明にします。

複数端末や手動介入も状態競合を作ります。他端末で残注文が取り消された、数量が変更された場合、ローカル画面の操作履歴だけでは完全でありません。サーバー状態を権威ある外部観測としつつ、ローカル要求履歴も因果説明のため保存します。差があれば外部変更と分類し、新しい集計版を発行します。誰が変更したか不明でも状態を推測で元へ戻しません。外部変更が保護注文を削除していた場合、ローカルの希望状態へ自動復元する前に現状リスクを計算します。勝手な再送で二重注文を作らないためです。他端末の変更を外部変更として新しい集計版へ記録し、利用者の希望状態へ自動的に注文を戻しません。

スナップショットには基準時点、サーバー処理順、含まれる約定識別子一覧、有効注文識別子、保護注文識別子一覧、計算コード版を含め、内容ハッシュを付けます。監査レポートが参照したハッシュと現在画面のハッシュが違えば、同じ注文でも別状態です。後からイベントが訂正された場合は旧スナップショットを削除せず旧版にし、当時判断と訂正後再計算を比較可能にします。スナップショットのハッシュは構造化データのキー順や表示空白に左右されない正規形式から作ります。同じ経済状態が表記差だけで別版になることを避けます。正規化済み内容からハッシュを作ることで、構造化データの並び順だけが違う同一状態を別版として扱いません。

即時約定・残余取消取消済みという反例を正しく処理する

0.55ロット約定後、即時約定・残余取消応答で残り0.45ロットの取消が確認済みなら、ライブ残注文の315米ドル予約は不要です。現在の価格差停止リスクは約定済み部分の300米ドルだけになります。この反例は、部分約定があれば常に元注文全量を予約し続けるという過大一般化を防ぎます。ただし取消済みの根拠は注文方針名ではなく、当該注文の確定応答です。即時約定・残余取消を指定したつもりという入力だけで残りを0にしません。取消済み判定を行った更新事象識別子を300米ドル行へリンクします。後から取消訂正が届けば当該根拠を失効させ、315相当の予約を再び評価します。取消事象の取得元、サーバー処理順、取消数量を三点照合します。成功ラベルだけの応答では予約を解除しません。即時約定・残余取消という名称ではなく取消数量と処理順を照合し、取消済み予約315米ドルを解除した根拠を一意に残します。

取消確認には取消数量と残数量0の整合を求めます。0.45全量が取消されたのか、追加0.10約定後に0.35だけ取消されたのかで約定済みが変わります。確認イベント前後の約定を同じサーバー処理順で再構成し、注文時 = 約定済み + 取消済み + 拒否残量の保存則を検査します。端数や単位変換で一致しない場合は、300米ドルへ確定せず状態不一致とします。保存則の残差には刻み精度を用い、浮動小数点の微小差を未知数量として増幅しません。許容差を超えた場合だけ再同期へ遷移します。注文時数量の保存則には刻み精度を使い、浮動小数の微差と実際の未照合数量を別々に判定します。

取消済みでも約定済み0.55ロットの停止執行、手数料、換算は残ります。残注文予約が消えたことを総リスクゼロと表示しません。価格差300米ドルと別費用・滑り成分を再計算し、保護注文量を確認します。キャンセル成功メッセージをポジション解消と混同しないよう、新規注文残と保有建玉を別カードで表示します。取消成功と建玉決済のアイコンを分けます。0.55ロットが残る画面で「完了」の一語だけを出さず、何が完了したかを文で示します。取消操作の完了表示には保有建玉残量と有効な損切り量を並べ、次に確認すべき状態を具体的に示します。取消成功の表示には保有0.55と有効保護量を併記し、残注文の解消を建玉決済完了と誤読させません。

逆の反例として、残りが有効でも追加約定価格に上限があり、その上限までの予約と費用を含めて予算内なら、部分約定だけを理由に必ず取消す必要はありません。本稿は状態と金額を可視化するもので、注文維持を一律に禁止しません。適切な結論は、確認済み状態、明示価格仮定、同一通貨の総成分を予算方針と比較して得ます。予算内の有効な残注文でも、保護量欠測や通貨換算未確定なら別理由で閉鎖状態になります。価格差通過を全検査通過へ昇格させません。有効維持の判断ログには予算比較だけでなく、注文上限、保護量、未確定費用を含めます。後日の市場結果で判断理由を書き換えません。残注文維持が予算内でも保護量や費用が未確定なら閉鎖状態とし、価格差だけの通過を全検査へ広げません。

部分約定固有の誤用を敵対的に再現する

第一の変異試験は重複通知です。同じ約定識別子を二回、別順序で注文状態と約定明細へ流し、約定済みが0.55を超えないことを確認します。次に同じ識別子で価格だけを変え、単なる再送ではなく競合になるかを見ます。識別子欠測の通知を時刻と数量だけで既知明細へ推測結合せず、未照合の更新事象として隔離します。重複除去が強過ぎて正しい別約定を落とさないよう、異なる識別子で同数量・同価格の二件も用意します。重複試験の期待値は本番集計関数とは別に明細集合から手計算します。同じ重複除去の補助処理を両側で使い、共通欠陥により通過する構造を避けます。重複通知と同価格の別約定を同時に投入し、識別子に基づいて前者だけを落とすことを検査します。

第二は取消競合です。取消要求、追加約定、取消確認済みの順を複数パターンへ入れ替え、最終約定済みと取消済みが保存則を満たすかを検査します。取消要求直後に予約315米ドルが消えないこと、追加約定が届けば約定済み側損失へ移ることを確認します。古い有効通知が最後に届いても取消済み状態を巻き戻さないかを試します。取消競合で最終量が同じでも、中間の未保護の継続時間は順序で変わります。終点数量だけで二つの更新事象の順序を同一ケースとして扱いません。取消競合は終点数量だけでなく中間の未保護時間も比較し、異なる事象順序を同じ経路へ畳みません。

第三は価格と単位の異常です。約定数量が負、契約単位が異なる、価格が欠測、損切りが不利方向でない、契約乗数が0のケースを与えます。非数や無限大を0米ドルへ変換せず、価格差予約を未確定にします。出来高加重平均約定価格計算だけ通って損失式が失敗した場合、前回の615米ドルを現行結果として残さないことも確認します。エラー状態から発注・コピー・表形式ファイル出力へ値が漏れないかを統合試験します。異常入力を拒否した行には約定識別子と失敗フィールドを残します。問題行を単に除外して残り明細だけを正式出来高加重平均約定価格と呼ぶことはしません。部分的に有効という中間出力が表形式ファイルで完全値に見えないよう、状態列と欠測約定件数を必須にします。異常明細を除いた暫定出来高加重平均約定価格には不完全状態を付け、表形式ファイルで正式値に見える行を生成しないようにします。

第四は予算境界です。価格差予約が600米ドルちょうど、わずかに下、わずかに上となる値を十進精度で作ります。表示丸めで615が600に見える問題、通貨換算後の丸めで超過が隠れる問題を検査します。費用前通過と費用込み不合格を別状態で返し、価格変動分のみ値を総損失上限として報告しないことを確認します。費用を加えた総額が境界を跨ぐ標本も置きます。価格差予約額だけ600以下でも手数料追加後に超える場合、二つの判定を別列で返します。予算判定には十進文字列の原値を添え、帳票表示が600へ丸められても内部の超過額を再現できるようにします。費用前と費用込みの境界を別列へ置き、表示丸めで600米ドルへ見えても内部超過額を保持します。

注文記録と口座明細を独立照合する

日次または取引後の照合では、ローカル約定台帳をブローカーの確定明細と突き合わせます。約定識別子、数量、価格、手数料、時刻、注文識別子の一致を確認し、件数だけで通過にしません。ローカルにのみある明細、明細にのみある約定、同識別子差異を別カテゴリで報告します。差異が解消するまで当該注文の分析値を確定実績へ昇格させません。照合ファイルの取得時刻と対象期間を固定します。翌日の訂正版を当日原本として扱わず、再照合による変更を版差として報告します。確定明細の後日訂正を検出したら、照合済みバッジを失効させ、影響注文の出来高加重平均約定価格と予約額を再計算待ちにします。確定明細の訂正版を受けたら照合済み印を失効し、影響する出来高加重平均約定価格と予約額を新しい版で再計算します。

平均価格と累積数量が一致しても、個別明細が欠けていれば監査は不完全です。二つの誤差が相殺して同じ出来高加重平均約定価格になることがあるためです。個別識別子集合の一致、数量総和、加重価格、残注文状態を段階的に検査します。ブローカー明細が日次集約しか提供しない場合は独立性の限界を記録し、完全な約定照合と同じ通過ラベルを使いません。個別識別子集合の差分は追加、欠落、内容変更へ分けます。件数一致でも一件ずつ入れ替わっているケースを見逃さないよう集合比較を行います。入れ替わった二識別子の数量が同じ場合にも集合差が残ることを検査例で確認し、集計一致だけの早期終了を防ぎます。個別識別子集合の差分を追加、欠落、変更へ分け、件数と加重平均の偶然一致を完全照合と呼びません。

差異の影響額は、誤った約定済み、出来高加重平均約定価格、残量を一因子ずつ正しい値へ置換して求めます。損失差をすべて価格へ帰属させず、数量、換算、費用、停止執行を分解します。原因不明の残差は不明として残し、その他費用で帳尻を合わせません。訂正後は旧スナップショットと新スナップショットのハッシュ、差額、影響期間を報告します。反実仮想の置換順を保存し、同時置換で寄与が隠れないようにします。相互作用がある場合は単純加算で100%配賦せず、残差へ残します。相互作用の例として数量訂正と価格訂正が同時に起きる標本を置き、各単独効果と同時効果を並べます。数量と価格の同時訂正には交互作用残差を残し、各単独効果を足して100%配賦したように見せません。

標本監査は注文種別、部分約定回数、会場、時間帯、取消有無で層化します。完全約定だけを大量に含めて部分約定処理の品質を高く見せないよう、希少な競合ケースに最低件数を設けます。再現に必要な更新事象識別子や時刻が欠けた割合も指標にします。結果一致でも証跡がなければ、再現可能性の通過には含めません。監査対象の抽出乱数種を保存し、同じ母集団から再現可能にします。取消競合のような希少層はランダム任せにせず必須標本へ含めます。希少層の母集団が少ない場合は全件監査とし、標本率100%でも証跡欠測を通過へ含めない基準を維持します。抽出根拠も残します。取消競合など希少層を必須抽出へ入れることで、完全約定の多数標本が部分約定処理の欠陥を隠しません。

価格差予約の責任範囲を閉じる

本記事の計算が確定するには、個別約定が一意、累積約定数量と出来高加重平均約定価格が再構成可能、残注文状態が確認済み、価格仮定が注文条件と整合、全金額が同じ通貨である必要があります。一つでも欠ければ価格差損失予約を数値で確定しません。0.55という現在建玉と0.45という有効可能量を別々に示し、合算615米ドルの成分を第三者が追えるようにします。確定条件の検査結果は一つの通過ではなく、台帳、注文状態、価格仮定、通貨の四群で表示します。どの群が未完了かを示します。確定条件を台帳、注文状態、価格仮定、通貨の四群で示し、一つの通過表示へ未完了理由を埋没させません。

615米ドルは手数料、換算差、追加の不利約定を含まない教育用の価格差予約です。したがって600米ドル予算を15米ドル超えたという結論は費用前でも超過していることを示しますが、総損失を615米ドルへ限定しません。一次資料が支持するのは部分約定明細、注文状態、充足方針の構造であり、仮想価格や予算の適切性ではありません。事実と仮定を分けます。費用前超過という語を結果行へ直接付けます。615米ドルだけを大きく表示して完全な最悪損失と誤認させず、未算入項目を同じ視野へ置きます。未算入の手数料、換算、滑りを箇条書きで隣接表示し、折りたたみ初期状態で隠さないアクセシビリティも確認します。615米ドルの結果行へ費用前超過と未算入項目を直記し、教育用予約額を完全な最悪損失へ拡張しません。

残数量が取消確認済みなら予約を約定済み300米ドルへ更新でき、累積約定数量が0なら出来高加重平均約定価格と建玉損失を計算しません。これらの境界は、常に元注文全量をリスクとする誤りと、送信直後に全量保有とする誤りの双方を防ぎます。状態ごとに適用式を変え、空欄や0だけで理由を表しません。累積約定数量=0と取消済み残注文=0は異なる終点です。前者で有効注文が残る場合と、後者で何も残らない場合を同じ「建玉なし」へまとめません。二つのゼロ状態は状態コードと適用式が異なります。監査集計でも同じ数量0の分類へ入れず、誤った停止率を避けます。約定なしと取消済み残量0には異なる状態コードを与え、同じ数量0分類へ集約して停止率を歪めません。

本稿は特定注文、取消、数量、会場を推奨せず、部分約定後の損失上限や停止価格での約定を保証しません。実際の注文方針、取消時刻、保護注文、通貨換算、費用はブローカーと時点で異なります。出力は検証可能な状態台帳と教育用計算であり、未確定イベントが残るときに数量を出さないことも正しい終点です。教育用台帳を実運用へ移す場合は、提供元固有の更新事象の項目構造と注文方針を再確認します。例示識別子や仮定価格を初期値として送信系へ埋め込みません。実装移行前には模擬環境の更新事象で順序競合を再生し、仮想例の数値一致だけで提供元接続を承認しません。承認版と試験ハッシュを残します。実運用への移行では提供元固有の事象順序を模擬環境で再生し、例示数値の一致だけで接続を承認しません。

判断・管理ルール

  1. 現在数量は送信量ではなく一意な約定明細の合計から求める。
  2. 出来高加重平均約定価格、約定済み数量、残数量が明細と一致しないときは新規数量を出さない。
  3. 取消確認前の残数量はライブの可能性があるものとして予約する。
  4. 約定済みとライブ残注文の価格差損失を同じ通貨で合算し、費用、換算差、追加の不利約定を別途加える。
  5. 合計が予算を超えるなら残注文を減らすか取り消し、確認後に再計算する。

誤りやすい点

  • 1.00ロットを送った時点で1.00ロット保有と記録する。
  • 0.55ロットを二つの約定価格の単純平均で評価する。
  • 取消要求を送っただけで残数量をゼロにする。
  • 注文状態の重複通知を二回加算する。
  • 段階決済後の残存ポジションを未約定エントリーと同じ扱いにする。

根拠資料

  1. SEC — Frequently Asked Questions: Rule 605 of Regulation NMS

    この資料が支える範囲: SECの規則605のよくある質問は、一つの注文が複数価格で部分約定し、残数量が取り消され得る具体例を示しており、注文数量ではなく各約定数量と価格を集計する必要性を支える。

  2. IBKR Campus — Placing Orders using TWS Python API

    この資料が支える範囲: IBKRの現行学習資料教材は注文状態で約定済み、残存、平均約定価格、最終約定価格を受け、約定明細で個別約定を受ける実装例を示している。

  3. Interactive Brokers Documentation — Execution Reference

    この資料が支える範囲: IBKRの現行執行リファレンスは各部分約定に個別の約定識別子があり、約定数量、価格、累積数量、平均価格のフィールドを持つと定義している。

  4. MQL5 Reference — Symbol Properties

    この資料が支える範囲: MetaQuotesは即時約定・残余取消では利用可能分だけ約定して残りが取り消され、残余継続では残りが処理継続されると定義しており、未約定数量がライブか取り消し済みかを注文方針から判定する根拠になる。

よくある確認

平均約定価格だけ保存すれば十分ですか。

不十分です。監査や重複除去のため約定識別子、各数量・価格、時刻を保存し、ブローカーの累積値と照合します。

残数量が表示されたら必ず追加約定しますか。

必ずではありません。即時約定・残余取消なら取り消される場合がありますが、残余継続や無期限では残る場合があります。注文方針と確認済み状態を読みます。

残りの約定価格が不明ならどう計算しますか。

指値や最悪許容価格など、注文条件と整合する明示的な仮定を置きます。価格保護のない注文に現在値だけを固定値として使いません。

部分約定のたびに停止注文も更新しますか。

保護注文が約定済み数量を実際にカバーしているかを確認します。連結注文の挙動は会場・ブローカー仕様に従い、未保護時間も別途記録します。

現在の入力値で再計算する

ロット計算機へ約定済み数量、出来高加重平均約定価格、有効な残数量を別々に入力し、価格差予約額へ費用等を加えて予算と照合してください。

重要事項: これは部分約定状態の再計算を説明する教育資料です。実際の注文状態、取消時刻、約定価格、保護注文の挙動はブローカーと会場で異なり、損失上限を保証しません。