将从文件读取的二进制序列转换为固定点数

时间:2012-03-29 23:06:39

标签: python binary fixed-point algorithmic-trading datafeed

我正在尝试解析其中包含ITCH消息的文件:

http://www.nasdaqtrader.com/Trader.aspx?id=DPSpecs_USEquities#TVITCH¬ http://www.nasdaqtrader.com/content/technicalsupport/specifications/dataproducts/NQTV-ITCH-V4_1.pdf¬

每个价格表示为32位定点数,包含18个全部位和14个小数位。 (6个整数位后跟4个十进制数字)

e.g。

200,000.0000
110000110101000000 00000000000000

我已经看过struct类,但这只涉及整个字节,因为它用于从二进制编码的c结构转换。

我看过decimal.Decimal模块,但似乎你只能用字符串实例化它,这假设你已经有了字符串格式的数字。

1 个答案:

答案 0 :(得分:2)

Python的struct.unpack()正是您所需要的。您只需要制定适当的格式字符串,以便模块可以知道哪些字段在哪里以及它们具有哪种二进制格式,您应该能够快速解码数据。

你用比特来解释事情,但这并不是ITCH真正起作用的方式。固定十进制字段实际上是N个字节长,暗示了一些十进制移位。因此,您可以将价格字段作为整数读取,然后除以1e4以获得浮点值。