重复组QuickFix的NumInGroup计数不正确

时间:2013-02-24 23:48:03

标签: java quickfix fix-protocol

我无法解析此市场数据增量刷新消息(修复4.3):

8=FIX.4.3|9=187|35=X|34=4|49=XDEMO|52=20130224-22:31:05.283|56=demo310262=A|268=2|279=2|269=0|278=0014vd32|55=EUR/USD|290=1|64=20130227|279=0|269=0|278=0014vdb2|270=1.31934|271=1000000|290=1|546=3|10=124

Quickfix / j给出了以下内容:

  

quickfix.FieldException:重复组的NumInGroup计数不正确,field = 268

我知道这是一个重复的群组问题,但我不太确定如何更改我的规范以解析此消息。

1 个答案:

答案 0 :(得分:3)

Group: 268=2|
  Item 1: 279=2|269=0|278=0014vd32|55=EUR/USD|290=1|64=20130227|
  Item 2: 279=0|269=0|278=0014vdb2|270=1.31934|271=1000000|290=1|546=3|

默认情况下,字段64不是NoMDEntries(268)重复组的一部分。当解析器达到64时,它认为它已经超过了重复组的末尾,并且组首先且只有项目在前290处结束。

DataDictionary xml文件在您查看几分钟后很容易理解。假设您的发件人故意希望64在此组中,您只需要找到消息X(MarketDataIncrementalRefresh)的定义并在该组中的适当位置添加字段64(FutSettDate)。 (这个组或其中的一部分可能在一个组件中定义,但我认为你将能够弄明白。)

注意:字段的顺序很重要。确保在290(MDEntryPositionNo)之后以及可能出现在组项目中的任何其他可选字段之前或之后添加它。

我猜测64并不是你的交易对手唯一的DD修改。您需要与您的对手方核实,以便您可以进行所有必要的DD更改。