基于金融FIX协议的上交所FAST行情数据介绍以及解析方法,另附C++解析方法

一 引言

写本文的原因是目前网络上似乎没有较为完整的针对基于金融FIX协议的上交所FAST行情数据的文章,目前只能找到一些介绍较为表面的文章(但是这些文章当时对我的工作也有极大的帮助,非常感谢),当时第一份工作涉及到了对上交所行情的解析,当时就拿着官方的一个文档,大约花了我2个月时间才手撸了一份对上交所FAST协议的解析(当时的老板不让我用第三方库,说是自己写的更快更方便,这大概就是一大错觉“我比xxx更高效”,如果你的老板没有这些限制,那么本文你就不需要详细的看了,因为已经有第三方库支持了对FAST协议的解析了,我放在文章的最后了,大家如果时间紧张可以直接跳到本文的最后去用第三方库)。

涉及的协议名称介绍

  1. FIX协议
    FIX(Financial Information eXchange)协议是一种主要用于证券交易过程交换的公开协议,它定义每条交易信息的内容和格式,这些信息内容与证券交易流程相对应,以保证交易信息安全准确地传送。FIX主要用于在各类参与者之间建立起实时的电子化通讯协议。
    其是由key-value组成,有可读性好,扩展性强,适应性丰富等优点,然而由于它是非压缩过的,因此相比于压缩过的消息,在相同速度传输相同信息的情况下有传输时间长的缺点。

  2. STEP协议.
    STEP协议相当于是中国的FIX协议,是根据FIX4.4版本的基础上定制出来的,也是简单的key-value形式,其中不同的key-value之间是由SOH(start of head)这一个字符来作为间隔符的,16进制表示是0x01。
    上交所和深交所《轻量级STEP会话协议接口规范》.

  3. Binary协议.
    这个是二进制协议,目前被用在深交所行情中,不过马上上交所也要支持这个binary协议了(2021年10月)。
    需要注意的是,binary协议中整型值都是高字节序(Big-Endian),解析的时候需要转换一下。
    本文不对binary协议展开讲,因为这个挺简单的,如果有朋友有需要可以留言,我找时间写一下如果解析。

  4. 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++实现各种字段属性

由于排列组合种类过多,因此只举例有代表性的以及特殊性的

三 第三方库

  1. quickfast.
    基于C++对FAST解析的第三方库
  2. openfast
    基于JAVA对FAST解析的第三方库

注:我并未使用过这些第三方库,因此第三方库出现的问题我可能不太了解

四 联系方式

  1. QQ:892809577
  2. 微信:暂不透露,请优先加qq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值