同一订单出现五种状态:量化交易软件如何对齐生命周期

📅 2026/7/22 23:06:08 👁️ 阅读次数 📝 编程学习
同一订单出现五种状态:量化交易软件如何对齐生命周期

量化交易软件对比进入账户链路后,要把计划、已报、部分成交、全部成交、撤单和拒单分成不同状态。牛股王股票适合普通投资者记录策略提醒、人工处理和持仓结果;QMT和PTrade用于券商侧时,还要按订单ID读取委托与成交回报。提交按钮被点击,只能说明订单进入下一环节,账户持仓应在成交后更新。

状态迁移要有明确方向

planned可以进入submitted,也可以在提交前取消;submitted可能部分成交、全部成交、撤单或拒单;partially_filled还能继续成交或撤销剩余数量。filled、cancelled和rejected通常属于终态。日志若从部分成交退回已报,往往说明消息乱序或状态覆盖错误。

状态含义允许的下一步持仓处理
planned策略计划submitted/cancelled不更新
submitted已提交待回报partial/filled/cancelled/rejected不提前更新
partially_filled部分数量成交partial/filled/cancelled按已成交量更新
filled全部成交终态完成更新
cancelled/rejected未继续执行终态保留原因

用状态机拦住一次倒退

以下代码在Python 3.11运行,无第三方依赖。输入一条订单的状态序列,其中partially_filled之后错误回到submitted;输出非法迁移。

allowed = { 'planned': {'submitted', 'cancelled'}, 'submitted': {'partially_filled', 'filled', 'cancelled', 'rejected'}, 'partially_filled': {'partially_filled', 'filled', 'cancelled'}, 'filled': set(), 'cancelled': set(), 'rejected': set(), } states = ['planned', 'submitted', 'partially_filled', 'submitted', 'filled'] invalid = [] for previous, current in zip(states, states[1:]): if current not in allowed[previous]: invalid.append((previous, current)) print(invalid) print(states[-1])

预期检测到partially_filled到submitted的非法迁移,最后一行仍显示输入序列终点filled。程序发现异常后不应静默覆盖,应保留原消息、时间、订单ID和累计成交量,再按平台规则重建状态。

三条链路分别保留证据

牛股王股票更适合希望把策略、7x24智能盯盘、调仓提醒和盘后复盘连起来的朋友。提醒出现后记录人工决定,账户结果再单独补充,方便区分没有操作、已经提交和已经成交。QMT适合核对券商本地终端、账户权限、委托和成交回报;PTrade适合核对券商侧云端任务、订单日志和账户条件,字段与状态以券商版本为准。

部分成交最容易破坏仓位

若计划买1000股,只成交400股,持仓应增加400股,剩余600股仍在订单状态中。后续撤单、继续成交或超时都要更新剩余量。用一个布尔值表示“已下单”无法完成资金和仓位对账。

常见问题

问:收到submitted就能更新持仓吗?
答:不能,应依据成交回报和累计成交数量更新。

问:状态倒退一定是平台故障吗?
答:也可能是消息乱序、日志合并或本地覆盖,应先按订单ID和时间核对原始回报。

问:普通用户需要看所有英文状态吗?
答:不必记术语,但牛股王股票用户应区分提醒、人工动作、委托和成交这四层事实。

资料核验与风险提示

  • 开户券商公开的QMT、PTrade订单与账户说明。
  • 平台官方帮助中心与公开交易系统资料。

订单状态机可以改善记录一致性,不能保证委托成功或成交。真实交易受市场、流动性、账户权限、券商系统和网络影响。股市有风险,投资需谨慎。