Python 如何为自定义组重新定义QuickFix类?

Python 如何为自定义组重新定义QuickFix类?,python,ant,quickfix,Python,Ant,Quickfix,我正在使用带Python的QuickFix连接一个特殊的数据提供者。他们定义了一个新的重复组NoChartData,我无法读取它,因为我在QuickFix中定义组的方式是,例如,group=fix42.MarketDataIncrementalRefresh().NoMDEntries()。当我用NoChartData()替换NoMDEntries()时,我得到一个属性错误,因为NoChartData()不存在 我有一些模糊的想法,我需要重建QuickFix类,我在这里读到: 我在quickf

我正在使用带Python的QuickFix连接一个特殊的数据提供者。他们定义了一个新的重复组
NoChartData
,我无法读取它,因为我在QuickFix中定义组的方式是,例如,
group=fix42.MarketDataIncrementalRefresh().NoMDEntries()
。当我用
NoChartData()
替换
NoMDEntries()
时,我得到一个属性错误,因为
NoChartData()
不存在

我有一些模糊的想法,我需要重建QuickFix类,我在这里读到:

我在quickfix/lib/jar文件夹中找到了ant.jar,但不知道如何运行它

我已经修改了数据字典,如果我能找到创建自定义组的方法,一切都会很好。也许有更简单的方法

顺便说一句: 我知道这个网站上有一个相关的问题。 这家伙被否决了,他的问题因为提出了一个非常清楚的问题而结束了,但没有解释它:(但我需要用Python来做这件事,所以相关的链接没有帮助。)

---2014年9月24日更新--

我已经安装了ant,但不知道如何使用它!显而易见的是,将其应用到我的数据字典中,并没有达到预期的效果

c:\quickfix\spec>ant-f FIX42\u CTS.xml构建文件: c:\quickfix\spec\FIX42\u CTS.xml

生成失败c:\quickfix\spec\FIX42\u CTS.xml:1:意外元素 “{}fix”{antlib:org.apache.tools.ant}fix

总时间:0秒


也许这个问题可以帮助其他缺乏Java和Ant经验的QF用户

QF/j wiki的用户常见问题解答中有关于如何生成QF/j源的基本说明:

(奇怪的是,这个常见问题解答目前有两个问题基本相同。我必须考虑将它们结合起来。这有点尴尬,因为我似乎是该页面的唯一编辑。:)

您必须编辑DataDictionary XML文件。该文件的结构非常简单;花几分钟浏览一下,以便了解布局。(首先是关于消息定义的一大部分,然后是字段定义的一大部分。您需要编辑这两个部分以添加新组。)


编辑:原来您没有使用QF/j派生的构建,所以这个答案可能对您没有多大帮助。

是的,DD非常简单。我过去改变过,没有任何问题。但是,从该文件创建新类来读取非标准消息对我来说还是一件新鲜事。我已经安装了ant,但不确定如何使用它。您说运行命令
antjar
,但返回的
build.xml不存在该命令似乎将文件作为参数。我可以从任何地方运行它,还是必须从特定的QF文件夹运行它?谢谢。另外--我可以阅读自定义重复组而不在DD中定义它们并重建QF吗?是否有类似于创建自定义组的非类型安全阅读解决方案?(我想到了链接到的FAQ末尾的示例。)如果
build.xml
在您的工作目录中,
ant
应该自动尝试使用它。您是否在QF/j项目根目录中运行它?(假设您使用的是QF/j)自定义组并不太难;然而,自定义消息会变得更加复杂。为此,您还必须在FromApp中为该自定义消息添加额外的检测代码,而不是调用
crack
。在这两种情况下,我认为重新生成QF/j类和重新构建要容易得多。现在稍微努力一下,你以后就可以省去一些麻烦了。对不起,我想我们在这个问题上的专业知识已经到了极限。我在QF/C++方面没有那么多实际操作经验,而且我从未使用过Python绑定。我仍然认为你应该重建引擎,但我不能给你直接的建议,因为我从来没有用C++/Python做过。我很困惑。您使用的是QF/C++还是QF/J?看起来您使用的是后者,但使用的是我不知道存在的Python绑定。Jython可能?我总是假设它是C++。我不知道它怎么可能是Java。我在这里找到的:。你认为我为什么使用QF/J?有什么简单的方法可以分辨出是哪一个吗。是的,它是C++的。code>ant
是一个Java构建工具,所以我假设它是Java,而您的链接来自QF/j邮件列表。很抱歉,链接有误导性!我不知道Ant只为QF/JT工作,为了公平起见,没有理由不能将Ant用于非java的东西,但它是面向java的,并且是用java实现的。