订单监控
提交订单只是第一步。交易系统还需要持续监控订单是否被接受、部分成交、全部成交、取消或被拒绝。
Client Portal API 的订单监控接口主要用于查询账户的订单状态和近期成交信息。
官方参考:Client Portal API
| 接口 | 方法 | 用途 |
|---|---|---|
/iserver/account/orders | GET | 查询活动订单。 |
/iserver/account/order/status/{orderId} | GET | 查询指定订单状态。 |
/iserver/account/trades | GET | 查询近期成交。 |
/iserver/account/orders | GET | 也常用于刷新订单列表。 |
查询活动订单
Section titled “查询活动订单”curl -k https://localhost:5000/v1/api/iserver/account/orders返回通常包含订单数组。下面是字段结构示例,订单号、价格和状态以实际返回为准:
{ "orders": [ { "orderId": "IBKR 订单编号", "conid": "合约编号", "ticker": "AAPL", "status": "Submitted", "remainingQuantity": "剩余未成交数量", "filledQuantity": "已成交数量", "avgPrice": "平均成交价" } ]}字段解释:
| 字段 | 中文说明 |
|---|---|
orderId | IBKR 订单编号,用于改单、撤单和状态查询。 |
conid | 合约编号。 |
ticker | 交易代码。 |
status | 订单状态,例如已提交、已成交、已取消等。 |
remainingQuantity | 剩余未成交数量。 |
filledQuantity | 已成交数量。 |
avgPrice | 平均成交价。 |
curl -k https://localhost:5000/v1/api/iserver/account/trades成交回报通常用于更新持仓、计算滑点、生成交易日志。程序不要只依赖“提交订单成功”来判断交易完成,应该以成交回报或订单状态为准。
状态处理建议
Section titled “状态处理建议”| 状态类型 | 程序处理 |
|---|---|
| 已提交但未成交 | 保持监控,允许撤单或改单。 |
| 部分成交 | 更新已成交数量和剩余数量。 |
| 全部成交 | 关闭本地订单追踪,写入成交记录。 |
| 被取消 | 标记为结束,不再重复撤单。 |
| 被拒绝 | 展示错误原因,保留原始返回便于排查。 |
新手容易误解的地方
Section titled “新手容易误解的地方”订单状态接口不是实时推送。轮询过慢会让页面状态滞后,轮询过快可能触发限速。正式系统通常会把轮询、缓存和 WebSocket 通知结合起来。
模拟账户也可能出现订单状态短暂延迟,这是正常现象。