> ## 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>

동일한 트리거 장치가 세 가지 다른 의도를 처리하며, 무엇에 붙는지가 서로 다릅니다.

| 형태          | 붙는 대상         | 대표적 용도                        |
| ----------- | ------------- | ----------------------------- |
| **독립형**     | 없음            | 가격이 특정 수준을 돌파하면 포지션 진입        |
| **주문에 부착**  | 지금 내는 특정 주문   | 진입하는 순간 테이크 프로핏과 스톱 로스를 함께 설정 |
| **포지션에 부착** | 해당 마켓의 보유 포지션 | 무엇으로 열었든 이미 보유한 포지션을 보호       |

세 번째가 가장 주문답지 않게 동작합니다. 수량이 아니라 포지션을 범위로 삼기 때문에, 포지션 규모가 바뀌면 그에 맞춰 따라갑니다. 이 동작은 [테이크 프로핏과 스톱 로스](/ko/trading/tp-sl)에서 다룹니다.

<h2 id="triggering">
  트리거
</h2>

조건부 주문이 언제 발동하는지는 두 가지가 결정합니다. 어떤 가격을 지켜보는지, 그리고 블록의 어느 지점에서 그 검사가 이뤄지는지입니다.

**어떤 가격인가.** 트리거는 마크 가격이나 최종 체결 가격을 지켜볼 수 있습니다. [마크 가격](/ko/trading/mark-price)은 평활 처리되어 밀어내기가 더 어렵고, 그래서 보호용 주문의 기본값으로 더 안전합니다. 최종 체결 가격은 더 빠르게 반응하고 화면에 찍히는 값에 가까우며, 이를 원하는 전략도 있습니다. 선택은 주문별로 합니다.

**블록의 어느 지점인가.** 조건부 주문은 매칭이 실행되기 전에, 블록 시작 시점에 고정된 마크 가격으로 검사됩니다. 이번 블록의 가격으로 트리거된 주문은 다음 블록이 아니라 이번 블록에서 활성 주문이 됩니다. 전체 우선순위는 [트랜잭션 시퀀싱](/ko/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>

조건부 주문이 혼자 다니는 경우는 드뭅니다. 연결 방식은 세 가지이며, 각각 취소 규칙이 다릅니다.

**테이크 프로핏과 스톱 로스는 서로를 취소합니다.** 보호용 한 쌍은 하나가 발동하면 다른 하나가 취소되는(one-cancels-the-other) 구조입니다. 포지션을 모두 정리한 상태에서 스톱만 살아 있는 일은 생길 수 없습니다.

**부착된 한 쌍은 상위 주문을 따라갑니다.** 지금 내는 주문에 테이크 프로핏과 스톱 로스를 붙이면, 그 쌍은 상위 주문이 체결되기 전까지 활성화되지 않습니다. 상위 주문이 체결 전에 취소되면 부착된 다리도 함께 사라집니다.

**포지션 범위의 한 쌍은 포지션을 따라갑니다.** 직접 낸 주문으로든, 청산으로든, 디레버리징으로든 포지션이 종료되면 거기에 붙어 있던 보호용 주문은 취소됩니다. 무언가를 보호하려고 존재하는 주문이니, 그 무언가가 사라지면 주문도 사라집니다.

<Note>
  연동 구현이 가장 자주 틀리는 지점이 여기입니다. 보호하던 포지션보다 오래 살아남은 스톱은 다음 트리거에서 반대 방향의 *새* 포지션을 엽니다. 이를 막는 장치가 연결이며, 주문을 낸 클라이언트가 아니라 프로토콜이 강제합니다.
</Note>

<h2 id="order-states">
  주문 상태
</h2>

조건부 주문은 정해진 상태 집합을 거쳐 가며, 모든 전이는 관측할 수 있는 프로토콜 이벤트입니다.

| 상태       | 의미                             |
| -------- | ------------------------------ |
| **대기**   | 수락되어 트리거 가격을 지켜보는 중            |
| **트리거됨** | 조건 충족. 전환되어 매칭에 제출됨            |
| **체결**   | 전환된 주문이 매칭됨                    |
| **취소**   | 직접 철회했거나, 짝이 발동해 연결 규칙에 따라 취소됨 |
| **거부**   | 주문 시점 또는 전환 시점에 검증 실패          |

사람들이 놀라는 상태는 **전환 시점의 거부**입니다. 주문이 수락되어 몇 시간을 기다리고 정상적으로 트리거되었는데도 실패할 수 있습니다. 조건은 주문 시점뿐 아니라 전환 시점에 다시 검사되기 때문입니다. 증거금이 더 이상 충분하지 않을 수 있습니다. 리듀스 온리 조건부 주문에 줄일 포지션이 남아 있지 않을 수도 있습니다. 트리거는 발동했지만, 그 결과로 나온 주문이 살아남지 못한 것입니다.

<h2 id="checks-at-placement-and-at-conversion">
  주문 시점과 전환 시점의 검사
</h2>

서로 다른 두 시점에 서로 다른 규칙 집합이 적용됩니다.

**주문 시점**에는 트리거 가격이 지정한 방향에서 말이 되는지, 그리고 트리거가 현재 가격에서 허용된 거리 안에 있는지를 프로토콜이 검사합니다. 즉시 트리거될 스톱 로스는 전략이 아니라 실수입니다. 미체결 주문 개수 제한과 요청 속도 제한도 여기에 적용됩니다.

**전환 시점**에는 그 순간의 포지션을 기준으로 증거금이 충분한지 다시 평가하고, 리듀스 온리 제약을 다시 검사하며, 조건부 시장가 주문은 여느 시장가 주문과 동일한 슬리피지 보호를 받습니다. 이 보호 장치는 [시장가 주문과 슬리피지 보호](/ko/trading/market-to-limit)에서 다룹니다.

<Warning>
  조건부 주문은 체결을 보장하지 않습니다. 조건이 충족되면 주문이 *제출된다*는 것만 보장합니다. 가격이 빠르게 움직이면 그 결과로 나온 주문이 트리거 가격에서 한참 벗어난 값에 체결될 수 있고, 지정가로 전환된 경우 아예 체결되지 않을 수도 있습니다. 보호용 주문은 갭에 대한 노출을 줄여 줄 뿐, 없애지는 못합니다.
</Warning>

<h2 id="where-to-go-next">
  다음으로 읽을 문서
</h2>

<CardGroup cols={2}>
  <Card title="테이크 프로핏과 스톱 로스" href="/ko/trading/tp-sl">
    두 가지 보호 형태와, 포지션이 바뀔 때 각각이 어떻게 동작하는지 설명합니다.
  </Card>

  <Card title="마크 가격" href="/ko/trading/mark-price">
    대부분의 보호용 트리거가 지켜봐야 할 가격과, 그 가격이 평활 처리되는 이유를 다룹니다.
  </Card>

  <Card title="트랜잭션 시퀀싱" href="/ko/trading/tx-sequencing">
    트리거 검사가 취소와 신규 주문 사이 어느 위치에 놓이는지 설명합니다.
  </Card>

  <Card title="주문 유형" href="/ko/trading/order-types">
    조건부 주문이 무엇으로 전환되는지 다룹니다.
  </Card>
</CardGroup>
