Download presentation
Presentation is loading. Please wait.
1
上证所Level-2行情接口开发 高昀
2
主要内容 Level-2产品介绍 Level-2系统接入 Level-2数据解码
3
一、Level-2 产品介绍
4
Level-1行情的不足 内容 Level-1行情Show2003.dbf不足之处 技术
按同一模式显示不同的交易品种--显示债券、基金信息时出现“市盈率”字段名 技术 5秒钟一次的快照,文件交换方式,发布延时明显 信息内容可扩展性差--dbf文件是固定字段,只能通过增加数据库字段方式来增加信息内容
5
从Level-1到Level-2 商业模式:“免费”->收费 发布路径:券商->信息商
行情深度:五档->十挡,新增委托明细和全部成交信息 行情频率:5秒->3秒 数据格式:dbf->FIX/STEP->FAST 交换方式:文件->文本数据流->二进制数据流 行情延时:3秒->28毫秒->20毫秒
6
Level-2内容 Reference Data (UA101) Transaction(UA3101)
Market Data(UA3102,UA3113) Order Queue(UA3111)
7
行情展示 Transaction(UA3111) Market Data(UA3102) Order Queue(UA3111)
8
二、 Level-2系统接入
9
SSE to Vendor Connection
VDE(Vendor Data Engine) VSS(Vendor Supplies System)
10
VDE to VSS Connection
11
Daily Procedure
12
三、 Level-2 FAST数据解码
13
Level-2 FAST的介绍 FIX Adapted for Streaming (FAST) 为解决FIX协议传输市场数据存在冗余度高,带宽需求大的问题,芝加哥商品交易所于2003年11月17日向FPL提交了一个隐示标记(Implicit tags)方案 FPL于2004年12月27日宣布成立市场数据优化工作组(MDOWG,Market Data Optimization Working Group). 2005年5月开始MDOWG根据一系列POC的结果,开始进行协议标准制定 2006年初完成FAST(FIX Adapted for STreaming)V1.0 2006年12月完成FAST V1.1
14
Level-2 FAST的介绍 中国证券市场的特点 1.2亿交易帐户
较高的换手率,上海证券交易所日交易金额峰值超过3000亿,成交笔数超过4000万 市场数据的发展趋势和挑战 产品越来越多、挂牌证券数量越来越大 更多的价格档位、更多的市场深度 更少的延时
15
Level-2 FAST的介绍 STEP协议的优缺点
基于FIX ,已成为事实上的证券数据标准 语法简单,定义灵活,易扩展 数据相对冗余 8=STEP.1.0.0<SOH>9=112<SOH>35=D<SOH>49=Sender<SOH>56=Target<SOH>34=235<SOH>1=A123456789<SOH>55=青岛啤酒<SOH>48=600600<SOH>54=B<SOH>44=8.520 <SOH> 38=1000 <SOH>60= :35:28 <SOH>11=825<SOH>10=157 <SOH>
16
STEP 的冗余 平均每条消息长度为160字节, FAST编码后为25字节 平均每条消息长度为467字节,FAST编码后为127字节
17
Level-2 FAST的介绍 FAST的技术优势 高压缩比(70-80%) 低资源消耗 算法简单,效率高,每秒百万级别消息的处理能力
18
FAST系统测试结果 带宽利用率与STEP系统对比测试结果比较 测试结果: FAST版本 最大值为0.679Mbps;
19
FAST关键技术 Field Encoding 隐式标签(Implicit Tag)(模版 Template) 提供消息层面的优化
操作符(Operator) 消息层面和tag层面的优化 Transfer Encoding 二进制数据流 Presence Map(PMAP) Stop Bit Encoded Entities
20
Field Encoding—Implicit Tag
将FIX的tag=value格式进行分离,变成消息模板和消息内容。 消息模板在双方通信之前就确定,实际只需要传输消息内容
21
Field Encoding 常用数据类型 Data type Description string String data type
int32 integer data type int64 long data type sequence repeating group
22
Field Encoding Field Encoding Operator Constant Constant value Default
Entry Description Constant Constant value Default Default value if not specified Copy Copy previous value if not specified Increment Increment previous value if not specified Delta Delta value from previous value Tail Tail value from previous value
23
Field Encoding Operator
Constant Value 用途:主要用于表示模板中的固定数据 constant value value in stream output value “VALUE” N/A
24
Field Encoding Operator
Default Value 用途:主要用于表示默认值 default value value in stream output value “VALUE” N/A “HELLO”
25
Field Encoding Operator
Copy Value 用途:主要用于表达相邻数据相同的情况 previous value value in stream output value “VALUE” N/A “HELLO”
26
Field Encoding Operator
Increment Value 用途:主要用于表示前后数据有规律的递增的情况 previous value value in stream output value 5 N/A 6 10
27
Field Encoding
28
Field Encoding-Template
定义和语法,包括: Field(Message Structure) Field Encoding Operator Data Type 如何表示: XML语言
29
Field Encoding-Template
XML格式的模板示例 Field Operators <template name="ExampleOrder"> <messageRef name="NewOrderSingle"/> <string name="BeginStr"> <constant value="FIX.4.4"/> </string> <u32 name="SeqNum"> <increment/> </u32> <string name="SenderID"> <copy/> </string> <string name="SendingTime"> <tail/> </string> <decimal name="Price"> <delta/> </decimal> <string name="Symbol"> <copy/> </string> </template> Data Types Structure
30
Transfer Encoding 对FIX数据实现二进制Byte/Bit Level优化 根据模板生成数据流,并且同步进行压缩的协议
本身具有通用性,是一个与具体的应用无关的协议。
31
Transfer Encoding stream ::= message* | block*
block ::= BlockSize message+ message ::= segment segment ::= PresenceMap TemplateIdentifier? (field | segment)* field ::= integer | string | delta | ScaledNumber | ByteVector integer ::= UnsignedInteger | SignedInteger string ::= ASCIIString | UnicodeString delta ::= IntegerDelta | ScaledNumberDelta | ASCIIStringDelta | ByteVectorDelta
32
Transfer Encoding-Stop Bit
最高比特位 0:下一个字节属于同一个实体 1:下一个字节不属于同一个实体 编码举例:
33
Transfer Encoding-Presence Map
在每一条消息的开头处增加标志串(BYTE 数组) 每一个Bit标示后面的各个field存在与否,1存在,0不存在 不用传送的field不用进行编码,减少了数据量
34
Transfer Encoding-Presence Map
Presence Map Bit in Required Operator Mandatory Optional None No default Yes constant Yes* copy increment
35
Presence Map and NULL NULL一般用来指示这一field没有出现(absent) Operator Presence
Occupy 使用NULL None Mandatory no Optional yes constant Default,copy, increment
36
Data Type Example uInt32 Example—Optional Number
37
如何解析Level-2 FAST 的消息 VSS 1 Initial 2 ReadTemplates 3 Connect VDE
4 Logon 5 Receive Data 6 Decode 7 业务处理 8 数据存储和转发
38
FAST的实现过程
39
UA3101的解码实例 PMAP 5F E TID 占位=1 18 9d <string name="MessageType" id="35"><constant value="UA3101"/></string> 不占位 UA3101 <int32 name="DataStatus" id="10121" presence="optional"><default/></int32> 占位=0 <int32 name="TradeIndex" id="10011"><increment/></int32> 占位= <int32 name="TradeChannel" id="10115"><copy/></int32> 占位=
40
UA3101的解码实例 <string name="SecurityID" id="48" presence="optional"><copy/></string> 占位= B <int32 name="TradeTime" id="10013" presence="optional"><copy/></int32> 占位= A <int32 name="TradePrice" id="10014" presence="optional" decimalPlaces="3"><default/></int32> 占位= <int64 name="TradeQty" id="10015" presence="optional" decimalPlaces="3"><default/></int64> 占位=1 1E 42 A <int64 name="TradeMoney" id="10016" presence="optional" decimalPlaces="5"><default/></int64> 10016 占位= D 15 5D A 35=UA3101|10011=1|10115=6|48=601766|10013= |10014=5.250|10015= |10016= |
41
谢 谢
Similar presentations