【问题标题】:quickfix : how to get Symbol ( flag 55 ) from messages?quickfix:如何从消息中获取符号(标志 55)?
【发布时间】:2013-03-19 00:33:31
【问题描述】:

我正在使用 Python API 运行 QuickFix,并使用 FIX4.2 连接到 TT FIX 适配器

我正在登录并发送两个工具的市场数据请求。这工作正常,来自仪器的数据按预期输入。我可以从消息中获取各种信息。

但是,我无法获取符号(标志 55)字段。

    import quickfix as fix

    def fromApp(self, message, sessionID):

        ID = fix.Symbol()
        message.getField(ID)
        print ID

这适用于我收到的第一条消息 [初始市场数据快照(标志 35 = W)]。一旦我开始获得增量刷新(标志 35 = X),我就无法再获得 Symbol 字段。到达的每条消息都会导致 Field Not Found 错误。

这让我很困惑,因为在日志中,符号字段始终存在,无论消息类型是 W 还是 X。

认为符号位于刷新消息的标题中,我在 35 = W 时尝试了get.Field(ID),在 35 = X 时尝试了get.Header().getField(ID),但这不起作用。

有人可以帮我弄清楚这里发生了什么吗?我希望能够明确地告诉我的计算机它在看什么仪器。

谢谢

【问题讨论】:

    标签: python quickfix fix-protocol


    【解决方案1】:

    你的问题很简单,但你也混入了一些误解。

    1) 符号将从不出现在标题中。它是一个 body 字段。

    2) 在 X 消息中,符号在重复组中。您首先必须使用msg.GetGroup() 获取组对象,然后从that 获取符号。参见this example code,来自repeating groups doc page

    3) 在 W 消息中,符号不在组中。这就是为什么它对你有用。

    您似乎对 QuickFIX 和 FIX 很陌生。我认为您应该花几分钟时间浏览一下the docs 的“处理消息”部分。

    另外,FIXimate 网站可以成为您最好的朋友。

    【讨论】:

    • 嗨@Grant,是的,我对一切都是新手,编程本身。我自己已经解决了大约四十个问题,只有在我完全难过的时候才问。我感谢您的帮助。我一直在从重复组中获取数据,在 QuickFix 文档中上下移动,并且一直访问 FIXimate。只是让你知道我不想让别人为我解决我的问题。我不认为 Symbol 在一个组中,因为在我的日志中,它从未重复过。这一定是一种特质,或者可能滚动我没有到达重复它的几条消息。再次感谢。
    • 重复组的大小可能为 1,例如它实际上并没有重复 :) 查看字段 268;它告诉 MDIncGroup 中有多少个 MDEntries。我敢打赌,对于您正在解析的特定消息,它是 268=1。
    • (如果我的回答解决了您的问题,请不要忘记将其标记为“已接受”。也许可以投票。)
    • 我相信这就是答案,因为我的代码适用于 35 = W。我还没有测试,但知道你已经成功了。 (我查看了日志,果然,268 = 1。)另外,我需要 15 个声望才能投票,否则会投票赞成这个问题,并且你对我之前的问题的帮助。谢谢。
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 2012-04-24
    • 2019-06-06
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    相关资源
    最近更新 更多