개인 WebSocket 주문 명령
wss://api-ws.btxpro.co.kr/v1/user/stream에 연결한 뒤 초기 snapshot을 소비하고 명령을 보냅니다. 연결 시 read, 모든 주문 명령에는 trade 권한이 필요합니다. 서버는 실행 직전에 키와 권한을 다시 확인합니다.
공통 형식
{ "id": "bot-7:create:1042", "op": "order.create", "args": {} }
id는 [A-Za-z0-9._:-]+에 맞는 최대 64자 문자열입니다. 같은 연결에서 처리 중인 ID를 재사용하면 DUPLICATE_COMMAND_ID입니다. 완료되거나 재연결한 뒤의 재전송을 막아주는 값은 아닙니다.
서버는 한 연결의 명령을 수신 순서대로 실행합니다. 이벤트 수신과 명령 응답 수신은 동시에 처리해야 합니다.
order.create
{
"id": "bot-7:create:1042",
"op": "order.create",
"args": {
"symbol": "BTC-USDT",
"walletId": 21,
"side": "buy",
"type": "limit",
"timeInForce": "GTC",
"quantity": "0.100000000",
"price": "65000.000000000"
}
}
주문 필드는 REST의 CreateOrderRequest와 같습니다. 현재 지정가 GTC만 지원합니다.
order.cancel
{
"id": "bot-7:cancel:1043",
"op": "order.cancel",
"args": { "orderId": "987654" }
}
이 명령의 args에는 orderId만 전달합니다. walletId, symbol은 REST 단건 취소에서만 선택적으로 사용합니다. 일괄 취소는 REST DELETE /v1/orders를 사용합니다.
order.amend
{
"id": "bot-7:amend:1044",
"op": "order.amend",
"args": { "orderId": "987654", "price": "66000.000000000" }
}
현재 원자적 정정을 지원하지 않습니다. 정정 요청 모델의 필드로 요청해도 AMEND_NOT_SUPPORTED를 반환하며 원래 주문을 변경·취소하지 않습니다. 취소 후 새 주문 생성은 별개 작업이며 중간 체결 위험이 있습니다.
성공·오류 응답
아래 성공 응답의 data는 핵심 필드만 표시했습니다. 전체 응답은 UserStreamCommandResponse를 확인하세요.
{
"event": "response",
"id": "bot-7:create:1042",
"op": "order.create",
"data": { "orderId": "987654", "status": "open" },
"serverTime": 1783420800123
}
{
"event": "error",
"id": "bot-7:amend:1044",
"op": "order.amend",
"error": {
"code": "AMEND_NOT_SUPPORTED",
"message": "The trading engine does not support atomic order amendment."
},
"serverTime": 1783420800123
}
response·error에는 이벤트 sequence가 없습니다. id로 명령을 찾아 완료 처리합니다. 주문 이벤트는 response보다 먼저 도착할 수도 있습니다.
결과를 받지 못하고 연결이 끊기면 생성·취소 명령을 자동 재전송하지 마세요. 새 snapshot과 REST 조회로 상태를 대조합니다.