上海期货交易所,上海期货交易所

c2c 7
第二代行情发布平台 编解码示例 Version:1.12发布日期:2020/11/30 修订记录、核准记录和审核记录 修订记录: 版本编号1.001.10 1.111.12 修订日期2019/01/282019/02/15 2019/03/082020/11/23 修订摘要创建文档依据《上海期货交易所第二代行情发布平台接口规范v1.10》对文档内容进行相应调整。
附录中部分数据修正。
新增第5章:数据中心切换示例; 核准记录: 核准人员邹文军 属于部门(单位)上期技术 核准日期2020/11/26 审核记录: 核准人员赵鸿昊 属于部门(单位)上期技术 文件制作和维护:上海期货信息技术有限公司 核准日期2020/11/26 目录 1引言

...............................................................................................................................................................................................

12行情查询服务(MDQP协议)

............................................................................................................................................

2 2.1用户登录示例

...............................................................................................................................................................

22.1.1用户登录请求(TypeID=0x11)

..............................................................................................................

22.1.2用户登录应答(TypeID=0x12)

..............................................................................................................

5 2.2主题行情快照查询功能示例

...................................................................................................................................

82.2.1快照查询请求(TypeID=0x31)

..............................................................................................................

92.2.2快照查询应答(TypeID=0x32)

............................................................................................................

10 2.3用户登出示例..............................................................................................................................................................21
2.3.1登出请求(TypeID=0x13)............................................................................................................................22
2.3.2登出应答(TypeID=0x14)............................................................................................................................24 2.4
心跳消息示例

.............................................................................................................................................................

262.4.1心跳消息(TypeID=0x00)............................................................................................................................26 3
增量行情推送服务(MIRP协议)....................................................................................................................................28
3.1增量行情推送功能

....................................................................................................................................................

283.1.1报文结构分析(报单)

.............................................................................................................................

293.1.2报文结构分析(再次报单)....................................................................................................................32
3.1.3报文结构分析(成交)

.............................................................................................................................

343.1.4报文结构分析(再次成交)....................................................................................................................41
3.1.5报文结构分析(收盘)

.............................................................................................................................

45 4增量行情查询服务(MDQP协议+MIRP协议).........................................................................................................49
4.1增量查询请求(TypeID=0x33)..........................................................................................................................49
4.1.1构造消息.........................................................................................................................................................49
4.1.2报文结构分析

...............................................................................................................................................

504.2增量查询应答(TypeID=0x34)..........................................................................................................................51
4.2.1报文结构分析

...............................................................................................................................................

51 5数据中心切换示例..................................................................................................................................................................58
5.1第一次切换..................................................................................................................................................................59
5.1.1报文解析(MIRP报文)...........................................................................................................................60
5.1.2报文解析(MDQP报文)........................................................................................................................60
5.2第二次切换..................................................................................................................................................................61
5.2.1报文解析(MIRP报文)...........................................................................................................................62
5.2.2报文解析(MDQP报文)........................................................................................................................62 6
附录

.............................................................................................................................................................................................

646.1附录一:快照查询应答消息报文数据

...............................................................................................................

646.2附录二:快照查询应答合约域串数据

...............................................................................................................

706.3附录三:涨跌停板对照表

......................................................................................................................................

75
I 1引言 上期所第二代行情的客户端接收程序主要由两部分组成(网络通信+报文编解码),主要参考文档是《上海期货交易所第二代行情发布平台接口规范》。
本文将介绍上期所第二代行情两种报文(MDQP报文与MIRP报文)的部分报文示例,并对这些示例报文进行结构分析(限于篇幅,本文以一档行情为例进行讲解)。
本文仅包含报文示例与报文结构分析,不包含具体的协议规范。
在阅读本文之前,建议先认真通读《上海期货交易所第二代行情发布平台接口规范》,以便于理解本文内容。
文中符号说明: DBL_MAX:Double类型变量可以表示的最大值,其值为:1.79769313486e+308,我们使用这个值作为Double类型变量的无效值。

1 2行情查询服务(MDQP协议) 2.1用户登录示例 行情用户开始接收行情前,首先要登录到平台。
用户首先需要发送登录请求消息给平台的行情查询服务申请登录,平台处理后发送登录应答消息进行反馈。
在本节,我们将尝试构造一个用户登录请求消息,并接收服务端生成的用户登录应答消息,实现一次完整的登录操作。
2.1.1用户登录请求(TypeID=0x11) 用户登录请求消息仅需要一个登录请求域: 2.1.1.1构造消息 我们构造的登录请求消息如下: 字段UserIDParticipantIDPasswordLanguageUserProductInfoInterfaceProductInfo 值“0070c2c”“0070”“1”‘0’“SHFEAPITESTER”“SHFEUser”
2 2.1.1.2报文结构分析 通过MDQP协议对上述登录请求消息进行编码,得到的登录请求报文如下(一个报文,共 163字节): Offset:000102030405060708090A0B0C0D0E0F00000000:010000000000000001119B000100000000000010:0200970030303730633263000000000000000020:0000000030303730000000000000003100000030:0000000000000000000000000000000000000040:0000000000000000000000000000000000000050:0000000000000000305348464520415000000060:4954455354455200000000000000000000000070:0000000000000000000000000000000000000080:0000534846452055736572000000000000000090:00000000000000000000000000000000000000a0:000000000000000000000001310A0002 ....................0070c2c.........0070.......1........................................0SHFE.APITESTER...........................SHFE.User.................................1... 对其结构进行分析,可以将该报文拆分为以下几个部分: MDQP报文头(8字节): Offset:000102030405060708090A0B0C0D0E0F00000000:010000000000000001119B000100000000000010:02009700303037306332630000000000 ....................0070c2c..... 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLengthRequestID Int8uInt16Int32 119B0001000000 0x111551 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x11表示登录请求消息。
报文体长度为155字节。
用户请求编号为
1。
登录请求域域头(4字节) Offset:000102030405060708090A0B0C0D0E0F00000000:010000000000000001119B000100000000000010:02009700303037306332630000000000
3 ....................0070c2c..... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)02009700 值 0x0002151 说明 0x0002表示登录请求域域体长度为151字节。
登录请求域域体(151字节) Offset:000102030405060708090A0B0C0D0E0F00000000:010000000000000001119B000100000000000010:0200970030303730633263000000000000000020:0000000030303730000000000000003100000030:0000000000000000000000000000000000000040:0000000000000000000000000000000000000050:0000000000000000305348464520415000000060:4954455354455200000000000000000000000070:0000000000000000000000000000000000000080:0000534846452055736572000000000000000090:00000000000000000000000000000000000000a0:000000000000000000000001310A0002 ....................0070c2c.........0070.......1........................................0SHFE.APITESTER...........................SHFE.User.................................1... 其结构如下(字符串中每个字符占1个字节,不需要进行大小端转换): 字段UserIDParticipantID Password Language UserProductInfo 类型Char[16]Char[11] Char[41] Char[1] Char[41] 16进制编码3030373063326300000000000000000030303730000000000000003100000000000000000000000000000000000000000000000000000000000000000000000000000000305348464520415049544553544552000000000000000000000000000000000000000000000000000000 值“0070c2c”“0070” “1” ‘0’ “SHFEAPITESTER” 说明交易用户代码为:“0070c2c”会员代码为:“0070” 密码为:“1”。
语言为中文。
用户端产品信息为:“SHFEAPITESTER”。

