> ## Documentation Index
> Fetch the complete documentation index at: https://docs.intention.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# 注文の変更

> 有効な注文の価格や数量を変更する方法と、縮める場合にだけ待ち行列の位置が保たれる理由です。

全量約定していない注文については、**価格**と**数量**を変更できます。内部で何が起こるかは、どちらを変えるかによって異なり、その違いは列のどこに並ぶかに実際の影響を与えます。

<h2 id="two-paths">
  二つの経路
</h2>

<div className="dg" data-dg="modify-paths">
  <div className="dg-c" style={{aspectRatio:"720 / 360"}}>
    <svg className="dg-w" viewBox="0 0 720 360" aria-hidden="true">
      <path className="dg-wire dg--blue" d="M 144.00 58.00 L 165.60 58.00" />

      <path className="dg-head dg--blue" d="M 172.00 58.00 L 165.60 62.40 L 165.60 53.60 Z" />

      <path className="dg-wire dg--green" d="M 330.00 58.00 L 355.24 35.28" />

      <path className="dg-head dg--green" d="M 360.00 31.00 L 358.19 38.55 L 352.30 32.01 Z" />

      <path className="dg-wire dg--orange" d="M 330.00 58.00 L 356.76 103.48" />

      <path className="dg-head dg--orange" d="M 360.00 109.00 L 352.96 105.71 L 360.55 101.25 Z" />
    </svg>

    <div className="dg-band" style={{left:"0.0000%",top:"47.7778%",width:"100.0000%",height:"26.6667%"}}><span className="dg-cap">ここでいう数量は残数量</span></div>
    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"8.3333%",width:"19.4444%",height:"15.5556%"}}><span className="dg-t">変更要求</span></div>
    <div className="dg-b dg--yellow dg-round" style={{left:"24.4444%",top:"7.2222%",width:"20.8333%",height:"17.7778%"}}><span className="dg-t">何が変わったか</span></div>
    <div className="dg-b dg--green dg-left" style={{left:"50.5556%",top:"0.0000%",width:"49.4444%",height:"17.2222%"}}><span className="dg-t">数量の減少のみ</span><span className="dg-s">その場で編集、列の位置は維持</span></div>
    <div className="dg-b dg--orange dg-left" style={{left:"50.5556%",top:"21.6667%",width:"49.4444%",height:"17.2222%"}}><span className="dg-t">価格の変更、または数量の増加</span><span className="dg-s">取り消してから新規発注、列の位置は喪失</span></div>
    <div className="dg-b dg--sky" style={{left:"2.2222%",top:"53.3333%",width:"30.7407%",height:"15.5556%"}}><span className="dg-t">数量10の注文が4約定なら残数量は6</span></div>
    <div className="dg-b dg--sky" style={{left:"34.6296%",top:"53.3333%",width:"30.7407%",height:"15.5556%"}}><span className="dg-t">5に変えるのは減少</span></div>
    <div className="dg-b dg--sky" style={{left:"67.0370%",top:"53.3333%",width:"30.7407%",height:"15.5556%"}}><span className="dg-t">8に変えるのは増加、当初の10より小さくても</span></div>
    <div className="dg-b dg--orange dg-left" style={{left:"0.0000%",top:"80.0000%",width:"100.0000%",height:"15.5556%"}}><span className="dg-t">取り消し・再発注はアトミックではない</span><span className="dg-s">新規発注は取り消しが成功した場合のみ試みられ、証拠金で失敗することもあります。元の注文は取り消され、板に注文が残らない状態になります。</span></div>
  </div>
</div>

**数量を減らす場合は、その場で編集されます**。注文は板の同じ位置に留まり、優先順位を保ちます。取り消しも再発注も発生しません。

**それ以外はすべて、取り消しに続く新規発注です**。価格の変更は、原理的に列の位置を保てません。価格が違えば、板の中の位置も違うからです。数量の増加は事情が異なります。増やした分の数量はそもそも列に並んでいませんでしたが、すでに板に出ていた分は並んでいました。それでも現状は注文全体を出し直すため、増やすと、元の数量で得ていた優先順位まで失うことになります。

