quickfix发送时间(字段52)下降毫秒

时间:2013-02-12 00:24:06

标签: python python-2.7 timestamp quickfix timestamping

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

我已成功登录并发送市场数据请求。回复很好。在我的消息日志(屏幕日志和文件日志)中,我得到的SendingTime(字段52)看起来像这样:

52 = 20130207-02:38:32.212

但是,当我尝试获取此字段并将其打印到终端或文件时,除了毫秒被删除之外,一切都是相同的。结果总是如此:

52 = 20130207-02:38:32

显然这很糟糕。我想不出为什么一开始会出现毫秒,然后在我访问它时会掉线。

也许这是Python的工件,它使用'。'访问属性。字符?但这看起来很愚蠢,因为SendingTime是一个字符串,最后我在字符串中检查了句点。

任何帮助都会很棒,我真的希望能够为文件打印准确的时间戳。

谢谢,

马鹿

2 个答案:

答案 0 :(得分:1)

尝试使用FieldMap的const std::string & getField (int field)函数提取字段。这将使您的字段成为字符串,而不是尝试将其转换为日期类型。我打赌这将保留毫秒,至少是文本上的。

抱歉,我无法解释为什么Python会丢失ms。我对Python包装器的了解还不够。

编辑:不,不是正确答案。我不知道你没有从标题中提取字段。 (当然,您仍然可以在标题上使用此功能。)

答案 1 :(得分:0)

我通过指定getField函数来查看标题来解决我的问题。所以:

sendingTime= quickfix.SendingTime()

print sendingTime, "\n"

message.getHeader().getField(sendingTime)

print sendingTime, "\n"

第一个打印的行将是四舍五入的发送时间(我不明白为什么),它看起来像 52 = 20130207-02:38:32

第二行打印的行实际上是查看标题(字段52所在的位置)并获取整个字段,它将如下所示:

52 = 20130207-02:38:32.212

这解释了为什么当我尝试message.getField(sendingTime)时,我收到了 Field not Found 错误。