深圳证券交易所行情通信系统接口规范开发指南

指南下载链接 

深圳证券交易所行情通信系统接口规范开发指南.pdf
1.1 MB

指南正文内容

一、前言

本文档是关于深圳证券交易所行情通信系统接口规范使用的详细说明文档,
供市场参与者及其 IT 供应商进行相关技术开发时参考。
联系方式:
在开发或测试过程中,可以通过以下方式与深圳证券交易所技术部门联系。
●电子邮件:stsv5@szse.cn
●QQ 群: 487866208

二、系统架构图 

三、接口规范结构

行情通信系统同时提供 STEP 行情接口和 Binary 行情接口,STEP 接口具有较高的灵活性,易于扩展,Binary 接口则具有较高的传输性能,市场参与者可自行选择使用 STEP 或 Binary 接口。
行情通信系统接口规范主要包括以下三部分。
●STEP 行情接口规范,遵照 STEP1.2 及 Fix5.0Sp2,深交所做特定扩展。
《轻量级 STEP 会话层接口规范》:规定会话层协议,由深圳证券交易所与上海证券交易所联合制定。
《深圳证券交易所STEP行情数据接口规范》:规定应用层的行情接口协议。
●Binary 行情接口规范,深交所自定义的私有协议,基于二进制格式消息流进行数据交换,消息类型、内容与 STEP 消息一一对应。
《深圳证券交易所 Binary 行情数据接口规范》:规定应用层的行情接口协议。

四、行情频道说明

行情数据按业务内容分为多个类别,每个类别根据其中数据量的大小可能会使用一个或多个频道来发送。目前新一代交易系统发布的行情频道如下,未来根据业务发展可能还会增加发布新的行情频道,并另行通知。
表 4-1 频道说明
注:表中频道代码的 x 为 1-9 的数字。

五、行情网关会话

5.1 行情网关会话分类 

接入用户通过会话将自身的系统连接到行情网关。该连接为标准的 TCP/IP点对点连接。
行情网关根据服务的内容不同分为“实时数据会话”和“重传数据会话”;
实时数据会话:用于传输实时数据;一个网关可以配置多个实时数据会话,但不同的会话配置的频道不能重复,用户可以根据自己的业务需求或者处理性能需求配置多个会话分别接收不同频道的数据。用户可以在网关配置中为各个实时数据会话指定监听地址、端口以及数据频道(realtime_service_list 标签下)。
重传数据会话:用于重传缺失数据;一个网关只能有一个重传会话。用户可以在网关配置中为重传会话指定监听地址和端口(resend_service 标签下)。

5.2 行情网关会话协议 

行情用户可以根据自己的需求,选择“STEP 协议”或者“BINARY 协议”接入网关,接入协议在网关配置中指定(protocol 标签下)。
配置协议与用户 vss使用协议必须一致才能正常接入。接入同一个网关的“实时数据会话”和“重传数据会话”使用的协议必须一致。
注意:BINARY 协议消息使用网络字节序。
5.2.1 STEP 协议规范
STEP 协议的所有应用层消息,都是由 STEP 消息层和 FAST 消息层构成
具体结构参见下表:
表 5-1 STEP 消息层格式
注:关于 FAST1.1 协议标准的详细内容,请参考 http://www.fixprotocol.org/

5.3 行情网关会话安全

行情网关和用户行情系统必须位于同一个安全网络之中,行情网关和用户行情系统之间传输的数据是非加密的,数据传输安全由接入用户网络保证。
行情网关也没有对行情数据做压缩、裁剪,用户需要自己保证接入带宽足够接收行情。

5.4 行情网关会话登录

5.4.1 行情网关就绪
行情网关只有在准备就绪以后才会开始监听并接受会话登录,用户可以通过网关监控确认行情网关是否就绪。
就绪条件:
1. 从管理通道正确接收网关相关的配置文件(组播网络通)。
2. 双向线路网关(网关配置中 type 标签内容为“NETWORK 的”)还需要登录行情通信服务器并完成身份验证(TCP 网络通,网关 ID 密码正确,Ekey 证书或者文件证书有效且跟网关匹配,该网关已经开通,且没有被使用、也没有被禁用)。
5.4.2 会话登录消息
表 5-2 BINARY 会话登录消息说明
消息样例的 16 进制表示(SenderCompID = realtime_1, 网关 ID =N000055Q0001, HeartBeat
=3 ,Password = 123456):
00 00 00 01 00 00 00 5c 72 65 61 6c 74 69 6d 65 5f 31 20 20 20 20 20 20 20 20 20 20 4e 30 30 30 30 35 35 51 30 30 30 31 20 20 20 20 20 20 20 20 00 00 00 03 31 32 33 34 35 36 20 20 20 20 20 20 20 20 20 20 31 2e 30 32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 c3
表 5-3 STEP 会话登录消息说明
消息样例(SenderCompID = oms_rt_1, 网关 ID = N000055Q0001, HeartBeat =3,Password =
123456,SendingTime = 20190903-17:12:51.674,MessageEncoding=UTF-8):
8=FIXT.1.1<SOH>9=143<SOH>35=A<SOH>49=oms_rt_1<SOH>56=N000055Q0001<SOH>34=1<SOH>52=20190903-17:12:51.674<SOH>347=UTF-8<SOH>98=0<SOH>108=3<SOH>553=oms_1<SOH>554=123456<SOH>1137=9<SOH>1407=124<SOH>1408=STEP1.20_SZ_1.02<SOH>10=023<SOH>

