WebSocket API v1 - 下单和取消订单

上次更新时间: 2025年4月1日

我们的 WebSocket API v1 支持通过 addOrdercancelOrder 端点进行交易。addOrder 端点用于下新订单,而 cancelOrder 端点用于取消现有(未结)订单。

addOrdercancelOrder 都是私有端点,这意味着它们只能通过 经过身份验证的 WebSocket 连接进行访问。

应首先连接到经过身份验证的 WebSocket URL wss://ws-auth.kraken.com/,然后可以在下订单和取消订单时无限期地保持连接。单个 WebSocket 连接旨在支持多个请求,因此无需(也不建议)为每次调用交易端点而连接/断开连接。

WebSocket 身份验证

WebSocket 身份验证令牌可以通过 REST API GetWebSocketsToken 端点获取。

一旦 令牌已获取,就可以连接到私有 WebSocket URL wss://ws-auth.kraken.com/,然后 addOrdercancelOrder 端点可以无限期使用(令牌在使用过程中不会过期,用于下订单和取消订单)。

请注意,用于获取令牌的 API 密钥必须同时具有 修改订单取消/关闭订单 权限,否则将从 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 取消消息中指定多个订单 ID。要取消的订单 ID 应作为单独的条目包含在 txid 数组中,如下所示:

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

需要更多帮助吗?