我正在使用Python API运行QuickFix,并使用FIX4.2 连接到TT FIX适配器
我已成功登录并发送市场数据请求。回复很好。在我的消息日志(屏幕日志和文件日志)中,我得到一个SendingTime(字段52),看起来像这样:
52=20130207-02:38:32.212
然而,当我尝试获取此字段并将其打印到终端或文件时,除了毫秒被丢弃之外,其他一切都是一样的。所以结果总是:
52=20130207-02:38:32
显然这很糟糕。我想不出为什么毫秒一开始会出现,然后在访问它们时会被丢弃。
也许这是Python的一个工件,它访问带有"的属性性格但这似乎很愚蠢,因为SendingTime是一个字符串,而我上次检查字符串中允许使用句点。
任何帮助都将是伟大的,我真的希望能够打印准确的时间戳到文件。
谢谢,
瓦皮蒂
尝试使用FieldMap的const std::string & getField (int field)
函数提取字段。这将使您的字段成为字符串,而无需尝试将其转换为日期类型。我敢打赌,这将保留毫秒,至少在文本上是这样。
抱歉,我无法解释Python为什么会失去ms。我只是对Python包装器了解不够。
编辑:不,答案不对。我不知道你没有从标题中提取字段。(当然,您仍然可以在标头上使用此函数。)
我通过指定getField函数来查看标头来解决问题。因此:
sendingTime= quickfix.SendingTime()
print sendingTime, "n"
message.getHeader().getField(sendingTime)
print sendingTime, "n"
打印的第一行将是发送时间,以毫秒取整(我不知道为什么),它看起来像52=2013027-02:38:32
第二个打印行实际上查看标题(字段52所在的位置)并获得整个字段,它看起来像:
52=2013027-02:32.212
这解释了为什么当我尝试message.getField(sendingTime)
时,会出现未找到字段错误。