仅在发送订单取消/替换请求时接收带有文本=“无效整数值:”的拒绝

问题描述 投票:0回答:1

当我尝试用十进制值替换字段时,我收到一条拒绝消息,其中包含以下文本:“无效的整数值:0.8”,其中 SessionRejectReason=INCORRECT_DATA_FORMAT_FOR_VALUE。

在修复字典中,字段类型是 PERCENTAGE,它应该接受十进制值。

我测试了其他同样是 PERCENTAGE 类型的字段,没有问题。

当我发送一个在该字段中带有十进制值的 NewOrderSingle 时,没有问题,只有当我尝试发送替换时。

该文本在 IntConverter 类的转换方法中找到,但我不知道为什么只有在我发送订单取消/替换请求时才调用它。

我设置字段如下:“replace.setString(30022, textValue);”,我尝试使用 setDouble 和 setDecimal 并遇到了同样的问题。

如何防止该字段形式转换为整数?

替换消息:8=FIX.4.49=31735=G34=349=SILICONBOVDEVEL0152=20240812-14:22:30.82856=SILICONBOVDEV1=32111=30022552721=438=100040=241=140438870 644=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=7 448=TZINI452=3610=166

拒绝消息:8=FIX.4.49=13135=334=349=SILICONBOVDEV52=20240812-14:22:30.93356=SILICONBOVDEVEL0145=358=无效积分值:0.8371=30022372=G373=610=181

谢谢你。

fix-protocol quickfixj
1个回答
0
投票

你这边的代码不会导致这个......至少,不是直接导致的。

根据您提供的信息,您的代码似乎正在创建有效的 FIX 消息并发送它们。 receiver 正在尝试将你的 0.8 解析为 int;当失败时,它会创建此拒绝消息并将其发送回给您。

所以,我认为有两种可能性:

  1. 你犯了一个错误,30022 确实应该是 int。 仔细检查您的文档。

  2. 您的交易对手有一个错误,他们试图错误地将标签 30022 解析为 int (但仅在订单取消/替换情况下,根据您的描述)。 联系他们的支持人员并准备好提供此日志片段。

© www.soinside.com 2019 - 2024. All rights reserved.