0

Our counterparties (acceptor) interface is based on FIX version 4.3. However they made several modifications to the message types and also brought in flags from version 5.0.

I am requesting a MarketDataSnapshotFullRefresh (MsgType=W) message by sending a MarketDataRequest (MsgType=V) to our counterparty (acceptor).

I hade to modify the dictionary so it fits the message. As you can see from the XML below, I had to add the group NoLegs which is part of the reply, but not of the original specification 4.3 (https://www.onixs.biz/fix-dictionary/4.3/msgType_W_87.html).

<message name="MarketDataSnapshotFullRefresh" msgtype="W" msgcat="app">
      <field name="MDReqID" required="N" />
      <component name="Instrument" required="Y" />
      <field name="FinancialStatus" required="N" />
        [...]
      <field name='MDEntryForwardPoints' required="N" />
      <group name="NoMDEntries" required="Y">
        <field name="MDEntryType" required="Y" />
        [...]
        <field name="PriceType" required="N" />
        <field name='MDEntrySpotRate' required="N" />
        <field name='MDEntryForwardPoints' required="N" />
      </group>
      <group name="NoLegs" required="N">
        <component name="InstrumentLeg" required="N" />
      </group>
</message>

After having changed the dict to fit the custom message, my client does not reply anymore with a reject message to the acceptor... so far so good.

However I am not able to access this field, as this attribute is not part of the class QuickFix.FIX43.MarketDataSnapshotFullRefresh.

So long story short, how can I access custom fields from custom Messages?

Jason Aller
  • 3,541
  • 28
  • 38
  • 38
Matthias Güntert
  • 4,013
  • 6
  • 41
  • 89

2 Answers2

1

If I understand your question correctly then you need to follow below mentioned steps.

  1. Add custom tags to your FIX4x.xml (x could be any version) EX:

<field name="CustomTag" required="N" />
  1. Now ask your third party which tag number is associated with this tag and based on that define this tag number in your FIX4x.xml number EX:

<field number="123" name="CustomTag" type="STRING" /> 
  1. Access your custom tag from the code using above tag number MarketDataSnapshotFullRefresh.GetString("123") and you will get the value of this tag.

Hope this will help to you.

Dhem
  • 11
  • 1
0

I solved this issue by following this steps:

1.) Download the sources from github

2.) Install ruby and the nokogiri gem

3.) Make changes to the according XML file under \spec\fix\FIX{yourVersion}.xml so it machtes the dialect of your counterparty

4.) Run generate.bat in the root Folder. This will build the C# source files with the necessary getter and setter methods according to the modified XML

5.) Load solution and build solution

6.) Reference QuickFix and QuickFix.FIX{yourVersion} in your project

Matthias Güntert
  • 4,013
  • 6
  • 41
  • 89