Как читать пользовательские сообщения - PullRequest
0 голосов
/ 24 августа 2018

Интерфейс нашего контрагента (акцептора) основан на FIX версии 4.3.Однако они внесли несколько изменений в типы сообщений, а также внесли флаги из версии 5.0.

Я запрашиваю сообщение MarketDataSnapshotFullRefresh (MsgType=W), отправив MarketDataRequest (MsgType=V) нашему контрагенту (акцептору).

Я хочу изменить словарь так, чтобы он соответствовал сообщению.Как вы можете видеть из приведенного ниже XML, мне пришлось добавить группу NoLegs, которая является частью ответа, но не оригинальной спецификации 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>

После того, какизменил dict, чтобы он соответствовал пользовательскому сообщению, мой клиент больше не отвечает сообщением об отклонении получателю ... пока все хорошо.

Однако я не могу получить доступ к этому полю, так как этот атрибутне является частью класса QuickFix.FIX43.MarketDataSnapshotFullRefresh.

Короче говоря, как я могу получить доступ к настраиваемым полям из пользовательских сообщений?

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Если я правильно понимаю ваш вопрос, то вам нужно выполнить следующие шаги:

  1. Добавить пользовательские теги в ваш FIX4x.xml (x может быть любой версией) EX:

<field name="CustomTag" required="N" />
Теперь спросите у третьей стороны, какой номер тега связан с этим тегом и на основании этого определите этот номер тега в вашем номере FIX4x.xml. EX:

<field number="123" name="CustomTag" type="STRING" /> 
Получите доступ к своему пользовательскому тегу из кода, используя вышеуказанный номер тега MarketDataSnapshotFullRefresh.GetString ("123"), и вы получите значение этого тега.

Надеюсь, это поможет вам.

0 голосов
/ 29 августа 2018

Я решил эту проблему, выполнив следующие действия:

1.) Скачать исходники с github

2.) Установите рубин и камень нокогири

3.) Внесите изменения в соответствующий XML-файл в \spec\fix\FIX{yourVersion}.xml, чтобы он соответствовал диалекту вашего контрагента

4.) Запустите generate.bat в корневой папке. Это создаст исходные файлы C # с необходимыми методами получения и установки в соответствии с измененным XML

5.) Загрузить решение и построить решение

6.) Ссылка QuickFix и QuickFix.FIX{yourVersion} в вашем проекте

...