如何在快速修复中向组添加新列

本文关键字:添加 新列 | 更新日期: 2023-09-27 17:51:22

我使用快速修复连接到修复引擎和接收数据。但是进入的市场数据被我的应用程序拒绝了,说明标签出现了两次。

 20160624-12:44:36.770 : 8=FIX.4.49=21835=W34=2649=CfhDemoPrices52=20160624-12:44:37.79356=PrimoDEMOFIX55=GBPUSD262=PrimoApp13268=2269=0270=1.37203271=1500000290=164=20160628278=30/34-920771269=1270=1.37228271=1500000290=1278=30/34-92077610=038
 20160624-12:44:36.798 : 8=FIX.4.49=12635=334=2749=PrimoDEMOFIX52=20160624-12:44:36.79456=CfhDemoPrices45=2658=Tag appears more than once371=278372=W373=1310=139 

经过大量分析,我们发现fix44的NoMDEntries中不包含278(MDEntryID)标签。我想在我的快速修复中包括该组中的字段并重建它。知道怎么做吗?或者让我知道你的建议来解决这个问题。

如何在快速修复中向组添加新列

你修改的DD不正确,因为你不知道重复组是如何工作的。

这是您的消息的标准FIX44 DD。我添加了一些注释来指示标签编号。

  <message name="MarketDataSnapshotFullRefresh" msgtype="W" msgcat="app">
    <field name="MDReqID" required="N" />
    <component name="Instrument" required="Y" />
    <group name="NoUnderlyings" required="N">
      <component name="UnderlyingInstrument" required="N" />
    </group>
    <group name="NoLegs" required="N">
      <component name="InstrumentLeg" required="N" />
    </group>
    <field name="FinancialStatus" required="N" />
    <field name="CorporateAction" required="N" />
    <field name="NetChgPrevDay" required="N" />
    <group name="NoMDEntries" required="Y">      <!-- 268 -->
      <field name="MDEntryType" required="Y" />  <!-- 269 -->
      <field name="MDEntryPx" required="N" />    <!-- 270 -->
      <field name="Currency" required="N" />
      <field name="MDEntrySize" required="N" />  <!-- 271 -->
      <field name="MDEntryDate" required="N" />
      ... and so on ...

重复组中的字段必须按照指定的顺序排列。当QF处理一个组时,如果遇到一个意外的字段,那么它假定这个组结束了。

您的DD与发送者发送的订单不匹配,因此您的引擎出现故障。

您的发送者按此顺序发送字段:

268-> (group 1) 269 270 271 290 64 278
      (group 2) 269 270 271 290 278

(以上内容直接来自你被拒绝的邮件)

你的DD期待269 278 271 270。当它达到278时,它就结束了这个组,奇怪的事情开始发生。

将DD恢复为默认值,然后将64/SettlDate和278/MDEntryID添加到NoMDEntries组件的end。根据您提供的证据,很明显,您的对手方已将这些字段添加到组的末尾。

当然这些不是你方对DD所做的唯一修改。获取他们的文档并阅读它。然后相应地修改你的DD