Quickfix无法读取重复组

时间:2014-09-15 22:52:30

标签: python quickfix fix-protocol

我在Windows中使用带有python绑定的quickfix。我以前能够提出市场数据请求。我最近换了一个不同的API提供商(Cunningham,又名CTS),遇到了很多问题。但是,其中至少有一个似乎是quickfix的内部。令我困惑的是。

当我发送市场数据请求时,我会收到回复。这是典型的35 = W消息,即市场快照。

Quickfix拒绝此邮件,因为代码269不止一次出现!

当然,标签269是MDEntryType,假设不止一次出现。另请注意,已定义标记268,NoMDEntries,并表示该组中有21个条目。

我认为这是quickfix的内部因素,因为quickfix会生成错误消息并将其发送回CTS。此外,此错误会在消息传递到fromApp函数之前中止该消息。 (我知道因为我的解析器在调用fromApp时自己应用于消息甚至没有得到此消息。)

有什么想法吗?信息如下。

(编辑 - 我已关闭配置文件中的数据字典 - 它可能与此有关吗?)

< 20140915-22:39:11.953,FIX.4.2:XXXXX-> CTS,传入>   (8 = FIX.4.2☺9 = 836☺35 = W☺34 = 4☺49 = CTS☺56 = XXXXX☺52 = 20140915-22:39:11.963☺48 = XDLCM E_F ZN(Z14)☺387= 2559☺965 = 2☺268 = 21☺269 = 0☺270 = 124156250☺271 = 646☺1023 = 1☺269 = 0☺270 = 124140625☺271 = 918☺1023 = 2☺269 = 0☺270 = 124125000☺271 = 1121☺1023 = 3☺269 = 0☺270 = 124109375  ☺271 = 998☺1023 = 4☺269 = 0☺270 = 124093750☺271 = 923☺1023 = 5☺269 = 0☺270 = 124078125☺271 = 1689☺ 1023 =6☺269=0☺270= 124062500☺271 = 2011☺1023 = 7☺269 = 0☺270 = 124046875☺271 = 1782☺1023 = 8☺2 69 =0☺270= 124031250☺271 = 2124☺1023 = 9☺269 = 0☺270 = 124015625☺271 = 1875☺1023 = 10☺269 = 1☺27 0 = 124171875☺271 = 422☺1023 = 1☺269 = 1☺270 = 124187500☺271 = 577☺1023 = 2☺269 = 1☺270 = 12420312 5☺271 = 842☺1023 = 3☺269 = 1☺270 = 124218750☺271 = 908☺1023 = 4☺269 = 1☺270 = 124234375☺271 = 1482  ☺1023= 5☺269 = 1☺270 = 124250000☺271 = 1850☺1023 = 6☺269 = 1☺270 = 124265625☺271 = 1729☺1023 = 7☺ 269 =1☺270= 124281250☺271 = 2615☺1023 = 8☺269 = 1☺270 = 124296875☺271 = 1809☺1023 = 9☺269 = 1☺27 0 = 124312500☺271 = 2241☺1023 = 10☺269 = 4☺270 = 124156250☺271 = 1☺10 = 140☺)

< 20140915-22:39:12.004,FIX.4.2:XXXX-> CTS,事件>   (消息4被拒绝:标签出现不止一次:269)

< 20140915-22:39:12.010,FIX.4.2:XXXX-> CTS,传出>   (8 = FIX.4.2☺9 = 102☺35 = 3☺34 = 4☺49 = XXXX☺52 = 20140915-22:39:12.009☺56 = CTS☺45 = 4☺58 = 标签出现不止一次☺371= 269☺372 =W☺10= 012☺)

2 个答案:

答案 0 :(得分:3)

  

(编辑 - 我已关闭配置文件中的数据字典 - 它可能与此有关吗?)

是的,这正是问题所在。

没有DD,您的引擎不知道重复组何时结束或开始。就其而言,没有重复的群体。

需要 DD,并且您需要确保它与您的对方的消息和字段集匹配。如果他们已添加自定义字段或消息,则需要确保您的DD反映了该内容。

答案 1 :(得分:1)

我意识到这个线程已经存在了多年,但我遇到了这个确切的问题,并最终解决了这个问题,所以我把它放在这里帮助其他任何偶然发现这个问题的人。

问题是在我的配置中我使用的是'DataDictionary=..'参数。将此更改为'AppDataDictionary=...'解决了我的问题。

史蒂夫