基于金融FIX协议的上交所FAST行情数据介绍以及解析方法,另附C++解析方法(未完成,预计十月中旬完成)
一 引言
写本文的原因是目前网络上似乎没有较为完整的针对基于金融FIX协议的上交所FAST行情数据的文章,目前只能找到一些介绍较为表面的文章(但是这些文章当时对我的工作也有极大的帮助,非常感谢),当时第一份工作涉及到了对上交所行情的解析,当时就拿着官方的一个文档,大约花了我2个月时间才手撸了一份对上交所FAST协议的解析(当时的老板不让我用第三方库,说是自己写的更快更方便,这大概就是一大错觉“我比xxx更高效”,如果你的老板没有这些限制,那么本文你就不需要详细的看了,因为已经有第三方库支持了对FAST协议的解析了,我放在文章的最后了,大家如果时间紧张可以直接跳到本文的最后去用第三方库)。
涉及的协议名称介绍
-
FIX协议
FIX(Financial Information eXchange)协议是一种主要用于证券交易过程交换的公开协议,它定义每条交易信息的内容和格式,这些信息内容与证券交易流程相对应,以保证交易信息安全准确地传送。FIX主要用于在各类参与者之间建立起实时的电子化通讯协议。
其是由key-value组成,有可读性好,扩展性强,适应性丰富等优点,然而由于它是非压缩过的,因此相比于压缩过的消息,在相同速度传输相同信息的情况下有传输时间长的缺点。 -
STEP协议.
STEP协议相当于是中国的FIX协议,是根据FIX4.4版本的基础上定制出来的,也是简单的key-value形式,其中不同的key-value之间是由SOH(start of head)这一个字符来作为间隔符的,16进制表示是0x01。
上交所和深交所《轻量级STEP会话协议接口规范》. -
Binary协议.
这个是二进制协议,目前被用在深交所行情中,不过马上上交所也要支持这个binary协议了(2021年10月)。
需要注意的是,binary协议中整型值都是高字节序(Big-Endian),解析的时候需要转换一下。
本文不对binary协议展开讲,因为这个挺简单的,如果有朋友有需要可以留言,我找时间写一下如果解析。 -
FAST协议.
FAST - FIX Adapted For Streaming 面向流的信息交换协议
其核心是一个压缩算法,将按照fix规范定义的数据经过压缩以后,其形式已经不是key-value形式了,是给出一个一个key的模板文件,然后在传输过程中只传输value,其很大程度上降低发送、接收双方的带宽。
二 解析FAST协议压缩过的消息
在我们解析一段FAST消息之前,我们必定会拿到两样东西,一样是消息的模板(上交所行情网关会提供的),另一个就是消息内容了。那么首先要看懂模板,其实模板很容易看懂,它就是一个xml文件,这边只需要对FAST协议一些名词做简单的介绍,看完介绍再看个例子,立马能看懂大部分模板文件了。
FAST字段属性关键字,方便大家去去文档里直接搜
这一部分如果有不懂的可以直接关键字去文档里搜,我这边就不赘述了。
1.字段类型
整形
十进制数
字符串
字节向量
序列
分组
2.操作类型
常量
缺省
拷贝
递增
插值
接尾
3.必要性
必要
非必要
FAST非字段属性介绍(非常重要)
存在位图
去解析一条上交所行情消息的流程
由于上交所发来的一条消息并不仅仅是一条FAST消息,其外层可能还包含其他格式的,例如STEP,在STEP中间一个key-value中的value的值才是FAST消息,也就是我们要解析的内容。
C++实现各种字段属性
由于排列组合种类过多,因此只举例有代表性的以及特殊性的
三 第三方库
注:我并未使用过这些第三方库,因此第三方库出现的问题我可能不太了解
四 联系方式
- QQ:892809577
- 微信:暂不透露,请优先加qq