[{"data":1,"prerenderedAt":9},["ShallowReactive",2],{"api-documentation:websocket\u002Fcommands":3},{"title":4,"slug":5,"group":6,"version":7,"html":8},"WS 주문","websocket\u002Fcommands","WebSocket API","0.4.0","\u003Ch1 id=\"개인-websocket-주문-명령\">개인 WebSocket 주문 명령\u003C\u002Fh1>\n\u003Cp>\u003Ccode>wss:\u002F\u002Fapi-ws.btxpro.co.kr\u002Fv1\u002Fuser\u002Fstream\u003C\u002Fcode>에 연결한 뒤 초기 snapshot을 소비하고 명령을 보냅니다. 연결 시 read, 모든 주문 명령에는 trade 권한이 필요합니다. 서버는 실행 직전에 키와 권한을 다시 확인합니다.\u003C\u002Fp>\n\u003Ch2 id=\"공통-형식\">공통 형식\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-json\">{ \"id\": \"bot-7:create:1042\", \"op\": \"order.create\", \"args\": {} }\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>id\u003C\u002Fcode>는 \u003Ccode>[A-Za-z0-9._:-]+\u003C\u002Fcode>에 맞는 최대 64자 문자열입니다. 같은 연결에서 처리 중인 ID를 재사용하면 \u003Ccode>DUPLICATE_COMMAND_ID\u003C\u002Fcode>입니다. 완료되거나 재연결한 뒤의 재전송을 막아주는 값은 아닙니다.\u003C\u002Fp>\n\u003Cp>서버는 한 연결의 명령을 수신 순서대로 실행합니다. 이벤트 수신과 명령 응답 수신은 동시에 처리해야 합니다.\u003C\u002Fp>\n\u003Ch2 id=\"ordercreate\">order.create\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"id\": \"bot-7:create:1042\",\n  \"op\": \"order.create\",\n  \"args\": {\n    \"symbol\": \"BTC-USDT\",\n    \"walletId\": 21,\n    \"side\": \"buy\",\n    \"type\": \"limit\",\n    \"timeInForce\": \"GTC\",\n    \"quantity\": \"0.100000000\",\n    \"price\": \"65000.000000000\"\n  }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>주문 필드는 REST의 \u003Ca href=\"\u002Fapi-docs\u002Fgenerated\u002Fschemas\u002F#schema-createorderrequest\">CreateOrderRequest\u003C\u002Fa>와 같습니다. 현재 지정가 GTC만 지원합니다.\u003C\u002Fp>\n\u003Ch2 id=\"ordercancel\">order.cancel\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"id\": \"bot-7:cancel:1043\",\n  \"op\": \"order.cancel\",\n  \"args\": { \"orderId\": \"987654\" }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>이 명령의 args에는 \u003Ccode>orderId\u003C\u002Fcode>만 전달합니다. \u003Ccode>walletId\u003C\u002Fcode>, \u003Ccode>symbol\u003C\u002Fcode>은 REST 단건 취소에서만 선택적으로 사용합니다. 일괄 취소는 REST \u003Ccode>DELETE \u002Fv1\u002Forders\u003C\u002Fcode>를 사용합니다.\u003C\u002Fp>\n\u003Ch2 id=\"orderamend\">order.amend\u003C\u002Fh2>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"id\": \"bot-7:amend:1044\",\n  \"op\": \"order.amend\",\n  \"args\": { \"orderId\": \"987654\", \"price\": \"66000.000000000\" }\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>현재 원자적 정정을 지원하지 않습니다. \u003Ca href=\"\u002Fapi-docs\u002Fgenerated\u002Fschemas\u002F#schema-userstreamamendorderargs\">정정 요청 모델\u003C\u002Fa>의 필드로 요청해도 \u003Ccode>AMEND_NOT_SUPPORTED\u003C\u002Fcode>를 반환하며 원래 주문을 변경·취소하지 않습니다. 취소 후 새 주문 생성은 별개 작업이며 중간 체결 위험이 있습니다.\u003C\u002Fp>\n\u003Ch2 id=\"성공오류-응답\">성공·오류 응답\u003C\u002Fh2>\n\u003Cp>아래 성공 응답의 \u003Ccode>data\u003C\u002Fcode>는 핵심 필드만 표시했습니다. 전체 응답은 \u003Ca href=\"\u002Fapi-docs\u002Fgenerated\u002Fschemas\u002F#schema-userstreamcommandresponse\">UserStreamCommandResponse\u003C\u002Fa>를 확인하세요.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"event\": \"response\",\n  \"id\": \"bot-7:create:1042\",\n  \"op\": \"order.create\",\n  \"data\": { \"orderId\": \"987654\", \"status\": \"open\" },\n  \"serverTime\": 1783420800123\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cpre>\u003Ccode class=\"language-json\">{\n  \"event\": \"error\",\n  \"id\": \"bot-7:amend:1044\",\n  \"op\": \"order.amend\",\n  \"error\": {\n    \"code\": \"AMEND_NOT_SUPPORTED\",\n    \"message\": \"The trading engine does not support atomic order amendment.\"\n  },\n  \"serverTime\": 1783420800123\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>response\u003C\u002Fcode>·\u003Ccode>error\u003C\u002Fcode>에는 이벤트 sequence가 없습니다. \u003Ccode>id\u003C\u002Fcode>로 명령을 찾아 완료 처리합니다. 주문 이벤트는 response보다 먼저 도착할 수도 있습니다.\u003C\u002Fp>\n\u003Cp>결과를 받지 못하고 연결이 끊기면 생성·취소 명령을 자동 재전송하지 마세요. \u003Ca href=\"\u002Fapi-docs\u002Fwebsocket\u002Frecovery\u002F\">새 snapshot과 REST 조회로 상태를 대조\u003C\u002Fa>합니다.\u003C\u002Fp>\n",1793249660045]