quickfix

Quickfix Tag Not defined For This message type but it's defined in the xml file


I am using the QuickFix in a client connecting to a FIX.4.4 server. But it is rejecting an incoming message from the server. The incoming message is a market data incremental refresh message (type 'X'):

8=FIX.4.4|9=0176|35=X|49=Server|56=Client|52=<Timestamp>|34=7245|268=2
    |279==0|**55=<symbol>**|269=0|270=<Price>|271=0|1500=90
    |279==0|**55=<Symbol>**|269=1|270=<Price>|271=0|1500=90|10=034|

However The client generated a reject message like this: 58=Tag not defined for this message type **371=55 **372=X

Here is the spec and configuration i am using:

DefaultApplVerID=FIX.4.4

ConnectionType=initiator

BeginString=FIX.4.4

UseDataDictionary=Y

DataDictionary=path/spec/FIX44.xml

FileStorePath=./Sessions/

ValidateIncomingMessage=N

ValidateUserDefinedFields=N

ValidateFieldsOutOfOrder=N

RejectInvalidMessage=N

 <message name='MarketDataIncrementalRefresh' msgtype='X' msgcat='app'>
    <field name='MDReqID' required='N' />
    <component name='MDIncGrp' required='Y'/>
  </message>

<component name='MDIncGrp'>
    <group name='NoMDEntries' required="Y">
     <field name='MDUpdateAction' required='Y' />
     <field name='Symbol' required='N'/>
     <field name='MDEntryType' required='N' />
     <filed name='MDEntryPx' required='N' />
     <field name='MDEntrySize' required='N' />
     <field name='MDEntryID' required='N' />
     <field name='NumberOfOrders' required='N' />
     <field name='MDStreamID' required='N' />
     </group>
  </component>

<field number='268' name='NoMDEntries' type='NUMINGROUP' />
  <field number='279' name='MDUpdateAction' type='CHAR'>
   <value enum='0' description='NEW' />
   <value enum='1' description='CHANGE' />
   <value enum='2' description='DELETE' />
  </field>
field number='55' name='Symbol' type='STRING' />
<field number='269' name='MDEntryType' type='CHAR'>...</field >
  <field number='270' name='MDEntryPx' type='PRICE' />
  <field number='271' name='MDEntrySize' type='QUOTE' />
  <field number='278' name='MDEntryID' type='STRING' />
 <field number='346' name='NumberOfOrders' type='INT' />
 <field number='1500' name='MDStreamID' type='INT'/>

`**I verified my code is properly loading the 4.4 xml file. **

I was wondering if anyone had encountered this before and if they knew how to resolve it?

Many thanks in advance.


Solution

  • Many thanks for all the replies. I have finally fixed the issue. It was caused by my modification of the field sequence in the repeating group 'NoMDEntries'. To fix this issue, I reverted the FIX44.xml file to its original version and added the field 'MDStreamID' at the end of the repeating group 'NoMDEntries'. Even though the sequence did not match the sequence of the message received from my broker, QuickFIX was still able to handle it. The key takeaway from this experience is to avoid changing the sequence of the fields in the default FIX44.xml file