주문 수정과 취소 후 재주문 — 대기열 자리를 잃는 쪽은 어디인가
지정가 주문을 걸어놓고 나서 가격을 조금 옮기거나 수량을 바꾸고 싶을 때가 있습니다. 방법은 두 가지입니다. 주문을 살려둔 채 값만 고치는 수정(amend)과, 기존 주문을 취소하고 새로 넣는 재주문(cancel-replace)입니다. 화면상 결과는 같아 보이지만 그 사이에 벌어지는 일은 전혀 다릅니다.
두 방식의 차이
수정은 주문 ID를 유지한 채 값만 바꾸는 요청입니다. 취소 후 재주문은 기존 주문을 지우고 새 주문 ID로 다시 접수하는 두 번의 요청입니다.
목표 매수 지정가 $59,800 3계약
→ $59,850 으로 올리기
① 수정(amend)
요청 1회
주문 ID 그대로
주문이 시장에서 빠지는 시간 없음
② 취소 후 재주문
요청 2회 (취소 → 접수)
주문 ID 새로 발급
두 요청 사이 주문 없음
─────────────
차이가 생기는 지점
대기열 자리 · 무방비 구간 · 요청 횟수
거래소에 따라 수정 API가 아예 없는 경우도 있습니다. 그때는 선택지가 취소 후 재주문 하나뿐이므로, 아래의 무방비 구간 문제를 전제로 두고 설계해야 합니다.
대기열 자리는 언제 유지되나
같은 가격에 걸린 주문들은 먼저 온 순서대로 체결됩니다. 수정을 해도 이 자리가 항상 유지되는 것은 아닙니다. 무엇을 바꾸느냐에 따라 갈립니다.
현재 $59,800 매수 대기열 내 앞에 12계약
가격 변경 $59,800 → $59,850
→ 다른 가격대의 맨 뒤로
→ 자리 소멸 (당연함)
수량 증가 3 → 5계약
→ 대개 맨 뒤로
→ 자리 소멸
수량 감소 3 → 2계약
→ 자리 유지
─────────────
이유
수량을 늘리는 건 새치기가 된다
줄이는 건 남에게 손해가 없다
즉 수량을 늘리는 수정은 취소 후 재주문과 결과가 사실상 같습니다. 자리를 지키면서 크기만 키우고 싶다면, 기존 주문은 두고 부족한 만큼 새 주문을 따로 거는 편이 낫습니다. 3계약을 5계약으로 고치는 대신 2계약짜리 주문을 하나 더 붙이는 식입니다. 대기열이 어떻게 정렬되는지는 체결 우선순위와 주문 대기열 우선순위에 정리돼 있습니다.
취소 후 재주문의 무방비 구간
가장 실질적인 위험은 여기입니다. 취소가 처리된 시점부터 새 주문이 접수될 때까지, 시장에 내 주문이 하나도 없는 구간이 생깁니다.
보유 롱 3계약 · 평단 $60,000
손절 지정가 $59,500 (걸어둔 상태)
손절을 $59,600 으로 올리기로 함
t+0.00 취소 요청 전송
t+0.18 취소 처리 완료 ← 손절 없음
t+0.22 신규 접수 요청 전송
t+0.41 신규 주문 접수 완료
무방비 구간 0.23초
─────────────
평소엔 아무 일 없다
급락 캔들이 이 구간에 겹치면
→ 손절 없이 통과
→ 다음 손절은 이미 지나간 가격에 걸림
0.23초는 평소에는 무시할 수 있지만, 손절을 옮기고 싶어지는 순간은 대개 가격이 빠르게 움직일 때입니다. 하필 그때 구간이 겹칩니다. 수정 API가 있다면 이 구간이 아예 없으므로, 청산 주문은 취소 후 재주문보다 수정을 우선하는 편이 안전합니다. 요청 하나가 오가는 데 걸리는 시간의 구조는 주문 지연에 있습니다.
순서를 뒤집으면 안 되는 이유
무방비 구간이 싫다고 새 주문을 먼저 넣고 나중에 옛 주문을 취소하면, 그 짧은 순간 주문이 두 개가 됩니다.
t+0.00 새 손절 $59,600 접수
t+0.20 옛 손절 $59,500 취소 요청
t+0.00 ~ t+0.20 손절이 2개
합계 6계약 (보유는 3계약)
이 구간에 급락이 오면
→ 둘 다 체결
→ 3계약 청산 + 3계약 반대 포지션
─────────────
리듀스온리를 붙였다면
초과분은 무시된다 (안전)
붙이지 않았다면
의도 없는 숏이 생긴다
그래서 이 순서를 쓸 거라면 청산 주문에 리듀스온리를 반드시 붙여야 합니다. 옵션별 동작은 포스트온리·리듀스온리·IOC에 있습니다. 또한 같은 계정의 주문끼리 가격이 겹치면 자전거래 방지가 발동해 둘 중 하나가 조용히 취소될 수 있습니다.
부분 체결 중에 수정하면
이미 일부가 체결된 주문을 수정하면 기준은 원래 수량이 아니라 잔량입니다. 여기서 계산을 헷갈리면 의도한 것보다 크거나 작은 주문이 남습니다.
원래 주문 매수 $59,800 5계약
이미 체결 2계약
잔량 3계약
"수량 4계약으로 수정" 을 넣으면
해석 A 총 4계약 주문 → 잔량 2계약
해석 B 잔량 4계약 → 총 6계약
─────────────
거래소마다 해석이 다르다
확인 없이 넣으면
의도의 절반 또는 1.5배가 걸린다
안전한 방법
수정 전 잔량을 조회하고 계산
또 하나, 체결 수량 아래로 수정하려는 요청은 대개 거부되거나 즉시 취소로 처리됩니다. 위 예에서 "2계약으로 수정"은 이미 2계약이 나갔으므로 잔량 0이 되어 주문이 사라집니다. 부분 체결 상태에서 잔량이 어떻게 남는지는 부분 체결에서 확인하세요.
요청 횟수와 레이트 리밋
취소 후 재주문은 요청이 두 배입니다. 사람이 손으로 몇 번 고치는 정도면 문제가 없지만, 봇이 가격을 따라 계속 옮기면 한도를 빠르게 태웁니다.
수정 방식
60초 × 1회 = 60 요청
취소 후 재주문
60초 × 2회 = 120 요청
주문 조회까지 붙이면
60초 × 3회 = 180 요청
─────────────
한도에 걸리면
다음 요청이 거절된다
그게 하필 손절 주문일 수 있다
한도 초과 시 어떤 응답이 오는지와 대응은 API 레이트 리밋에 있습니다. 실무에서는 가격이 일정 폭 이상 움직였을 때만 재조정하도록 문턱을 두는 방식으로 요청 수를 줄입니다. 1틱 움직일 때마다 따라가면 요청만 늘고 대기열 자리는 계속 잃습니다.
응답을 못 받았을 때
취소 후 재주문에서 가장 까다로운 상황은 중간에 응답이 끊기는 경우입니다. 취소가 됐는지 안 됐는지 모르는 상태에서 새 주문을 넣으면 결과가 둘로 갈립니다.
취소 요청 전송 → 응답 없음
갈래 A 취소는 성공했다
→ 새 주문 접수 → 주문 1개 (정상)
갈래 B 취소가 실패했다
→ 새 주문 접수 → 주문 2개
─────────────
확인 없이 재시도하면
계약 수가 두 배로 걸린다
순서
① 주문 목록 재조회
② 실제 상태 확인 후
③ 그다음에 접수
같은 주문이 두 번 들어가는 것을 막는 장치는 중복 주문과 멱등성에 정리돼 있습니다. 클라이언트 주문 ID를 직접 지정해두면, 재시도해도 거래소가 같은 요청으로 인식해 두 번 접수되는 것을 막을 수 있습니다.
어느 쪽을 쓸 것인가
수정을 쓴다
청산·손절 주문을 옮길 때
수량을 줄일 때 (자리 유지)
재조정이 잦은 봇
취소 후 재주문을 쓴다
수정 API가 없을 때
주문 종류 자체를 바꿀 때
(지정가 → 조건부 등)
옵션을 바꿀 때 (포스트온리 등)
둘 다 쓰지 않는다
수량을 늘릴 때
→ 부족분만 별도 주문으로 추가
주문 종류나 옵션을 바꾸는 것은 대개 수정으로 안 됩니다. 지정가를 조건부 주문으로 바꾸거나 포스트온리를 붙이려면 새로 넣어야 합니다. 이때는 무방비 구간을 감수하되, 청산 주문이라면 리듀스온리를 붙여 먼저 넣고 나중에 취소하는 순서가 낫습니다. 스탑 리밋이나 OCO 주문처럼 구조가 다른 주문으로 갈아탈 때가 여기 해당합니다.
정리
② 수정은 주문 ID를 유지한다
③ 가격을 바꾸면 자리는 어차피 사라진다
④ 수량을 늘리면 자리를 잃는다
⑤ 수량을 줄이면 자리가 유지된다
⑥ 크기를 키울 땐 별도 주문을 추가한다
⑦ 취소 후 재주문엔 무방비 구간이 있다
⑧ 하필 급변할 때 그 구간이 겹친다
⑨ 순서를 뒤집으면 주문이 잠깐 2개가 된다
⑩ 그때는 리듀스온리가 안전장치다
⑪ 부분 체결 중 수정은 잔량 기준이다
⑫ 요청 두 배는 레이트 리밋을 두 배로 태운다
⑬ 응답이 끊기면 재조회 후 접수한다
한 줄로 줄이면 이렇습니다. 수정은 자리를 지키려는 방법이고, 취소 후 재주문은 확실히 갈아엎는 방법입니다. 둘 중 무엇을 쓰든, 요청을 보낸 다음 실제로 무엇이 남아 있는지 조회해서 확인하는 절차가 있어야 사고가 나지 않습니다.
주의
본문의 $59,500 · $59,600 · $59,800 · $59,850 · $60,000 같은 호가, 3계약 · 5계약 · 12계약 같은 수량, 0.18초 · 0.23초 · 0.41초 같은 시간, 초당 1회 재조정 시 60·120·180 요청 같은 계산은 모두 규칙을 설명하기 위한 가정 예시이며 특정 거래소의 실제 호가나 실제 응답 시간, 특정 계좌의 측정값이 아닙니다. 주문 수정의 세부 동작은 거래소마다 다릅니다. 수정 API를 제공하는지, 수량 증가·감소 시 대기열 자리를 어떻게 처리하는지, 부분 체결된 주문의 수정 수량을 총량으로 해석하는지 잔량으로 해석하는지, 클라이언트 주문 ID로 멱등성을 보장하는지, 레이트 리밋을 어떤 단위로 세는지는 각 거래소의 API 문서에서 직접 확인해야 합니다. 이 글은 주문 집행 규칙에 대한 설명이며 특정 매매 방식이나 봇 설정을 권유하지 않습니다. 레버리지 거래는 원금 전액을 잃을 수 있고, 주문을 정확히 관리한다고 해서 수익이 보장되지 않습니다. 투자 판단과 그 결과는 본인 책임입니다.
NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.
봇에서 시작하기📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →