股指期货业务基金-期货数据交换接口
(试行版)
中国证券业协会
二①一一年三月
I
目 次
编写说明................................................................................................................................................................1
股指期货业务基金-期货数据交换接口 ..............................................................................................................3
1 范围....................................................................................................................................................................3
2 规范性引用文件................................................................................................................................................3
3 术语和定义........................................................................................................................................................3
新订单 New Order-Single .........................................................................................................................3
执行报告 Execution Reports.........................................................................................................................3
交易客户方订单编号 ClOrdID .....................................................................................................................3
期货公司委托号 OrderID.............................................................................................................................3
执行编号 ExecID ..........................................................................................................................................3
报单号 DeclarationID....................................................................................................................................3
撮合编号 TradeID.........................................................................................................................................3
客户资金帐号 ClientID.................................................................................................................................3
客户交易编码 Account .................................................................................................................................3
4 通讯方式............................................................................................................................................................4
5 消息格式............................................................................................................................................................4
数据类型.........................................................................................................................................................4
整数 int ........................................................................................................................................................4
浮点数 float .................................................................................................................................................4
单个字符 char..............................................................................................................................................4
字符串 String...............................................................................................................................................4
数据 data......................................................................................................................................................5
域.....................................................................................................................................................................5
域的使用......................................................................................................................................................5
自定义域......................................................................................................................................................5
域汉字编码..................................................................................................................................................5
域界定..........................................................................................................................................................5
语法..............................................................................................................................................................5
重复组..........................................................................................................................................................6
6 安全与加密........................................................................................................................................................6
7 数据完整性........................................................................................................................................................6
8 扩展方式............................................................................................................................................................6
扩展分类.........................................................................................................................................................6
扩展规则.........................................................................................................................................................6
版本管理.........................................................................................................................................................7
9 消息定义............................................................................................................................................................7
消息头.............................................................................................................................................................7
消息尾.............................................................................................................................................................8
应用消息.........................................................................................................................................................8
客户登录管理类..........................................................................................................................................8
订单业务类................................................................................................................................................10
查询业务类................................................................................................................................................14
行情类........................................................................................................................................................23
II
交易辅助类................................................................................................................................................25
10 数据字典........................................................................................................................................................27
11 结算数据文件格式........................................................................................................................................48
客户基本资金数据文件.............................................................................................................................48
客户出入金记录文件.................................................................................................................................49
成交明细文件.............................................................................................................................................49
持仓数据文件.............................................................................................................................................50
平仓明细文件.............................................................................................................................................51
持仓明细文件.............................................................................................................................................51
交割明细文件.............................................................................................................................................52
附 录 A FIX 会话缺口填补方式 ..................................................................................................................54
(资料性附录)..................................................................................................................................................54
附 录 B FIX 会话连接场景 ..........................................................................................................................55
(资料性附录)..................................................................................................................................................55
FIX 会话登录 ...............................................................................................................................................55
注销 ..............................................................................................................................................................56
重发 ..............................................................................................................................................................56
重发请求 ......................................................................................................................................................57
心跳和测试请求 ..........................................................................................................................................58
附 录 C 应用场景 .........................................................................................................................................60
新订单场景图 ..............................................................................................................................................60
撤单场景图 ..................................................................................................................................................60
附 录 D 计算校验和.....................................................................................................................................62
(资料性附录)..................................................................................................................................................62
附 录 E FIX 会话...........................................................................................................................................62
FIX 会话........................................................................................................................................................62
消息序号 .................................................................................................................................................62
心跳 .........................................................................................................................................................62
缺口填补 .................................................................................................................................................62
消息重复发送 .........................................................................................................................................62
消息重新发送 .........................................................................................................................................62
消息确认 .................................................................................................................................................63
连接 ..............................................................................................................................................................63
登录 ...........................................................................................................................................................63
连接 ........................................................................................................................................................63
认证 ........................................................................................................................................................63
初始化 ....................................................................................................................................................63
消息交换 .................................................................................................................................................63
注销 .........................................................................................................................................................63
消息恢复 .................................................................................................................................................64
FIX 会话消息................................................................................................................................................65
心跳消息(MsgType=0) .....................................................................................................................65
登录消息(MsgType=A).....................................................................................................................66
测试请求消息(MsgType=1) .............................................................................................................66
重发请求消息(MsgType=2) .............................................................................................................67
III
会话拒绝消息(MsgType=3) .............................................................................................................67
序号重设消息(MsgType=4) .............................................................................................................68
注销消息(MsgType=5) .....................................................................................................................70
1
编写说明
根据中国证监会关于基金公司参与股指期货业务的有关规定,应基金公司会员要求,中国证券业协
会组织编写了《股指期货业务基金-期货数据交换接口》(以下简称《接口》),现将接口编写情况及主要
内容说明如下:
一、编写目的
制订本接口主要目的是规范基金管理公司、期货公司、商业银行资产托管部门等机构在股指期货业
务中交易、结算数据交换接口格式,提高各方数据交换的一致性、开放性和可扩展性,保障基金管理公
司安全稳定的开展股指期货业务。接口实施后将有利于基金管理公司、期货公司减小系统开发的复杂性,
避免开发和维护多套数据接口,降低系统互联风险和成本。也有利于证券期货业的信息系统技术接口的
开放,为行业营造更加公开、透明的市场环境。
二、编写原则
本《接口》的编制遵循以下原则:
1、与国际金融标准及国内行业标准保持一致。本接口参照了广泛应用于国际证券期货业的金融信
息交换协议(FIX),采用 FIX 消息格式,在基本应用消息上与 FIX 保持一致,并针对我国股指期货业
务进行了扩展,因此能够与境外 FIX 系统实现对接。同时,本接口也参照了即将应用于国内证券市场
的证券数据交换协议(STEP)。股指期货市场与证券市场参照同样的基础协议有利于各类投资系统的对
接。
2、充分利用现有的数据接口格式。本接口中交易数据、结算数据接口格式均在深圳证券通信公司、
期货保证金监控中心公司、上期技术公司、金仕达公司、恒生公司等机构已开发实施的数据格式基础上
进行扩展,不仅有利于兼容市场各参与方现有系统,而且有利于本接口的推广。
3、便于及时扩展和更新。由于股指期货业务在国内刚刚起步,为了使《接口》能及时满足各参与
方股指期货业务长期发展的需要,能够方便、灵活地实现各种消息扩展,本接口预留了多项扩展内容,
便于今后业务发展需要。
三、编写过程
本接口由深圳证券通信公司执笔,基金管理公司、期货公司、托管银行、期货保证金监控中心以及
相关单位专家共同参与编写。经过接口的论证选择、起草编写、征求意见、反复修改、不断完善等多个
阶段,反复多次听取监管部门、交易所、基金管理公司、期货公司、商业银行等单位的意见,并与相关
技术开发商沟通,各有关方面分别对接口提出了许多宝贵的意见和建议,最终形成了接口试用版,推荐
行业使用。
四、主要内容
本接口对股指期货业务中基金与期货间的交易及结算数据接口进行了约定,共 11 章,主要包含交
易接口和结算接口两部分。
交易接口规定了应用环境、消息格式、安全与加密、数据完整性、扩展方式、消息定义、数据字典
等内容,定义了 6 个客户登录管理类消息、5 个订单业务类消息、19 个查询业务类消息、4 个行情类消
息以及 4 个交易辅助类消息等共 38 个应用消息格式,并对 201 个数据域进行了描述,其中,自定义消
息 33 个,包括客户登录、修改密码、资金及持仓查询、行情订阅等消息,自定义数据域 100 个,包括
2
风险度、投机套保标志等。
结算数据接口定义了客户基本资金数据文件、客户出入金记录文件、成交明细文件、持仓数据文件、
平仓明细文件、持仓明细文件和交割明细文件等 7 类文件格式。
五、维护机制
接口由中国证券业协会牵头组织制订和完善。当接口需要变更时,由提出单位向协会反映,协会出
面组织接口起草小组成员单位进行讨论,并视讨论结果组织修订。由于接口结算数据接口引用了中国期
货保证金监控中心公司发布的《期货保证金安全存管系统对交易结算会员和非结算会员报送数据的要
求》,接口将随着《期货保证金安全存管系统对交易结算会员和非结算会员报送数据的要求》的变更同
步变更。
本接口试用完善后,中国证券业协会将按照行业标准的报批流程,适时提请全国金融标准化技术委
员会证券分技术委员会进行行业标准的审核发布。
3
股指期货业务基金-期货数据交换接口
1 范围
本接口规定了基金公司参与股指期货业务时,基金公司、托管银行与期货公司之间的交易和结算数
据交换接口,其中交易接口规定了应用环境、消息格式、安全与加密、数据完整性、扩展方式、消息定
义、数据字典等内容,结算接口采用文件格式,约定了客户基本资金数据文件、出入金记录文件、成交
明细文件、持仓数据文件、平仓明细文件、持仓明细文件及交割明细文件等 7 类文件格式。
本接口适用于基金公司参与股指期货业务中,期货公司与基金公司、托管银行等相关金融机构间的
交易及结算数据交换。
2 规范性引用文件
下列文件中的条款通过本接口的引用而成为本接口的条款。凡是注日期的引用文件,其随后所有的
修改单(不包括勘误的内容)或修订版均不适用于本接口,然而,鼓励根据本接口达成协议的各方研究
是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新版本适用于本接口。
GB/T 23696-2009 证券和相关金融工具 交易所和市场识别码。
GB/T 2659-2000 世界各国和地区名称代码。
GB/T 12406-2008 货币和资金的代码。
3 术语和定义
下列术语和定义适用于本接口。
新订单 New Order-Single
交易客户方新产生的订单。
执行报告 Execution Reports
交易服务方响应交易客户方的消息,主要用于:订单确认、订单状态变化确认(如撤单确认)、发
送订单的成交回报、订单拒绝。
交易客户方订单编号 ClOrdID
由交易客户方赋予的订单编号,在订单有效交易日内应保证唯一。
期货公司委托号 OrderID
期货公司委托号,同一个交易日内必需保证唯一。
执行编号 ExecID
期货公司分配的执行编号,在订单有效交易日内应保证唯一,主要用于对应具体执行报告消息。在
订单状态应答中,取值为“0”。
报单号 DeclarationID
交易所分配的报单号。
撮合编号 TradeID
交易所分配的撮合编号。
客户资金帐号 ClientID
客户在期货公司开设的资金帐号。
客户交易编码 Account
4
交易所为客户分配的交易编码。
4 通讯方式
交易双方可自定选择通讯方式。 FIX会话层消息请参照附录E。
5 消息格式
数据类型
数据类型用于定义数据域的取值类型,本接口由几个基本的数据类型(整数、浮点数、单字符、字
符串、二进制数据块)和在此基础上扩展的数据类型组成。除“data”数据类型外,其他数据类型均以 ASCII
码字符串表示。
整数 int
无逗号和小数位的序号,可表示正负(ASCII 码字符‘-’,‘0’至‘9’组成)。符号占据一个字符位置。允
许前置字符零(例:“00023”=“23”)。
整数类型的扩展定义:
长度 Length:以整数表示字节为单位的数据长度,正数。
重复数 NumInGroup:以整数表示重复组的个数,正数。
消息序号 SeqNum:以整数表示消息序号,正数。
域号 TagNum:以整数表示的域号(或称 Tag),正数,首位不能为零。
月日期号 day-of-month:以整数表示的月份中第几天,取值 1 至 31。
浮点数 float
含有可选的小数部分,可表示正负(ASCII 码字符‘-’,‘0’至‘9’和‘.’组成)。最多 15 位有
效数字。允许前置字符零(例:“00023”=“23”)。允许小数部分后置字符零(例:“”=“”=
“23”)。
浮点数类型的扩展定义:
除非特别声明,浮点数类型均有正负。
量 Qty:委托数量等,可以有小数部分。
价格 Price:小数位数可变。
价格偏移量 PriceOffset:代表价格偏移量的浮点域。
金额 Amt:典型的价格与数量相乘结果,如成交金额。
百分比 Percentage:小数表示方法:.05 代表 5%。
number(m,n)(用于结算文件中):m 表示所有有效数字的最长位数(不含小数点和正负号),小数
位数为 n。
单个字符 char
指除界定符外所有字母字符和标点字符,区分字母大小写。
字符类型的扩展定义:
布尔 Boolean:该域取值于两个字符,(’Y’=True/Yes,’N’=False/No)
字符串 String
区分字母大小写。
字符串类型的扩展定义:
多元值字符串 MultipleValueString:用空格分隔。
国家 Country:参见 GB/T 2659-2000。
字符串货币类型 Currency::参见 GB/T 12406-2008。
交易所或市场编号 Exchange:字符串,参见 GB/T 23696-2009。
5
字符串 char(n)(用于结算文件中):表示长度不超过 n 个字节的字符串。
年月日期 month-year,格式:
YYYYMM 或 YYYYMMDD 或 YYYYMMWW,
YYYY = 0000-9999, MM = 01-12,DD = 01-31,WW = w1,w2,w3,w4,w5。
年月日期 date(用于结算文件中),格式:
YYYY-MM-DD
国际标准时时间戳 UTCTimestamp,格式:
YYYYMMDD-HH:MM:SS(秒)或
YYYYMMDD-HH:MM:(毫秒),
YYYY = 0000-9999, MM = 01-12, DD = 01-31, HH = 00-23, MM = 00-59, SS = 00-60 ( 秒) ,
sss=000-999 (毫秒)。
国际标准时时间 UTCTimeOnly 或者 time(用于结算文件中),格式:
HH:MM:SS 或 HH:MM:,
HH = 00-23, MM = 00-59, SS = 00-60 (秒),sss=000-999 (毫秒)。
国际标准时日期 UTCDate,格式:
YYYYMMDD,YYYY = 0000-9999, MM = 01-12, DD = 01-31。
本地市场日期 LocalMktDate,格式:
YYYYMMDD,YYYY = 0000-9999, MM = 01-12, DD = 01-31。
数据 data
无格式和内容限制的原始数据,包含长度域和数据域两个部分,数据域数据可以包含数值 0x01,
长度域指明数据域的字节数。
域
域是基本的数据元素,每个域有其域号、业务含义和确定的取值范围,域号统一分配给不同的域,
是域的区分标志,在消息中,通过域号来确定不同的域。域的数据类型决定了其取值类型,域的取值范
围可以是一个集合,任何在此集合外的取值被认为是非法取值。数据字典部分详细定义了所有域的业务
定义、数据类型和取值范围。
域的使用
在消息中,域的使用有三种方式:必须的,可选的,条件限制选择(即根据其他相关域的存在与否
或取值来决定)。作为一个完整的消息,必须域和条件限制选择域是需要包含的。
自定义域
如本接口中定义的域不够使用时,市场参与者可以扩展定义新的域,即自定义域。
域汉字编码
域取值为汉字时需要使用统一的 GBK 汉字编码标准。
域界定
消息中所有的域(包含 data 类型数据域)都有一个分隔符来界定分隔,该分隔符就是不可打印字
符 ASCII 码 “SOH”(#001 , hex : 0x01 , 本 文 档 中 以 <SOH> 表 示 ) 。 因 此 , 所 有 消 息 以
“8=<SOH>”字符串开始并以“10=nnn<SOH>”字符串结束。
除 data 数据类型域外,其他数据域内容都不应包含域界定符<SOH>。
语法
任何消息都严格由多个“域号=值”的基本结构组成,“域号=值”基本结构用域界定符<SOH>分隔。消
息组成结构如图1:
图1:消息格式
消息由消息头、消息的正文和消息尾组成。同样,每个组成部分都由一系列“域号=值”组成,并且
6
在遵循以下规则前提下“域号=值”基本结构可以是任意的次序:
a) 开始部分应是消息头,随后是正文,最后是消息尾;
b) 消息头的前 3 个域的次序不能改变:起始串(Tag =8)、消息体长度(Tag =9)、消息类型(Tag
=35);
c) 消息尾的最后一个域应是校验和域(Tag =10);
d) 重复组中,域出现的顺序应遵循该重复组在消息或组件中定义时的次序;
e) 在一条消息中,除重复组域外任何其他域不能重复出现。
重复组
域可以在重复组里多次重复,用以传输数组类的数据。通常域名起始为’No’字符的域指明重复的次
数,并位于重复组的开始处。本文档中重复组的定义通过缩进的①符号表示,重复组也可嵌套。使用子
重复组时不能省略父重复组。
6 安全与加密
由于消息有可能在公网或不安全的网络上传输交换,因此需要对相关的敏感数据加密处理。
具体加密的方法由连接双方达成的协议而定。
消息内除某些需要公开识别的域以明文传输外其他任何域都可以加密放置密文数据域(SecureData)
内。当然,这些被加密的域也可以同时保留明文的表示方式。
当决定使用加密方案时,可以对消息正文内所有的域加密。如果消息的重复组内有部分需要加密的,
那么要求对整个重复组加密。
本协议还提供的一些域用以支持数字签名、密钥交换和正文加密等安全技术。
正文加密方案有三种:
a) 将安全敏感的域加密后移至 SecureData 域。
b) 将所有允许加密的域加密后移至 SecureData 域。
c) 将所有允许加密的域加密后移至 SecureData 域,同时这些域以明文在消息中重复出现。
7 数据完整性
数据的完整性通过两个方法保证:消息体长度和校验和的验证。
消息体长度是以 BodyLength 域来表示,其值是计算出的消息长度域后面的字符数,包含紧靠校验
和域标志‘10=’之前的界定符 SOH。
校验和是把每个字符的二进制值从消息开头‘8=’中的‘8’开始相加,一直加到紧靠在校验和域‘10=’
之前的域界定符,然后取按 256 取模得到的结果。
校验和域位于消息的最末一个,校验和的计算是在加密之后进行的。计算校验和的代码段可参考附
录 D 计算校验和。
8 扩展方式
扩展分类
扩展分为两个部分:消息定义扩展和域定义扩展。
消息定义扩展可以通过新增消息类型来实现,但尽量在已有消息中通过域定义或取值扩展来定义新
业务。已有消息所代表的业务在扩展时不能改变。
域定义扩展可以通过新增域来实现,但尽量通过扩展域值来扩展域的定义。消息中已定义的必须的
域不能取消定义,也不能改变成可选域。
扩展规则
7
自定义消息的消息类型值首字符为‘UF’。其他类型的消息由全国金融标准化技术委员会根据国际相
关标准的变化统一定义并发布。对于尚未发布的扩展消息,将以参考文件《股指期货业务基金期货间数
据交换接口_扩充消息参考指引》的形式发布。
消息的模块顺序在扩展定义时不能改变,即保持消息头、消息体和消息尾的顺序。而模块的内部,
域和重复组的顺序是可以变化的。
消息头的头三个域的定义和位置不能改变,但可以扩展增加消息头的可选域。
消息尾最后一个域的定义和位置不能改变,但可以扩展增加消息尾的可选域。
版本管理
本协议的版本管理权属于中国证券业协会。
版本号格式为 ,版本号从 起始,当新版本完全兼容上一版本时只改变版本号中的 Z。
本协议当前版本的版本号为 。
9 消息定义
消息头
每一个会话或应用消息有一个消息头,该消息头指明消息类型、消息体长度、发送目的地、消息序
号、发送起始点和发送时间。
其中有两个域用于消息重发。使用 FIX 会话时对于会话级的事件而重复发送消息时将可能重复发
送标志(PossDupFlag)设置为 Y(发送时用原来的消息序号)。当重新发送时使用新的消息序号时将可能
重新发送标志(PossResend)设置为 Y,接受者应按以下方法处理上述消息:
可能重复发送:如果带有该消息序号的消息在以前曾经接受过,则忽略消息,如果未曾收到过,
则按正常步骤处理。(支持 FIX 会话层需要)
可能重新发送:将消息传递给应用层以确定此前是否收到该消息(通过检查订单编号或相关参
数)。
消息头格式见表 1:
表 1 消息头
Ta
g
域名 必需 说明
8 BeginString Y 起始串,取值:(不可加密,消息的第一个域)
9 BodyLength Y 消息体长度(不可加密,消息的第二个域)
35 MsgType Y 消息类型(不可加密,消息的第三个域)
49 SenderCompID Y 发送方代码(不可加密,发送方标识符)
56 TargetCompID Y 接收方代码(不可加密,接收方标识符)
115 OnBehalfOfCompID N 最初发送方标识符(可加密),用于经第三方发送。
128 DeliverToCompID N 最终接收方标识符(可加密),用于经第三方发送。
90 SecureDataLen N 密文数据长度
91 SecureData N 密文数据(紧跟密文数据长度域)
34 MsgSeqNum Y 消息序号(可加密),如果交易双方不采用 FIX 会话
机制,可将该 tag 置为一个固定的值,例如 0。
50 SenderSubID N 发送方子标识符(可加密)
142 SenderLocationID N 发送方方位标识符(可加密)
57 TargetSubID N 接收方子标识符(可加密)
143 TargetLocationID N 接收方方位标识符(可加密)
116 OnBehalfOfSubID N 最初发送方子标识符(可加密)
8
144 OnBehalfOfLocationID N 最初发送方方位标识符(可加密)
129 DeliverToSubID N 最终接收方子标识符(可加密)
145 DeliverToLocationID N 最终接收方方位标识符(可加密)
43 PossDupFlag N 可能重复标志,重复发送时,作此标记。(可加密)
97 PossResend N 可能重发标志。(可加密)
52 SendingTime Y 发送时间(可加密)
122 OrigSendingTime N 原始发送时间(可加密)
347 MessageEncoding N 消息中 Encoded 域的字符编码类型(非 ASCII 码)
369 LastMsgSeqNumProcesse
d
N 最后处理消息序号(可加密)
370 OnBehalfOfSendingTime N 最初发送时间(用 UTC 表示时间)
消息尾
每一个消息(会话或应用消息)有一个消息尾,并以此终止。消息尾可用于分隔多个消息,包含
有 3 位数的校验和值。
消息尾格式见表 2:
表 2 消息尾
Tag 域名 必需 说明
93 SignatureLength N 数字签名长度(不可加密)
89 Signature N 数字签名(不可加密)
10 CheckSum Y 校验和,消息的最末域。(不可加密)
应用消息
客户登录管理类
客户登录类消息主要是支持客户登录、登出和其他客户管理的等消息。交易双方可根据自身业务需
要选择是否支持登录、登出等交易。
客户登录请求(MsgType=UF001)
在会话层连接建立以后,客户请求登录期货公司的系统。
客户登录请求(User Logon Request)的格式见表 3:
表 3 客户登录请求(User Logon Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF001
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
98 EncryptMethod Y 加密方法(不可加密)
8001 LogonPasswd Y 交易密码
95 RawDataLength N 无格式数据长度,用于认证
96 RawData N 无格式数据,用于认证(可用于表示密钥)
8096 MacNetInfo N 客户方机器网络信息
8103 ClientSoftName N 客户方的软件客户端名称
8104 ClientSoftVersion N 客户方的软件客户端版本
标准消息尾 Y
客户登录应答(MsgType=UF002)
客户请求登录期货公司的系统后,期货公司返回的应答。
客户登录应答(User Logon Response)的格式见表 4:
9
表 4 客户登录应答(User Logon Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF002
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8002 LogonStatus Y 登录状态
8003 AccountName N 客户名称
8004 RiskLevel N 客户风险度
8005 AdditionalMargin N 追加保证金
8006 ClientSecuType N 客户安全类别
8011 Riskratio N 客户风险率
8007 LastLogonIP N 上次登录 IP
8008 LastLogonTime N 上次登录日期和时间
58 Text N
标准消息尾 Y
客户登出请求(MsgType=UF003)
在业务时间结束以后,客户请求登出期货公司的系统。
客户登出请求(User Logout Request)的格式见表 5:
表 5 客户登出请求(User Logout Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF003
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
标准消息尾 Y
客户登出应答(MsgType=UF004)
期货公司对客户请求登出系统的应答。
客户登出应答(User Logout Response)的格式见表 6:
表 6 客户登出应答(User Logout Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF004
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8002 LogonStatus Y 登录状态
58 Text N
标准消息尾 Y
客户修改密码请求(MsgType=UF005)
客户请求修改密码。
客户修改密码请求(User Change PassWd Request)的格式见表 7:
表 7 客户修改密码请求(User Change PassWd Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF005
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
10
8089 PassWdType Y 密码类型
8090 OldPassWd Y 客户旧的密码
8091 NewPassWd Y 客户新的密码
58 Text N
标准消息尾 Y
客户修改密码应答(MsgType=UF006)
期货公司对客户请求修改密码的应答。
客户修改密码应答(User Change PassWd Response)的格式见表 8:
表 8 客户修改密码应答(User Change PassWd Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF006
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8070 ChangePWResult Y 修改密码结果
58 Text N
标准消息尾 Y
订单业务类
订单业务类消息主要是支持日常实时交易消息。
新订单消息(MsgType=D)
对于在消息头中设置了 PossResend 标志的订单消息,应当使用交易客户方订单编号(ClOrdID)核
实是否已收到该订单,具体实现时还应检查订单参数(买卖方向、证券代码、数量等)进行核实。如果
之前收到该订单,应以执行报告消息回应订单状态。如果之前未收到,则以执行报告消息回应订单确认。
TransactTime 域指示订单发起时间,可结合业务规则来判断收到的订单是否已过期。
新订单消息(New Order-Single)的格式见表 9:
表 9 新订单(New Order-Single)
Tag 域名 必需 说明
标准消息头 Y MsgType=D
11 ClOrdID Y 交易客户方订单编号,在订单有效交易日内必需
唯一
109 ClientID Y 客户资金帐号
1 Account Y 客户交易编码
110 MinQty N 最小成交量。
55 Symbol Y 期货合约代码
167 SecurityType N FUT = 期货
200 MaturityMonthYear N 用于指定期货到期的年和月
205 MaturityDay N 用 于 期 货 的 到 期 日 期 , 并 被 与 到 期 年 月
(MaturityMonthYear)联合使用
207 SecurityExchange Y 用于指定交易所
77 OpenClose Y 指明开仓,平仓
8009 HedgeFlag Y 投机套保标志
8010 TouchCondition N 触发条件
54 Side Y 买卖方向
38 OrderQty N 委托手数
11
60 TransactTime Y 订单发起时间
40 OrdType Y 订单类型
44 Price N 价格(限价订单时有效)
423 PriceType N 价格类型
99 StopPx N 停止价
15 Currency N 币种
59 TimeInForce N 新订单生效时间,默认为当日有效
168 EffectiveTime N 用于指定定单有效的时间
432 ExpireDate N 有条件地用于在生效时间(TimeInForce)=在某
日 前 有 效 ( GTD ), 而 没 有 指 定 截 止 时 间
(ExpireTime)的情况之下
126 ExpireTime N 有条件地用于生效时间(TimeInForce) = 在某
日前有效(GTD)和到期日没有被指定的情况之
下
8096 MacNetInfo N 委托方的机器网络信息
58 Text N
标准消息尾 Y
执行报告消息(MsgType=8)
执行报告消息可用于:
a) 订单确认
b) 订单状态变化确认(如撤单确认)
c) 发送订单的成交回报
d) 订单拒绝
每个执行报告中都包含两个域:OrdStatus,订单状态;ExecType,执行类型。
OrdStatus 用以报告订单当前状态。
ExecType 域用以标识执行报告的执行类型。执行报告中 ExecType 和 OrdStatus 共同指示了订单状
态的改变。
执行信息(如已成交或部分成交)与其它状态变化信息(如待撤消、已撤消、已接受、当天完成)
不能在一个执行报告中同时传递。
撤单在订单有剩余数量时才有效。
一般性公式为:订单手数 OrderQty = 累计执行数量 CumQty + 订单剩余数量 LeavesQty
公式的例外情况:如果 ExecType 和/或 OrdStatus 为已撤消、当天完成、已过期、已计算、已拒绝,
则订单不处于活跃状态,LeavesQty 为 0。
ClOrdID 提供给交易客户方进行订单标识,在其内部系统中唯一。域 OrderID 则是由期货公司生成
的委托号。在撤单中,ClOrdID/OrigClOrdID 需要形成链接。
支持强平推送消息,并置 OpenClose 为”Q”。
对于不支持返回成交平均价的柜台,可将成交平均价置为 0.
执行报告消息(Execution Report)的格式见表 10:
表 10 执行报告消息(Execution Report)
Tag 域名 必需 说明
标准消息头 Y MsgType=8
37 OrderID Y 期货公司委托号,同个交易日必需保证唯一
11 ClOrdID N 交易客户方订单编号。如果是强平回报,则该值
取值为以”NONE”开头的当天交易日唯一的字符
12
串标识
41 OrigClOrdID N 原始交易客户方订单编号,指示被撤消订单的
ClOrdID
17 ExecID Y 期货公司的执行编号,在订单有效交易日内应保
证唯一
150 ExecType Y 执行类型
39 OrdStatus Y 订单状态
103 OrdRejReason N 订单拒绝时需要
109 ClientID Y 客户资金帐号
1 Account Y 客户交易编码
55 Symbol Y 期货合约代码
167 SecurityType N FUT=期货
200 MaturityMonthYear N 到期年月
205 MaturityDay N 到期日期
207 SecurityExchange Y 用于指定交易所
77 OpenClose N 指明开仓,平仓
54 Side Y 买卖方向
38 OrderQty Y 委托手数
40 OrdType N 订单类型
44 Price N 订单价格
99 StopPx N 停止价
59 TimeInForce N 新订单生效时间,默认为当日有效
15 Currency N 币种
32 LastShares N 上一成交数(最近一笔成交数量)
31 LastPx N 上一成交价(最近一笔成交价格)
30 LastMkt N 上一成交市场
151 LeavesQty Y 订单剩余数量
14 CumQty Y 成交总数
6 AvgPx Y 成交平均价
60 TransactTime N 执行报告时间
381 GrossTradeAmt N 成交总金额
110 MinQty N 最小成交量
8500 OrderEntryTime N 订单申报时间
8093 DeclarationID N 报单号
8094 TradeID N 撮合编号
标准消息尾 Y
订单状态请求消息(MsgType=H)
订单状态请求用于向交易服务方请求某订单的状态,交易服务方通过执行报告消息返回订单状态。
订单状态请求消息的格式见表 11:
表 11 订单状态请求消息(Order Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=H
37 OrderID Y 期货公司委托号,同个交易日必需保证唯一
13
11 ClOrdID Y 交易客户方订单编号
109 ClientID Y 客户资金帐号
1 Account Y 客户交易编码
55 Symbol Y 期货合约代码
207 SecurityExchange Y 用于指定交易所
167 SecurityType N FUT=期货
200 MaturityMonthYear N 用于指定期货到期的年和月
205 MaturityDay N 用 于 期 货 的 到 期 日 期 , 并 被 与 到 期 年 月
(MaturityMonthYear)联合使用
54 Side Y 买卖方向
标准消息尾 Y
撤单消息(MsgType=F)
撤单消息用以撤消订单的全部订单剩余数量。
撤单消息仅在订单能成功撤回,没有产生成交或者部分成交的情况下被接受。
撤单消息也被赋予一个 ClOrdID,可视作另外一个订单。如果被拒绝,撤单拒绝消息的 ClOrdID 放
置撤单消息的 ClOrdID,而原始订单的 ClOrdID 则放入 OrigClOrdID 域。ClOrdID 要保证唯一。
撤单消息需要立即回应。除非撤单能立刻被处理或拒绝,否则应先发送一个待撤消的执行报告。
撤单消息(Order Cancel Request)的格式见表 12:
表 12 撤单消息(Order Cancel Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=F
41 OrigClOrdID Y 原始交易客户方订单编号,指示被撤消订单的
ClOrdID
37 OrderID Y 期货公司委托号,同个交易日必需保证唯一
11 ClOrdID Y 交易客户方订单编号
109 ClientID Y 客户资金帐号
1 Account Y 客户交易编码
55 Symbol Y 期货合约代码。
167 SecurityType N 证券代码源
200 MaturityMonthYear N FUT=期货
205 MaturityDay N 期货到期年月
207 SecurityExchange Y 期货到期日期
54 Side Y 买卖方向
60 TransactTime Y 订单发起时间
40 OrdType Y 订单类型
38 OrderQty Y 委托手数
8093 DeclarationID N 报单号
58 Text N
标准消息尾 Y
撤单拒绝消息(MsgType=9)
本消息用于撤单消息的拒绝。
交易服务方接收到撤单发现无法执行(已成交订单不可更改等),将发送撤单拒绝。
拒绝撤单时,撤单拒绝消息应用 ClOrdID 指示撤单的 ClOrdID,用 OrigClOrdID 指示之前最后接受
的订单(除非拒绝原因是“未知订单”)。
14
撤单拒绝消息(Order Cancel Reject)的格式见表 13:
表 13 撤单拒绝消息(Order Cancel Reject)
Tag 域名 必需 说明
标准消息头 Y MsgType=9
37 OrderID Y 期货公司委托号,同个交易日必需保证唯一
11 ClOrdID Y 交易客户方订单编号
41 OrigClOrdID Y 原始交易客户方订单编号,指示被撤消订单的
ClOrdID
39 OrdStatus Y 订单状态
109 ClientID Y 客户资金帐号
1 Account Y 客户交易编码
60 TransactTime N 订单发起时间
434 CxlRejResponseTo N 撤单拒绝回应类型
102 CxlRejReason N 撤单拒绝原因
58 Text N
标准消息尾 Y
查询业务类
查询业务类消息主要支持查询相关消息。
查询当前持仓请求(MsgType=UF007)
客户请求查询其当前持仓情况。
客户可以请求查询其当前在所有交易所的持仓情况;可请求查询当前特定交易所的所有持仓情况;
可请求查询当前其在特定交易所的所有持仓情况;可请求查询当前某种合约的持仓情况。
查询当前持仓请求消息(Present Position Status Request)的格式见表 14:
表 14 查询持仓请求(Present Position Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF007
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
55 Symbol N 期货合约代码
207 SecurityExchange N 用于指定交易所
54 Side N 用于指定持仓的买卖方向
标准消息尾 Y
查询当前/历史持仓应答(MsgType=UF008)
客户请求查询其当前/历史持仓情况应答。也可作为请求当前/历史持仓应答缺口的应答。
在交易期间,如果期货公司收到查询历史持仓请求,不需返回应答。
查询当前/历史持仓应答消息(Present/History Position Status Response)的格式见表 15:
表 15 查询当前/历史持仓应答(Present/History Position Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF008
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8026 TotalRetNum N 返回应答数量
8027 PresentRetNum N 当前返回应答序号
8095 NextFlag N 是否有后续包标识
15
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
55 Symbol Y 期货合约代码
207 SecurityExchange Y 用于指定交易所
8012 LatestPx N 最新价
54 Side Y 买卖方向
8009 HedgeFlag Y 投机套保标志
14 CumQty Y 总持仓量(成交总数)
8015 TdPosition Y 当日持仓
8016 YDPosition N 昨日持仓
8017 FrozenPosition N 冻结数量
8018 FrozenAmt N 冻结金额
8019 PositionDate N 持仓日期
6 AvgPx N 持仓成本(平均成交价)
12 Commission N 手续费
8021 PositionProfit N 持仓盈亏
8022 PositionPrice N 持仓均价
8075 OneLotQty N 每手数量
58 Text N
标准消息尾 Y
查询最大操作数量请求(MsgType=UF009)
客户请求查询其开仓和平仓的最大数量情况。
查询最大操作数量请求消息(Max Operation Position Status Request)的格式见表 16:
表 16 查询最大操作数量请求(Max Operation Position Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF009
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
55 Symbol Y 期货合约代码
207 SecurityExchange Y 用于指定交易所
77 OpenClose Y 指明开仓,平仓
54 Side Y 买卖方向
44 Price N 价格,查询开仓最大操作数量时必需
8009 HedgeFlag Y 投机套保标志
标准消息尾 Y
查询最大操作数量应答(MsgType=UF010)
客户请求查询其开仓和平仓的最大数量情况的应答。
查询最大操作数量应答消息(Max Operation Position Status Response)的格式见表 17:
表 17 查询最大操作数量应答(Max Operation Position Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF010
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
16
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
55 Symbol Y 期货合约代码
207 SecurityExchange Y 用于指定交易所
77 OpenClose Y 指明开仓,平仓
54 Side Y 买卖方向
8023 MaxOpenPosition N 最大开仓量,查询开仓时必需
8024 MaxClosePosition N 最大平仓量,查询平仓时必需。支持平昨和平今
的话该值为最大平昨仓量
8025 MaxCloseTdPosition N 最大平今仓量,查询平仓并且支持平昨和平今的
话该值必需
8009 HedgeFlag Y 投机套保标志
58 Text N
标准消息尾 Y
查询当前所有订单状态请求(MsgType=UF011)
客户请求查询其所有的订单状态。也可查询特定交易所的订单状态。
查询当前所有订单状态请求消息(Present All Orders Status Request)的格式见表 18:
表 18 查询当前所有订单状态请求(Present All Orders Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF011
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
207 SecurityExchange N 用于指定交易所
标准消息尾 Y
查询当前/历史所有订单状态应答(MsgType=UF012)
客户请求查询其当前/历史所有订单状态应答。也可作为客户请求重发当前/历史所有订单状态应答
缺口应答。
在交易期间,如果期货公司收到查询历史所有订单状态请求,不需返回应答。
查询当前/历史所有订单状态消息(Present/History All Orders Status Response)的格式见表 19:
表 19 查询当前/历史所有订单状态应答(Present/History All Orders Status Response)
17
查询结算结果请求(MsgType=UF013)
客户请求查询结算结果。
查询结算结果请求消息(Settlement Result Status Request)的格式见表 20:
表 20 查询结算结果请求(Settlement Result Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF013
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8028 SettlementDate Y 结算结果日期
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
查询结算结果应答(MsgType=UF014)
客户请求查询结算结果请求,期货公司返回的应答。也可以作为客户请求查询结算结果应答缺口
Tag 域名 必需 说明
标准消息头 Y MsgType=UF012
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8026 TotalRetNum N 返回应答数量
8027 PresentRetNum N 当前返回应答序号
8095 NextFlag N 是否有后续包标识
109 ClientID Y 客户资金帐号
1 Account Y 客户交易编码
55 Symbol Y 期货合约代码
207 SecurityExchange Y 用于指定交易所
11 ClOrdID Y 交易客户方订单编号
39 OrdStatus Y 订单状态
77 OpenClose Y 指明开仓,平仓
54 Side Y 买卖方向
38 OrderQty Y 委托手数
40 OrdType Y 订单类型
44 Price N 订单价格
99 StopPx N 停止价
59 TimeInForce N 新订单生效时间,默认为当日有效
15 Currency N 币种
151 LeavesQty Y 订单剩余数量
14 CumQty Y 成交总数
6 AvgPx Y 成交平均价
60 TransactTime N 执行报告时间
381 GrossTradeAmt N 成交总金额
110 MinQty N 最小成交量
8500 OrderEntryTime N 订单申报时间
标准消息尾 Y
18
的应答。
查询结算结果应答(Settlement Result Status Response)的格式见表 21:
表 21 查询结算结果应答(Settlement Result Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF014
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8028 SettlementDate Y 结算结果日期
8026 TotalRetNum N 返回应答数量
8027 PresentRetNum N 当前返回应答序号
8095 NextFlag N 是否有后续包标识
58 Text Y 结算结果内容
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
结算结果确认请求(MsgType=UF015)
客户请求结算结果确认。
结算结果确认请求消息(Settlement Result Comfirm Request)的格式见表 22:
表 22 结算结果确认请求(Settlement Result Comfirm Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF015
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8028 SettlementDate N 结算结果日期
8029 SettlementConfirm Y 结算结果确认
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
结算结果确认应答(MsgType=UF016)
客户请求查询结算结果确认,期货公司返回的应答。也可作为客户查询结算结果确认请求的应答。
查询结算确认应答(Settlement Result Comfirm Response)的格式见表 23:
表 23 查询结算结果应答(Settlement Result Comfirm Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF016
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8028 SettlementDate N 结算结果日期
8030 SettlementConfirmRe
sult
Y 结算结果确认结果
207 SecurityExchange Y 用于指定交易所
58 Text N
标准消息尾 Y
查询结算结果确认请求(MsgType=UF017)
客户请求查询结算结果确认。
查询结算结果确认请求消息(Settlement Result Comfirm Status Request)的格式见表 24:
表 24 查询结算结果确认请求(Settlement Result Comfirm Status Request)
Tag 域名 必需 说明
19
标准消息头 Y MsgType=UF017
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8028 SettlementDate N 结算结果日期
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
查询结算结果确认应答
客户请求查询结算结果确认结果,期货公司返回的应答。参考结算结果确认应答消息。
查询保证金率请求(MsgType=UF018)
客户请求查询保证金率。客户可查询某种品种的保证金率,也可以查询指定交割期的品种的保证金
率。
查询保证金率请求(Margin Rate Status Request)的格式见表 25:
表 25 查询保证金率请求(Margin Rate Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF018
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
8078 VarietyCode Y 品种代码
55 Symbol N 期货合约代码
200 MaturityMonthYear N 用于指定期货到期的年和月。
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
查询保证金率应答(MsgType=UF019)
客户请求查询保证金率后,期货公司返回的应答。
在盘中保证金率发生改变的话,期货公司可以主动推送该消息。
查询保证金率应答(Margin Rate Status Response)的格式见表 26:
表 26 查询保证金率应答(Margin Rate Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF019
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一。
如 果 期 货 公 司 主 动 推 送 保 证 金 率 时 , 取 值
为”NONE” 开头的当天交易日唯一的字符串标识
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
55 Symbol N 期货合约代码
200 MaturityMonthYear N 用于指定期货到期的年和月。
8031 SpecLongMarginRate Y 投机多头保证金率
8032 SpecShortMarginRate Y 投机空头保证金率
8033 HedgeLongMarginRa
te
Y 套保多头保证金率
8034 HedgeShortMarginRa
te
Y 套保空头保证金率
8035 SpecLongMarginAmt Y 投机多头保证金费
20
8036 SpecShortMarginAmt Y 投机空头保证金费
8037 HedgeLongMarginA
mt
Y 套保多头保证金费
8038 HedgeShortMarginA
mt
Y 套保空头保证金费
207 SecurityExchange Y 用于指定交易所
58 Text N
标准消息尾 Y
查询手续费率请求(MsgType=UF020)
客户请求查询手续费率。
查询手续费率请求(Commission Rate Status Request)的格式见表 27:
表 27 查询手续费率请求(Commission Rate Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF020
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8078 VarietyCode N 品种代码
55 Symbol N 期货合约代码
200 MaturityMonthYear N 用于指定期货到期的年和月。
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
查询手续费率应答(MsgType=UF021)
客户请求查询手续费率后,期货公司返回的应答。
查询手续费率应答(Commission Rate Status Response)的格式见表 28:
表 28 查询手续费率应答(Commission Rate Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF021
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8026 TotalRetNum N 返回应答数量
8027 PresentRetNum N 当前返回应答序号
8095 NextFlag N 是否有后续包标识
8078 VarietyCode N 品种代码
55 Symbol N 期货合约代码
200 MaturityMonthYear N 用于指定期货到期的年和月。
8039 OpenCommissionRat
e
Y 开仓手续费率
8040 OpenCommissionAmt Y 开仓手续费
8041 CloseCommissionRat
e
Y 平仓手续费率
8042 CloseCommissionAm
t
Y 平仓手续费
8043 CloseTdCommission
Rate
N 平今手续费率
21
8044 CloseTdCommission
Amt
N 平今手续费
8092 SettleFee N 交割手续费
207 SecurityExchange Y 用于指定交易所
58 Text N
标准消息尾 Y
查询客户资金状况请求(MsgType=UF022)
客户请求查询其资金状况。
查询客户资金状况请求(Customer Capital Status Request)的格式见表 29:
表 29 查询客户资金状况请求(Customer Capital Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF022
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
15 Currency N 币种
标准消息尾 Y
查询客户资金状况应答(MsgType=UF023)
客户请求查询资金状况后,期货公司返回的应答。期货公司可主动推送该消息用于向客户追缴保证
金。
查询客户资金状况应答(Customer Capital Status Response)的格式见表 30:
表 30 查询客户资金状况应答(Customer Capital Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF023
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一。
如果是追缴保证金,则该值取值为以”NONE”开
头的当天交易日唯一的字符串标识
109 ClientID Y 客户资金帐号
8045 BuyMarginAmt Y 买保证金
8046 SellMarginAmt Y 卖保证金
8047 SupplementalMargin
Amt
Y 追加保证金
8048 OccupyMarginAmt Y 占用保证金
8049 TotalMarginAmt Y 总保证金
8014 TotalExMarginAmt N 总交易所保证金
8081 YesterdayStlAmt Y 上日存结
8082 BuyFrozenAmt Y 买入冻结金额
8083 SellFrozenAmt Y 卖出冻结金额
8020 FrozenCommision N 冻结手续费
8074 TotalFrozenAmt N 总冻结金额
8084 UseableAmt Y 可用资金
8098 FetchAmt N 可取资金
12 Commission N 手续费
22
8085 FloatProfit N 浮动盈亏
8086 CloseProfit N 平仓盈亏
8087 DayFolatProfit N 当日出入金额
8099 DayPaymentAmt N 当日出金金额
8100 DayIncomeAmt N 当日入金金额
8004 RiskLevel Y 客户风险度
8006 ClientSecuType Y 客户安全类别
8011 Riskratio Y 客户风险率
15 Currency N 币种
58 Text N
标准消息尾 Y
查询合约请求(MsgType= UF024)
客户请求查询合约。可查询所有合约或者具体的合约。
查询合约请求消息(Agreement Status Request)的格式见表 31:
表 31 查询合约请求(Agreement Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType= UF024
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
55 Symbol N 期货合约代码
207 SecurityExchange N 用于指定交易所
标准消息尾 Y
查询合约应答(MsgType= UF025)
客户请求查询合约应答。
查询合约应答消息(Agreement Status Response)的格式见表 32:
表 32 查询合约应答(Agreement Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType= UF025
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8026 TotalRetNum N 返回应答数量
8027 PresentRetNum N 当前返回应答序号
8095 NextFlag N 是否有后续包标识
207 SecurityExchange Y 用于指定交易所
8073 ExchangeName N 交易所名称
55 Symbol Y 期货合约代码
65 SymbolSfx N 合约名称
8075 OneLotQty Y 每手数量
200 MaturityMonthYear N 用于指定期货到期的年和月。
8076 MaxLotQty Y 最大手数
8077 MaxHoldPosition Y 最大持仓
8078 VarietyCode Y 品种代码
8079 VarietyName Y 品种名称
8080 MinPxAlterUnit Y 最小价格变动单位
58 Text N
23
标准消息尾 Y
查询历史持仓请求(MsgType=UF026)
客户请求查询其历史持仓情况。
客户可以请求查询其历史在所有交易所的持仓情况;可请求查询历史特定交易所的所有持仓情况;
可请求查询历史其在特定交易所的所有持仓情况;可请求查询历史某种合约的持仓情况。在交易时间内,
禁止发起该交易,即使期货公司收到该消息,也不需返回应答消息。
查询历史持仓请求消息(History Position Status Request)的格式见表 33:
表 33 查询历史持仓请求(History Position Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF026
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
55 Symbol N 期货合约代码
207 SecurityExchange N 用于指定交易所
54 Side N 用于指定持仓的买卖方向
8101 BeginDate Y 历史查询起始时间
8102 EndDate Y 历史查询结束时间
标准消息尾 Y
查询历史所有订单状态请求(MsgType=UF027)
客户请求查询其历史所有的订单状态。也可查询历史特定交易所的订单状态。
查询历史所有订单状态请求消息(History All Orders Status Request)的格式见表 34:
表 34 查询历史所有订单状态请求(History All Orders Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF027
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
207 SecurityExchange N 用于指定交易所
8101 BeginDate Y 历史查询起始时间
8102 EndDate Y 历史查询结束时间
标准消息尾 Y
行情类
行情类消息主要是支持交易行情的消息。
订阅行情请求(MsgType=UF028)
客户请求订阅行情。
客户可请求订阅所有交易所的行情,某个交易所的行情,也可订阅某个合约代码的行情。
订阅行情请求(Market Data Status Request)的格式见表 35:
表 35 订阅行情请求(Market Data Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF028
262 MDReqID Y 行情请求标识符,在同一个交易日内必需唯一
55 Symbol N 期货合约代码
207 SecurityExchange N 用于指定交易所
263 SubscriptionRequestT Y 订阅请求类型
24
ype
标准消息尾 Y
订阅行情应答(MsgType=UF029)
客户请求订阅行情后,期货公司返回的应答。
期货公司可主动推送行情。
订阅行情应答(Market Data Status Response)的格式见表 36:
表 36 订阅行情应答(Market Data Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF029
262 MDReqID Y 客户行情请求标识符,在同一个交易日内必需唯
一。期货公司主动推送行情时,取值为”NONE”
开头的当天交易日唯一的字符串标识
55 Symbol Y 期货合约代码
75 TradeDate Y 交易日
207 SecurityExchange Y 用于指定交易所
8012 LatestPx Y 最新价
8050 PreSettlementPrice Y 昨日结算价
8051 PreClosePrice Y 昨日收盘价
8052 PreHoldPosition Y 昨日持仓量
8053 OpenPrice Y 开盘价格
8054 HighestPrice Y 最高价
8055 LowestPrice Y 最低价
14 CumQty Y 成交总数
381 GrossTradeAmt Y 成交总金额
6 AvgPx Y 成交平均价
8056 HoldPosition Y 持仓量
8057 ClosePrice N 今收盘价
8058 SettlementPrice N 结算价
8059 UpperLimitPrice Y 涨停价
8060 LowerLimitPrice Y 跌停价
8061 BidQty N 申报买入量
8062 AskQty N 申报卖出量
8063 UpdateTime Y 更新时间
8064 UpdateMillisec Y 更新毫秒
8065 NoOfferPriceLevel Y 申卖档位数(价格由高至低)
① 133 OfferPx N 申卖价,3 位小数
① 135 OfferSize N 申卖量
8066 NoBidPriceLevel Y 申买档位数(价格由高至低)
① 132 BidPx N 申买价,3 位小数
① 134 BidSize N 申买量
200 MaturityMonthYear N 用于指定期货到期的年和月。
205 MaturityDay N 用 于 期 货 的 到 期 日 期 , 并 被 与 到 期 年 月
(MaturityMonthYear)联合使用。
25
58 Text N
标准消息尾 Y
取消订阅行情请求(MsgType=UF030)
客户请求取消订阅行情。
客户可请求取消订阅所有行情,也可取消订阅某个合约代码的行情。
取消订阅行情请求(Market Data Status Cancel Request)的格式见表 37:
表 37 取消订阅行情请求(Market Data Status Cancel Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF030
262 MDReqID Y 行情请求标识符,在同一个交易日内必需唯一
55 Symbol N 期货合约代码
207 SecurityExchange N 用于指定交易所
263 SubscriptionRequestT
ype
Y 订阅请求类型
标准消息尾 Y
取消订阅行情应答(MsgType=UF031)
客户请求订阅行情后,期货公司返回的应答。
取消订阅行情应答(Market Data Status Cancel Response)的格式见表 38:
表 38 取消订阅行情应答(Market Data Status Cancel Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF031
262 MDReqID Y 行情请求标识符,在同一个交易日内必需唯一
55 Symbol N 被取消订阅行情的期货合约代码,如果客户请求
取消订阅单个合约代码的话,该字段必需
207 SecurityExchange N 用于指定交易所
58 Text N
标准消息尾 Y
交易辅助类
交易辅助类消息主要是支持交易的一些辅助功能的消息。
应答缺口重发请求(MsgType=UF032)
客户在接受多条应答时,应答可能有缺口,客户请求期货公司重发缺口内容。
应答缺口重发请求(Response Gap Resend Request)的格式见表 39:
表 39 应答缺口重发请求(Response Gap Fill Resend Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF032
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8067 GapMessageType Y 缺口消息类型
8068 GapStartNum Y 缺口开始编号
8069 GapEndNum Y 缺口结束编号
标准消息尾 Y
应答缺口重发应答
缺口重发应答对应到各个消息类型的应答消息。
信息发布(MsgType=UF033)
26
期货公司在需要的时候,发布信息给客户。在通知交易所开市,闭市,开盘,收盘等信息时,如果
没有指定交易所,则表示所有交易所的信息。
信息发布(Information Issue Request)的格式见表 40:
表 40 信息发布(Information Issue Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF033
8013 InformationID Y 信息标识符
8097 InfomationType Y 信息类型
58 Text N 信息发布内容
207 SecurityExchange N 用于指定交易所
标准消息尾 Y
信息发布确认(MsgType=UF034)
客户接受到期货公司的信息发布之后返回的确认。
信息发布确认(Information Issue Response)的格式见表 41:
表 41 信息发布确认(Information Issue Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF034
8013 InformationID Y 信息标识符
标准消息尾 Y
请求错误信息(MsgType=UF035)
客户的请求有错误,期货公司返回的错误信息。
请求错误信息(Error Information Request)的格式见表 42:
表 42 请求错误信息(Error Information Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF035
8071 RequestMsgType Y 请求消息类型
8088 RequestID Y 客户请求编号
8072 ErrorCode Y 错误代码
58 Text Y 错误消息
标准消息尾 Y
27
10 数据字典
以下列出应用层消息和附录 E 会话层消息中用到的数据域,数据类型定义格式参见数据类型定义()说明部分。
Tag 域名 域中文名 数据类型 说明
1 Account 客户交易编码 String 交易所客户分配的交易编码
6 AvgPx 成交平均价 Price 订单所有成交的平均成交价
7 BeginSeqNo 起始消息序号 SeqNum 重发消息区的起始消息序号
8 BeginString 起始串 String 起始串,指示协议版本,不可加密,消息中的第一个域,取值:
9 BodyLength 消息体长度 Length 消息体长度,不可加密,消息的第二个域
10 CheckSum 校验和 String 校验和,不可加密,消息最后一个域
11 ClOrdID 交 易 客 户 方 订 单 编
号
String 由交易客户方分配的订单编号,在订单的有效交易日内应保证唯一。对隔夜订单,可以
在该域内嵌入交易日期。如果是强平回报,则该值取值为以”NONE”开头的当天交易日
唯一的字符串标识
12 Commission 手续费 Amt 期货公司收取的手续费
14 CumQty 成交总数 Qty 累计成交总数量或持仓数量
15 Currency 币种 Currency 价格的货币单位,可以缺省,但最好给出
16 EndSeqNo 结束消息序号 SeqNum 重发消息区的结束消息序号
BeginSeqNo = EndSeqNo,表明重发一条消息
EndSeqNo = “0”,表明重发起始消息序号后的所有消息
17 ExecID 执行编号 String 期货公司分配的执行编号,在订单有效交易日内应保证唯一,主要用于对应具体执行报
告消息。在订单状态应答中,取值为“0”
30 LastMkt 上一成交市场 Exchange
31 LastPx 上一成交价 Price 订单最近一笔成交的成交价
32 LastShare 上一成交数 Qty 订单最近一笔成交的数量
34 MsgSeqNum 消息序号 SeqNum 消息序号,如果交易双方不采用 FIX 会话机制,可将 tag 置为一个固定的值,例如 0。
35 MsgType 消息类型 String 消息类型,不可加密,消息的第三个域。自定义消息类型以“UF”开头。消息类型取值范
28
围:
0=心跳(Heartbeat)
1=测试请求(Test Request)
2=重发请求(Resend Request)
3=会话拒绝(Reject)
4=序号重设(Sequence Reset)
5=注销(Logout)
8=执行报告(Execution Report)
9=撤单拒绝(Order Cancel Reject)
A=登录(Logon)
D=新订单(Order – Single)
F=撤单(Order Cancel Request)
H=订单状态请求(Order Status Request)
UF001=客户登录请求(User Logon Request)
UF002=客户登录应答(User Logon Response)
UF003=客户登出请求(User Logout Request)
UF004=客户登出应答(User Logout Response)
UF005=客户修改密码请求(User Change PassWd Request)
UF006=客户修改密码应答(User Change PassWd Response)
UF007=查询当前持仓请求(Present Position Status Request)
UF008=查询当前/历史持仓应答(Present/History Position Status Response)
UF009=查询最大操作数量请求(Max Operation Position Status Request)
UF010=查询最大操作数量应答(Max Operation Position Status Response)
UF011=查询当前所有订单状态请求(Present All Orders Status Request)
UF012 = 查 询 当 前 / 历 史 所 有 订 单 状 态 应 答 ( Present/History All Orders Status
Response)
29
UF013=查询结算结果请求(Settlement Result Status Request)
UF014=查询结算结果应答(Settlement Result Status Response)
UF015=结算结果确认请求(Settlement Result Comfirm Request)
UF016=结算结果确认应答(Settlement Result Comfirm Response)
UF017=查询结算结果确认请求(Settlement Result Comfirm Status Request)
UF018=查询保证金率请求(Margin Rate Status Request)
UF019=查询保证金率应答(Margin Rate Status Response)
UF020=查询手续费率请求(Commission Rate Status Request)
UF021=查询手续费率应答(Commission Rate Status Response)
UF022=查询客户资金状况请求(Customer Capital Status Request)
UF023=查询客户资金状况应答(Customer Capital Status Response)
UF024=查询合约请求(Agreement Status Request)
UF025=查询合约应答(Agreement Status Response)
UF026=查询历史持仓请求(History Position Status Request)
UF027=查询历史所有订单状态请求(History All Orders Status Request)
UF028=订阅行情请求(Market Data Status Request)
UF029=订阅行情应答(Market Data Status Response)
UF030=取消订阅行情请求(Market Data Status Cancel Request)
UF031=取消订阅行情应答(Market Data Status Cancel Response)
UF032=应答缺口重发请求(Response Gap Resend Request)
UF033=信息发布(Information Issue Request)
UF034=信息发布确认(Information Issue Response)
UF035=请求错误信息(Error Information Request)
36 NewSeqNo 新消息序号 SeqNum 新消息序号
37 OrderID 期货公司委托号 String 期货公司分配的委托号,同一个交易日必需保证唯一
38 OrderQty 订单数量 Qty 委托数量
30
39 OrdStatus 订单状态 char 订单当前状态,取值范围:
0=新(New)
1=部分成交(Partially filled)
2=已成交(Filled)
4=已撤消(Canceled)
6=待撤消(Pending Cancel)
7=已终止(Stopped)
8=已拒绝(Rejected)
9=已延缓(Suspended)
A=待处理(Pending New)
B=已计算(Calculated)
C=已过期(Expired)
40 OrdType 订单类型 char 订单类型,取值范围:
1=市价
2=限价
a=最优价
b=最新价
c=最新价浮动上浮 1 个 ticks
d=最新价浮动上浮 2 个 ticks
e=最新价浮动上浮 3 个 ticks
f=卖一价
g=卖一价浮动上浮 1 个 ticks
h=卖一价浮动上浮 2 个 ticks
i=卖一价浮动上浮 3 个 ticks
j=买一价
k=买一价浮动上浮 1 个 ticks
31
l=买一价浮动上浮 2 个 ticks
m=买一价浮动上浮 3 个 ticks
41 OrigClOrdID 原 始 交 易 客 户 方 订
单编号
String 之前相关订单的 ClOrdID,用于撤单
43 PossDupFlag 可能重复标志 Boolean 指示该消息序号的消息可能重复发送,取值范围:
Y=可能重复
N=首次发送
44 Price 价格 Price 价格
45 RefSeqNum 关联消息序号 SeqNum 消息的关联消息序号
49 SenderCompID 发送方代码 String 发送方代码
50 SenderSubID 发送方子标识符 String 发送方子代码(如交易员)
52 SendingTime 发送时间 UTCTimest
amp
消息发送时间
54 Side 买卖方向 char 订单买卖方向,取值范围:
1=买入(Buy)
2=卖出(Sell)
55 Symbol 期货合约代码 String
56 TargetCompID 接收方代码 String 接收方代码
57 TargetSubID 接收方子标识符 String 接收方的人员代码
58 Text 文本 String 自由格式文本串
59 TimeInForce 生效时间 char 订单生效时间,取值范围:
0=当日有效。
1=撤销前有效。
2=本节有效。
3=立即完成,否则撤销。
6=指定日期前有效。
32
7=集合竞价有效。
60 TransactTime 事务时间 UTCTimest
amp
订单或执行的创建时间
65 SymbolSfx 期货合约名称 String
75 TradeDate 交易日 LocalMktD
ate
77 OpenClose 开仓平仓标志 char 开仓平仓标志,取值范围:
O=开仓
C=平仓
Y=平昨仓
T=平今仓
Q=强平
89 Signature 数字签名 data 数字签名
90 SecureDataLen 密文数据长度 Length 加密数据块长度
91 SecureData 密文数据 data 加密数据块
93 SignatureLength 数字签名长度 Length 数字签名域的字节数
95 RawDataLength 无格式数据长度 Length 无格式数据的字节数
96 RawData 无格式数据 data 无格式的数据,可以是位图、WORD 文档
97 PossResend 可能重发标志 Boolean 指示该消息可能发送过(使用不同的消息序号),取值范围:
Y=可能重发
N=首次发送
98 EncryptMethod 加密方法 int 加密方法,取值范围:
0=无加密或其他加密方法(None / other)
1=PKCS 加密方法 (私有)
2=DES 加密方法 (ECB 模式)
3=PKCS/DES 加密方法 (私有)
33
4=PGP/DES 加密方法
5=PGP/DES-MD5 加密方法
6=PEM/DES-MD5 加密方法
99 StopPx 停止价 Price
102 CxlRejReason 撤单拒绝原因 int 撤单拒绝原因,取值范围:
0=撤单太晚(Too late to cancel)
1=未知订单(Unknown order)
2=自选原因(Broker / Exchange Option)
3=正在撤消(Order already in Pending Cancel or Pending Replace status)
4=不能群组撤单(Unable to process Order Mass Cancel Request)
5=订单时间不匹配(OrigOrdModTime did not match last TransactTime of order)
6=收到重复单(Duplicate ClOrdID received)
99=其他(other)
103 OrdRejReason 订单拒绝原因 int 订单拒绝原因,取值范围:
0=经纪商/交易所选项(Broker / Exchange option)
1=证券代码非法(Unknown symbol)
2=交易关闭(Exchange closed)
3=订单超过限价(Order exceeds limit)
4=订单太迟(Too late to enter)
5=未知订单(Unknown Order)
6=重复订单(Duplicate Order (. dupe ClOrdID))
7=与口头报单重复(Duplicate of a verbally communicated order)
8=失效订单(Stale Order)
9=Trade Along required
10=无效账户(Invalid Investor ID)
11=不支持的订单特征(Unsupported order characteristic)
34
12=监查选择原因(Surveillence Option)
13=数量错误(Incorrect quantity)
14=数量分配错误(Incorrect allocated quantity)
15=未知账号(Unknown account(s))
99=其他(other)
107 SecurityDesc 证券描述 String 证券描述信息,在 FIX 中用以描述证券的英文简称
108 HeartBtInt 心跳间隔 int 心跳间隔(单位:秒)
109 ClientID 客户资金帐号 String 客户在期货公司开设的资金帐号
110 MinQty 最小成交量 Qty
111 MaxFloor 每笔限量 Qty 每笔限量
112 TestReqID 测试请求标识符 String 用于测试请求消息,将包含在回应的心跳消息中
115 OnBehalfOfCompI
D
最初发送方标识符 String 用于经第三方发送消息,指明原始发送方公司代码, SenderCompID 域指明第三方公司
代码
116 OnBehalfOfSubID 最 初 发 送 方 子 标 识
符
String 用于经第三方发送消息,指明原始发送方交易员代码
122 OrigSendingTime 原始发送时间 UTCTimest
amp
收到重发请求后,将订单重发时,记录的原始消息发送时间
123 GapFillFlag 缺口填补标志 Boolean 用于序号重设消息,指示是否填补缺口,取值范围:
Y=序号重设-缺口填补消息,消息序号域有效(Gap Fill message, MsgSeqNum field
valid)
N=序号重设-重设消息,消息序号域无效(Sequence Reset, ignore MsgSeqNum)
126 ExpireTime 失效时间 UTCTimest
amp
有条件地用于生效时间(TimeInForce)=在某日前有效(GTD)和到期日没有被指定的
情况之下
128 DeliverToCompID 最终接收方标识符 String 用于经第三方发送消息,指明最终接收方公司代码,TargetCompID 域指明第三方公司代
35
码
129 DeliverToSubID 最 终 接 收 方 子 标 识
符
String 用于经第三方发送消息,指明最终接收方人员代码
132 BidPx 申买价,3 位小数 Price
133 OfferPx 申卖价,3 位小数 Price
134 BidSize 申买量 Qty
135 OfferSize 申卖量 Qty
136 NoMiscFees 杂项费用类别数 NumInGrou
p
杂项费用重复组重复次数
137 MiscFeeAmt 杂项费用金额 Amt 杂项费用金额
139 MiscFeeType 杂项费用类别 String 指明杂项费用的费用类型,取值范围:
1=监管费用(Regulatory (. SEC))
2=税(Tax)
3=佣金(Local Commission)
4=经手费(Exchange Fees)
5=印花税(Stamp)
6=征管费(Levy)
7=其它(Other)
8=价格附加值(Markup)
9=消费税(Consumption Tax)
10=每次交易(Per transaction)
11=转换费(Conversion)
12=代理费(Agent)
13=过户费(TransferFee)
140 PreClosePx 昨收盘价 Price 昨收盘价
141 ResetSeqNumFlag 序号重设标志 Boolean 指示会话连接双方是否要重设序号,取值范围:
36
Y=Yes, 需要重设序号(reset sequence numbers)
N=No
142 SenderLocationID 发送方方位标识符 String 消息发起方人员所在地点
143 TargetLocationID 接收方方位标识符 String 消息接收方人员所在地点
144 OnBehalfOfLocatio
nID
最 初 发 送 方 方 位 标
识符
String 用于经第三方发送消息,指明消息原始发起方人员所在地点
145 DeliverToLocationI
D
最 终 接 收 方 方 位 标
识符
String 用于经第三方发送消息,指明消息最终接收方人员所在地点
150 ExecType 执行类型 char 执行报告的类型,与 OrdStatus 配合使用,取值范围:
0=新(New)
4=已撤消(Canceled)
6=待撤消(Pending Cancel)
7=已终止(Stopped)
8=已拒绝(Rejected)
9=已延缓(Suspended)
A=待处理(Pending New)
B=已计算(Calculated)
C=已过期(Expired)
F=成交或部分成交( Trade (partial fill or fill))
I=订单状态(Order Status)
151 LeavesQty 剩余数量 Qty 订单仍开放(可以撮合)部分的数量
167 SecurityType 证券类别 String 指示证券类别,FUT=期货
168 EffectiveTime 订单有效时间 UTCTimest
amp
200 MaturityMonthYear 期货到期的年月 month-year 格式:YYYYMM(如 201010)
205 MaturityDay 期货到期日期 day-of-mon 与期货到期年月(MaturityMonthYear)联合使用。有效值:1-31
37
th
207 SecurityExchange 交易所代码 Exchange 用于指定交易所,取值范围:
CCFX=中国金融期货交易所
263 SubscriptionRequest
Type
订阅请求类型 char 订阅请求类型,取值范围:
0=快照(Snapshot),仅订阅一次最新行情
1=快照+预定更新(Snapshot + Updates (Subscribe))订阅持续的行情
347 MessageEncoding 消息编码类型 String 消息中编码域的字符编码类型(非 ASCII 码),取值范围:
ISO-2022-CN
UTF-8 (Unicode 字符编码,for using Unicode)
GBK (GBK 汉字编码标准,中国大陆、新加坡使用)
GB2312 (中华人民共和国国家汉字信息交换用编码)
354 EncodedTextLen 编码文本长度 Length EncodedText 域的字节数.
355 EncodedText 编码文本 data Text 域的编码形式,使用 MessageEncoding 域指明的编码方式,如果使用,必须同时使
用 Text 域(用 ASCII 码)
369 LastMsgSeqNumPro
cessed
最近处理消息序号 SeqNum 最新一次接收并处理的消息序号,可以在每条消息中都给出,利于对方了解情况
370 OnBehalfOfSending
Time
最初发送时间 UTCTimest
amp
371 RefTagID 相关域号 int 所引用的 Tag
372 RefMsgType 相关消息类型 String 所引用消息的类型
373 SessionRejectReaso
n
会话拒绝原因 int 用于会话消息拒绝,指示拒绝原因,取值范围:
0=存在无效的域号
1=该消息中必须的域丢失
2=该消息中出现未曾定义的域
3=未定义域号
4=域未赋值
38
5=域取值错误(范围溢出)
6=取值格式错误
7=解密错误
8=签名错误
9=公司标识符错误
10=发送时间精度错误
11=无效的消息类型
12=XML 验证错误(XML Validation error)
13=同一域多次出现(非重复组)
1 =有序的域出现次序错误
15=重复组域次序错误
16=重复组重复次数错误
17=非 data 数据域中出现域界定符<SOH>
378 ExecRestatementRe
ason
重述原因 int 交易服务方主动发出的执行报告中给出主动执行原因,取值范围:
0=GT Corporate action
1=GT renewal / restatement (no corporate action)
2=口头更改(Verbal change)
3=订单重新定价(Repricing of order)
4=经纪人选择权(Broker option)
5=部分订单量拒绝,如交易所发起部分拒绝(Partial decline of OrderQty (.
exchange-initiated partial cancel))
6=因交易停止而取消(Cancel on Trading Halt)
7=因系统故障而取消(Cancel on System Failure)
8=市场/交易所选择权(Market (Exchange) Option)
101=国债回购到期反向成交(Repurchase Settlement)
381 GrossTradeAmt 成交总金额 Amt 成交总金额:CumQty * AvgPx(Currency 单位)
39
383 MaxMessageSize 最大消息长度 Length 单条消息的最大字节数
384 NoMsgTypes 消息类型个数 NumInGrou
p
重复组中 MsgType 的个数
385 MsgDirection 消息方向 char 指明消息方向,取值范围:
S=发送(Send)
R=接收(Receive)
423 PriceType 价格类型 int 价格类型代码,取值范围:
1=百分比( Percentage)
2=每单位,每股或每合约(per unit (. per share or contract))
3=固定数量,绝对值(Fixed Amount (absolute value))
4=折扣-低于标准百分点(discount – percentage points below par)
5=补贴-高于标准百分点(premium – percentage points over par)
6=与基准利率相差的点数(basis points relative to benchmark)
7=三个月国债期货合同和三个月境外美元期货合同的价格差(TED price)
8=三个月国债期货合同和三个月境外美元期货合同的收益差(TED yield)
432 ExpireDate 失效日期 LocalMktD
ate
有条件地用于在生效时间(TimeInForce)=在某日前有效(GTD),而没有指定截止时
间(ExpireTime)的情况之下
434 CxlRejResponseTo 撤单拒绝类型 char 在撤单拒绝消息中,指示是撤单,取值范围:
1=撤单
8001 LogonPasswd 交易密码 String
8002 LogonStatus 登录状态 char 客户登录状态,取值范围:
0=已登录
1=已登出
9=其他
8003 AccountName 帐号名称 String
8004 RiskLevel 风险度 char 帐号风险度,取值范围:
40
0=正常
1=追加
2=强平
3=警告
4=爆仓
5=异常
8005 AdditionalMargin 追加保证金 Amt
8006 ClientSecuType 客户安全类别 char 客户安全类别,取值范围:
0=安全客户
1=低风险客户
2=危险客户
3=冻结客户
4=关注客户
8007 LastLogonIP 上次登录 IP Sting 客户上次登录 IP
8008 LastLogonTime 上 次 登 录 日 期 和 时
间
UTCTimest
amp
客户上次登录日期和时间
8009 HedgeFlag 投机套保标志 char 投机套保标志,取值范围:
0=投机
1=套保
8010 TouchCondition 触发条件 char 订单触发条件,取值范围:
1=立即
2=止损
3=止赢
4=预埋单
5=条件价大于最新价
6=条件价大于等于最新价
41
7=条件价小于最新价
8=条件价小于等于最新价
9=条件价大于卖一价
A=条件价大于等于卖一价
B=条件价小于卖一价
C=条件价小于等于卖一价
D=条件价大于买一价
E=条件价大于等于买一价
F=条件价小于买一价
H=条件价小于等于买一价
8011 Riskratio 客户风险率 float 客户风险率=保证金占用/客户权益
8012 LatestPx 最新价 Price
8013 InformationID 信息标识符 String
8014 TotalExMarginAmt 总交易所保证金 Amt
8015 TdPosition 当日持仓 Qty
8016 YDPosition 昨日持仓 Qty
8017 FrozenPosition 冻结数量 Qty
8018 FrozenAmt 冻结金额 Amt
8019 PositionDate 持仓日期 LocalMktD
ate
8020 FrozenCommision 冻结手续费 Amt
8021 PositionProfit 持仓盈亏 Amt
8022 PositionPrice 持仓均价 Amt
8023 MaxOpenPosition 最大开仓量 Qty
8024 MaxClosePosition 最大平仓量 Qty
8025 MaxCloseTdPositio 最大平今仓量 Qty
42
n
8026 TotalRetNum 返回应答数量 int
8027 PresentRetNum 当前返回应答序号 int
8028 SettlementDate 结算结果日期 LocalMktD
ate
8029 SettlementConfirm 结算结果确认 char 取值范围:
0=确认结算结果
8030 SettlementConfirmR
esult
结算结果确认结果 char 取值范围:
0=结算结果已确认
1=结算结果未确认
8031 SpecLongMarginRat
e
投机多头保证金率 float
8032 SpecShortMarginRa
te
投机空头保证金率 float
8033 HedgeLongMarginR
ate
套保多头保证金率 float
8034 HedgeShortMarginR
ate
套保空头保证金率 float
8035 SpecLongMarginA
mt
投机多头保证金费 Amt
8036 SpecShortMarginA
mt
投机空头保证金费 Amt
8037 HedgeLongMarginA
mt
套保多头保证金费 Amt
8038 HedgeShortMargin
Amt
套保空头保证金费 Amt
43
8039 OpenCommissionRa
te
开仓手续费率 float
8040 OpenCommissionA
mt
开仓手续费 Amt
8041 CloseCommissionR
ate
平仓手续费率 float
8042 CloseCommissionA
mt
平仓手续费 Amt
8043 CloseTdCommissio
nRate
平今手续费率 float
8044 CloseTdCommissio
nAmt
平今手续费 Amt
8045 BuyMarginAmt 买保证金 Amt
8046 SellMarginAmt 卖保证金 Amt
8047 SupplementalMargi
nAmt
追加保证金 Amt
8048 OccupyMarginAmt 占用保证金 Amt
8049 TotalMarginAmt 总保证金 Amt
8050 PreSettlementPrice 昨日结算价 Price
8051 PreClosePrice 昨日收盘价 Price
8052 PreOpenPosition 昨日持仓量 Qty
8053 OpenPrice 开盘价格 Price
8054 HighestPrice 最高价 Price
8055 LowestPrice 最低价 Price
8056 HoldPosition 持仓量 Qty
8057 ClosePrice 今收盘价 Price
44
8058 SettlementPrice 结算价 Price
8059 UpperLimitPrice 涨停价 Price
8060 LowerLimitPrice 跌停价 Price
8061 BidQty 申报买入量 Qty
8062 AskQty 申报卖出量 Qty
8063 UpdateTime 更新时间 LocalMktD
ate
8064 UpdateMillisec 更新毫秒 Sting
8065 NoOfferPriceLevel 申卖档位数(价格由
高至低)
NumInGrou
p
8066 NoBidPriceLevel 申买档位数(价格由
高至低)
NumInGrou
p
8067 GapMessageType 缺口消息类型 char 取值范围:
0=查询当前/历史持仓应答缺口
1=查询当前/历史所有订单状态应答缺口
2=查询结算结果应答缺口
3=查询手续费率应答缺口
4=查询合约应答缺口
8068 GapStartNum 缺口开始编号 SeqNum
8069 GapEndNum 缺口结束编号 SeqNum
8070 ChangePWResult 修改密码结果 char 取值范围:
0=修改密码成功
1=修改密码失败
8071 RequestMsgType 请求消息类型 String
8072 ErrorCode 错误代码 char
8073 ExchangeName 交易所名称 String
45
8074 TotalFrozenAmt 总冻结金额 Amt
8075 OneLotQty 每手数量 Qty
8076 MaxLotQty 最大手数 Qty
8077 MaxHoldPosition 最大持仓 Qty
8078 VarietyCode 品种代码 String
8079 VarietyName 品种名称 String
8080 MinPxAlterUnit 最小价格变动单位 Amt
8081 YesterdayStlAmt 上日存结 Amt
8082 BuyFrozenAmt 买入冻结金额 Amt
8083 SellFrozenAmt 卖出冻结金额 Amt
8084 UseableAmt 可用资金 Amt
8085 FloatProfit 浮动盈亏 Amt
8086 CloseProfit 平仓盈亏 Amt
8087 DayFolatProfit 当日出入金额 Amt
8088 RequestID 客户方请求编号,在
同一个交易日内必
需唯一
String 如果期货公司主动推送消息时,取值为”NONE” 开头的当天交易日唯一的字符串标识。
该编号由请求方给出,应答方应答时的 RequestID 应与对应的请求方保持一致。
8089 PassWdType 密码类型 char 取值范围为:
0=交易密码
1=资金密码
2=委托密码
8090 OldPassWd 客户旧的密码 String
8091 NewPassWd 客户新的密码 String
8092 SettleFee 交割手续费 Amt
8093 DeclarationID 报单号 String 交易所分配的报单号
46
8094 TradeID 撮合编号 String 交易所分配的撮合编号
8095 NextFlag 是否有后续包标识 Boolean
8096 MacNetInfo 机器网络信息 String 机器网络信息,格式为”信息编码:取值|信息编码:取值…”,其中信息编码的取值范围为:
0=IP 地址
1=MAC 地址
2=主板编号
3=CPU 编号
4=硬盘编号
8097 InfomationType 信息类型 char 期货公司发布的信息类型,取值范围为:
0=一般通知
1=交易所开市
2=交易所闭市
3=交易所开盘
4=交易所收盘
5=交易所暂停交易(用于交易集合竞价之后的集中撮合阶段或者某些特殊情况)
6=交易提示
7=市场资讯
8=咨询信息
8098 FetchAmt 可取资金 Amt
8099 DayPaymentAmt 当日出金金额 Amt
8100 DayIncomeAmt 当日入金金额 Amt
8101 BeginDate 起始时间 LocalMktD
ate
8102 EndDate 结束时间 LocalMktD
ate
8103 ClientSoftName 客户方的软件客户 String
47
端名称
8104 ClientSoftVersion 客户方的软件客户
端版本
String
8500 OrderEntryTime 订单申报时间 UTCTimest
amp
48
11 结算数据文件格式
结算数据发送方每天分别向基金公司和托管银行发送客户基本资金数据文件、客户出入
金记录文件、成交明细文件、持仓数据文件、平仓明细文件、持仓明细文件和交割明细文件
等7类文件,采用汇总方式发送,即将一个基金公司下所有基金产品或一个托管银行下所有
托管的基金产品的同类数据合并成一个文件,若无该类型数据时应发送空文件。因此,结算
数据发送方每天需向基金公司或托管银行发送7个文本文件,分别为:客户基本资金数据文
件、客户出入金记录文件、客户成交明细文件、客户持仓数据文件、平仓明细文件、持仓明
细文件、交割明细文件。文件命名规则如下:
发送方统一标识+文件类型名+日期+_+接收方(基金公司或托管银行)组织机构代
码.txt
其中,发送方标识(number(4),下文表述为 XXXX)采用中国保证金监控中心公司的
编码方式,基金公司或托管银行采用组织机构代码(char(40),下文表述为 Y)。
客户基本资金数据文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户基
本资金数据文件名:XXXXcusfund+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户基本资金数据文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户基本资金数据文件,
每个资金帐号一条记录,每条记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(18) N
资金权益总额 number(14,2) N 当日客户权益
可用资金 number(14,2) N 逐日盯市下计算得出的可用资金。
此外,在逐笔对冲下,将浮动盈亏
算入可用资金后,其额度应该等同
于在逐日盯市下计算得出的可用资
金
需追加保证金 number(14,2) N
风险度 number(14,2) N 去掉百分号,如 46 表示 46%
上日结存(逐日盯市) number(14,2) N
上日结存(逐笔对冲) number(14,2) Y
当日结存(逐日盯市) number(14,2) N
当日结存(逐笔对冲) number(14,2) Y
当日总盈亏(逐日盯市) number(14,2) N 逐日盯市下的当日总盈亏,计算方
式为:客户当日持仓盈亏+平仓盈
亏+交割配对盈亏
当日总盈亏(逐笔对冲) number(14,2) Y 逐笔对冲下的平仓盈亏
浮动盈亏(逐笔对冲) number(14,2) Y 逐笔对冲方式计算的浮动盈亏
质押金 number(14,2) N 期货公司提供给客户结算单上的质
押金
是否为非结算会员 char N 此处都为否-N
49
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2004-12-15@000002@@@@@@@500
@@@@@@N@0001@0001
客户出入金记录文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户出
入金记录文件名:XXXXfundchg+日期
如报送日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为
710685288 的基金公司的客户出入金记录文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户出入金记录文件,基
金公司每发生一次出金或入金,就有一条记录,每条记录的字段和数据类型如下:
内容 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(18) N
出入金额 number(14,2) N 出金为负,入金为正
客户期货结算账户银行统一标识 char(2) Y 非银期转账的出入金,
该字段可为空
客户期货结算账户 char(22) Y 非银期转账的出入金,
该字段可为空
公司保证金专用账户银行统一标识 char(2) Y 非银期转账的出入金,
该字段可为空
公司保证金专用账户 char(22) Y 非银期转账的出入金,
该字段可为空
备注 char(40) Y
是否为非结算会员 char N 此处都为否-N
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2005-12-15@000001@@01@1234567890123@02@8888888888888@@N@0001@0
001
2005-12-15@000002@@05@9999999999999@03@777777777777@@N@0001@
0001
成交明细文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户成
交明细数据文件名:XXXXtrddata+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户成交明细数据文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户成交明细数据文件,
每条记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(18) N
50
成交流水号 char(8) N 交易所发布的成交序列号
品种合约 char(6) N
买卖标志 char N 买-B,卖-S
成交量 number(10) N 单位:手
成交价 number(14,2) N
成交额 number(14,2) N
成交时间 time N 格式:hh:mm:ss
开平仓标志 char N 开仓-O,平仓-L
投机套保标志 char N 投机-S,套保-H
平仓盈亏(逐日盯市) number(14,2) N 如开仓,则此字段为 0
平仓盈亏(逐笔对冲) number(14,2) Y 逐笔对冲方式的平仓盈亏,
如开仓,则字段为 0
手续费 number(14,2) N
交易编码 char(10) N 该笔成交对应交易所的客
户交易编码
交易所统一标识 char N 大商所 D,郑商所 Z,上期
所 S,中金所 J
是否为非结算会员 char N 此处都为否-N
报单号 char(12) N 交易所成交单中的报单号
席位号 char(15) N
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2005-01-21@000001@00038331@WT501@B@100@@@09:30:55@
O@S@@@@00171401@Z@N@000001000001@200801@0001@0001
持仓数据文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户持
仓数据文件名:XXXXholddata+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户持仓数据文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户持仓数据文件,每条
记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(18) N
品种合约 char(6) N
买卖标志 char N
投机套保标志 char N
持仓量 number(10) N 单位:手
交易保证金 number(14,2) N
持仓盈亏(逐日盯市) number(14,2) N
持仓盈亏(逐笔对冲) number(14,2) Y 逐笔对冲方式的持仓盈亏
持仓均价 number(14,2) N
mailto:2005-01-21@000001@00038331@WT501@B@100@@@09:30:55@O@S@@@@00171401@Z@N@000001000001@200801
mailto:2005-01-21@000001@00038331@WT501@B@100@@@09:30:55@O@S@@@@00171401@Z@N@000001000001@200801
51
昨结算价 number(14,2) N
今结算价 number(14,2) N
交易编码 char(10) N 该笔持仓对应交易所的客户
交易编码
交易所统一标识 char N 大商所 D,郑商所 Z,上期所
S,中金所 J
是否为非结算会员 char N 此处都为否-N
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2005-01-25@000008@WT502@B@S@100@@@@@12
@@00171401@Z@N@0001@0001
2005-01-25@000009@WT505@S@H@200@@@@
@@@00579246@Z@N@0001@0001
平仓明细文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户平
仓明细文件名:XXXXliquiddetails+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户平仓明细文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户平仓明细文件,每条
记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(18) N
品种合约 char(6) N
成交流水号 char(8) N 交易所发布的成交序列号
买卖标志 char N 买-B,卖-S
成交价 number(14,2) N 平仓时的成交价
开仓价 number(14,2) N 开仓时的成交价
成交量 number(10) N 平仓手数,单位:手
昨结算价 number(14,2) N
今结算价 number(14,2) N
平仓盈亏(逐日盯市) number(14,2) N
平仓盈亏(逐笔对冲) number(14,2) Y 逐笔对冲方式的平仓盈亏
原成交流水号 char(8) Y 交易所在客户开仓时发布的成
交序列号
交易编码 char(10) N
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2005-01-26@2565@m0505@00013914@S@@@2@@@6
@@00002140@20000003@0001@0001
持仓明细文件
52
期货公司(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户
持仓明细文件名:XXXXholddetails+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户持仓明细文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户持仓明细文件,每条
记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(18) N
品种合约 char(6) N
成交流水号 char(8) N 交易所发布的成交序列号
买卖标志 char N 买-B,卖-S
投机套保标志 char N 投机-S,套保-H
持仓量 number(10) N 单位:手
开仓价 number(14,2) N
昨结算价 number(14,2) N
今结算价 number(14,2) N
持仓盈亏(逐日盯市) number(14,2) N
持仓盈亏(逐笔对冲) number(14,2) Y 逐笔对冲方式的持仓盈亏
交易编码 char(10) N 客户该笔持仓对应交易所的交
易编码
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2005-01-26@2565@m0505@00005968@B@S@5@@@@
@ @00171401@0001@0001
交割明细文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户交
割明细文件名:XXXXdelivdetails+日
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户交割明细文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户交割明细文件,每条
记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 交 割 日 , 格 式 :
yyyy-mm-dd
客户内部资金账户 char(18) N
品种合约 char(6) N 交割合约号
买卖标志 char N 买-B,卖-S
成交均价 number(14,2) N 分客户分品种合约分买卖的开
仓成交均价
成交金额 number(14,2) N 总额
交割结算价 number(14,2) N
53
交割货款 number(14,2) N
交割手数 number(10) N 单位:手
交割手续费 number(14,2) N
交割配对盈亏 number(14,2) N
交易编码 char(10) N
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2006-04-19@00100008@cu0604@S@@@@@2@
@@20000003@0001@0001
54
附 录 A FIX 会话缺口填补方式
(资料性附录)
使用 FIX 会话时,接收方在检测到消息丢失后(发现消息缺口),有两种方式处理缺口,
方式一:接收方发现缺口后向发送方请求发送缺口消息及其后的所有消息,见图 ;方式
二:接收方发现缺口后,保存已收到消息,并向发送方请求发送缺口消息,见图 :
图 缺口填补方式一
消息1
基金公司系统 期货公司系统
消息1
重新发送请求(从消息3开始)
消息2 消息2
消息3 丢失消息3
消息4
消息5
消息3
消息4
消息5
收到重新发送请求
消息4
消息5
发现缺口
忽略
忽略
消息3
消息4
消息5
55
图 缺口填补方式二
附 录 B FIX 会话连接场景
(资料性附录)
FIX会话登录
图 是一个连接登录的场景,连接申请方向连接服务方发送一个登录消息,第一个消
息因无效而通过注销来拒绝登录。第二个消息有效,服务方回送一条登录消息表示确认。
消息1
基金公司系统 期货公司系统
消息1
重新发送请求(消息3)
消息2 消息2
消息3 丢失消息3
消息4
消息5
消息3
消息6
收到重新发送请求
消息4
丢失消息5
发现缺口
保留
消息3
消息4
消息6收到重新发送请求
重新发送请求(消息5)
发现缺口
保留
56
图 登录
注销
图 显示注销会话的场景,申请注销后,服务方回送注销消息确认断开会话。
图 注销
重发
图 是会话断开而重发消息的场景,发送方在发送完一些应用消息给接收方后,在某
个时刻 TCP/IP 连接意外断开。此后发送方一直发送完 104 号才发现通讯故障并等待通讯恢
复,通讯恢复后,发送方法送 105 号登录消息重新连接,连接后接收方发送重发请求消息给
TCP/IP连接
基金公司系统 期货公司系统
连接接受
发送登录1 登录无效
接收注销1
发送登录2
接收登录2
发送注销1
Text=invalid logon
接收登录2
HeartBtInt=XXX
ResetSeqNumFlag=N
发送登录2
发送注销100
基金公司系统 期货公司系统
接收注销100
接收注销200 发送注销200
连接关闭 连接关闭
57
发送方,要求重新发送 103 号及其以后的消息。发送方响应其请求,并用序号重设来覆盖 105
号登录消息。
图 重发
重发请求
图 是一个重发消息中含有会话消息的重发场景,发送方在发送完一些应用消息和心
跳消息给接收方后,收到了一条重发请求 30 号(接收方的当前发送消息序号)。发送方于是
发送消息100
基金公司系统 期货公司系统
接收消息100
发送消息101 接收消息101
发送消息102 接收消息102
发送登录105 接收登录105
HeartBtInt=XXX
ResetSeqNumFlag=N
发送登录30接收登录30
发送重发请求31
BeginSeqNo=103
EndSeqNo=0接收请求重发31
发送消息103
发送消息104
接收消息103
接收消息104
发送序号重设-缺口
填补105
接收序号重设-缺口
填补105
MsgType=4
GapFillFlag=Y
NewSeqNo=106
连接和消息丢失
58
重新发送应用消息给接收方,而心跳消息则通过序号重设消息来覆盖或跳过,这样保持了消
息序号的对应和连续。通常发送方应保存一定范围的消息供填补缺口,这些需保存的消息是
含有应用消息和会话消息即所有曾发送的消息。
图 重发请求
心跳和测试请求
图 是心跳和测试请求的场景,连接双方的空闲持续在经过一个约定的时间间隔后,
发送消息100
基金公司系统 期货公司系统
接收消息100
发送消息101 接收消息101
发送心跳102 接收心跳102
发送心跳103
发送重发请求30
BeginSeqNo=100
EndSeqNo=0接收重发请求30
发送消息100
发送消息101
发送消息104
接收消息100
接收消息101
发送序号重设-缺口
填补102
接收序号重设-缺口
填补102
MsgType=4
GapFillFlag=Y
NewSeqNo=104
发送消息104
接收心跳103
接收消息104
接收消息104
59
连接双方根据规则都可以发送心跳或测试请求。
图 心跳和测试请求
发送心跳100
基金公司系统 期货公司系统
接收心跳100
发送测试请求101
TestReqID=101
接收测试请求101
接收心跳30
发送心跳30
TestReqID=101
接收心跳31
接收心跳102
发送心跳102
TestReqID=32
接收测试请求32
发送心跳31
发送测试请求32
TestReqID=32
60
附 录 C 应用场景
新订单场景图
新订单场景见图 。
图 新订单场景
撤单场景图
撤单场景见图 。
ClOrdID=1896
(基金公司分配的订单编
号)
基金公司系统 期货公司系统
ClOrdID=1896
(基金公司分配的订单编
号)
ClOrdID=1896
OrderID=4569
(期货公司委托号)
ExecID=1357
(执行编号)
ClOrdID=1896
OrderID=4569
(期货公司委托号)
ExecID=1357
(执行编号)
ClOrdID=1896
OrderID=4569
ExecID=1400
DeclarationID=1799
(交易所分配的报单号)
ClOrdID=1896
OrderID=4569
ExecID=1400
DeclarationID=1799
(交易所分配的报单号)
ClOrdID=1896
OrderID=4569
ExecID=1403
DeclarationID=1799
TradeID=33522
(交易所分配的成交编号)
LastShares=400
LeavesQty=600
ClOrdID=1896
OrderID=4569
ExecID=1403
DeclarationID=1799
TradeID=33522
(交易所分配的成交编号)
LastShares=400
LeavesQty=600
ClOrdID=1896
OrderID=4569
ExecID=1420
DeclarationID=1799
TradeID=33533
LastShares=600
LeavesQty=0
ClOrdID=1896
OrderID=4569
ExecID=1420
DeclarationID=1799
TradeID=33533
LastShares=600
LeavesQty=0
New Order-Single
(新订单)
Execution Report - Pending New
(执行回报 - 待处理)
Execution Report - New
(执行回报 - 新)
Execution Report – Partially Filled
(执行回报 - 部分成交)
Execution Report – Filled
(执行回报 - 全部成交)
61
图 撤单场景
ClOrdID=1896
(基金公司分配的订单编
号)
基金公司系统 期货公司系统
ClOrdID=1896
(基金公司分配的订单编
号)
ClOrdID=1896
OrderID=4569
(期货公司委托号)
ExecID=1357
(执行编号)
ClOrdID=1896
OrderID=4569
(期货公司委托号)
ExecID=1357
(执行编号)
ClOrdID=1896
OrderID=4569
ExecID=1400
DeclarationID=1799
(交易所分配的报单号)
ClOrdID=1896
OrderID=4569
ExecID=1400
DeclarationID=1799
(交易所分配的报单号)
ClOrdID=1896
OrderID=4569
ExecID=1403
DeclarationID=1799
TradeID=33522
(交易所分配的成交编号)
LastShares=400
LeavesQty=600
ClOrdID=1896
OrderID=4569
ExecID=1403
DeclarationID=1799
TradeID=33522
(交易所分配的成交编号)
LastShares=400
LeavesQty=600
ClOrdID=1900
OrigClOrdID=1896
(待撤订单号)
New Order-Single
(新订单)
Execution Report - Pending New
(执行回报 - 待处理)
Execution Report - New
(执行回报 - 新)
Execution Report – Partially Filled
(执行回报 - 部分成交)
Order Cancel Request
(撤单请求)
ClOrdID=1900
OrigClOrdID=1896
(待撤订单号)
ClOrdID=1900
OrigClOrdID=1896
OrderID=4569
ExecID=1420
Execution Report – Pending Cancel
(执行回报 - 待撤销)
ClOrdID=1900
OrigClOrdID=1896
OrderID=4569
ExecID=1420
ClOrdID=1900
OrigClOrdID=1896
OrderID=4569
ExecID=1425
LeavesQty=0
ClOrdID=1900
OrigClOrdID=1896
OrderID=4569
ExecID=1425
LeavesQty=0
Execution Report – Canceled
(执行回报 - 已撤销)
62
附 录 D 计算校验和
(资料性附录)
以下为计算校验和的代码段:
char *GenerateCheckSum( char *buf, long bufLen )
{
static char tmpBuf[ 4 ];
long idx;
unsigned int cks;
for( idx = 0L, cks = 0; idx < bufLen; cks += (unsigned int)buf[ idx++ ] );
sprintf( tmpBuf, “%03d”, (unsigned int)( cks % 256 ) );
return( tmpBuf );
}
附 录 E FIX 会话
FIX会话
消息序号
任何一条消息都被分配有一个消息序号来唯一标识,消息序号在每次会话过程中从 1 开
始,在整个会话过程中连续递增,直到该会话过程全部结束。通过监视消息序号的连续性可
以知道交换中的消息缺口,并做出反应,使得连接双方数据同步。
连接双方都明确确定相互独立的消息序号,参与连接的任何一方负责维护自己发送的消
息序号,并监视接收的消息序号以保证消息缺口的发现和处理。
心跳
在消息交换的空闲期间,连接双方将会产生有规则的心跳消息。通过心跳消息可以监控
通讯连接的状态。心跳间隔时间由会话发起人在登录时确定。在发送任何消息后,应立即重
新设置心跳间隔计时器。心跳间隔时间应该得到连接双方的确认,由登录发起人给出并得到
登录接受方的确认。连接双方使用相同心跳间隔时间。
缺口填补
由于协议是基于乐观的消息传输模式,消息在传输过程中可能存在丢失,而这种消息丢
失发送方不能检测,因此接收方应负责检测消息的缺口并处理。有两种处理方法:接收方发
现缺口后向发送方请求发送缺口消息及其后的所有消息;接收方发现缺口后,保存已收到消
息,并向发送方请求重复发送缺口消息。
消息重复发送
响应一个重发请求而重复发送消息时,或者不确定对方是否收到某消息而重复发送该消
息时,要求在该消息内加上可能重复标志(Possible Duplicate=Y)。如何处理该消息则是接
收方的事情。由于当生成有此类可能重复发送的消息时,仍使用该消息的原来序号,但某些
信息可能会改变,如原始时间、发送时间、正文长度、可能重复标志等,所以应重新计算校
验和。
消息重新发送
基于应用层的可能重发,如发送的订单在相当长的时间内没有确认,或者怀疑其根本未
63
曾发送过,可以通过设置可能重新发送标志来重新发送(Possible Resend=Y) ,并使用新的消
息序号。接收方应用层收到该类消息后,应通过查询消息内的域(如订单编号等)来确定此
前是否收到此条消息。该类消息应确定包含相同的正文数据,同样,由于某些信息可能会改
变,所以应重新计算校验和。
消息确认
由于协议是基于乐观的消息传输模式,通过监视消息序号发现缺口,不支持对每个消息
收发的确认。但大量消息收发的确认可在应用层定义。在应用层接受和拒绝是允许的,如订
单的确认。
连接
会话过程的数据交换可以这样描述:连接双方各有一个连续的消息序号随消息传送,而
交易期间可以多次断开并重新连接,其断开的原因可以是外因引起,也可以是连接双方根据
系统来统一制定何时断开并重新连接。一次会话连接通常不应超过 24 小时,当然,如需要
保持 24 小时以上的连接,则需要发送一条含有序号重设标志的登录消息来建立新的起始消
息序号。
FIX 连接分为三个部分:登录、消息交换、注销。
登录
登录连接包含三个步骤:建立电信通讯连接、连接双方的确认/认证、消息传输同步的
初始化。主要有以下几点:
连接
会话的发起方与接收方建立电信通讯连接。
认证
发起方发送登录消息(Logon),接收方认证发起方身份的合法性。登录消息应包括认
证的必要数据,如客户名、密码等。如果发起方身份通过认证,则接收方发送一个登录消息
作回应。如果认证失败,会话接收方则在发送一个含失败说明的注销消息(Logout)后关闭
连接。不过发送注销消息并非是必须的,因为在某些情况下往往会引起其他问题。在发起方
收到接收方的登录消息之后即可认为会话连接建立完成。会话发起方可以紧随登录消息之后
开始发送其他消息。
通常在登录后或者刚发送完测试请求消息(TestRequest)时延迟等待一段时间,然后再
发送新的消息,使得连接双方能有效控制重发请求。否则可能会导致一方会针对对方的每一
条新消息发出重发请求。
初始化
在身份通过认证之后,发起方和接收方应首先同步消息序号,然后才能相互发送新的信
息。同步消息序号通过消息序号域(MsgSeqNum)来确定,将登录消息里的消息序号
(MsgSeqNum)与内部监控的下一个预期的消息序号进行比较就能发现消息的消息序号缺
口。同样,发起方通过将接收方发送的登录消息里的消息序号(MsgSeqNum)与下一个预
期的消息序号进行比较也能发现消息的缺口。
消息交换
在以上初始化完成之后,可以开始进行信息交换。所有有效消息的格式将在“会话消息”
和“应用消息”部分中详细叙述。
注销
会话的正常结束是通过连接双方互相发送注销消息(Logout)完成的。若结束时没有收
到回送的注销消息(Logout),则把对方视作已注销。除此之外的其它方式的会话结束视为
非正常,并应按错误来处理。
64
在发送注销消息(Logout)之前,应发送测试请求消息(TestRequest)以要求对方的心
跳信息,这有助于保证不出现消息序号缺口。
在结束会话之前,注销消息(Logout)的发起方应该等待对方回送的注销消息
(Logout),这样给接收方一个填补缺口的机会。待重发请求的信息全部收到后,接收方才
可发送应答的注销消息(Logout)。如果接收方在一定时间内没有答复,那么会话就可以立
即中断。(注①)
消息恢复
以下描述了有关恢复消息的具体方法。
每一方必须维护两个消息序号,一个为了发送,一个为了接收。
当接收进来的消息序号与预期的消息序号不相符合时,需进行修正处理。但需要注意的
是,如果接收进来的是序号重设-重设(SeqReset-Reset)消息则不需要修正处理,因为处理
该消息时不必考虑它的消息序号。如果接收的消息的消息序号比预期的消息序号小,而且没
有设置可能重复标志(PossDupFlag),那么表明发生了严重的错误。因此必须立即结束会话,
并开始进行人工干预。如果接收进来的消息序号比预期的大,那么表明有消息被遗漏,应通
过发送重发请求申请填补缺口。
当收到重发请求时,重发人可以作出回应为以下三种之一:(注①)
a) 作为正常回应,重发人按顺序发送被请求的消息,这些消息的消息序号仍为原消息
序号,并且将可能重复的标志(PossDupFlag)置位为“Y”。
b) 作为正常回应,重发人发送序号重设-缺口填补(SeqReset-GapFill)消息,可能重
复标志(PossDupFlag)置位为“Y”,以表示删除过时或多余的消息。
c) 作为非正常回应,重发人发送序号重设-重设(SeqReset-Reset)消息,可能重复的
标志(PossDupFlag)置位为“Y”,以强制消息序号同步。
在缺口填补过程中,不需要重新发送某些会话消息。取而代之的是一种特殊的序号重设
-缺口填补(SeqReset-GapFill)消息。不需要重新发送的会话消息是:登录、注销、重发请
求 、 心 跳 、 测 试 请 求 、 序 号 重 设 - 重 设 ( SeqReset-Reset ) 和 序 号 重 设 - 缺 口 填 补
(SeqReset-GapFill)。这样会话拒绝消息便成为了唯一可能被重新发送的会话消息。
会话过程中应监视接收进来的消息以便发现由于疏漏而被对方重新发送了的会话消息
(设置了可能重复标志(PossDupFlag)的)。当收到这些消息以后,处理时,只要确保它们
具有消息序号的完整性即可,而忽略对它们的业务或应用的处理。
如果碰到多个连续的不需要重发的会话消息,则只需发送一个序号重设-缺口填补
(SeqReset-GapFill)消息取而代之。该序号重设-缺口填补消息的消息序号是下一个预期的
消息序号。序号重设-缺口填补(SeqReset-GapFill)消息的新消息序号(NewSeqNo)为本连
续会话消息段中最大消息序号+1。(注①)
在缺口被填补完成之后,交换引擎应将无序的消息暂时保存为有序的排列并按顺序对它
们进行处理。这样防止出现对 n->m,n->m+1,n->m+2,…的重发请求,从而导致了大量的可能
重复(PossDupFlag=’Y’)标记。
检验消息序号的连续在会话过程管理中是必不可少的部分。不过,针对消息类型的不同,
处理消息序号流的差异也就不同。下列的表 41 列出了当进来的消息序号大于预期消息序号
时而应采取的措施。
注①:注销不影响任何订单的状况。所有有效的订单都可在注销(Logout)之后执行。
注①:本文中请求人指的是提出重发请求的那一方,重发人指的是回应重发请求的那一方。
注①:如在重新发送操作期间,有 7 条连续的会话消息等待发送,他们以消息序号 9 开始和以消息序号 15
结束,此时只发送一个序号重设-缺口填补(SeqReset-GapFill)消息来代替那 7 条消息,那么该序号重设-
缺口填补(SeqReset-GapFill)消息的消息序号是 9,这是因为要承接上条消息而保持消息序号的连续性;
其中新消息序号(NewSeqNo)是 16,这样使得对方知道下一消息发送时的消息序号。
65
(注①)
表 41
消息类型 针对消息序号错误所采取的措施
登录 永远是连接双方发送的第一条消息,用于认证和
连接。如果发现登录消息中有缺口,则应在回送
登录确认消息之后立即发送重发请求
注销 如果发现有缺口,应发送重发请求消息以重新接
收所有丢失的消息,然后再发送注销消息作为对
注销请求的确认。注意严禁在有缺口情况下结束
会话。并由注销的最初发起人负责结束会话,因
此注销发起人有责任回应所有的重发请求
重发请求 首先处理完对方的重发请求,随后发送自己的重
发请求以填补消息序号错误而发现的消息缺口。
序号重设-重设 可以忽略消息序号错误。因为在序号重设-重设
( SeqReset-Reset ) 消 息 中 的 新 消 息 序 号
(NewSeqNo)强制为下一发送消息的消息序号。
序号重设-缺口填补 应立即向对方发送重发请求。但是,重要的是要
确保没有无意间跳过任何消息,这意味着缺口填
补消息应按次序被接收到,如果次序不对,那么
表示出现了非正常的情况
所有其它信息 执行正常的缺口填补。
FIX会话消息
FIX 会话消息涉及标准的使用机制,将在以下各节中予以介绍,并定义会话消息格式。
连接双方均可生成会话消息。
心跳消息(MsgType=0)
心跳消息用于监控通信连接的状况,并可确认是否接收到最后一条消息。
当 FIX 连接的任何一方在([HeartBtInt] 秒,心跳间隔)时间内没有发送任何数据的时
候,将产生一个心跳消息并传送出去。当连接的任何一方在([HeartBtInt]+[合理传输时
间] )时间内都没有收到任何有关的数据的时候,将产生一个测试请求消息并传送出去。如
果在此之后的([HeartBtInt]+[合理传输时间] )时间内,仍没有收到心跳消息,那么可认
为此次连接失败,而且需开始实施修正操作。如果 HeartBtInt 被设置为零,那么将不会定
期生成心跳消息。并且不论 HeartBtInt 取值多少,任何一方都可发送测试请求消息,接收
方由此将强行生成心跳消息。
因对方的测试请求消息而产生的心跳(Heartbeats)消息应包括对方测试请求消息中的
测试请求标识符(TestReqID)。这有利于确定该心跳消息是响应测试请求而产生的,而不是
由于超时而产生的。
心跳消息格式见表 42:
表42 心跳(Heartbeat)
注①:在任何情况下,除了序号重设-重设消息外,如果进来的消息序号比预期的消息序号小,而且可能重
复标志(PossDupFlag)没有被设置,那么应立即终止会话过程。并应在结束会话之前,向对方发送带有解
释正文的注销(Logout)消息。
66
Tag 域名 必需 说明
标准消息头 Y MsgType = 0
112 TestReqID N 测试请求标识符,如是对测试请求而响应的心跳消息,
则应包含本域。
标准消息尾 Y
登录消息(MsgType=A)
登录消息能证实客户是否已建立与对方系统的连接。登录消息应是在 FIX 会话开始时
的连接双方发送的第一个消息。
HeartBtInt 域用来声明产生心跳的时间间隔(连接双方 HeartBtInt 取相同的值)。连接双
方事先约定取值,由登录发起方产生并得到接收方的确认响应。
在接收登录消息时,接收方将验证发起方身份的合法性,并且同样发出登录消息以确认
连接请求已被接受。同样,确认登录消息也可以被发起方使用以验证连接了身份合法的接收
方。
接收方应在收到登录消息之后,立即作好开始消息处理的准备。发起方可以选择在接收
到确认登录消息之前开始 FIX 消息传输。不过本标准规定:在有关密钥确认的登录消息收
到之后,才实施正常的消息交换。
确认登录消息还可被用于密钥相互确定。如果认为当前会话密钥强度较弱,需要更换密
钥,那么就可通过发回带有新密钥的登录消息来建议使用更强的会话密钥。当然,这仅仅对
允许密钥相互确认的加密协议有意义。
登录消息还可以用来指明最大消息长度(MaxMessageSize),也可以用来指明发送和接
受时所支持的消息类型。
登录消息格式见表 43:
表 43 登录(Logon)
Tag 域名 必需 说明
标准消息头 Y MsgType = A
98 EncryptMethod Y 加密方法(不可加密)
108 HeartBtInt Y 心跳间隔
95 RawDataLength N 无格式数据长度,用于认证
96 RawData N 无格式数据,用于认证
141 ResetSeqNumFlag N 序号重设标志
383 MaxMessageSize N 最大消息长度,单条消息的最大字节数
384 NoMsgTypes N 消息类型个数
① 372 RefMsgType N 消息类型
① 385 MsgDirection N 消息方向
标准消息尾 Y
测试请求消息(MsgType=1)
测试请求消息能强制对方发出心跳消息。测试请求消息的作用是检查对方消息序号和检
查通信线路的状况。对方用带有测试请求标识符(TestReqID)的心跳作应答。
测试请求标识符(TestReqID)用以指明对方生成心跳消息是响应测试请求而非正常超
时引起的。对方发送心跳消息作为应答时,将测试请求标识符(TestReqID)包括在消息中。
任何字符串都可以用作测试请求标识符(TestReqID)(可使用时间戳(timestamp))。
测试请求消息格式见表 44:
表 44 测试请求(Test Request)
67
Tag 域名 必需 说明
标准消息头 Y MsgType = 1
112 TestReqID Y 测试请求标识符
标准消息尾 Y
重发请求消息(MsgType=2)
重发请求消息由接收方发出,目的是向发送方申请某些消息重复发送。此功能用于:发
现消息序号缺口、接收方丢失了消息和在初始化过程中也可能使用。
重发请求消息能被用来请求重新发送单个消息、一系列的消息或在某一特定消息之后的
所有消息。
当重复发送消息的时候,发送方将考虑消息类型;如:在重复发送系列中有一条会话消
息,由于过期而不再有效,发送方不需要重复传输这条消息。因此,当发送方不重复发送某
消息时,序号重设-缺口填补(SeqReset-Gap Fill)消息将被用来跳过消息。(注①)
重发请求消息有以下几种表示方式:
请求重发一条消息:起始消息序号(BeginSeqNo)=结束消息序号(EndSeqNo)
请求重发某个范围内的消息:起始消息序号(BeginSeqNo)=该范围中的第 1 条消
息,结束消息序号(EndSeqNo) =该范围中的最后一条消息序号
请求重发某一特定消息之后的所有的消息:起始消息序号(BeginSeqNo)=该范围
中的第 1 条消息,结束消息序号(EndSeqNo) =0(无限大)。
重发请求消息的格式见表 45:
表 45 重发请求(Resend Request)
Tag 域名 必需 说明
标准消息头 Y MsgType = 2
7 BeginSeqNo Y 起始消息序号
16 EndSeqNo Y 结束消息序号
标准消息尾 Y
会话拒绝消息(MsgType=3)
当接收方收到一条消息时,由于违反了会话机制而造成不能适当地处理该消息时,应该
发出会话拒绝消息。如:当收到一条消息,这条消息虽成功地通过了解密、校验和和正文长
度检验,但却被发现带有无效的数据(如:消息类型(MsgType)=&),此时应发出拒绝消
息。
被拒绝的消息应该写入日志。
接收方应该忽略任何被歪曲,不能被解析,或数据完整性核对失败的消息。立即对下一
个有效的 FIX 消息进行处理将会发现消息缺口,并且,将产生重发请求。在 FIX 交换引擎
内应能够识别这种无限重发循环。
当产生和收到会话拒绝消息意味着出现了严重错误,可能发送方或接收方的应用存在逻
辑错误。
如果要重新传输拒绝消息,那么应赋予该消息一个新的消息序号,并设置可能重发标志
(PossResend)为 Y。
注①:接收方按订单顺序进行消息处理是非常有必要的。例如,如果订单第 7 条消息被错过,而收到
第 8 和第 9 条,那么应用方将忽略 8 和 9,然后要求重发送第 7-第 9,或者要求重新发送第 7-第 0(0 表现
无限)。在顺序混乱的状况中通常用后一方案恢复消息,因为当连接双方都同时试图尽快恢复缺口的状况下,
此种方法能更快地进行消息恢复。
68
无论何时,本接口规定应在正文域里尽可能描述拒绝原因。
如果所收到的应用层消息遵循了会话机制,那么可以开始在业务层处理该消息。如果在
处理过程中,发现违反业务规则,那么应该发出业务层的“拒绝”消息。很多业务层的消息都
有指定的“拒绝”消息,此时这些消息可以发挥作用。其它无对应会话拒绝消息的,则均可通
过业务“拒绝”消息进行拒绝。
会话拒绝消息格式见表 46:
表 46 会话拒绝(Reject)
Tag 域名 必需 说明
标准消息头 Y MsgType = 3
45 RefSeqNum Y 关联消息序号,即被拒绝的消息序号
371 RefTagID N 相关错误域号
372 RefMsgType N 相关错误消息类型
373 SessionRejectReason N 会话拒绝原因编号
58 Text N 文本,可作解释拒绝的原因
354 EncodedTextLen N 编码文本长度
355 EncodedText N 编码文本(非 ASCII 码)
标准消息尾 Y
会话拒绝原因见表 47:
表 47 会话拒绝原因
会话拒绝原因
0 = 存在无效的域号
1 = 该消息中必须的域丢失
2 = 该消息中出现未曾定义的域
3 = 未定义域号
4 = 域未赋值
5 = 域取值错误(范围溢出)
6 = 取值格式错误
7 = 解密错误
8 = 签名错误
9 = 公司标识符错误
10 = 发送时间精度错误
11 = 无效的消息类型
12 = XML 验证错误(XML Validation error)
13 = 同一域多次出现(非重复组)
14 = 有序的域出现次序错误
15 = 重复组域次序错误
16 = 重复组重复次数错误
17 = 非 data 数据域中出现域界定符<SOH>
序号重设消息(MsgType=4)
序号重设消息由发送方发出,用于告知接收方下一个消息的消息序号。序号重设消息有
两种模式:序号重设-缺口填补(SeqReset-Gap Fill);序号重设-重设(SeqReset -Reset)。序
69
号重设-重设通常在灾难恢复情况下使用。
当需要支持 24 小时的连接并用序号重设标志(ResetSeqNumFlag)来建立新的一套消息
序号的时候,关于连接双方的序号重设时间和发起方另行确定,但序号重设的发起方不同于
登录过程的发起方。其处理过程如下:其中一方先发送测试请求(TestRequest)。在收到心
跳消息后,确认没有消息序号缺口后,发起方发送一条登录消息,在该消息中应附有设为 Y
的序号重设标志(ResetSeqNumFlag),并且它的消息序号(MsgSeqNum)为 1。接收方则应
该发送一条登录消息作回应,其中序号重设标志(ResetSeqNumFlag)为 Y,消息序号
(MsgSeqNum)为 1。此后,连接双方发送出的消息的消息序号应从 2 开始。需要注意的
是一旦发起方发送附有序号重设标志(ResetSeqNumFlag)的登录消息,那么接收人应服从
该请求,并且,“昨天”传送的消息不可能再重发。如果不遵守以上的处理规则应立即中断连
接,并手工设置干预。
序号重设消息两种模式表示:
当 GapFillFlag=Y 时,该消息为序号重设-缺口填补(SeqReset-Gap Fill),当 GapFillFlag
=N 或没有设置时,该消息为序号重设-重设(SeqReset-Reset)。
序号重设消息能在下列情况下使用:
a) 在重新发送的处理过程中,发送方可以选择不发送某个消息(例如一个会话消息)。
序号重设-缺口填补(SeqReset-Gap Fill)能被用来填补那条消息。
b) 在重新发送的处理过程中,有大量的会话消息不需要发送,这样产生的消息序号缺
口也可以由序号重设-缺口填补(SeqReset-Gap Fill)消息来填补。
c) 在应用层失败的情况下,有必要通过发送序号重设-重设(SeqReset-Reset)在发送
和接收的连接双方进行强制消息序号同步。
在任何情况下,序号重设消息都指定了 NewSeqNo(新的消息序号),并重设该值为下
一个将被传送消息的消息序号。
如果缺口填补标志(GapFillFlag)域被设置为 Y,那么消息序号(MsgSeqNum)域取
值应该遵循消息序号规则,即:序号重设-缺口填补(SeqReset-Gap Fill)消息的消息序号
(MsgSeqNum)应该对应缺口范围内第一条消息的消息序号,因为对方正准备接收这个消
息序号的消息。
序号重设-缺口填补(SeqReset-Gap Fill)只能增加消息序号。如果收到的序号重设-缺口
填补(SeqReset-Gap Fill)消息试图使下一个预期的消息序号变小,那么此消息应该被拒绝
接受,并被视作为错误。(注①)
如果缺口填补标志(GapFillFlag)域没有出现(或被设为 N),即为序号重设-重设
(SeqReset-Reset)消息,那么有可能是此序号重设-重设(SeqReset-Reset)消息的目的是恢
复混乱顺序的消息。此时消息头里的消息序号(MsgSeqNum)应该忽略。禁止在重发请求
注①:如可能存在接收方发送多个重发请求(如先请求重发 5~10,随后请求重发 5~11)。如果消息序号
8,10 和 11 表示应用消息,而 5-7 和 9 表示会话消息,那么为响应该重发请求,有一些应用消息需被重新
发送,首先发送的 SeqReset-GapFill 中新消息序号(NewSeqNo)设置为 8,即第 8 条消息;完成重发应用
消息后,发送 SeqReset-GapFill 且新消息序号(NewSeqNo)设置为 10,即第 10 条消息,接着完成重发应
用消息。随后又可能发送 SeqReset-GapFill 且新消息序号(NewSeqNo)设置为 8,即第 8 条消息(序号变
小);完成重发应用消息后,发送 SeqReset-GapFill 且新消息序号(NewSeqNo)设置为 10,即第 10 条消息,
以及第 11 条消息,接着完成重发应用消息。此时接收方通过检查在序号重设-缺口填补(SeqReset-Gap
Fill)中的新消息序号(NewSeqNo)是否比预期的小可发现此种错误。如果发现有这种错误,那么说明该
序号重设-缺口填补(SeqReset-Gap Fill)是重复的,应该放弃处理。
70
的正常回应中使用序号重设-重设(SeqReset-Reset)(应使用序号重设-缺口填补
(SeqReset-Gap Fill))。序号重设-重设(SeqReset-Reset)仅用于无法用序号重设-缺口填补
(SeqReset-Gap Fill)进行恢复的灾难情况。注意使用序号重设-重设(SeqReset-Reset)可能
会造成消息丢失。
序号重设消息格式见表 48:
表 48 序号重设(Sequence Reset)
Tag 域名 必需 说明
标准消息头 Y MsgType = 4
123 GapFillFlag N 缺口填补标志
36 NewSeqNo Y 新消息序号
标准消息尾 Y
注销消息(MsgType=5)
注销消息是发起或确认 FIX 会话终止的消息。未经注销消息交换而断开连接,一律视
为非正常的断开。
在最后终止会话之前,注销的发起人应该等待连接对方确认注销消息。这使得连接对方
有了实施任何有必要的缺口填补的机会。如果连接对方没有在适当的时间间隔里作回应,那
么会话就可以终止。
注销发起人在发送注销消息之后不应发送任何消息,除非接收到连接对方发出的重发请
求消息。
注销消息格式见表 49:
表 49 注销(Logout)
Tag 域名 必需 说明
标准消息头 Y MsgType = 5
58 Text N 文本
354 EncodedTextLen N 编码文本长度
355 EncodedText N 编码文本(非 ASCII 码)
标准消息尾 Y