Skip to main content
提交订单后,使用经过身份验证的账户读取来检查订单当前状态、核对未成交订单及由此产生的交易,并取消不再希望挂在订单簿上的流动性。

获取单个订单

按 ID 查询单个订单。适合用于检查已知订单的当前状态,而不必扫描完整的未成交订单列表。
在 SecureClient 上调用 fetchOrder(),按 ID 获取订单:
该方法返回一个 OpenOrder,其中包含经过规范化的代币、小数和日期值:
响应包含到期时间时会提供 expiresAt;否则省略该字段。
请参阅订单状态,了解返回的 status。

列出未成交订单

检索账户中的所有挂单,也可以缩小到某个代币、市场或特定订单 ID。用它来核对本地状态与订单簿上的实际有效订单。
在 SecureClient 上调用 listOpenOrders(),遍历账户的未成交订单:
传入筛选条件以缩小结果范围。虽然参数名为 market,但它接收市场的条件 ID:
每一页都包含 OpenOrder 项:
请参阅订单状态,了解每个订单的 status。

列出账户交易

检索账户已执行的成交记录,而不是仍挂在订单簿上的订单。用它来重建成交历史、计算已实现的头寸规模,或审计实际撮合情况。
在 SecureClient 上调用 listAccountTrades(),遍历账户的交易:
传入筛选条件以缩小结果范围。虽然参数名为 market,但它接收市场的条件 ID:
每一页都包含 ClobTrade 项:
请参阅交易状态,跟踪每笔交易的 status 直至结算。

列出 Builder 交易

检索归因于某个 Builder 代码、且来自应用所服务账户的已撮合交易。当你需要核对整个 Builder 集成的成交情况或衡量其活动时,请使用此读取,而不是账户交易读取。订单在撮合之前不会出现在这里。
在 PublicClient 或 SecureClient 上调用 listBuilderTrades(),遍历归因于你的 Builder 代码的交易:
传入筛选条件以缩小结果范围:
每一页都包含 BuilderTrade 项:
请参阅 Builder 计划,了解归因的工作原理。

取消订单

仅按所需范围取消订单。优先使用已知订单 ID;撤回一组报价时使用市场或代币筛选条件;只有在特殊情况下才取消整个账户的订单。当交易所在仅允许取消模式下拒绝新订单时,取消操作仍然可用。对于部分成交的订单,取消操作只会移除其未成交部分。

取消订单 by ID

知道订单 ID 时,可取消单个订单。若要通过一次请求取消一组已知订单,请提交最多 3,000 个 ID 的批次。批次中的重复 ID 会被忽略。
在 SecureClient 上调用 cancelOrder(),取消单个订单:
调用 cancelOrders(),在一次请求中取消多个已知订单:

取消市场订单

按代币取消可撤回某个结果的订单;按市场取消可撤回该条件下所有结果的订单。必须提供至少一个筛选条件。
在 SecureClient 上调用 cancelMarketOrders(),并传入结果 ID 或 condition ID:
market 字段接收市场的条件 ID。

取消所有订单

需要移除所有挂单时(例如紧急停机期间),请使用账户级取消。
此操作会取消与经过身份验证的 CLOB API 凭据关联的所有未成交订单。
在 SecureClient 上调用 cancelAll():

取消结果

取消操作可能只对部分请求的订单成功。重试前请核对结果:其中会标识已取消的订单,并给出每个无法取消的订单的原因。
TypeScript SDK 返回 CancelOrdersResponse:
Type
在此示例中,一个订单已取消,另一个订单因已撮合而无法取消:
Example

订单心跳

使用订单心跳,在交易进程停止响应时请求取消 API 密钥所拥有的挂单。应用负责持续发送心跳并处理失败。
首次被接受的心跳会为同一 API 密钥拥有的全部挂单启用超时取消,包括不同市场和进程的订单。只有能够每 5 秒持续发送被接受的心跳时才应启动。没有停用心跳的操作:停止发送或关闭客户端不会解除超时。使用生产凭据测试一次心跳,也可能导致现有订单被取消。
连续 10 秒没有被接受的心跳后,服务器在每五秒一次的扫描中检测超时,并将取消全部挂单的尝试加入队列。取消是尽力而为:队列延迟、服务故障或无法取消的订单可能延迟或阻止完成。十秒是超时阈值,并不保证取消时间或成功。WebSocket 保活不会刷新该期限。
每 5 秒发送一次心跳。
1

启动心跳

向 POST /v1/heartbeats 发送空的 heartbeat_id。使用拥有待保护订单的同一组 CLOB API 凭据对请求进行身份验证:
使用 API 身份验证中的签名者地址和 CLOB API 凭据,创建新的 <clob_request_timestamp>,并根据通过网络发送的精确序列化请求体生成 <clob_l2_signature>:
保存响应中返回的 ID:
2

继续发送心跳

五秒后,将最新的 heartbeat_id 发回同一路由。每次成功响应都会返回一个新 ID,供下一次心跳使用:
为此请求创建新的 <clob_request_timestamp> 和 <clob_l2_signature>,并在上述签名计算中用包含最新 ID 的精确序列化请求体替换 body。如果 ID 与当前登记的 ID 不一致,CLOB 会返回 400 Bad Request 并提供预期的 ID。使用该 ID 对新请求签名,然后重试:

心跳常见问题

每个 API 密钥使用一个协调后的发送者,等待每次发送完成后再发送下一次心跳。 并发发送可能争用不断轮换的心跳 ID。每个被接受的心跳都会影响该密钥在所有市场和进程中拥有的全部挂单。
被拒绝的请求不会刷新期限。使用错误响应提供的预期 ID 重试,并保存成功响应返回的新 ID。 如果另一集成发送了旧版心跳请求,预期 ID 可能为空。
停止下新订单,并核对现有挂单。应用需要处理身份验证、请求体、限流、传输和响应错误。请求可能已被接受,但响应在返回途中丢失。因此,失败并不能说明心跳登记未生效,也不能说明服务器仍保留旧 ID。
先停止下单,取消需要移除的订单并确认取消结果,再停止发送心跳。停止发送或关闭客户端后,服务器的期限仍然有效。没有可以保留现有订单,同时立即停用超时的操作。
服务器先移除心跳登记,再尝试取消订单。取消是尽力而为,应核对取消结果和挂单,不要假定所有订单都已移除。 服务器不会无限期取消后续订单。之后被接受的心跳会重新登记该 API 密钥。恢复报价前应核对挂单。心跳恢复成功并不能说明中断前的订单仍然存在或已被取消。

检查仅允许平仓模式

仅允许平仓模式是针对市场的账户级熔断机制。启用后,账户只能下达减少现有头寸的订单,不能下达新的开仓订单。如果希望快速失败而不是等待订单被拒绝,请在下单前检查此状态。
在 SecureClient 上调用 fetchClosedOnlyMode():
该方法以布尔值返回账户的仅允许平仓状态:

检查订单计分状态

当订单在提供流动性奖励的市场中处于有效状态,并满足该市场的最低合格规模、最大合格价差和所需有效时长时,订单会获得计分。由于资格会随订单簿变化,请将结果视为某个时间点的检查。
在 SecureClient 上调用 fetchOrderScoring(),并传入订单 ID:
若要在一次请求中检查多个订单的计分状态,请调用 fetchOrdersScoring() 并传入这些订单的 ID:
响应将每个订单 ID 映射到其计分状态: