从 quickfix 消息中获取字段

Getting fields from quickfix message

我在 python 中使用 quickfix。查看文档页面 here 告诉我们如何获取字段。假设 message = fix.messagequickfix as fix)来自交易对手。我可以通过调用

来获取 35 (MsgType) 字段

message.getHeader().getField(fix.MsgType())

其中returns,例如35=X.

我的问题是:有什么方法可以returns X吗?或者我是否必须对所有内容进行切片(例如 35=X[3:],returns X)并因此知道所有字符串的长度?

是,如果您使用强类型方法,即:

m.getHeader().getField(new MsgType());

答案是先调用message.getHeader().getField(fix.MsgType())获取字段 然后通过调用 fix.MsgType().getValue() 获取值。

我用了一点uti​​l函数

def get_field_value(self, fobj, msg):
    if msg.isSetField(fobj.getField()):
        msg.getField(fobj)
        return fobj.getValue()
    else:
        return None

我这样称呼

clordid = get_field_value(fix.ClOrdID(), message)

对于 header 个字段,看起来像这样

def get_header_field_value(self, fobj, msg):
    if msg.getHeader().isSetField(fobj.getField()):
        msg.getHeader().getField(fobj)
        return fobj.getValue()
    else:
        return None