Quickfixn 如何阅读自定义消息

Quickfixn 如何阅读自定义消息,quickfixn,Quickfixn,我们的交易对手(接受方)界面基于FIX版本4.3。但是,他们对消息类型进行了一些修改,并从5.0版引入了标志 我通过向我们的交易对手(接受者)发送MarketDataRequest(MsgType=V),请求发送MarketDataSnapshotFullRefresh(MsgType=W)消息 我需要修改字典,使之符合信息。从下面的XML中可以看到,我必须添加组NoLegs,这是回复的一部分,但不是原始规范4.3() [...] [...] 在更改dict以适应自定义消息后,我的客户不再向

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

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

我需要修改字典,使之符合信息。从下面的XML中可以看到,我必须添加组
NoLegs
,这是回复的一部分,但不是原始规范4.3()


[...]
[...]
在更改dict以适应自定义消息后,我的客户不再向接收者回复拒绝消息。。。到目前为止还不错

但是,我无法访问此字段,因为此属性不属于类
QuickFix.FIX43.MarketDataSnapshotFullRefresh


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

我通过以下步骤解决了此问题:

1.)从github下载源代码

2.)安装ruby和nokogiri gem

3.)在
\spec\fix\fix{yourVersion}.XML
下对相应的XML文件进行更改,以便它处理对手的方言

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

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


6.)参考项目中的
QuickFix
QuickFix.FIX{yourVersion}
,如果我正确理解了您的问题,那么您需要遵循以下提到的步骤

  • 将自定义标记添加到FIX4x.xml(x可以是任何版本) 例:
  • <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>