0

我们的交易对手(承兑人)界面基于 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>

在更改了字典以适应自定义消息后,我的客户不再向接受者回复拒绝消息......到目前为止一切都很好。

但是我无法访问此字段,因为此属性不是 class 的一部分QuickFix.FIX43.MarketDataSnapshotFullRefresh

长话短说,我如何从自定义消息中访问自定义字段?

4

2 回答 2

1

如果我正确理解您的问题,那么您需要按照以下提到的步骤进行操作。

  1. 将自定义标签添加到您的 FIX4x.xml(x 可以是任何版本)EX:

<field name="CustomTag" required="N" />

  1. 现在询问您的第三方哪个标签号与此标签相关联,并基于此在您的 FIX4x.xml 编号 EX 中定义此标签号:

<field number="123" name="CustomTag" type="STRING" /> 

  1. 使用上面的标签号 MarketDataSnapshotFullRefresh.GetString("123") 从代码中访问您的自定义标签,您将获得此标签的值。

希望这对您有所帮助。

于 2019-05-03T11:09:04.753 回答
0

我按照以下步骤解决了这个问题:

1.) 从 github 下载源代码

2.) 安装 ruby​​ 和 nokogiri gem

3.) 对相应的 XML 文件进行更改,\spec\fix\FIX{yourVersion}.xml使其与您的交易对手方言一致

4.)generate.bat在根文件夹中运行。这将根据修改后的 XML 使用必要的 getter 和 setter 方法构建 C# 源文件

5.) 加载解决方案并构建解决方案

6.) 参考QuickFixQuickFix.FIX{yourVersion}在你的项目中

于 2018-08-29T09:14:49.210 回答