Incorrect NumInGroup count for repeating group Qui

2019-06-05 13:40发布

问题:

I am unable to parse this market data incremental refresh message(fix 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 gives me the following:

quickfix.FieldException: Incorrect NumInGroup count for repeating group, field=268

I know that is a repeating group issue, but I not quite sure how to change my spec in order to parse this message.

回答1:

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|

Field 64 is not by default part of the NoMDEntries (268) repeating group. When the parser hits 64, it thinks it has reached past the end of the repeating group, and that the groups first and only item ended at the first 290.

The DataDictionary xml file is quite easy to understand after you've looked at it for a few minutes. Assuming that your sender intentionally wants 64 to be in this group, you simply need to find the definition for message X (MarketDataIncrementalRefresh) and add field 64 (FutSettDate) in its proper place in that group. (This group or part of it may be defined in a component, but I think you'll be able to figure it out.)

Note: The order of fields is important. Make sure you add it on a line after 290 (MDEntryPositionNo) and before or after any other optional fields as appropriate that might appear in a group item.

I'm guessing that 64 is not the only DD modification your counterparty has made. You need to check with your counterparty so that you can make all DD alterations necessary.