我正在使用Python API运行QuickFix并使用FIX4.2连接到TT FIX适配器
我已成功登录并发送市场数据请求。回复很好。在我的消息日志(屏幕日志和文件日志)中,我得到的SendingTime(字段52)看起来像这样:
52 = 20130207-02:38:32.212
但是,当我尝试获取此字段并将其打印到终端或文件时,除了毫秒被删除之外,一切都是相同的。结果总是如此:
52 = 20130207-02:38:32
显然这很糟糕。我想不出为什么一开始会出现毫秒,然后在我访问它时会掉线。
也许这是Python的工件,它使用'。'访问属性。字符?但这看起来很愚蠢,因为SendingTime是一个字符串,最后我在字符串中检查了句点。
任何帮助都会很棒,我真的希望能够为文件打印准确的时间戳。
谢谢,
马鹿
答案 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 错误。