Quickfix MarketDataIncrementalRefresh: тег не определен для этого типа сообщений

Я использую Quickfix C ++.
Я получаю сообщение FIX от сервера:

8=FIX.4.2|9=312|35=X|34=17|49=CX|52=20150413-13:33:39.691|56=CACIB_MD2|262=1|9883=IDB|268=2|279=2|269=0|55=535791|270=15|271=1|272=20150413|273=13:28:07.653|59=0|126=20150413-21:56:46.201|290=1|9139=cacib_uat2|279=0|269=0|55=535791|270=17|271=1|272=20150413|273=13:33:39.660|59=0|126=20150413-21:56:46.201|290=1|9139=cacib_uat2|10=015|

и Quickfix автоматически отправляет обратно на сервер сообщение об отклонении (тег 55 не определен для этого типа сообщения):

8=FIX.4.2|9=121|35=3|34=17|49=CACIB_MD2|52=20150413-13:33:39.755|56=CX|45=17|58=Tag not defined for this message type|371=55|372=X|373=2|10=044|

Но этот тег (55) определен в файле словаря:

  <message name='MarketDataIncrementalRefresh' msgcat='app' msgtype='X'>
<field name='MDReqID' required='N' />
<field name='CXMarketType' required='N' />
<group name='NoMDEntries' required='N'>
<field name='Symbol' required='N' />
</group>
</message>
...
<field number='55' name='Symbol' type='STRING' />
...
<field number='262' name='MDReqID' type='STRING' />
...
<field number='268' name='NoMDEntries' type='INT' />
...
<field number='9883' name='CXMarketType' type='STRING' />
...

И варианты FIX:

UseDataDictionary=Y
DataDictionary=./conf/fix42_dictionary.xml
ValidateFieldsOutOfOrder=N
ValidateUserDefinedFields=N

Я не понимаю, почему Quickfix решает, что тег 55 (символ) не определен, когда он является частью группы.

Можете ли вы помочь?

1

Решение

Проблема в том, что вы не можете напрямую добавлять группы к сообщениям, сначала они должны быть внутри компонента

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

<component name="NoMDEntriesComp">
<group name='NoMDEntries' required='N'>
<field name='Symbol' required='N' />
</group>
</component>

Тип NoMDEntries должен быть NUMINGROUP вместо INT

<field number='268' name='NoMDEntries' type='NUMINGROUP' />
0

Другие решения


По вопросам рекламы [email protected]