You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发教育类订单管理系统:FIX协议OrdStatus与ExecType组合实现咨询

FIX协议中OrdStatus(39)与ExecType(150)的组合实现指南

先明确两个字段的核心区别,这是理清组合逻辑的基础:

  • OrdStatus(39)是订单的全局当前状态,代表订单从创建到终止的某一时刻的快照,一个订单在任意时间点只会有一个OrdStatus值。
  • ExecType(150)是单次执行动作的类型标记,记录触发订单状态变化的具体事件,一个订单生命周期内会生成多个ExecType对应的事件记录。

最佳实现的关键原则

  • 事件驱动状态更新:每产生一个ExecType事件,必须同步更新OrdStatus到对应的合法状态,绝对不能出现ExecType为成交但OrdStatus仍停留在新单的脱节情况。
  • 严格遵循FIX规范的组合约束:不是所有组合都合法,FIX协议明确规定了哪些ExecType必须对应哪些OrdStatus,比如ExecType=Filled(完全成交)只能对应OrdStatus=Filled,ExecType=PartialFill(部分成交)必须对应OrdStatus=PartiallyFilled。
  • 全生命周期日志:教学场景下一定要记录每个ExecType事件对应的OrdStatus变更历史,这是理解订单流转的最佳方式,方便后续复盘和演示。

常见合法组合场景(以FIX 4.4为例)

  • 新单提交成功确认:
    ExecType=New (0)
    OrdStatus=New (0)
    
  • 订单部分成交:
    ExecType=PartialFill (1)
    OrdStatus=PartiallyFilled (1)
    
  • 订单完全成交:
    ExecType=Filled (2)
    OrdStatus=Filled (2)
    
  • 用户发起取消请求,待交易所确认:
    ExecType=CancelRequest (3)
    OrdStatus=PendingCancel (4)
    
  • 订单成功取消:
    ExecType=Cancelled (4)
    OrdStatus=Cancelled (4)
    
  • 订单被交易所拒绝:
    ExecType=Rejected (8)
    OrdStatus=Rejected (8)
    

文档与实现案例参考

  • FIX官方规范:直接查看FIX 4.2/4.4/5.0的核心协议文档,里面有完整的OrdStatus和ExecType枚举值列表,以及明确的组合约束说明,这是最权威的依据。
  • 开源FIX项目实现:比如QuickFIX/J(Java)、QuickFIX/n(.NET)这类成熟的FIX协议库,它们的源码里有完整的订单状态机逻辑,会根据ExecType判断并更新OrdStatus,能直接看到合法组合的处理代码。比如QuickFIX/J的Order类中,就有专门的方法处理不同ExecType对应的状态变更。
  • 教学可视化:自己绘制一张订单生命周期状态图,把每个OrdStatus作为节点,ExecType作为触发节点跳转的边,这种可视化方式在教学中能快速帮学习者理清所有组合关系。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:09:54