4 InterfaceProductInfo Char[41] 5348464520557365720000000000000000000000000000000000000000000000000000000000000000 “SHFEUser” 以上,便是一个完整的登录请求消息。
接口端产品信息为:“SHFEUser”。
2.1.2用户登录应答(TypeID=0x12) 上期所第二代行情发布平台接收到用户发来的登录请求消息后,会回复给用户一个登录应答消息。
如果登录成功,登录应答消息包括响应信息域和登录应答域。
如果登录失败,登录应答消息只包括响应信息域。
2.1.2.1报文结构分析 发送登录请求后,我们接收到的登录应答报文如下(一个报文,共216字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0112D00001000000010055000000000000000010:D5FDC8B700000000000000000000000000000020:0000000000000000000000000000000000000030:0000000000000000000000000000000000000040:0000000000000000000000000000000000000050:0000000000000000000000000000000000000060:0003007300323031323031313200323100000070:3A30303A31350030303730633263000000000080:0000000000000030303730000000000000000090:000053484645204D61726B6574204461000000a0:746120506C6174666F726D0000000000000000b0:00000000000000000000000000000000000000c0:00000000000000000000000000000032000000d0:30313230313131001132B70402000000 ..P.......U.....U}H7...............................................................................s.20120112.21:00:15.0070c2c.........0070.......SHFE.Market.Data.Platform....................................20120111..27.....
5 对其结构进行分析,可以将该报文拆分为以下几个部分: MDQP报文头(8字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0112D00001000000010055000000000000000010:D5FDC8B7000000000000000000000000 ..P.......U.....U}H7............ 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLength RequestID Int812uInt16D000 Int3201000000 0x12208
1 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x12表示登录应答消息。
报文体长度为208字节。
用户请求编号为
1,与登录请求消息报文头中的值一致。
响应信息域域头(4字节) Offset:000102030405060708090A0B0C0D0E0F00000000:0112D00001000000010055000000000000000010:D5FDC8B7000000000000000000000000 ..P.......U.....U}H7............ 其结构如下(各字段以小端模式编码): 字段FieldIDFieldSize 类型Int16Int16 16进制编码(小端模式)01005500 值0x000185 说明0x0001表示响应信息域。
域体长度为85字节。
响应信息域域体(85字节) Offset:000102030405060708090A0B0C0D0E0F00000000:0112D00001000000010055000000000000000010:D5FDC8B700000000000000000000000000000020:0000000000000000000000000000000000000030:0000000000000000000000000000000000000040:0000000000000000000000000000000000000050:0000000000000000000000000000000000000060:0003007300323031323031313200323100000070:3A30303A313500303037306332630000
6 ..P.......U.....U}H7...............................................................................s.20120112.21:00:15.0070c2c.. 其结构如下(int32类型字段以小端模式编码): 字段ErrorID ErrorMsg 类型Int32 Char[81] 16进制编码00000000D5FDC8B70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 值
0 “正确” 说明错误代码为
0 具体的信息为:“正确”。
登录应答域域头(4字节) 00000050:0000000000000000000000000000000000000060:0003007300323031323031313200323100000070:3A30303A313500303037306332630000 ...................s.20120112.21:00:15.0070c2c.. 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)03007300 值 0x0003115 说明 0x0003表示登录应答域。
域体长度为115字节。
登录应答域域体(115字节) 00000050:0000000000000000000000000000000000000060:0003007300323031323031313200323100000070:3A30303A31350030303730633263000000000080:0000000000000030303730000000000000000090:000053484645204D61726B6574204461000000a0:746120506C6174666F726D0000000000000000b0:00000000000000000000000000000000000000c0:00000000000000000000000000000032000000d0:30313230313131001132B70402000000000000e0:31001600323031323031313200303030 ...................s.20120112.21:00:15.0070c2c.........0070.......SHFE.Market.Data.Platform....................................20120111..27.....1...20120112.000 其结构如下(字符串中每个字符占1个字节,不需要进行大小端转换):
7 字段TradingDayLoginTimeUserIDParticipantID 类型Char[9]Char[9]Char[16]Char[11] TradingSystem-Char[61]Name ActionDay Char[9] 16进制编码32303132303131320032313A30303A31350030303730633263000000000000000000303037300000000000000053484645204D61726B6574204461746120506C6174666F726D000000000000000000000000000000000000000000000000000000000000000000000000323031323031313100 值“20120112”“21:00:15”“0070c2c”“0070” 说明交易日为:20120112登录成功时间为:21:00:15交易用户代码为:“0070c2c”会员名称为:“0070” “SHFEMarketDataPlatform” 系统名称为:“SHFEMarketDataPlatform” “20120111”自然日为:20120111 以上,便是一个完整的登录应答消息(ps:测试时设置的时间是2012011121:00:15.) 2.2主题行情快照查询功能示例 用户发送主题行情快照查询请求获得某一SnapNo对应的全量行情,或者最新的全量行情。
行情查询服务收到请求后发送快照查询应答消息对用户查询进行反馈。
注意:用户只能查询整个主题的行情快照,不能单独查询单个合约的行情快照。
在本节,我们将构造一个查询最新全量行情的快照查询请求,并接收平台回复的快照查询应答消息,实现一次完整的快照查询过程。

