首页 > 解决方案 > 使用 Quickfix Python 创建 FIX 消息

问题描述

我是 Quickfix Python 的新用户。我想发送一个 QuoteRequest。我创建新报价请求消息的功能如下:


import quickfix as fix

def create_quote_request():
    message = fix.Message()
    header  = message.getHeader()
    header.setField(fix.MsgType(fix.MsgType_QuoteRequest))
    gp      = fix.Group()
    gp.setField(fix.Symbol("GBPUSD"))
    gp.setField(fix.Side(fix.Side_BUY))
    gp.setField(fix.Account("TestAcc"))
    gp.setField(fix.Currency("GBP"))
    message.addGroup(gp)
    fix.Session.sendToTarget(message, self.sessionID)

当我执行代码时,我收到如下错误:

NotImplementedError:重载函数“new_group”的参数类型错误。

可能的 C/C++ 原型有:

FIX::Group::Group(int, int)

FIX::Group::Group(int, int, int const[])

FIX::Group::Group(int, int, message_order const &)

FIX::Group::Group(FIX::Group const &)

我确实阅读了文档,发现 Group 对象需要参数 Group(int field, int delim)

不确定传递字段和分隔符的值的内容。感谢您的回应和帮助。

标签: pythonquickfixfix-protocol

解决方案


不确定我是否准时提供帮助。但是我会尝试。我认为@JimmyNJ 给了你正确的答案。

根据官方文档,您可以轻松做到这一点,但您不必使用通用组,您必须使用可用于您的消息类型的特定组。

据我所知,您应该编写这样的程序。

from quickfix44 import QuoteRequest
import quickfix as fix
message = QuoteRequest()
group = QuoteRequest.NoRelatedSym()
group.setField(fix.Symbol("GBPUSD"))
group.setField(fix.Side(fix.Side_BUY))
group.setField(fix.Account("TestAcc"))
group.setField(fix.Currency("GBP"))
message.addGroup(group)

我假设您想根据它们的标签号将这 4 个标签添加到 NoRelatedSym 组中。我也用过 FIX 44 版本,也许你用的是不同的版本,但主要思想是一样的。


推荐阅读