【问题标题】:How to redefine QuickFix classes for custom groups?如何为自定义组重新定义 QuickFix 类?
【发布时间】:2014-09-24 01:11:43
【问题描述】:

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

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

http://quickfix-j.364392.n2.nabble.com/How-to-avoid-ordering-group-fields-td7132898.html

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

我已经修改了数据字典,如果我能弄清楚如何创建自定义组,一切都应该没问题。也许有更简单的方法?

顺便说一句: 我知道这个网站上有一个相关的问题。 这个人被否决了,他的问题因提出了一个非常明确的问题但没有解释而被关闭:How to generate message classes from new custom FIX dictionary(但我需要在 Python 中执行此操作,因此相关链接没有帮助。)

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

我安装了ant,但不知道怎么用!很明显,将它应用到我的数据字典中,并没有得到想要的结果。

c:\quickfix\spec>ant -f FIX42_CTS.xml 构建文件: c:\quickfix\spec\FIX42_CTS.xml

构建失败 c:\quickfix\spec\FIX42_CTS.xml:1: 意外元素 “{}修复”{antlib:org.apache。 tools.ant}修复

总时间:0秒

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

【问题讨论】:

  • 我很困惑。您使用的是 QF/C++ 还是 QF/J?似乎您使用的是后者,但是使用了我不知道存在的 Python 绑定。可能是 Jython?
  • 我一直认为它是 C++。我不知道它怎么可能是Java。我在这里得到它:lfd.uci.edu/~gohlke/pythonlibs。为什么你认为我在使用 QF/J?有什么简单的方法来判断它是哪一个?
  • Ew。是的,它是 C++ 的。 ant 是一个 Java 构建工具,所以这就是我使用 Java 的原因,您的链接来自 QF/j 邮件列表。
  • 抱歉误导性链接!我不知道 Ant 只为 QF/J 工作
  • 公平地说,你没有理由不能将 Ant 用于非 Java 的东西,但它是为 Java 设计和实现的。

标签: python ant quickfix


【解决方案1】:

QF/j wiki 的用户常见问题解答中有关于如何生成 QF/j 源代码的基本说明: http://www.quickfixj.org/confluence/display/qfj/User+FAQ

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

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

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

【讨论】:

  • 是的,DD 很简单。我以前改过,没有问题。不过,从该文件创建新类以读取非标准消息对我来说是新的。我已经安装了 ant,但不确定如何使用它。您说运行命令ant jar,但返回build.xml does not exist! 该命令似乎将文件作为参数。我可以从任何地方运行它还是必须从特定的 QF 文件夹运行它?谢谢。
  • 另外——我可以阅读自定义重复组而不在 DD 中定义它们并重建 QF 吗?是否有类似于创建自定义组的非类型安全解决方法来读取? (我正在考虑您链接到的常见问题解答末尾的示例。)
  • 如果build.xml 在您的工作目录中,ant 应该会自动尝试使用它。您是否在 QF/j 项目根目录中运行它? (假设您使用的是 QF/j)
  • 自定义groups并不太难;然而,自定义 messages 会变得更复杂一些。为此,您还必须在 FromApp 中为此自定义消息添加额外的检测代码,而不是在其上调用 crack。在这两种情况下,我认为重新生成 QF/j 类和重建要容易得多。现在稍加努力,以后会省去一些麻烦。
  • 很抱歉,我认为我在这个主题上的专业知识已经到了尽头。我在 QF/C++ 方面没有太多的实践经验,而且我从未使用过 Python 绑定。我仍然认为你应该重建引擎,但我不能直接建议你这样做,因为我从来没有用 C++/Python 做过。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
相关资源
最近更新 更多