8 2.2.1快照查询请求(TypeID=0x31) 快照查询请求仅需一个快照标识域。
2.2.1.1构造消息 我们构造的快照查询请求消息如下: 字段TopicIDSnapNo 值1001-
1 注意:初始快照的编号SnapNo为
0,这里查询的是最新的快照,而不是初始快照。
2.2.1.2报文结构分析 通过MDQP协议对上述登录请求消息进行编码,得到的快照查询请求消息如下(一个报文, 共18字节): 000000a0:000000000000000000000001310A0002000000b0:00000001100600E903FFFFFFFF01330E000000c0:000300000001020A00E903010000000A ............1..........i......3..........i...... 对其结构进行分析,可以将该报文拆分为以下几个部分: MDQP报文头(8字节): 000000a0:000000000000000000000001310A0002000000b0:00000001100600E903FFFFFFFF01330E000000c0:000300000001020A00E903010000000A 其结构如下(各字段以小端模式编码): ............1..........i......3..........i......
9 字段类型16进制编码值(小端模式) Flag uInt801 0x01 TypeIDLengthRequestID Int8uInt16Int32 310A0002000000 0x31102 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x31表示快照查询请求消息。
报文体长度为10字节。
用户请求编号为
2。
快照标识域域头(4字节) 000000a0:000000000000000000000001310A0002000000b0:00000001100600E903FFFFFFFF01330E000000c0:000300000001020A00E903010000000A ............1..........i......3..........i...... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)01100600 值 0x10016 说明 0x1001表示快照标识域。
域体长度为6字节。
快照标识域域体(6字节) 000000a0:000000000000000000000001310A0002000000b0:00000001100600E903FFFFFFFF01330E ............1..........i......3. 其结构如下(各字段以小端模式编码): 字段 TopicIDSnapNo 类型 Int16Int32 16进制编码(小端模式)E903FFFFFFFF 值 1001-
1 说明 主题代码为1001。
-1表示查询最新快照。
以上,便是一个完整的快照查询请求消息。
2.2.2快照查询应答(TypeID=0x32) 快照查询应答消息的域构成如下:X个中心切换历史域(X为当前交易日已经发生的数据中心切换次数,未发生过数据 中心切换则为
0。
) 10 一个结算会话域一个快照标识域一个主题属性域一个快照时间域一个增量行情报文编号域。
M个合约域串(M为主题中的合约个数)。
每个合约域串的构成为: 一个合约信息域一个成交行情域<=2N个分价表域构成(N为该主题的行情深度) 2.2.2.1报文结构分析 发送快照查询请求后,我们接收到的快照查询应答消息如下(共分三个报文存放,由于报文数据量较大,此处仅贴出部分报文数据,完整报文数据请参见附录一): 快照查询应答消息报文1(1215字节) 000000d0:30313230313131001132B70402000000000000e0:31001600323031323031313200303030000000f0:3030303031000100000001100600E903 ...... 00000530:FFFFFFEF7FFFFFFFFFFFFFEF7FFFFFFF00000540:FFFFFFEF7F000000000044D140000000 11 0120111..27.....1...20120112.00000001.........i. ...o.......o.......o......DQ@... 00000550:0000E0CF4000000000009AD04000000000000560:00009AD0400000000000C0B240FFFFFF00000570:FFFFFFEF7FFFFFFFFFFFFFEF7F32303100000580:32303131310032313A30303A303700F400000590:010000010000001132BC040200000001 ..`O@......P@......P@.....@2@......o.......o.20120111.21:00:07.t........2<...... 快照查询应答消息报文(1220字节) 00000590:010000010000001132BC040200000001000005a0:017000616C3132303500000000000000000005b0:00000000000000000000000000000000000005c0:0000616C000000000000000000000000000005d0:00000000000000000000000000000000000005e0:0031FFFFFFFFFFFFEF7F300500000000000005f0:0000000000F03F01000000434E590000 ...... 000009f0:3900000000000000000000000000000000000a00:00000000000000000000616C0000000000000a10:0000000000000000000000000000000000000a20:00000000000000000031FFFFFFFFFFFF00000a30:EF7F3005000000000000000000F03F0100000a40:000000434E590000000000000014400000000a50:0000000004D040080000000132E60402 ........2<.......p.al1205.........................al.............................1......o.0..........p?
....CNY.. 9.........................al.............................1......o.0..........p?
....CNY........@......P@.....2f.. 快照查询应答消息报文(1262字节) 00000a50:0000000004D040080000000132E6040200000a60:00000002019A0008000000000000000000000a70:04D0400000000000000000000000000000000a80:00000000008940FFFFFFFFFFFFEF7FFF00000a90:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFF00000aa0:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7F0000000ab0:000000C0A7D0400000000000BECE4000 ...... 00000ee0:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFF00000ef0:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFF00000f00:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFF00000f10:FFFFFFFFFFEF7F0000000000000000FF00000f20:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7F3200000f30:303132303131310032313A30303A303600000f40:00C800000000000000 .....P@.....2f...................P@...................@......o.......o.......o.......o.......o.....@'P@.....>N@. .....o.......o.......o.......o.......o.......o.......o...............o.......o.20120111.21:00:06.H....... 12 对其结构进行分析,可以将该消息拆分为以下几个部分: 报文1MDQP报文头(8字节): 000000c0:00000000000000000000000000000032000000d0:30313230313131001132B70402000000000000e0:31001600323031323031313200303030 ...............20120111..27.....1...20120112.000 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt811 0x11 TypeIDLength RequestID Int832uInt16B704 Int3202000000 0x321207
2 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
1,表示后续报文仍然是同一个消息的报文。
0x32表示快照查询应答消息。
报文体长度为1207字节。
用户请求编号为
2,与快照查询请求消息报文头中的值一致。
结算会话域域头(4字节): 000000d0:30313230313131001132B70402000000000000e0:31001600323031323031313200303030 0120111..27.....1...20120112.000 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)31001600 值 0x003122 说明 0x0031表示结算会话域。
域体长度为22字节。
结算会话域域体(22字节): 000000e0:31001600323031323031313200303030000000f0:3030303031000100000001100600E90300000100:01000000031025000100000030000000 1...20120112.00000001.........i.......%.....0... 其结构如下(Int32类型字段以小端模式编码): 字段TradingDay 类型Char[9] 16进制编码(小端模式)323031323031313200 值 说明 “20120112”交易日为:20120112 13 SettlementGroupID SettlementID Char[9]Int32 30303030303030310001000000 “00000001”结算组代码为:00000001
1 结算编号为
1。
快照标识域域头(4字节): 000000e0:31001600323031323031313200303030000000f0:3030303031000100000001100600E90300000100:01000000031025000100000030000000 1...20120112.00000001.........i.......%.....0... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)01100600 值 0x10016 说明 0x1001表示快照标识域。
域体长度为6字节。
快照标识域域体(6字节): 000000e0:31001600323031323031313200303030000000f0:3030303031000100000001100600E90300000100:01000000031025000100000030000000 1...20120112.00000001.........i.......%.....0... 其结构如下(各字段以小端模式编码): 字段TopicID 类型Int16 16进制编码(小端模式)E903 值1001 SnapNo Int32010000001 说明 主题代码为1001。
快照编号为
1,表示当前快照是初始快照之后的一张快照。
主题属性域域头(4字节): 000000f0:3030303031000100000001100600E90300000100:0100000003102500010000003000000000000110:00000000000000000000000000000000 00001.........i.......%.....0................... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)03102500 值 0x100337 说明 0x1003表示主题属性域。
域体长度为37字节。
14 主题属性域域体(37字节): 00000100:0100000003102500010000003000000000000110:0000000000000000000000000000000000000120:00000000000000000000000000021016 其结构如下(int32类型字段以小端模式编码): 字段MarketDataDepthCipherAlgorithm CipherKey CipherIV 类型Int32Char[1]Byte[16]Byte[16] 16进制编码(小端模式) 01000000 30 0000000000000000000000000000000000000000000000000000000000000000 值1‘0’ ......%.....0................................... 说明主题行情深度为1不加密无效无效 快照时间域域头(4字节): 00000120:0000000000000000000000000002101600000130:0032303132303131310032303A35343A .................20120111.20:54: 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)02101600 值 0x100222 说明 0x1002表示快照时间域。
域体长度为22字节。
快照时间域域体(22字节): 00000130:0032303132303131310032313A30303A00000140:303700F4010000041004000100000001 .20120111.21:00:07.t............ 其结构如下(int32类型字段以小端模式编码): 字段SnapDateSnapTime 类型Char[9]Char[9] 16进制编码(小端模式)32303132303131310032313A30303A303700 SnapMillisecInt32F4010000 值“20120111”“21:00:07” 500 说明采样日期:20120111采样时间:21:00:07毫秒级采样时间:500ms 15 增量行情报文编号域域头(4字节): 00000140:303600F401000004100400010000000100000150:017000616C3132303100000000000000 06.t.............p.al1201....... 其结构如下(各字段以小端模式编码): 字段 类型16进制编码(小端模式) FieldID Int160410 FieldSize Int160400 值0x10044 说明0x1004表示增量行情报文编号域。
域体长度为4字节。
增量行情报文编号域域体(4字节): 00000140:303600F401000004100400010000000100000150:017000616C3132303100000000000000 06.t.............p.al1201....... 其结构如下(int32类型字段以小端模式编码): 字段PacketNo 类型Int32 16进制编码值(小端模式)010000001 说明增量行情报文的最新编号为:
1 注意:增量行情报文的编号从1开始,PacketNo为1即代表第一个增量行情报文。
后面紧随的是M个合约域串(当前主题有13条合约,M=13): 合约域串1合约信息域域头(4字节): 00000140:303600F401000004100400010000000100000150:017000616C3132303100000000000000 06.t.............p.al1201....... 其结构如下(各字段以小端模式编码): 字段FieldIDFieldSize 类型Int16Int16 16进制编码(小端模式)01017000 值0x0101112 说明0x0101表示合约信息域。
域体长度为112字节。
合约域串1合约信息域域体(112字节): 00000150:017000616C313230310000000000000000000160:0000000000000000000000000000000000000170:0000616C00000000000000000000000000000180:0000000000000000000000000000000000000190:0031FFFFFFFFFFFFEF7F300500000000000001a0:0000000000F03F01000000434E590000 16 .p.al1201.........................al.............................1......o.0..........p?
....CNY.. 000001b0:00000000001440000000000094D14000000001c0:00000002019A00000000000000000000 ......@......Q@................. 其结构如下(int32和Double类型字段以小端模式编码): 字段InstrumentID UnderlyingInstrID 类型Char[31] Char[31] 16进制编码(小端模式)616C3132303100000000000000000000000000000000000000000000000000616C0000000000000000000000000000000000000000000000000000000000 值“al1201” “al” ProductClass Char[1]31
1 StrikePrice DoubleFFFFFFFFFFFFEF7FDBL_MAX OptionsType Char[1] VolumeMultipleUnderlyingMultipleIsTrading Int32DoubleInt32 CurrencyID Char[4] PriceTickCodecPriceInstrumentNo DoubleDoubleInt32 30 05000000000000000000F03F01000000 434E5900 0000000000001440000000000094D14000000000 ‘0’ 511 “CNY” 5180000 说明 合约代码:“al1201” 基础商品代码:“al” 合约所属的产品类型:‘1’期货执行价,期权合约专用,此处为无效值。
期权类型:‘0’非期权。
合约数量乘数:5合约基础商品乘数:11:其他交易状态合约币种代码:“CNY”人民币最小变动价位:5编码基准价:18000合约编码:
0 合约域串1成交行情域域头(4字节): 000001c0:00000002019A00000000000000000000000001d0:94D14000000000000000000000000000 .................Q@............. 其结构如下(各字段以小端模式编码): 字段FieldIDFieldSize 类型Int16Int16 16进制编码(小端模式)02019A00 值0x0102154 说明0x0102表示成交行情域。
域体长度为154字节。
合约域串1成交行情域域体(154字节): 000001c0:00000002019A00000000000000000000 17 ................ 000001d0:94D14000000000000000000000000000000001e0:00000000408F40FFFFFFFFFFFFEF7FFF000001f0:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFF00000200:FFFFFFFFFFEF7FFFFFFFFFFFFFEF7F0000000210:0000000048D2400000000000E0D0400000000220:0000000094D140000000000094D1400000000230:00000000408F40FFFFFFFFFFFFEF7FFF00000240:FFFFFFFFFFEF7F32303132303131310000000250:32313A30303A303700F401000001000000000260:0001017000616C313230320000000000 .Q@.................@.@......o.......o.......o.......o.......o......HR@.....`P@......Q@......Q@.....@.@......o.......o.20120111.21:00:07.t.........p.al1202..... 其结构如下(int32和Double类型字段以小端模式编码): 字段InstrumentNoLastPriceVolumeTurnoverOpenInterestHighestPriceLowestPriceOpenPriceClosePriceSettlementPriceUpperLimitPriceLowerLimitPricePreSettlementPricePreClosePricePreOpenInterest 类型Int32DoubleInt32DoubleDoubleDoubleDoubleDoubleDoubleDoubleDoubleDoubleDoubleDoubleDouble 16进制编码(小端模式)00000000000000000094D1400000000000000000000000000000000000408F40FFFFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFFFFFFFFFFFFEF7F000000000048D2400000000000E0D040000000000094D140000000000094D1400000000000408F40 值018000001000DBL_MAXDBL_MAXDBL_MAXDBL_MAXDBL_MAX187201728018000180001000 PreDelta DoubleFFFFFFFFFFFFEF7FDBL_MAX CurrDeltaActionDayUpdateTimeUpdateMilliSec DoubleChar[9]Char[9]Int32 FFFFFFFFFFFFEF7F 32303132303131310032313A30303A303700 F4010000 DBL_MAX“20120111”“21:00:07”500 ChangeNo Int32 01000000
1 说明合约编码:0最新价:18000合约数量:0成交金额:0持仓量:1000最高价:无效值最低价:无效值今开盘:无效值今收盘:无效值结算价:无效值涨停板价:18720跌停板价:17280昨结算价:18000昨收盘价:18000昨持仓量:1000昨虚实度:无效值今虚实度:无效值业务发生日期:20120111最近修改秒级时间:21:00:07最近修改毫秒级时间:500当前合约行情快照编号:
1 18 合约域串2合约信息域域头(4字节): 00000260:0001017000616C31323032000000000000000270:00000000000000000000000000000000 ...p.al1202..................... 其结构如下(各字段以小端模式编码): 字段FieldIDFieldSize 类型Int16Int16 16进制编码(小端模式)01017000 值0x0101112 说明0x0101表示合约信息域。
域体长度为112字节。
合约域串2合约信息域域体(112字节): 00000260:0001017000616C31323032000000000000000270:0000000000000000000000000000000000000280:00000000616C0000000000000000000000000290:00000000000000000000000000000000000002a0:00000031FFFFFFFFFFFFEF7F30050000000002b0:00000000000000F03F01000000434E59000002c0:00000000000000144000000000C09CD1000002d0:400100000002019A0001000000000000 ...p.al1202.........................al.............................1......o.0..........p?
....CNY........@....@.Q@............... 其结构如下(int32和Double类型字段以小端模式编码): 字段InstrumentID UnderlyingInstrID 类型Char[31] Char[31] 16进制编码(小端模式)616C3132303200000000000000000000000000000000000000000000000000616C0000000000000000000000000000000000000000000000000000000000 值“al1202” “al” ProductClass Char[1]31
1 StrikePrice DoubleFFFFFFFFFFFFEF7FDBL_MAX OptionsType Char[1] VolumeMultipleUnderlyingMultipleIsTrading Int32DoubleInt32 30 05000000000000000000F03F01000000 ‘0’ 511 说明 合约代码:“al1202” 基础商品代码:“al” 合约所属的产品类型:‘1’期货执行价,期权合约专用,此处为无效值。
期权类型:‘0’非期权。
合约数量乘数:5合约基础商品乘数:11:其他交易状态 19 CurrencyID PriceTickCodecPriceInstrumentNo Char[4] DoubleDoubleInt32 434E5900 000000000000144000000000C09CD14001000000 “CNY” 5180351 合约币种代码:“CNY”人民币最小变动价位:5编码基准价:18035合约编码:
1 合约域串2成交行情域域头(4字节): 000002d0:400100000002019A0001000000000000000002e0:00C09CD1400000000000000000000000 @................@.Q@........... 其结构如下(各字段以小端模式编码): 字段FieldIDFieldSize 类型Int16Int16 16进制编码(小端模式)02019A00 值0x0102154 说明0x0102表示成交行情域。
域体长度为154字节。
合约域串2成交行情域域体(154字节): 000002d0:400100000002019A0001000000000000000002e0:00C09CD1400000000000000000000000000002f0:000000000000408F40FFFFFFFFFFFFEF00000300:7FFFFFFFFFFFFFEF7FFFFFFFFFFFFFEF00000310:7FFFFFFFFFFFFFEF7FFFFFFFFFFFFFEF00000320:7F00000000C050D2400000000080E7D000000330:4000000000C09CD14000000000C09CD100000340:400000000000408F40FFFFFFFFFFFFEF00000350:7FFFFFFFFFFFFFEF7F3230313230313100000360:310032313A30303A303700F40100000100000370:00000001017000616C31323033000000 @................@.Q@.................@.@......o.......o.......o.......o.......o.....@PR@.....gP@....@.Q@....@.Q@.....@.@......o.......o.20120111.21:00:07.t.........p.al1203... 其结构如下(int32和Double类型字段以小端模式编码): 字段InstrumentNoLastPriceVolumeTurnoverOpenInterestHighestPriceLowestPriceOpenPrice 类型Int32DoubleInt32DoubleDoubleDoubleDoubleDouble 16进制编码(小端模式)0100000000000000C09CD1400000000000000000000000000000000000408F40FFFFFFFFFFFFEF7FFFFFFFFFFFFFEF7FFFFFFFFFFFFFEF7F 值118035001000DBL_MAXDBL_MAXDBL_MAX 20 说明合约编码:1最新价:18035合约数量:0成交金额:0持仓量:1000最高价:无效值最低价:无效值今开盘:无效值 ClosePriceSettlementPriceUpperLimitPriceLowerLimitPricePreSettlementPricePreClosePricePreOpenInterest DoubleDoubleDoubleDoubleDoubleDoubleDouble PreDelta Double CurrDelta Double ActionDay Char[9] UpdateTime Char[9] UpdateMilliSec Int32 ChangeNo Int32 FF
FFFFFFFFFFEF7FFFFFFFFFFFFFEF7F00000000C050D2400000000080E7D04000000000C09CD14000000000C09CD1400000000000408F40 FFFFFFFFFFFFEF7F FFFFFFFFFFFFEF7F 32303132303131310032313A30303A303700 F4010000 01000000 DBL_MAXDBL_MAX187551731018035180351000DBL_MAX DBL_MAX “20120111” “21:00:07” 500
1 今收盘:无效值结算价:无效值涨停板价:18755跌停板价:17310昨结算价:18035昨收盘价:18035昨持仓量:1000昨虚实度:无效值今虚实度:无效值业务发生日期:20120111最近修改秒级时间:21:00:07最近修改毫秒级时间:500当前合约行情快照编号:
1 限于篇幅,本文不再一一列举各个合约域串,后面的增量行情仅针对“al1201”合约进行, 有兴趣的读者可以自行解码后面的合约域串,我们将快照查询应答消息各个合约域串的数据列 在附录二中供大家参考。
注意:快照查询应答消息由三个报文拼接而成,解码时需要将三个报文的报文体拼接在
起解码才能得到完整的快照。
2.3
用户登出示例 用户需要登出平台时,可以向平台发送登出请求消息,平台处理后发送登出应答消息进行反馈。
21 在本节,我们将尝试构造一个用户登出请求消息,并接收服务端生成的用户登出应答消息,实现一次完整的登出操作。
2.3.1登出请求(TypeID=0x13) 登出请求消息仅需要一个登出请求域。
2.3.1.1构造消息 我们构造的登出请求消息如下:字段UserIDParticipantID 2.3.1.2报文结构分析 值“0070c2c”“0070” 通过MDQP协议对上述登出请求消息进行编码,得到的登出请求报文如下(一个报文,共 39字节): Offset:000102030405060708090A0B0C0D0E0F00000180:000000010000000000000001131F000400000190:00000004001B00303037306332630000000001a0:00000000000000303037300000000000000001b0:00000100000000000000010000000000 .......................0070c2c.........0070..................... 对其结构进行分析,可以将该报文拆分为以下几个部分: MDQP报文头(8字节): Offset:000102030405060708090A0B0C0D0E0F00000180:000000010000000000000001131F000400000190:00000004001B00303037306332630000000001a0:00000000000000303037300000000000000001b0:00000100000000000000010000000000 22 .......................0070c2c.........0070..................... 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLengthRequestID Int8uInt16Int32 131F0004000000 0x13314 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x13表示登出请求消息。
报文体长度为31字节。
用户请求编号为
4。
登出请求域域头(4字节) Offset:000102030405060708090A0B0C0D0E0F00000180:000000010000000000000001131F000400000190:00000004001B00303037306332630000000001a0:00000000000000303037300000000000000001b0:00000100000000000000010000000000 .......................0070c2c.........0070..................... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)04001B00 值 0x000427 说明 0x0004表示登出请求域域体长度为27字节。
登出请求域域体(27字节) Offset:000102030405060708090A0B0C0D0E0F00000180:000000010000000000000001131F000400000190:00000004001B00303037306332630000000001a0:00000000000000303037300000000000000001b0:00000100000000000000010000000000 .......................0070c2c.........0070..................... 其结构如下(字符串中每个字符占1个字节,不需要进行大小端转换): 字段UserIDParticipantID 类型Char[16]Char[11] 16进制编码303037306332630000000000000000003030373000000000000000 值“0070c2c”“0070” 说明交易用户代码为:“0070c2c”会员代码为:“0070” 23 2.3.2登出应答(TypeID=0x14) 如果登出成功的话,登出应答消息包括响应信息域和登出应答域。
如果登出失败,登出应答消息仅包括响应信息域。
2.3.2.1报文结构分析 发送登出请求后,我们接收到的登出应答报文如下(一个报文,共128字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0114780004000000010055000000000000000010:D5FDC8B700000000000000000000000000000020:0000000000000000000000000000000000000030:0000000000000000000000000000000000000040:0000000000000000000000000000000000000050:0000000000000000000000000000000000000060:0005001B00303037306332630000000000000070:00000000003030373000000000000000 ..x.......U.....U}H7.................................................................................0070c2c.........0070....... 对其结构进行分析,可以将该报文拆分为以下几个部分: MDQP报文头(8字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0114780004000000010055000000000000000010:D5FDC8B7000000000000000000000000 ..x.......U.....U}H7............ 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLength RequestID Int814uInt167800 Int3204000000 0x14120
4 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x14表示登出应答消息。
报文体长度为120字节。
用户请求编号为
4,与登出请求消息报文头中的值一致。
24 响应信息域域头(4字节) Offset:000102030405060708090A0B0C0D0E0F00000000:0114780004000000010055000000000000000010:D5FDC8B7000000000000000000000000 ..x.......U.....U}H7............ 其结构如下(各字段以小端模式编码): 字段FieldIDFieldSize 类型Int16Int16 16进制编码(小端模式)01005500 值0x000185 说明0x0001表示响应信息域。
域体长度为85字节。
响应信息域域体(85字节) Offset:000102030405060708090A0B0C0D0E0F00000000:0114780004000000010055000000000000000010:D5FDC8B700000000000000000000000000000020:0000000000000000000000000000000000000030:0000000000000000000000000000000000000040:0000000000000000000000000000000000000050:0000000000000000000000000000000000000060:0005001B003030373063326300000000 ..x.......U.....U}H7.................................................................................0070c2c.... 其结构如下(int32类型字段以小端模式编码): 字段ErrorID ErrorMsg 类型Int32 Char[81] 16进制编码00000000D5FDC8B70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 值
0 “正确” 说明错误代码为
0 具体的信息为:“正确”。
登出应答域域头(4字节) Offset:000102030405060708090A0B0C0D0E0F00000050:0000000000000000000000000000000000000060:0005001B00303037306332630000000000000070:00000000003030373000000000000000 25 .....................0070c2c.........0070....... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)05001B00 值 0x000527 说明 0x0005表示登出应答域。
域体长度为27字节。
登出应答域域体(27字节) Offset:000102030405060708090A0B0C0D0E0F00000050:0000000000000000000000000000000000000060:0005001B00303037306332630000000000000070:00000000003030373000000000000000 .....................0070c2c.........0070....... 其结构如下(字符串中每个字符占1个字节,不需要进行大小端转换): 字段UserIDParticipantID 类型Char[16]Char[11] 16进制编码303037306332630000000000000000003030373000000000000000 值“0070c2c”“0070” 说明交易用户代码为:“0070c2c”会员名称为:“0070” 2.4心跳消息示例 用户与平台行情查询服务之间的连接建立后,当任何一侧在一定时间内没有收到对方的报文,则为连接超时。
默认连接超时时间为10秒(建议发送心跳消息的时间间隔短于10s)。
心跳功能用以通知对方连接有效。
如果一定时间内,任何一侧没有需要向另一侧发送任何报文时,就需要向对方发送心跳消息报文,避免连接超时。
发生连接超时,表示连接已无效,应断开连接。
2.4.1心跳消息(TypeID=0x00) 每个心跳消息由一个只有MDQP报文头的空报文构成。
空报文的报文体为空,其中不包含任何域。
心跳消息报文头中,Length为
0,RequestID字段无意义。
26 2.4.1.1报文结构分析 我们构造的心跳消息如下(一个报文,共8字节): Offset:000102030405060708090A0B0C0D0E0F00000000:010000000000000001119B0001000000 对其结构进行分析,这就是一个MDQP报文头: ................ 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLengthRequestID Int8uInt16Int32 00000000000000 0x0000 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x00表示心跳消息。
报文体长度为0字节。
无意义 27 3增量行情推送服务(MIRP协议) 增量行情服务提供增量行情组播推送功能,向组播组内所有行情用户推送增量行情。
3.1增量行情推送功能 增量行情刷新消息由一到最多M(主题包括的合约数)个合约增量行情域串构成。
当增量行情刷新消息较大,需要分成多个增量行情报文时,同一个合约的合约行情域串必然是在同一个报文中。
每个合约增量行情域串由一个合约增量行情头域开始,后接0到最多2N(N为行情深度)个的分价表变动域,再接一系列其他合约事件相关域。
除分价表变动域外,其他事件域最多出现一次。
本节我们通过一些简单的报单和成交,来构造行情变化,接收增量行情刷新消息。
本节进行的操作如下所示(最后还做了合约状态切换到收盘的操作): 报单号合约代码买卖方向价格 数量 插入时间
1 al1201买 18000
1 21:15:34
2 al1201买 18000
1 21:15:39
3 al1201卖 18000
3 21:15:44
4 al1201卖 18100
2 21:15:54
5 al1201买 18100
2 21:15:58 下面我们将对这些操作对应的增量行情报文进行分析: 28 3.1.1报文结构分析(报单) 从上面的操作示意图中,我们可以看出,第一笔操作是报了一个买单,合约代码为“al1201”, 价格为18000,数量为
1。
此时,系统推送了一条增量行情刷新消息(一个报文,共40字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100002000000E90300000200000000000010:778B0D4FB42D0000030002000004011000000020:0600313002000200 ........i.......w..O4-............10.... 对其结构进行分析,可以将该报文拆分为以下几个部分: MIRP报文头(24字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100002000000E90300000200000000000010:778B0D4FB42D0000030002000004011000000020:0600313002000200 ........i.......w..O4-............10.... 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLengthPacketNoTopicID SnapMillisec Int8uInt16Int32Int16 01100002000000E903 uInt160000 SnapNo Int3202000000 SnapTime uInt32778B0D4F CommPhaseNoCenterChangeNoReserved uInt16Int8Int8 B42D0000 0x011621001 0 2 1326287735 1170000 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x01表示增量行情刷新消息。
报文体长度为:16字节。
行情报文号为:
2。
行情主题的主题代码为:1001当前主题行情快照的毫秒级时间:0当前主题增量行情的快照编号:2当前主题行情快照的秒级时间:2012011121:15:35交易日:20120112数据中心编号:0保留字节:
0 29 合约增量行情头域域头(4字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100002000000E90300000200000000000010:778B0D4FB42D0000030002000004011000000020:0600313002000200 ........i.......w..O4-............10.... 其结构如下(各字段以小端模式编码): 字段 类型16进制编码(小端模式) FieldID Int160300 FieldSize Int160200 值0x00032 说明0x0003表示合约增量行情头域。
域体长度为2字节。
合约增量行情头域域体(2字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100002000000E90300000200000000000010:778B0D4FB42D0000030002000004011000000020:0600313002000200 ........i.......w..O4-............10.... 其结构如下(各字段以小端模式编码): 字段 InstrumentNoChangeNo 类型16进制编码值(小端模式) VInt00
0 VInt04
2 说明 合约编码:0当前合约增量行情的编号:
2 注意:VInt类型字段解码方式请参照《上海期货交易所第二代行情发布平台接口规范》,本文不做更多叙述。
分价表变动域域头(4字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100002000000E90300000200000000000010:778B0D4FB42D0000030002000004011000000020:0600313002000200 ........i.......w..O4-............10.... 其结构如下(各字段以小端模式编码): 字段FieldIDFieldSize 类型Int16Int16 16进制编码(小端模式)01100600 值0x10016 说明0x1001表示分价表变动域。
域体长度为6字节。
30 分价表变动域域体(6字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100002000000E90300000200000000000010:778B0D4FB42D0000030002000004011000000020:0600313002000200 ........i.......w..O4-............10.... 其结构如下(VInt类型字段以小端模式编码): 字段 EventTypeMDEntryTypePriceLevelPriceOffsetVolume 类型 Char[1]Char[1]VIntVIntVInt 16进制编码(小端模式)3130020002 值 ‘1’‘0’101 说明 事件类型:增加买卖方向:买档位深度:1档位价格偏移量:0报单量:
1 注意:域头中的域体长度FieldSize可能会大于域定义中的字段长度之和。
这种情况一般会出现在版本更新时,在域定义后增加了新域体字段,而客户端仍然向前兼容地使用旧版本进行协议解码的时候。
所以,在将报文体分割成多个域时,一定要使用域头中的域体长度进行分割,而不是使用域体字段定义。
在域体末端有冗余字节时,应该丢弃,而不是作为下一个域的开头字段,否则报文解码就会出错。
根据上面的分价表信息,按照价格计算公式,可以得出: Price=CodecPrice+PriceOffset*PriceTick=18000+0*5=18000; 合约行情更新如下: 合约信息域 InstrumentID “al1201” UnderlyingInstrID“al” ProductClass
1 StrikePrice DBL_MAX OptionsType ‘0’ VolumeMultiple5 UnderlyingMultiple1 IsTrading
1 CurrencyID “CNY” PriceTick
5 CodecPrice 18000 合约域串“al1201” 成交行情域 InstrumentNo

0 PreSettlementPrice LastPrice 18000PreClosePrice Volume
0 PreOpenInterest Turnover
0 PreDelta OpenInterest1000 CurrDelta HighestPriceDBL_MAXActionDay LowestPrice DBL_MAXUpdateTime OpenPrice DBL_MAXUpdateMilliSec ClosePrice DBL_MAXChangeNo SettlementPriceDBL_MAX UpperLimitPrice18720 31 18000180001000DBL_MAXDBL_MAX“20120111”“21:15:35”02 InstrumentNo
0 LowerLimitPrice17280 分价表 买

Price 18000 Volume
1 Price DBL_MAX Volume
0 3.1.2报文结构分析(再次报单) 从上面的操作示意图中,我们可以看出,第二笔操作又报了一个买单,合约代码还是 “al1201”,价格依然是18000,数量为
1。
此时,系统新推送了一条增量行情刷新消息(一个报文,共40字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100003000000E90300000300000000000010:7C8B0D4FB42D0000030002000006011000000020:0600323002000400 ........i.......|..O4-............20.... 对其结构进行分析,可以将该报文拆分为以下几个部分: MIRP报文头(24字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100003000000E90300000300000000000010:7C8B0D4FB42D0000030002000006011000000020:0600323002000400 ........i.......|..O4-............20.... 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLengthPacketNoTopicID SnapMillisec SnapNo Int8uInt16Int32Int16 01100003000000E903 uInt160000 Int3203000000 0x011631001 0
3 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x01表示增量行情刷新消息。
报文体长度为:16字节。
行情报文号为:
3。
行情主题的主题代码为:1001当前主题行情快照的毫秒级时间:0当前主题增量行情的快照编号:
3 32 SnapTime uInt327C8B0D4F CommPhaseNoCenterChangeNoReserved uInt16Int8Int8 B42D0000 1326287740 1170000 当前主题行情快照的秒级时间:2012011121:15:40交易日:20120112数据中心编号:0保留字节:
0 合约增量行情头域域头(4字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100003000000E90300000300000000000010:7C8B0D4FB42D0000030002000006011000000020:0600323002000400 ........i.......|..O4-............20.... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)03000200 值 0x00032 说明 0x0003表示合约增量行情头域。
域体长度为2字节。
合约增量行情头域域体(2字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101100003000000E90300000300000000000010:7C8B0D4FB42D0000030002000006011000000020:0600323002000400 ........i.......|..O4-............20.... 其结构如下(各字段以小端模式编码): 字段 InstrumentNoChangeNo 类型16进制编码值(小端模式) VInt00
0 VInt06
3 说明 合约编码:0当前合约增量行情的编号:
3 分价表变动域域头(4字节): 00000010:7C8B0D4FB42D00000300020000060110|..O4-.......... 00000020:0600323002000400 ..20.... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型 Int16Int16 16进制编码(小端模式)01100600 值 0x10016 说明 0x1001表示分价表变动域。
域体长度为6字节。
33 分价表变动域域体(6字节): 00000010:7C8B0D4FB42D00000300020000060110|..O4-.......... 00000020:0600323002000400 ..20.... 其结构如下(VInt类型字段以小端模式编码): 字段 EventTypeMDEntryTypePriceLevelPriceOffsetVolume 类型 Char[1]Char[1]VIntVIntVInt 16进制编码(小端模式)3230020004 这里直接将买一的报单量修改为
2。
值 ‘2’‘0’102 说明 事件类型:修改买卖方向:买档位深度:1档位价格偏移量:0报单量:
2 合约行情更新如下: 合约域串“al1201” 合约信息域 成交行情域 InstrumentID “al1201”InstrumentNo0 PreSettlementPrice18000 UnderlyingInstrID“al” LastPrice 18000PreClosePrice 18000 ProductClass
1 Volume
0 PreOpenInterest1000 StrikePrice DBL_MAX Turnover
0 PreDelta DBL_MAX OptionsType ‘0’ OpenInterest1000 CurrDelta DBL_MAX VolumeMultiple5 HighestPriceDBL_MAXActionDay “20120111” UnderlyingMultiple1 LowestPrice DBL_MAXUpdateTime “21:15:40” IsTrading
1 OpenPrice DBL_MAXUpdateMilliSec
0 CurrencyID “CNY” ClosePrice DBL_MAXChangeNo
3 PriceTick
5 SettlementPriceDBL_MAX CodecPrice 18000 UpperLimitPrice18720 InstrumentNo
0 LowerLimitPrice17280 分价表 买

Price 18000 Volume
1 Price DBL_MAX Volume
0 3.1.3报文结构分析(成交) 从上面的操作示意图中,我们可以看出,第三笔操作报了一个卖单,合约代码是“al1201”,价格是18000,数量为
3,之前报的2笔买单成交。
34 此时,系统新推送了一条增量行情刷新消息(一个报文,共73字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101310004000000E90300000400000000000010:818B0D4FB42D0000030002000008011000000020:0600333002000400011006003131020000000030:0200021004000008000813100100001100000040:100100001210010000 ..1.....i..........O4-............30........11........................... 对其结构进行分析,可以将该报文拆分为以下几个部分: MIRP报文头(24字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101310004000000E90300000400000000000010:818B0D4FB42D00000300020000080110 ..1.....i..........O4-.......... 其结构如下(各字段以小端模式编码):字段类型16进制编码值 (小端模式) Flag uInt801 0x01 TypeIDLengthPacketNoTopicID SnapMillisec Int8uInt16Int32Int16 01310004000000E903 uInt160000 SnapNo Int3204000000 SnapTime uInt32818B0D4F CommPhaseNoCenterChangeNoReserved uInt16Int8Int8 B42D0000 0x014941001 0 4 1326287745 1170000 说明 低4位为
1,表示当前协议版本号为
1,高4位中第4位为
0,表示当前报文是本消息的最后一个报文。
0x01表示增量行情刷新消息。
报文体长度为:49字节。
行情报文号为:
4。
行情主题的主题代码为:1001当前主题行情快照的毫秒级时间:0当前主题增量行情的快照编号:4当前主题行情快照的秒级时间:2012011121:15:45交易日:20120112数据中心编号:0保留字节:
0 合约增量行情头域域头(4字节): Offset:000102030405060708090A0B0C0D0E0F00000000:0101310004000000E90300000400000000000010:818B0D4FB42D00000300020000080110 35 ..1.....i..........O4-.......... 其结构如下(各字段以小端模式编码): 字段 FieldIDFieldSize 类型

标签: #维生素 #cv #climate #词性 #开什么车 #critical #组织机构 #conclusion