5.5 行情网关会话心跳 

用户发送会话登录消息与行情网关建立会话后,需要发送会话心跳保持会话连接,否则会因为超时被行情网关断开连接。
表 5-4 BINARY 心跳消息说明
消息样例的 16 进制表示:
00 00 00 03 00 00 00 00 00 00 00 03
表 5-5 STEP 心跳消息说明
消 息 样 例 ( SenderCompID = realtime_1, 网 关 ID = N000055Q0001 , SendingTime =20190903-09:12:54.825):
8=FIXT.1.1<SOH>9=63<SOH>35=0<SOH>49=N000055Q0001<SOH>56=oms_rt_1<SOH>34=2<SOH>52=20190903-09:12:54.825<SOH>10=222<SOH>

5.6 行情网关会话登出

行情网关 Logout 的场景:
1. 会话建立后,在当前会话的延续期间,在同一个 TCP 上再次收到了 Logon消息,注销原因=Already connected。
STEP 协议会话特有 Logout 场景:
1. 会话建立后,收到了 Garbled Message,注销原因=Garbled message。
2. 会话建立后,消息序号不等于预期值,注销原因=Incorrect MsgSeqNum。
3. MsgSeqNum(Tag#34)不存在,注销原因=Required tag missing。
4. MsgSeqNum(Tag#34)数据类型非法。注销原因=Incorrect data format for value。
5. 解析出 MsgSeqNum(Tag#34)字段之前,发生了错误。

5.7 行情网关连接中断

行情网关连接中断的场景:
1. 若收到的登录报文中,SenderCompID、TargetCompID 不合法,网关会立即
终止会话,不发送任何 Logout 消息。
2. 由于用户无法及时接收消息导致发送缓冲区满时,网关会立即终止会话,不
发送任何 logout 消息。
3. 使用STEP协议时,会话建立时收到的第一条消息(Logon)为Garbled Message。
由于任何时刻总是存在网络中断的可能,因此行情接收方都应该对于没有收
到对方的 Logout 消息但底层 TCP 连接却已关闭的情况做好准备。在断开连接前
回送 Logout 消息是推荐行为,但非必须。

5.8 行情重传

对于逐笔行情数据通过频道代码和消息记录号判断是否有消息丢失。
当收到的消息记录号<=本频道已经收到的最大消息记录号时,说明已经收到过该消息,此时应忽略该消息。
当收到的消息序号>已经收到的最大消息记录号+1(如已收的最大消息记录号=10,新的消息记录号=12)说明发生了消息丢失,此时应通过重传服务请求丢失的数据。
对于公告文件,收到公告概要后,应通过公告概要检查公告是否有丢失或者变化。
如果有丢失或者变化,则应通过重传服务请求丢失或者变化的公告文件。
用户通过行情网关重传会话请求行情重传。用户可以在一个重传会话多次请求重传,而不需要每次请求都重新建立会话。
5.8.1 行情重传流程 
5.8.2 行情重传消息
5.8.2.1BINARY 重传消息
表 5-6 BINARY 逐笔重传请求消息说明
消息样例的 16 进制表示(ResendType = 1, ChannelNo = 2011, ApplBegSeqNum = 1,ApplEndSeqNum = 0):
00 05 f3 ce 00 00 00 2c 01 07 db 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 01 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 d7
表 5-7 BINARY 公告重传消息说明
消息样例的 16 进制表示(ResendType = 2, ChannelNo = 2, NewsID = N2345678):
00 05 f3 ce 00 00 00 2c 02 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4e 32 33 34 35 36 37 38 00 61 62 63 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 7d
表 5-8 BINARY 重传结果消息说明
逐笔重传结果消息样例的 16 进制表示(ResendType = 1, ChannelNo = 2011, ApplBegSeqNum
= 1,ApplEndSeqNum = 0,ResendStatus = 1):
00 05 f3 ce 00 00 00 2c 01 07 db 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 20 20 20 20 20 20 20 20 01 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 d7
公告重传结果消息样例的16进制表示(ResendType = 2, ChannelNo = 2, NewsID = N2345678,ResendStatus = 1):
00 05 f3 ce 00 00 00 2c 02 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4e 32 33 34 35 36 37 38 01 61 62 63 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 7e
5.8.2.2 STEP 重传消息
表 5-9 STEP 逐笔重传请求消息说明
FAST 编码 RawData 前消息结构
表 5-10 STEP 公告重传请求消息说明
FAST 编码 RawData 前消息结构
表 5-11 STEP 重传结果消息说明
FAST 编码 RawData 前消息结构
5.8.3 行情重传规则描述
前提条件:行情重传服务器逐笔频道 2011,已接收 1000 条逐笔消息。
行情重传服务器公告频道 2,已经接受 G001,G002,G003,3 个公告文件。 
表 5-12 行情重传请求内容及结果对照表 
“--”代表不关心内容
重传结果状态为“无”,代表此种情况不会收到重传结果通知。

六、行情业务消息

6.1 BIANRY 协议行情业务消息

6.1.1 频道心跳
表 6-1 行情频道心跳 BINARY 消息示例 
6.1.2 证券实时状态 
表 6-2 证券实时状态 BINARY 消息示例
6.1.3 公告
表 6-3 公告 BINARY 消息示例
6.1.4 集中竞价行情快照
集中竞价 Level II 行情快照消息,示例中共买卖盘信息共用五档,卖三档,买两档,其中在买卖最优档上揭示前 10 笔委托的数量。
6.1.5 逐笔委托行情
6.1.6 逐笔成交行情 

6.2 STEP 协议行情业务消息 

6.2.1 频道心跳
行情的逐笔频道,在没有数据的时候会发送频道心跳。
6.2.2 证券实时状态 
6.2.3 公告 
6.2.4 集中竞价行情快照 
集中竞价 Level II 行情快照消息,示例中买卖盘信息共有五档,卖三档,买两档,其中在买卖最优档上揭示前 10 笔委托的数量。
消息实例:
999=4001<SOH>42=20140126-10:30:05:335<SOH>10201=1011<SOH>1500=010<SOH>48=00
2001<SOH>22=102<SOH>8538=T0<SOH>140=17.4600<SOH>8503=478<SOH>387=24689.0
0<SOH>8504=405783.6700<SOH>268=15<SOH>269=2<SOH>270=17.490000<SOH>269=4<
SOH>270=18.120000<SOH>269=7<SOH>270=18.130000<SOH>269=8<SOH>270=17.200000
<SOH>269=x1<SOH>270=0.030000<SOH>269=x2<SOH>270=-0.010000<SOH>269=x3<SOH
>270=17.450000<SOH>271=369801.00<SOH>269=x4<SOH>270=17.460000<SOH>271=1468
9.00<SOH>269=x5<SOH>270=15.950000<SOH>269=x6<SOH>270=16.120000<SOH>269=1<
SOH>270=18.460000<SOH>271=2340.00<SOH>1023=3<SOH>346=56<SOH>73=0<SOH>269
=1<SOH>270=18.450000<SOH>271=1340.00<SOH>1023=2<SOH>346=71<SOH>73=0<SOH
>269=1<SOH>270=18.420000<SOH>271=1350.00<SOH>1023=1<SOH>346=16<SOH>73=10
<SOH>38=10.00<SOH>38=10.00<SOH>38=20.00<SOH>38=10.00<SOH>38=13.00<SOH>38=
17.00<SOH>38=103.00<SOH>38=21.00<SOH>38=16.00<SOH>38=11.00<SOH>269=0<SOH>
270=18.400000<SOH>271=27500.00<SOH>1023=1<SOH>346=23<SOH>73=10<SOH>38=100
.00<SOH>38=100.00<SOH>38=200.00<SOH>38=100.00<SOH>38=130.00<SOH>38=170.00<
SOH>38=100.00<SOH>38=200.00<SOH>38=160.00<SOH>38=110.00<SOH>269=0<SOH>270
=18.390000<SOH>271=17500.00<SOH>1023=2<SOH>346=53<SOH>73=0
6.2.5 逐笔委托行情 
消息实例:
999=4201<SOH>10201=2011<SOH>1500=11<SOH>1181=100<SOH>48=000001<SOH>22=10
2<SOH>44=17.48<SOH>38=1200<SOH>54=1<SOH>40=2<SOH>59=0<SOH>1090=0<SOH>1
10=0<SOH>60=20130228-14:42:13:555 
6.2.6 逐笔成交行情
消息实例:
999=4202<SOH>10201=2011<SOH>1500=11<SOH>1181=100<SOH>10116=10<SOH>10117=
20<SOH>48=000001<SOH>22=102<SOH>31=17.48<SOH>32=1200<SOH>150=F<SOH>60=2
0130228-14:42:13:555
0 0