고아 주문 — 포지션은 닫았는데 남아 있던 예약 주문이 반대 포지션을 여는 문제
어제 익절하고 깨끗하게 나왔는데, 오늘 계좌를 열어보니 열어본 적 없는 숏 포지션이 손실 중입니다. 계정이 털린 것도, 거래소 오류도 아닙니다. 포지션을 닫을 때 같이 취소하지 않은 손절 예약이 살아 있다가 가격이 닿자 그대로 체결된 것입니다.
포지션과 주문은 서로 다른 물건이다
많은 초보자가 "포지션을 닫으면 그 포지션에 걸어둔 주문도 같이 사라진다"고 생각합니다. 거래소 내부에서는 그렇지 않습니다. 둘은 별개의 목록으로 관리됩니다.
① 포지션 목록
· 지금 보유 중인 방향·수량·평단
· 수량이 0이 되면 사라짐
② 주문 목록
· 아직 체결되지 않은 지정가·예약
· 내가 취소하기 전까지 유지
─────────────
①이 비어도 ②는 그대로 남는다
남은 ②가 나중에 체결되면
→ 그건 청산이 아니라 신규 진입이다
손절 주문은 "이 포지션을 닫아라"가 아니라 "가격이 여기 닿으면 이 방향으로 이만큼 팔아라"라는 지시입니다. 닫을 포지션이 없는 상태에서 그 지시가 실행되면, 거래소는 그냥 시키는 대로 팝니다. 그 결과가 새 숏 포지션입니다.
고아 주문이 생기는 네 가지 경로
취소를 깜빡한 경우만 있는 게 아닙니다. 본인은 정리했다고 생각했는데 남는 경로가 몇 가지 있습니다.
① 수동 청산
시장가로 포지션만 닫고 예약은 방치
② 익절 먼저 체결
TP 체결 → 포지션 0
→ 반대편 SL이 여전히 대기
(OCO로 묶지 않은 경우)
③ 강제 청산
거래소가 포지션을 정리해도
내가 낸 예약은 내 주문이라 남음
④ 봇·앱 이중 관리
봇이 닫고, 앱에 걸어둔 예약은 그대로
─────────────
공통점
포지션이 사라진 경로가 무엇이든
주문은 자동으로 안 지워진다
②가 가장 흔합니다. 익절과 손절을 따로 두 개 걸어두면, 하나가 체결됐을 때 다른 하나가 알아서 사라지지 않습니다. 이 둘을 한 쌍으로 묶어주는 기능이 OCO(하나가 체결되면 나머지 자동 취소)인데, 걸지 않았다면 남은 쪽은 계속 살아 있습니다.
남은 손절이 반대 포지션을 열면 손실이 두 배가 된다
왜 이게 단순한 실수로 끝나지 않는지 숫자로 봅니다.
BTC 롱 0.1 · 진입 $80,000
익절 $82,000 · 손절 예약 $78,000
1) $82,000 도달 → 익절 체결
수익 = (82,000−80,000) × 0.1 = +$200
포지션 0 · $78,000 손절은 살아 있음
2) 이틀 뒤 가격이 $78,000까지 하락
→ 매도 0.1 체결
→ 숏 0.1 신규 진입 (평단 $78,000)
3) 이후 반등 $81,000
손실 = (81,000−78,000) × 0.1 = −$300
─────────────
익절 +$200 → 최종 −$100
게다가 나는 이 포지션을 모르고 있었다
더 나쁜 점은 방향입니다. 하락에서 걸리는 손절이라 떨어질 때 숏이 열립니다. 반등이 나오면 그대로 손실 구간이고, 모니터링하지 않는 포지션이라 손절도 없습니다. 원래 손실을 제한하려고 걸어둔 주문이 손실을 만드는 주문으로 역할이 뒤집힙니다.
여기에 왕복 수수료가 한 번 더 붙습니다. 신규 진입 한 번, 정리 한 번이 추가되므로 비용 계산은 왕복 거래비용 기준으로 한 사이클이 통째로 더 나갑니다.
체결되지 않아도 증거금은 잠겨 있다
고아 주문이 체결되기 전에도 조용한 비용이 있습니다. 주문이 살아 있는 동안 그 주문 몫의 증거금이 예약돼 있습니다.
계좌 잔고 $1,000
남은 예약: 0.1 BTC · 20배
필요 증거금
명목 = 78,000 × 0.1 = $7,800
증거금 = 7,800 ÷ 20 = $390
─────────────
가용 잔고 = 1,000 − 390 = $610
새 진입을 하려다
"증거금 부족" 거절
잔고는 $1,000이라고 표시되는데
원인은 보이지 않는 예약이다
거래소에 따라 예약 유형별로 증거금을 잡는 방식이 다르지만, 잔고 숫자와 실제 쓸 수 있는 돈이 다르게 보이는 상황 자체는 같습니다. 이 차이의 구조는 가용 증거금과 잔고의 차이에, 주문이 거절되는 다른 원인들은 주문이 거절되는 이유에 정리돼 있습니다.
reduce-only 한 줄로 대부분이 막힌다
근본 대책은 "주문 성격 자체를 청산 전용으로 못 박아 두는 것"입니다.
일반 주문
포지션 0 + 매도 0.1 체결
→ 숏 0.1 신규 진입
reduce-only 주문
포지션 0 + 매도 0.1
→ 줄일 포지션이 없음
→ 체결되지 않고 자동 무효
포지션 0.05만 남은 경우
→ 0.05까지만 체결 (초과분 무시)
─────────────
손절·익절은 항상 reduce-only
취소를 깜빡해도 새 포지션이 안 열린다
손절과 익절은 정의상 "줄이는 주문"이므로 reduce-only를 끄고 쓸 이유가 거의 없습니다. 옵션 위치와 관련 플래그는 Post-Only · Reduce-Only · IOC에 있습니다. 단 이건 안전망이지 취소를 대신하지는 않습니다 — 증거금이 잠기는 문제는 그대로 남으니 결국 취소는 해야 합니다.
분할 익절·부분 체결과 겹치면 수량이 어긋난다
수량이 한 번에 정리되지 않는 경우엔 남은 주문의 수량이 문제를 만듭니다.
롱 0.3 보유 · 손절 예약 0.3
1차 익절 0.1 → 남은 포지션 0.2
2차 익절 0.1 → 남은 포지션 0.1
손절 예약은 계속 0.3
가격 하락 → 손절 체결
0.3 매도 실행
0.1은 청산 · 0.2는 신규 숏
─────────────
reduce-only였다면
0.1만 체결 · 나머지 무시
아니었다면
숏 0.2가 새로 열린다
같은 함정이 분할 익절과 부분 체결 양쪽에서 생깁니다. 수량이 바뀔 때마다 예약 수량도 같이 고쳐야 하는데, 손으로 하면 반드시 어긋납니다. 그래서 실무에서는 수량을 맞추는 대신 reduce-only로 상한을 걸어 두는 쪽을 씁니다.
봇에서는 순서가 정해져 있다
자동매매에서는 사람이 눈으로 확인하지 않으므로 정리 순서를 코드로 고정합니다.
1) 그 종목의 미체결 주문 전부 조회
2) 청산 주문 실행
3) 체결 확인 (포지션 수량 = 0)
4) 1)에서 받은 주문 전부 취소
5) 다시 조회 → 0건인지 검증
─────────────
취소를 청산 전에 하면
그 사이 가격이 급변해도
보호 주문이 없는 구간이 생긴다
취소를 청산 후에 하고
5)의 검증까지 해야 끝난다
4)까지만 하고 5)를 빼먹는 경우가 많습니다. 취소 요청은 네트워크 오류나 상태 충돌로 실패할 수 있고, 실패해도 예외를 삼키면 로그에는 "정리 완료"만 남습니다. 주기적으로 거래소 실제 상태와 내부 기록을 맞춰보는 방식은 포지션 대조 쪽에 있습니다.
청산 후 30초 점검
수동 거래라면 습관 하나로 대부분 막힙니다.
· 포지션 탭 → 비었는지
· 미체결 주문 탭 → 비었는지 ← 여기
· 가용 잔고 = 전체 잔고인지
(다르면 어딘가 잠겨 있다)
주간 점검
· 안 쓰는 종목의 예약 전부 취소
· 몇 주 전 걸어둔 지정가 정리
─────────────
예약 주문은 기한이 없다
내가 지우지 않으면 계속 산다
거래소 앱은 보통 포지션 탭을 먼저 보여주기 때문에, 포지션이 비어 있으면 정리가 끝난 것처럼 보입니다. 확인해야 하는 건 그 옆 탭입니다. 예약을 걸어뒀는데 아예 발동하지 않는 반대 상황은 예약 주문이 발동하지 않는 이유에 따로 있습니다.
정리
② 남은 손절이 체결되면 청산이 아니라 신규 진입이다
③ 하락에서 걸리는 손절이라 숏이 열린다 — 반등하면 손실
④ 익절 +$200이 최종 −$100이 될 수 있다
⑤ 체결 전에도 증거금은 잠긴다 — 잔고는 있는데 주문이 거절된다
⑥ 손절·익절은 항상 reduce-only로 건다
⑦ reduce-only는 안전망일 뿐 취소를 대신하지 않는다
⑧ 분할 익절 뒤 예약 수량이 남으면 차액만큼 신규 진입된다
⑨ 봇은 청산 → 취소 → 재조회 검증 순서를 지킨다
⑩ 정리 직후 볼 것은 포지션 탭이 아니라 미체결 주문 탭이다
한 줄로 줄이면 이렇습니다. 거래는 포지션을 닫는 순간이 아니라 주문 목록이 비는 순간에 끝납니다. 남겨둔 예약은 내가 잊어도 거래소는 잊지 않습니다.
주의
본문의 가격, 수량, 레버리지, 증거금, 손익 금액은 구조를 설명하기 위한 가정 예시이며 특정 거래소나 종목의 실제 측정값이 아닙니다. reduce-only 지원 여부, OCO 동작, 예약 주문의 증거금 처리 방식은 거래소마다 다르므로 본인이 쓰는 거래소에서 소액으로 직접 확인해야 합니다. 레버리지 거래는 원금 전액을 잃을 수 있으며, 투자 판단과 그 결과는 본인 책임입니다.
NOONOO TRADING 무료 채팅방에서 실시간 트레이딩을 같이 보세요.
무료 채팅방 입장 →📈 OKX 신규 가입 시 거래 수수료 할인
OKX 수수료 할인 가입 →