> ## 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="three-shapes">
  三つの形
</h2>

同じトリガー機構が三つの異なる意図に使われます。違いは、何に紐づいているかです。

| 形             | 紐づく対象           | 主な用途                        |
| ------------- | --------------- | --------------------------- |
| **単独**        | なし              | 価格が特定の水準を抜けたらポジションを取る       |
| **注文に紐づけ**    | 発注しようとしている特定の注文 | 建てるのと同時にテイクプロフィットとストップロスを設定 |
| **ポジションに紐づけ** | そのマーケットのポジション   | 何で建てたかによらず、保有中のポジションを保護     |

三つ目は、最も注文らしくない挙動をします。数量ではなくポジションにスコープが張られているため、ポジションのサイズが変われば、それに追随します。[テイクプロフィットとストップロス](/ja/trading/tp-sl)を参照してください。

<h2 id="triggering">
  発動の仕組み
</h2>

条件付き注文が発動するタイミングは、二つの要素で決まります。どの価格を監視するか、ブロックのどこでその判定が走るかです。

**どの価格か**。トリガーはマーク価格か最終取引価格のいずれかを監視できます。[マーク価格](/ja/trading/mark-price)は平滑化されていて動かしにくいため、保護目的の注文には安全な既定値です。最終価格は反応が速く、実際に約定として流れる価格に近いので、それを求める戦略もあります。選択は注文ごとに行います。

**ブロック内のどこか**。条件付き注文はマッチングの前にスキャンされ、ブロック開始時点で確定したマーク価格を使います。このブロックの価格で発動した注文は、次のブロックではなくこのブロックで有効な注文になります。優先順位の全体像は[トランザクションの順序付け](/ja/trading/tx-sequencing)を参照してください。

<div className="dg" data-dg="conditional-trigger">
  <div className="dg-c" style={{aspectRatio:"720 / 320"}}>
    <svg className="dg-w" viewBox="0 0 720 320" aria-hidden="true">
      <path className="dg-wire dg--blue" d="M 174.00 183.00 L 199.60 183.00" />

      <path className="dg-head dg--blue" d="M 206.00 183.00 L 199.60 187.40 L 199.60 178.60 Z" />

      <path className="dg-wire dg--yellow" d="M 384.00 183.00 L 407.60 183.00" />

      <path className="dg-head dg--yellow" d="M 414.00 183.00 L 407.60 187.40 L 407.60 178.60 Z" />

      <path className="dg-wire dg--green" d="M 562.00 183.00 L 575.60 183.00" />

      <path className="dg-head dg--green" d="M 582.00 183.00 L 575.60 187.40 L 575.60 178.60 Z" />

      <path className="dg-wire" d="M 295.00 226.00 L 295.00 248.00 L 85.00 248.00 L 85.00 232.40" />

      <path className="dg-head" d="M 85.00 226.00 L 89.40 232.40 L 80.60 232.40 Z" />
    </svg>

    <div className="dg-band" style={{left:"0.0000%",top:"8.1250%",width:"100.0000%",height:"26.8750%"}}><span className="dg-cap">トリガーが監視するのはどちらか</span></div>
    <div className="dg-b dg--green" style={{left:"2.2222%",top:"15.6250%",width:"46.6667%",height:"14.3750%"}}><span className="dg-t">マーク価格</span><span className="dg-s">平滑化され動かしにくい。安全な既定値</span></div>
    <div className="dg-b dg--sky" style={{left:"51.1111%",top:"15.6250%",width:"46.6667%",height:"14.3750%"}}><span className="dg-t">直近約定価格</span><span className="dg-s">反応が速く、画面に流れる約定に近い</span></div>
    <div className="dg-b dg--blue" style={{left:"0.0000%",top:"45.6250%",width:"23.6111%",height:"23.1250%"}}><span className="dg-t">トリガーストアで待機</span><span className="dg-s">列の位置も板の厚みも占めない</span></div>
    <div className="dg-b dg--yellow dg-round" style={{left:"29.1667%",top:"45.0000%",width:"23.6111%",height:"24.3750%"}}><span className="dg-t">条件は成立したか</span></div>
    <div className="dg-b dg--yellow" style={{left:"58.0556%",top:"45.6250%",width:"19.4444%",height:"23.1250%"}}><span className="dg-t">成行または指値注文に変換</span></div>
    <div className="dg-b dg--green" style={{left:"81.3889%",top:"45.6250%",width:"18.6111%",height:"23.1250%"}}><span className="dg-t">同じブロックでマッチング</span></div>
    <div className="dg-free dg-mid" style={{left:"0.0000%",top:"86.8750%",width:"100.0000%"}}><div className="dg-n">走査はマッチングの前に、ブロック開始時点で固定されたマークに対して行われます。</div></div>
    <div className="dg-lbl" style={{left:"26.3889%",top:"77.5000%"}}>未成立。次のブロックで再判定</div>
  </div>