この切り分けは意図的なもので、あらゆる変更を取り消し・再発注として扱う取引所とは異なります。注文を縮めることは、すでに優先順位を得ている量より確実に少ない量を求めるだけであり、その対価を払わせる理由がありません。

<h2 id="why-queue-position-matters">
  列の位置が重要な理由
</h2>

ある価格帯では、注文は到着した順に約定します。その価格帯の先頭にある注文は、後ろの注文より先に約定します。混み合った価格帯では、先頭と後方の差は、約定するか、相場が離れていくのを眺めるだけかの差になります。

マーケットメイカーにとっては、これがすべてです。列の位置を失わずにリスク管理のために数量を減らせることは、判断しているあいだに到着した全員の後ろへ並び直さねばならないのとは、実質的に別物です。

<h2 id="what-size-means-here">
  ここでいう「数量」とは
</h2>

数量の比較には、当初に送信した数量ではなく**残数量**を使います。

数量10の注文が4だけ約定していれば、残数量は6です。これを5に変えるのは減少であり、その場で編集されます。8に変えるのは、当初の10より小さくても6に対しては増加なので、取り消しと再発注になります。

<h2 id="the-cancel-and-replace-path-can-partially-fail">
  取り消し・再発注の経路は途中で失敗しうる
</h2>

変更が取り消し・再発注の経路を通るとき、二つのステップには順序がありますが、アトミックではありません。

* **新規発注は、取り消しが成功した場合にのみ試みられます**。両方が残ることはありません。
* **それでも新規発注は失敗することがあります**。多くは証拠金が理由です。二つのステップのあいだにマーケットが動いている可能性があるからです。

つまり、想定しておくべき結果が一つあります。**元の注文は取り消され、置き換えとなる注文は存在しない**、という状態です。二重に約定することはありませんが、板に注文が残っているわけでもありません。

<Warning>
  時間に敏感な処理では、変更が成功したと決めつけないでください。その価格帯にまだ有効な注文があるという前提で動く前に、結果として生じた注文が存在することを確認してください。
</Warning>

<h2 id="timing">
  タイミング
</h2>

その場での数量削減は、**現在のブロック**で適用されます。待ちは発生しません。

価格の変更と数量の増加は二段階の経路を通り、通常の取り消しや新規発注と同じ[順序付け](/ja/trading/tx-sequencing)に従います。取り消しは取り消しフェーズで実行され、同じブロック内のテイカー注文より先に走ります。だからこそ、変更と並んで到着した注文に、古くなった気配を拾われずに済みます。

有効期間は引き継がれます。変更された注文は同じ有効期間を保ち、それは置き換え後の注文にも適用されます。

<h2 id="practical-notes">
  実務上の注意
</h2>

* **縮めるのは自由に**。コストは低く、優先順位も失いません。
* **価格の変更は新規注文として扱う**。実際にそうだからです。
* プログラムから変更するなら、**[クライアント注文ID](/ja/trading/client-order-id)を使う**。曖昧なレスポンスが返ってきたとき、推測ではなく、何が存在するかを確認できます。
* **複数のフィールドを一度に変えるときは、明示的に取り消して出し直す**。結果は同じで、失敗時の扱いがはっきりします。

<h2 id="where-to-go-next">
  次に読む
</h2>

<CardGroup cols={2}>
  <Card title="板" href="/ja/trading/order-book">
    価格時間優先が、価格帯内の約定順をどう決めるのかです。
  </Card>

  <Card title="トランザクションの順序付け" href="/ja/trading/tx-sequencing">
    同じブロック内で、取り消しがテイカー注文より先に実行される理由です。
  </Card>

  <Card title="クライアント注文ID" href="/ja/trading/client-order-id">
    曖昧なレスポンスの後に、何が存在するかを確認します。
  </Card>

  <Card title="注文タイプ" href="/ja/trading/order-types">
    有効期間と、変更をまたいで引き継がれるものです。
  </Card>
</CardGroup>
