Arcus订单已取消为何仍有成交?核子账户、filledSize与历史时间
链小知 · 进阶 · 核验 · 依官方文档整理
用原orders/fills材料区分取消余量、实际成交和微秒分页,不把ACK当最终状态。
开始前准备
- 准备本人原订单orderId/clientId、钱包address/accountIndex、市场以及已保存REST/WebSocket回执。
- 这里只解释Perp既有材料,不创建key、不调用账户API、不下单/撤单;OpenAPI1.0.0与所读生产changelog版本分别记录。
1. 先核wallet与accountIndex
账户由address+accountIndex组成;省略index读接口默认0,0到9的余额、订单和费率成交量分开。子账户不是cross/isolated margin的替代,Web尚未显示该API能力,不猜图形入口。
检查结果:原钱包、index、接口和环境已定,未知字段保留。
2. 以订单ID关联真实生命周期
原POST的202或200回执不要直接当最终成交;保存orders事件及orderId/clientId后再核历史行。REST status过滤匹配当前状态,不查曾经状态;status拼错应看400错误,不能把它当空结果。
检查结果:请求回执与当前订单状态分开,错误响应未按零订单处理。
3. 取消后查看filledSize而非只看标签
CANCELED可能此前部分成交。原filledSize=originalSize−remainingSize,avgFillPrice在有成交时才应出现;再以orderId对照fills的tradeId、size/price/MAKER或TAKER。历史旧行可能缺后来新增字段,不填0或反推未成交。
检查结果:同订单成交量与取消余量分别核,fill去重后不重复算。
4. 核updatedAt与createdAt的窗口
orders按updatedAt、fills按createdAt过滤,from/to都是epoch微秒。边界包含整微秒,分页会重叠,按ID去重;total只数本页,最多1000行不是全历史。时间/market/status过滤覆盖不全时不能宣称无其他成交。
检查结果:记录窗口、时间字段、单位、分页与去重规则。
怎样确认完成
- 能说明同orderId的实际成交和未执行余量,历史覆盖和字段缺口有界限。
- documentation:未验收账户/接口或交易。
常见错误与边界
- 静态API例子不是本人或实时数据。
- 文档全局认证概述与具体GET no-auth措辞有差异;教程不靠建立凭据或请求来解决,先保留原版本。