1.9 KiB
1.9 KiB
IPO 提交与结果核对
当前实现使用文件记录,不增加数据库或后台任务。
- 路径:
qmt_data_dir/ipo/<账户 SHA-256>/<YYYYMMDD>/<证券>/<尝试序号>.json。 - 提交前用独占创建方式写入并落盘
pending;占位失败不提交。 - HTTP 正常返回仍保留
pending,不代表最终申购成功。 - 下次 IPO 任务先查询账户委托。查不到、状态未知、仍在处理或已有部分成交时,不重发。
- 同一本地订单编号查到状态 56 后记录
confirmed,后续保持防重。 - 同一编号查到状态 57 且成交量为 0,才记录
rejected并原子占位下一次尝试。旧尝试的废单不能授权新尝试再次重发。 - 不同账户、日期使用不同记录。每次尝试都有写入记录且传给 QMT 的本地订单编号。
状态码依据:迅投官方委托核对示例。撤单、部撤等情况未自动视为可以再次申购。
旧版只有证券名的 .lock 文件不再作为新账户的申购记录,避免跨账户锁冲突;首次运行通过当天同证券买入委托防重。升级应在当前账户委托可查询的条件下进行,旧锁本身无法证明归属账户或最终结果。
损坏或无法读取的记录不会触发重新提交;记录写入失败也不会提交。若长期查不到回报,需要先人工核对柜台结果,不能直接删除待确认记录后重跑。
接口响应是 QMT get_ipo_data() 的原样转发:以证券代码为键的字典(部分版本再按市场分一层),SDK 在 sdk/trade.py 规范化为候选列表并补全 stock 全码;空响应表示当日无候选,无法识别的结构抛错并记录,不静默当作"今日无新股"。候选要求完整代码及对应交易所、有限正价格、正整数数量。当前参与板块范围保持不变。