如何阅读自定义消息



我们的交易对手(接受者(接口基于FIX版本4.3。但是,他们对消息类型进行了一些修改,并从 5.0 版引入了标志。

我通过向我们的交易对手(接受方(发送MarketDataRequest (MsgType=V来请求MarketDataSnapshotFullRefresh (MsgType=W)消息。

我必须修改字典,使其符合信息。正如你从下面的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>

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

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

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

如果我正确理解您的问题,那么您需要遵循下面提到的步骤。

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

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

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

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

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

希望这对您有所帮助。

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

1.(从github下载源代码

2.( 安装红宝石和野古吉里宝石

3.( 在specfixFIX{yourVersion}.xml下对相应的 XML 文件进行更改,使其符合交易对手的方言

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

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

6.( 项目中的参考QuickFixQuickFix.FIX{yourVersion}

最新更新