Search code examples
quickfixfix-protocolquickfixn

How to allow and parse FIX message with QuickFIX if Field 55 appears multiple times in FIX incoming message?


This particular broker does not provide a DataDictionary so I have to create my own based on their documentation.

This is how they send a particular message:

FIX.4.4|9=709|35=y|34=53|49=DUMMYBROKER|56=<client_ID>|52=20210211- 12:12:37.358847|55=AUD/CAD|55=AUD/CHF|55=AUD/JPY|55=AUD/NZD|55=AUD/USD|55= CAD/CHF|55=CAD/JPY|55=CHF/JPY|55=EUR/AUD|55=EUR/CAD|55=EUR/CHF| ... etc

  • How can I allow QuickFix a field to appear multiple times?
  • Once I recieve the message what is the best way to read it? I am using QuickFIX/n.

This would probably provide me the last symbol only:

var symbolstring = message.GetString(Tags.Symbol);

This is how the SecurityList is defined in the DataDictionary:

<message name="SecurityList" msgtype="y" msgcat="app">
    <group name="NoMDEntries" required="Y">
        <field name="Symbol" required="N"/>
    </group>
</message>  

I have tried changing "Y"/"N" in all variations, but it still cannot absorb the message properly.


Solution

  • This message is invalid FIX, and is simply not parseable by QuickFIX/n (or any QF engine).

    A repeating group must start with a counter field which tells the receiver how many instances of that group will follow. Their message doesn't have that counter field.