2

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

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

52=20130207-02:38:32.212

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

52=20130207-02:38:32

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

也许这是 Python 的产物,它使用 '.' 访问属性。特点?但这似乎很愚蠢,因为 SendingTime 是一个字符串,最后我检查了字符串中允许使用句点。

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

谢谢,

麋鹿

4

2 回答 2

1

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

抱歉,我不知道为什么 Python 会丢失 ms。我只是对 Python 包装器知之甚少。

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

于 2013-02-12T03:41:47.200 回答
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错误。

于 2013-02-12T22:29:56.363 回答