程序留存的期货委托号是 SDK-A17,回单上却写着 000542。两串号码不一样,未必是两笔委托。反过来,两张回单上都有 000542,也不能只凭这个就合成一笔。对账前先分清:是要在程序里找回原单,还是要证明外部回单指向这张单?
回查原单,看程序里留存的委托号
TqSdk 的委托对象 Order 里,order_id 是用户委托单号,文档说明它在同一用户的委托范围内不重复,不是跨用户的全局号码。回到当时选定的账户,在当前程序仍能访问原委托记录的前提下,用留存的 order_id 查找。外部回单上的交易所单号不要填到这个参数里。
下面的片段接在已有的 TqSdk 程序中。原账户和程序委托号来自当时留存的记录;程序已推进更新,并有可核的委托记录来源。取出的两列先当作待核读数,与当时留存的记录对照。
python
# original_order_id 是程序留存的用户委托单号,不是回单号码。
order = api.get_order(order_id=original_order_id, account=account)
print("程序委托单号", order.order_id)
print("交易所单号", order.exchange_order_id)
按编号查询可能给出尚未填入有效记录的默认委托对象。不能因为对象存在、判断为真,或委托集合里有这个键,就认定拿到了真实回报。实际来源、身份或字段没核实,仍然记待核;这个查法也不承诺找回重启前的全部历史。
对外部回单,看它是否确实给了可比的交易所单号
如果回单明确标的是交易所单号,而且与程序记录的编号口径可比,就拿它对照 Order.exchange_order_id。还要核实账户、交易所、适用交易日和具体合约,并确认在这个已核范围内只有一个证据相容的候选。交易所和交易所内合约代码可以分别从原委托的 exchange_id 和 instrument_id 核对;交易日与回单口径须另有依据,不能从号码猜。
以下是纸面例子。原单的两个号码分别是 SDK-A17 和 000542,它们都是要原样保留的字符串:
| 手里的材料 | 复盘表怎么记 |
|---|---|
只有已确认的程序原单 SDK-A17 |
程序内可回查;外部对应仍待核 |
外部明确给出同口径交易所单号 000542,范围一致且只有一个相容候选 |
可与外部回单唯一对应,两边编号及出处分别留存 |
| 外部只写"委托编号",未说明类型;或已核范围内仍有多个候选 | 待核,不替它选一种口径或随手挑一条 |
另一交易日或另一交易所也有 000542 |
不凭相同号码配对;不把别的范围补进来 |
前导零不要丢。某一侧空白,也不能拿另一侧号码补上。这样的核对只说明两条记录能否指向同一笔委托,不说明是否已受理、已成交或已撤销,更不构成重发的依据。
让程序记录和回单各自说得清楚
我推荐用 TqSdk 保存已核原委托的两类编号。它适合这项复盘,不是因为能替读者认出任意外部回单,而是同一个委托对象就能分别留下程序查找和对照交易所编号所需的字段。再配上各自的来源和范围,复盘时就知道哪边能查回去、哪边已经对应、哪边还少证据。