</div>

<h2 id="linking">
  注文どうしの連動
</h2>

条件付き注文が単独で使われることはまれです。連動のパターンは三つあり、それぞれ取り消しの意味づけが異なります。

**テイクプロフィットとストップロスは互いを取り消します**。保護のペアはOCO、つまり一方が成立すればもう一方を取り消す関係です。いずれかのレッグが発動すれば、もう一方は自動的に取り消されます。ポジションを閉じたのに有効なストップだけが残る、ということは起こりません。

**注文に紐づけたペアは親注文に追随します**。発注する注文にテイクプロフィットとストップロスを付けた場合、そのペアは親注文が約定するまで有効になりません。親注文が約定前に取り消されれば、紐づいたレッグも一緒に消えます。

**ポジションに紐づけたペアはポジションに追随します**。自分の注文、強制決済、デレバレッジのいずれでポジションがクローズされても、そこに紐づいた保護注文は取り消されます。保護対象があるから存在する注文であり、対象が消えれば注文も消えます。

<Note>
  連携実装が最も間違えるのはここです。保護対象のポジションより長生きしたストップは、次にトリガーが成立した時点で、反対方向に*新しい*ポジションを建ててしまいます。これを防ぐのが連動であり、注文を出したクライアントではなくプロトコル側が強制します。
</Note>

<h2 id="order-states">
  注文の状態
</h2>

条件付き注文は定義された状態のあいだを遷移し、遷移はすべて観測可能なプロトコルイベントになります。

| 状態            | 意味                          |
| ------------- | --------------------------- |
| **Waiting**   | 受理済み。トリガー価格を監視中             |
| **Triggered** | 条件成立。変換されマッチングに送られた         |
| **Filled**    | 変換後の注文が約定                   |
| **Cancelled** | 自分で取り消したか、連動により片方の発動で取り消された |
| **Rejected**  | 検証に失敗。発注時と変換時のいずれでも起こり得る    |

意外に思われるのは**変換時の拒否**です。注文が受理され、何時間も待ち、正しく発動しても、そこで失敗することがあります。条件は発注時だけでなく変換の瞬間にも再チェックされるからです。証拠金が足りなくなっているかもしれません。リデュースオンリーの条件付き注文なら、減らすべきポジションが残っていないかもしれません。トリガーは確かに成立しましたが、そこから生まれた注文が生き延びられなかった、ということです。

<h2 id="checks-at-placement-and-at-conversion">
  発注時と変換時のチェック
</h2>

異なる二組のルールが、異なる二つのタイミングで適用されます。

**発注時**、プロトコルはトリガー価格が指定された方向として筋が通っているか（即座に発動するストップロスは戦略ではなくミスです）、トリガーが現在価格から許容される範囲内にあるかを確認します。未約定注文の件数上限とレート制限もここで適用されます。

**変換時**には、その瞬間のポジションに対して証拠金の充足が再評価され、リデュースオンリーの制約も再チェックされます。条件付きの成行注文には、通常の成行注文と同じスリッページ保護がかかります。[成行注文とスリッページ保護](/ja/trading/market-to-limit)を参照してください。

<Warning>
  条件付き注文は約定を保証するものではありません。保証されるのは、条件が成立したときに注文が*送信される*ことだけです。急変動では、そこから生まれた注文がトリガー価格から大きく離れて約定することも、指値への変換であればまったく約定しないこともあります。保護注文は価格の飛びに対するリスクを減らしますが、なくすわけではありません。
</Warning>

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

<CardGroup cols={2}>
  <Card title="テイクプロフィットとストップロス" href="/ja/trading/tp-sl">
    二つの保護の形と、ポジションが変わったときの挙動です。
  </Card>

  <Card title="マーク価格" href="/ja/trading/mark-price">
    保護目的のトリガーが監視すべき価格と、それが平滑化されている理由です。
  </Card>

  <Card title="トランザクションの順序付け" href="/ja/trading/tx-sequencing">
    トリガーの走査が、取り消しや新規注文とどう並ぶのかです。
  </Card>

  <Card title="注文タイプ" href="/ja/trading/order-types">
    条件付き注文の変換先になる注文タイプです。
  </Card>
</CardGroup>
