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

发送Order Cancel/Replace Request时遇invalid integral value报错求助

问题:Order Cancel/Replace Request中PERCENTAGE类型字段30022设置小数被拒,提示invalid integral value

问题详情

  • 发送**Order Cancel/Replace Request(MsgType=G)**时,给自定义字段30022设置小数数值(如0.8),收到拒绝报文
  • 错误信息:invalid integral value: 0.8,对应SessionRejectReason为INCORRECT_DATA_FORMAT_FOR_VALUE
  • 关键矛盾点:
    • 该字段在FIX字典中定义为PERCENTAGE类型,本应支持小数
    • 其他同类型PERCENTAGE字段无此问题
    • 在NewOrderSingle报文中设置该字段小数数值完全正常
    • 尝试replace.setString(30022, textValue)、setDouble、setDecimal三种赋值方式均触发相同报错
    • 错误来自IntConverter类的convert方法,但仅在发送MsgType=G报文时被调用

发送的替换报文:

8=FIX.4.49=31735=G34=349=SILICONBOVDEVEL0152=20240812-14:22:30.82856=SILICONBOVDEV1=32111=30022552721=438=100040=241=140438870644=1054=155=MBOTFBOV159=060=20240812-14:22:30.819111=1000847=10130022=0.830023=14:05:0130024=20:50:0030025=1030026=100030036=1030038=Y30057=0453=2448=935452=7448=TZINI452=3610=166

收到的拒绝报文:

8=FIX.4.49=13135=334=349=SILICONBOVDEV52=20240812-14:22:30.93356=SILICONBOVDEVEL0145=358=invalid integral value: 0.8371=30022372=G373=610=181

排查方向与解决思路

  1. 核对FIX字典的消息类型专属配置
    检查本地使用的FIX字典,确认字段30022在**MsgType=G(Order Cancel/Replace Request)**下的类型是否被错误映射为INT而非PERCENTAGE。部分FIX库允许针对不同消息类型单独配置字段类型,可能存在配置遗漏或错误。
  2. 确认交易对手方的字段配置
    联系交易对手方,核实他们的FIX引擎中,MsgType=G下的30022字段类型是否为PERCENTAGE。对方可能错误将该字段配置为整数类型,导致接收时用IntConverter解析小数触发报错。
  3. 调试本地FIX库的字段处理逻辑
    跟踪本地代码执行流程,查看构建MsgType=G报文时,字段30022的类型推断逻辑是否异常。自定义字段(30000+段)的处理可能存在消息类型分支错误,导致库错误调用了IntConverter而非PercentageConverter。
  4. 临时兼容方案:显式指定字段类型
    如果无法快速修正配置或库逻辑,可尝试在赋值时明确指定字段类型为PERCENTAGE,避免库自动推断出错。示例代码(根据所用FIX库调整):
    // 使用DecimalField显式设置数值与字段类型
    replace.setField(new DecimalField(30022, new BigDecimal("0.8")));
    // 或直接指定字段类型的方式
    replace.setField(new Field(30022, "0.8", FieldType.PERCENTAGE));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:33:09