Python的简单FIX协议实现
项目描述
简介
FIX(金融信息交换)协议是一种广泛使用的、基于文本的协议,用于金融交易各方的交互。银行、经纪商、清算公司、交易所和其他一般市场参与者使用FIX协议进行电子交易的各个阶段。
通常,FIX实现存在于一个FIX引擎中:一个独立的服务,作为其他应用程序(匹配引擎、交易算法等)的网关,并实现FIX协议。最受欢迎的开源FIX引擎可能是QuickFIX的一个版本。
此软件包提供了一个简单的FIX应用层协议实现。它不处理套接字,也不实现FIX恢复或任何消息持久化。它支持FIX消息的创建、编码和解码。
许可证
此模块使用MIT许可证许可。虽然这不是法律建议,但简而言之,这意味着您可以自由地使用此代码,唯一例外是声称您编写了它。
安装
对于大多数用户来说,安装simplefix最简单、最好的方法是通过pip。
pip install simplefix
所有发布版本都已上传到 PyPI,可供安装,因此您可以在项目的 requirements.txt 或 project.toml(或您的构建系统使用的任何文件)中指定一个已知并经过测试的版本。有关可用版本的完整列表,请参阅PyPI 项目页面。
源代码发布版本和一些基本发布说明也可以在项目的GitHub 发布页面找到。
基本用法
有关更多信息,请参阅程序员指南。
创建消息
要创建一个 FIX 消息,首先创建 FixMessage 类的实例。
msg = simplefix.FixMessage()
然后,您可以按需向消息中添加字段。您应该将标准头标签 8、34、35、49、52 和 56 添加到所有消息中。对于大多数标签,使用 append_pair() 添加字段是最简单的方法。当使用 append_utc_timestamp() 添加 UTCTimestamp 值(即标签 52)时,它会为您处理格式化。
append_string() 将将“tag=value”字符串分解并作为正确字段添加;append_strings() 将对“tag=value”字符串序列执行相同的操作。append_data() 将正确追加数据字段,设置长度标签的值,并在格式化消息中将值标签放在长度之后。
一旦所有字段都已设置,调用 encode() 将返回一个包含正确格式化的 FIX 消息的字节缓冲区,字段按所需顺序排列,并自动添加和设置 BodyLength(9)和 Checksum(10)字段的值。
请注意,如果您想手动控制所有字段的顺序,或控制 BodyLength 或 Checksum 字段的值,则 encode() 方法的“raw”标志可以禁用此功能。这在创建用于测试目的的已知有问题的消息时很有用。
解析消息
要从字节缓冲区(例如从套接字接收到的字节缓冲区)提取 FIX 消息,您应该首先创建 FixParser 类的实例。对于接收到的每个字节字符串,使用 append_buffer() 将它追加到内部重新组装缓冲区。在任何时候,您都可以调用 get_message():如果解析器内部缓冲区中没有完整的消息,则返回 None,否则返回 FixMessage 实例。
一旦您从 get_message() 接收到 FixMessage,您可以进行以下操作:使用 count() 检查字段数,使用 get() 或内置的“[ ]”语法检索字段的值,或使用“for … in …”遍历所有字段。
可以使用 get(tag, nth) 访问重复组的成员,其中“nth”值是一个整数,表示要返回标签的哪个出现(请注意,第一次出现是数字一,而不是零)。
贡献
评论、建议、错误报告、错误修复——本项目欢迎所有贡献。有关访问最新源代码,请参阅项目的GitHub页面,并请为评论、建议和错误打开一个问题。
有关更详细的说明,请参阅 CONTRIBUTING.rst 文件。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
simplefix-1.0.17.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d7f86666f508b11a8839d26ad66d63eaa5e53e6d0d4e23f5ef065feead60e658 |
|
MD5 | 66b6aec8a0f9a37d77540daee4e1c262 |
|
BLAKE2b-256 | 2b9ae17706ff04ca5d0f7d10fbefe957bd85c11bb9d47ffd7a3b0f125c5f4c0f |
simplefix-1.0.17-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | da15798755447b9719f8688ca4cc29ee20c6d94d3227f22f60e04dcf347a2c68 |
|
MD5 | 9c542bbf2f15c9bc34c3cdeb118bc66d |
|
BLAKE2b-256 | 20e3cabeb722e75488b53a5d509d4ee1a0ad30683ade7210e6ea593c654ed410 |