Quickfix Python创建FIX QuoteRequest消息时Group初始化报错如何解决
报错原因
你遇到的报错是因为fix.Group类不能直接空实例化,必须传入两个必填构造参数,两个参数定义如下:
- 第一个参数
field:该重复组对应的计数字段Tag值,作用是标识当前重复组的总条目数 - 第二个参数
delim:该重复组内部第一个字段的Tag值,作为重复条目分隔标识,QuickFIX通过该字段区分不同的重复组条目
针对QuoteRequest类型的消息,你使用的是关联标的重复组,对应计数字段为NoRelatedSymTag值146,组内第一个字段为SymbolTag值55,直接使用QuickFIX内置常量获取Tag值更稳妥,避免硬编码出错概率更低。
修正后的代码
import quickfix as fix def create_quote_request(): message = fix.Message() header = message.getHeader() header.setField(fix.MsgType(fix.MsgType_QuoteRequest)) # 正确实例化重复组 gp = fix.Group(fix.NoRelatedSym().getField(), fix.Symbol().getField()) 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)
补充说明
不同消息的重复组参数不固定,需要结合你使用的FIX版本和具体消息类型匹配对应的字段定义:
- 若使用其他消息的重复组,只需要替换为对应计数字段和组内首字段的Tag即可
- 不确定Tag值时,直接调用对应字段类的
getField()方法获取即可,不需要手动记数字
内容的提问来源于stack exchange,提问作者nikhil sukumar
相关产品推荐
相关产品推荐

