跳转到内容

查询已完成订单

已完成订单是已经不再活动的订单,例如已成交、已取消、API 取消、失效等。它们不会出现在活动订单列表里,但可以通过 reqCompletedOrders() 查询。

官方参考:TWS API Documentation

步骤接口 / 回调说明
1reqCompletedOrders(apiOnly)请求已完成订单。
2completedOrder()每次接收一条已完成订单。
3completedOrdersEnd()表示这一批已完成订单返回结束。

completedOrder() 返回的是订单归档,不是成交流水。一个已取消订单可以出现在这里,但不会出现在 execDetails() 中。

COMPLETED_ORDERS_END=True
COMPLETED_ORDER_ROWS=4
COMPLETED_ORDER=symbol=AAPL;secType=STK;action=BUY;orderType=LMT;totalQuantity=1;status=Cancelled;permId=1466795661
COMPLETED_ORDER=symbol=AAPL;secType=STK;action=BUY;orderType=LMT;totalQuantity=1;status=Cancelled;permId=1466795662

这个结果说明 reqCompletedOrders(True) 正常结束,并返回此前已取消的 API 限价单。示例只展示前两条订单归档关键字段,公开日志里应避免打印账户号和完整交易明细。

数据接口用途
活动订单reqOpenOrders() / reqAllOpenOrders()恢复还在工作中的订单。
已完成订单reqCompletedOrders()查看已结束订单归档。
成交详情reqExecutions()保存真实成交流水。
佣金费用commissionAndFeesReport()补充成交费用和已实现盈亏。
  • 已完成订单不一定成交。Cancelled、ApiCancelled、Inactive 都可能没有成交。
  • 已完成订单适合做订单历史,不适合做盈亏流水。
  • 如果要计算真实买卖明细,应使用 execDetails()commissionAndFeesReport()
  • 返回 0 行不代表接口失败;是否收到 completedOrdersEnd() 更能说明请求是否正常结束。