WebSocket API v1 — размещение и отмена ордеров

Последнее обновление: 1 апр. 2025 г.

Наш WebSocket API v1 поддерживает торговлю через конечные точки addOrder и cancelOrder. Конечная точка addOrder используется для размещения новых ордеров, а конечная точка cancelOrder — для отмены существующих (открытых) ордеров.

Обе конечные точки, addOrder и cancelOrder, являются частными, что означает, что доступ к ним возможен только через аутентифицированное WebSocket-соединение.

Первоначальное соединение должно быть установлено с аутентифицированным WebSocket URL wss://ws-auth.kraken.com/ , которое затем может оставаться открытым неограниченное время, пока ордера размещаются и отменяются. Одно WebSocket-соединение предназначено для поддержки нескольких запросов, поэтому нет необходимости (и не рекомендуется) подключаться/отключаться для каждого вызова торговых конечных точек.

Аутентификация WebSocket

Токен аутентификации WebSocket можно получить через конечную точку REST API GetWebSocketsToken.

После того как токен получен, можно установить соединение с частным WebSocket URL wss://ws-auth.kraken.com/, и конечные точки addOrder и cancelOrder могут использоваться неограниченное время (токен не истечет, пока он используется для размещения и отмены ордеров).

Обратите внимание, что ключ API, используемый для получения токена, должен иметь разрешения Modify Orders (Изменение ордеров) и Cancel/Close Orders (Отмена/Закрытие ордеров), иначе от WebSocket API будет получена ошибка отказа в доступе.

Размещение ордера

После установления аутентифицированного WebSocket-соединения ордер можно разместить, отправив сообщение следующего вида:

  • {"event":"addOrder", "token":"nT9n23/7oLdq+bNHNMNJ4VvF1hiHhjTnPOaCMiB1GJ0", "pair":"XBT/USD", "type":"buy", "ordertype":"limit", "price":"9857", "volume":"0.002", "leverage":"5", "userref":"8874657"}

Затем будет получен ответ, указывающий статус запроса (был ли ордер принят или отклонен). Для ордера, который был успешно принят и размещен, ответ будет иметь статус ok и будет аналогичен следующему:

  • {"descr":"buy 0.00200000 XBTUSD @ limit 9857.0 with 5:1 leverage","event":"addOrderStatus","status":"ok","txid":"OPOUJF-BWKCL-FG5DQL"}

Для ордера, который был отклонен и не размещен, ответ будет иметь статус error, а также сообщение об ошибке, указывающее причину отклонения (неверные аргументы, недостаток средств и т. д.), например, следующее отклонение для ордера, который не соответствовал минимальному размеру ордера:

  • {"errorMessage":"EOrder:Order minimum not met","event":"addOrderStatus","status":"error"}

Отмена ордера

После установления аутентифицированного WebSocket-соединения (или, предпочтительно, повторного использования существующего соединения) ордер можно отменить, отправив сообщение следующего вида:

  • {"event":"cancelOrder", "token":"s74Ajl83it0dNNKcF072NJ5wDmLTGIceaCbV96eWbFg", "txid":["OJZ3DI-IU6QC-ME7TVE"]}

Затем будет получен ответ, указывающий статус запроса (была ли отмена принята или отклонена). Для ордера, который был успешно отменен, ответ будет иметь статус ok и будет аналогичен следующему:

  • {"event":"cancelOrderStatus","status":"ok"}

Для запроса на отмену, который был отклонен, ответ будет иметь статус error, а также сообщение об ошибке, указывающее причину отклонения (неверный ID ордера и т. д.), например, следующее отклонение для запроса на отмену ордера, который уже был отменен:

  • {"errorMessage":"EOrder:Unknown order","event":"cancelOrderStatus","status":"error"}

Обратите внимание, что в отличие от конечной точки REST API CancelOrder, в одном сообщении WebSocket об отмене можно указать несколько идентификаторов ордеров. Идентификаторы ордеров, которые необходимо отменить, должны быть включены в массив txid в виде отдельных записей, как показано ниже:

  • {"event":"cancelOrder", "token":"c4JjTNHSurKmWDsnrGaCxIuCOa4FurCZK2ppktvT2Yo", "txid":["OLVCRZ-DNKJI-VRTZKY","O67X6E-PBGSR-GU23R5","OECCDC-T2R4V-52CR7T"]}

Нужна дополнительная помощь?