从 quickfix 消息中获取字段
Getting fields from quickfix message
我在 python 中使用 quickfix。查看文档页面 here 告诉我们如何获取字段。假设 message = fix.message
(quickfix 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()
获取值。
我用了一点util函数
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
我在 python 中使用 quickfix。查看文档页面 here 告诉我们如何获取字段。假设 message = fix.message
(quickfix as fix
)来自交易对手。我可以通过调用
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()
获取值。
我用了一点util函数
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