1
{业务管理}股指期货业务
基金期货数据交换接口
2
股指期货业务基金-期货数据交换接口
(试行版)
3
中国证券业协会
二〇一一年三月
1
目 次
编写说明................................................................................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
2
浮点数 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
3
订单业务类.......................................................................10
查询业务类.......................................................................14
行情类...........................................................................23
交易辅助类.......................................................................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
4
附 录 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
5
心跳消息(MsgType=0)...........................................................65
登录消息(MsgType=A)...........................................................66
测试请求消息(MsgType=1).......................................................66
重发请求消息(MsgType=2).......................................................67
会话拒绝消息(MsgType=3).......................................................67
序号重设消息(MsgType=4).......................................................68
注销消息(MsgType=5)...........................................................70
1
编写说明
根据中国证监会关于基金公司参与股指期货业务的有关规定,应基金公司会员要求,中
国证券业协会组织编写了《股指期货业务基金-期货数据交换接口》(以下简称《接口》),现
将接口编写情况及主要内容说明如下:
一、编写目的
制订本接口主要目的是规范基金管理公司、期货公司、商业银行资产托管部门等机构在
股指期货业务中交易、结算数据交换接口格式,提高各方数据交换的一致性、开放性和可扩
展性,保障基金管理公司安全稳定的开展股指期货业务。接口实施后将有利于基金管理公司、
期货公司减小系统开发的复杂性,避免开发和维护多套数据接口,降低系统互联风险和成本。
也有利于证券期货业的信息系统技术接口的开放,为行业营造更加公开、透明的市场环境。
二、编写原则
本《接口》的编制遵循以下原则:
1、与国际金融标准及国内行业标准保持一致。本接口参照了广泛应用于国际证券期货
业的金融信息交换协议(FIX),采用 FIX消息格式,在基本应用消息上与 FIX保持一致,并
针对我国股指期货业务进行了扩展,因此能够与境外 FIX系统实现对接。同时,本接口也参
照了即将应用于国内证券市场的证券数据交换协议(STEP)。股指期货市场与证券市场参照
同样的基础协议有利于各类投资系统的对接。
2、充分利用现有的数据接口格式。本接口中交易数据、结算数据接口格式均在深圳证
券通信公司、期货保证金监控中心公司、上期技术公司、金仕达公司、恒生公司等机构已开
发实施的数据格式基础上进行扩展,不仅有利于兼容市场各参与方现有系统,而且有利于本
接口的推广。
3、便于及时扩展和更新。由于股指期货业务在国内刚刚起步,为了使《接口》能及时
满足各参与方股指期货业务长期发展的需要,能够方便、灵活地实现各种消息扩展,本接口
预留了多项扩展内容,便于今后业务发展需要。
2
三、编写过程
本接口由深圳证券通信公司执笔,基金管理公司、期货公司、托管银行、期货保证金监
控中心以及相关单位专家共同参与编写。经过接口的论证选择、起草编写、征求意见、反复
修改、不断完善等多个阶段,反复多次听取监管部门、交易所、基金管理公司、期货公司、
商业银行等单位的意见,并与相关技术开发商沟通,各有关方面分别对接口提出了许多宝贵
的意见和建议,最终形成了接口试用版,推荐行业使用。
四、主要内容
本接口对股指期货业务中基金与期货间的交易及结算数据接口进行了约定,共 11 章,
主要包含交易接口和结算接口两部分。
交易接口规定了应用环境、消息格式、安全与加密、数据完整性、扩展方式、消息定义、
数据字典等内容,定义了 6个客户登录管理类消息、5个订单业务类消息、19个查询业务类
消息、4个行情类消息以及 4个交易辅助类消息等共 38个应用消息格式,并对 201个数据域
进行了描述,其中,自定义消息 33 个,包括客户登录、修改密码、资金及持仓查询、行情
订阅等消息,自定义数据域 100个,包括风险度、投机套保标志等。
结算数据接口定义了客户基本资金数据文件、客户出入金记录文件、成交明细文件、持
仓数据文件、平仓明细文件、持仓明细文件和交割明细文件等 7类文件格式。
五、维护机制
接口由中国证券业协会牵头组织制订和完善。当接口需要变更时,由提出单位向协会反
映,协会出面组织接口起草小组成员单位进行讨论,并视讨论结果组织修订。由于接口结算
数据接口引用了中国期货保证金监控中心公司发布的《期货保证金安全存管系统对交易结算
会员和非结算会员报送数据的要求》,接口将随着《期货保证金安全存管系统对交易结算会
员和非结算会员报送数据的要求》的变更同步变更。
本接口试用完善后,中国证券业协会将按照行业标准的报批流程,适时提请全国金融标
准化技术委员会证券分技术委员会进行行业标准的审核发布。
3
4
股指期货业务基金-期货数据交换接口
1 范围
1
本接口规定了基金公司参与股指期货业务时,基金公司、托管银行与期货公司之间的交
易和结算数据交换接口,其中交易接口规定了应用环境、消息格式、安全与加密、数据完整
性、扩展方式、消息定义、数据字典等内容,结算接口采用文件格式,约定了客户基本资金
数据文件、出入金记录文件、成交明细文件、持仓数据文件、平仓明细文件、持仓明细文件
及交割明细文件等 7类文件格式。
本接口适用于基金公司参与股指期货业务中,期货公司与基金公司、托管银行等相关金
融机构间的交易及结算数据交换。
2 规范性引用文件
2
下列文件中的条款通过本接口的引用而成为本接口的条款。凡是注日期的引用文件,其
随后所有的修改单(不包括勘误的内容)或修订版均不适用于本接口,然而,鼓励根据本接
口达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用文件,其最新
版本适用于本接口。
GB/T 23696-2009 证券和相关金融工具 交易所和市场识别码。
GB/T 2659-2000 世界各国和地区名称代码。
GB/T 12406-2008 货币和资金的代码。
3 术语和定义
3
下列术语和定义适用于本接口。
新订单 New Order-Single
5
交易客户方新产生的订单。
执行报告 Execution Reports
交易服务方响应交易客户方的消息,主要用于:订单确认、订单状态变化确认(如撤单
确认)、发送订单的成交回报、订单拒绝。
交易客户方订单编号 ClOrdID
由交易客户方赋予的订单编号,在订单有效交易日内应保证唯一。
期货公司委托号 OrderID
期货公司委托号,同一个交易日内必需保证唯一。
执行编号 ExecID
期货公司分配的执行编号,在订单有效交易日内应保证唯一,主要用于对应具体执行报
告消息。在订单状态应答中,取值为“0”。
报单号 DeclarationID
交易所分配的报单号。
撮合编号 TradeID
交易所分配的撮合编号。
客户资金帐号 ClientID
客户在期货公司开设的资金帐号。
客户交易编码 Account
交易所为客户分配的交易编码。
4 通讯方式
4
交易双方可自定选择通讯方式。 FIX会话层消息请参照附录E。
6
5 消息格式
5
数据类型
数据类型用于定义数据域的取值类型,本接口由几个基本的数据类型(整数、浮点数、
单字符、字符串、二进制数据块)和在此基础上扩展的数据类型组成。除“data”数据类型
外,其他数据类型均以 ASCII码字符串表示。
整数 int
无逗号和小数位的序号,可表示正负(ASCII码字符‘-’,‘0’至‘9’组成)。符号占
据一个字符位置。允许前置字符零(例:“00023”=“23”)。
整数类型的扩展定义:
长度 Length:以整数表示字节为单位的数据长度,正数。
重复数 NumInGroup:以整数表示重复组的个数,正数。
消息序号 SeqNum:以整数表示消息序号,正数。
域号 TagNum:以整数表示的域号(或称 Tag),正数,首位不能为零。
月日期号 day-of-month:以整数表示的月份中第几天,取值 1至 31。
浮点数 float
含有可选的小数部分,可表示正负(ASCII 码字符‘-’,‘0’至‘9’和‘.’组成)。
最多一五位有
效数字。允许前置字符零(例:“00023”=“23”)。允许小数部分后置字符零(例:
“”=“”=“23”)。
浮点数类型的扩展定义:
除非特别声明,浮点数类型均有正负。
量 Qty:委托数量等,可以有小数部分。
价格 Price:小数位数可变。
价格偏移量 PriceOffset:代表价格偏移量的浮点域。
7
金额 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。
字符串 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(秒)或
8
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汉字编码标准。
9
域界定
消息中所有的域(包含 data 类型数据域)都有一个分隔符来界定分隔,该分隔符就是
不可打印字符 ASCII 码“SOH”(#001,hex:0x01,本文档中以<SOH>表示)。因此,所有消
息以“8=<SOH>”字符串开始并以“10=nnn<SOH>”字符串结束。
除 data数据类型域外,其他数据域内容都不应包含域界定符<SOH>。
语法
任何消息都严格由多个“域号=值”的基本结构组成,“域号=值”基本结构用域界定符
<SOH>分隔。消息组成结构如图1:
图1:消息格式
消息由消息头、消息的正文和消息尾组成。同样,每个组成部分都由一系列“域号=值”
组成,并且在遵循以下规则前提下“域号=值”基本结构可以是任意的次序:
a) 开始部分应是消息头,随后是正文,最后是消息尾;
a)
b) 消息头的前 3个域的次序不能改变:起始串(Tag =8)、消息体长度(Tag =9)、消
息类型(Tag =35);
b)
c) 消息尾的最后一个域应是校验和域(Tag =10);
c)
d) 重复组中,域出现的顺序应遵循该重复组在消息或组件中定义时的次序;
d)
e) 在一条消息中,除重复组域外任何其他域不能重复出现。
e)
重复组
域可以在重复组里多次重复,用以传输数组类的数据。通常域名起始为’No’字符的域
指明重复的次数,并位于重复组的开始处。本文档中重复组的定义通过缩进的符号表示,
重复组也可嵌套。使用子重复组时不能省略父重复组。
6 安全与加密
6
10
由于消息有可能在公网或不安全的网络上传输交换,因此需要对相关的敏感数据加密处
理。
具体加密的方法由连接双方达成的协议而定。
消息内除某些需要公开识别的域以明文传输外其他任何域都可以加密放置密文数据域
(SecureData)内。当然,这些被加密的域也可以同时保留明文的表示方式。
当决定使用加密方案时,可以对消息正文内所有的域加密。如果消息的重复组内有部分
需要加密的,那么要求对整个重复组加密。
本协议还提供的一些域用以支持数字签名、密钥交换和正文加密等安全技术。
正文加密方案有三种:
a) 将安全敏感的域加密后移至 SecureData域。
a)
b) 将所有允许加密的域加密后移至 SecureData域。
b)
c) 将所有允许加密的域加密后移至 SecureData 域,同时这些域以明文在消息中重复
出现。
c)
7 数据完整性
7
数据的完整性通过两个方法保证:消息体长度和校验和的验证。
消息体长度是以 BodyLength 域来表示,其值是计算出的消息长度域后面的字符数,包
含紧靠校验和域标志‘10=’之前的界定符 SOH。
校验和是把每个字符的二进制值从消息开头‘8=’中的‘8’开始相加,一直加到紧靠
在校验和域‘10=’之前的域界定符,然后取按 256取模得到的结果。
校验和域位于消息的最末一个,校验和的计算是在加密之后进行的。计算校验和的代码
段可参考附录 D计算校验和。
8 扩展方式
8
扩展分类
11
扩展分为两个部分:消息定义扩展和域定义扩展。
消息定义扩展可以通过新增消息类型来实现,但尽量在已有消息中通过域定义或取值扩
展来定义新业务。已有消息所代表的业务在扩展时不能改变。
域定义扩展可以通过新增域来实现,但尽量通过扩展域值来扩展域的定义。消息中已定
义的必须的域不能取消定义,也不能改变成可选域。
扩展规则
自定义消息的消息类型值首字符为‘UF’。其他类型的消息由全国金融标准化技术委员
会根据国际相关标准的变化统一定义并发布。对于尚未发布的扩展消息,将以参考文件《股
指期货业务基金期货间数据交换接口_扩充消息参考指引》的形式发布。
消息的模块顺序在扩展定义时不能改变,即保持消息头、消息体和消息尾的顺序。而模
块的内部,域和重复组的顺序是可以变化的。
消息头的头三个域的定义和位置不能改变,但可以扩展增加消息头的可选域。
消息尾最后一个域的定义和位置不能改变,但可以扩展增加消息尾的可选域。
版本管理
本协议的版本管理权属于中国证券业协会。
版本号格式为 ,版本号从 起始,当新版本完全兼容上一版本时只改变版本
号中的 Z。
本协议当前版本的版本号为 。
9 消息定义
9
消息头
每一个会话或应用消息有一个消息头,该消息头指明消息类型、消息体长度、发送目的
地、消息序号、发送起始点和发送时间。
其中有两个域用于消息重发。使用 FIX会话时对于会话级的事件而重复发送消息时将可
能重复发送标志(PossDupFlag)设置为 Y(发送时用原来的消息序号)。当重新发送时使用新
的消息序号时将可能重新发送标志(PossResend)设置为 Y,接受者应按以下方法处理上述
消息:
12
可能重复发送:如果带有该消息序号的消息在以前曾经接受过,则忽略消息,如果未曾
收到过,则按正常步骤处理。(支持 FIX会话层需要)
可能重新发送:将消息传递给应用层以确定此前是否收到该消息(通过检查订单编号或
相关参数)。
消息头格式见表 1:
表 1 消息头
Tag 域名 必需 说明
8 BeginString Y 起始串,取值:(不可加密,消息的第一个
域)
9 BodyLength Y 消息体长度(不可加密,消息的第二个域)
35 MsgType Y 消息类型(不可加密,消息的第三个域)
49 SenderCompID Y 发送方代码(不可加密,发送方标识符)
56 TargetCompID Y 接收方代码(不可加密,接收方标识符)
1
一
五
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 最初发送方子标识符(可加密)
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表示时间)
消息尾
13
每一个消息(会话或应用消息)有一个消息尾,并以此终止。消息尾可用于分隔多个消
息,包含有 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:
14
表 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)
15
客户请求修改密码。
客户修改密码请求(User Change PassWd Request)的格式见表 7:
表 7 客户修改密码请求(User Change PassWd Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF005
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
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:
16
表 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 委托手数
60 TransactTime Y 订单发起时间
40 OrdType Y 订单类型
44 Price N 价格(限价订单时有效)
423 PriceType N 价格类型
99 StopPx N 停止价
一五 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) 订单确认
a)
b) 订单状态变化确认(如撤单确认)
17
b)
c) 发送订单的成交回报
c)
d) 订单拒绝
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”开头的当天交易日唯
一的字符串标识
41 OrigClOrdID N 原始交易客户方订单编号,指示被撤消订单
的 ClOrdID
17 ExecID Y 期货公司的执行编号,在订单有效交易日内
应保证唯一
一五 0 ExecType Y 执行类型
18
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 新订单生效时间,默认为当日有效
一五 Currency N 币种
32 LastShares N 上一成交数(最近一笔成交数量)
31 LastPx N 上一成交价(最近一笔成交价格)
30 LastMkt N 上一成交市场
一五 1 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 期货公司委托号,同个交易日必需保证唯一
11 ClOrdID Y 交易客户方订单编号
109 ClientID Y 客户资金帐号
19
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 报单号
20
58 Text N
标准消息尾 Y
撤单拒绝消息(MsgType=9)
本消息用于撤单消息的拒绝。
交易服务方接收到撤单发现无法执行(已成交订单不可更改等),将发送撤单拒绝。
拒绝撤单时,撤单拒绝消息应用 ClOrdID 指示撤单的 ClOrdID,用 OrigClOrdID 指示之
前最后接受的订单(除非拒绝原因是“未知订单”)。
撤单拒绝消息(Order Cancel Reject)的格式见表一三:
表一三 撤单拒绝消息(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)
21
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)的格式
见表一五:
表一五 查询当前/历史持仓应答(Present/History Position Status Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF008
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8026 TotalRetNum N 返回应答数量
8027 PresentRetNum N 当前返回应答序号
8095 NextFlag N 是否有后续包标识
109 ClientID Y 客户资金帐号
1 Account N 客户交易编码
55 Symbol Y 期货合约代码
207 SecurityExchange Y 用于指定交易所
8012 LatestPx N 最新价
54 Side Y 买卖方向
8009 HedgeFlag Y 投机套保标志
14 CumQty Y 总持仓量(成交总数)
80一五 TdPosition Y 当日持仓
8016 YDPosition N 昨日持仓
8017 FrozenPosition N 冻结数量
80一八 FrozenAmt N 冻结金额
8019 PositionDate N 持仓日期
6 AvgPx N 持仓成本(平均成交价)
12 Commission N 手续费
8021 PositionProfit N 持仓盈亏
8022 PositionPrice N 持仓均价
8075 OneLotQty N 每手数量
22
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 客户方请求编号,在同一个交易日内必需唯一
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 最大平今仓量,查询平仓并且支持平昨和平今的
23
话该值必需
8009 HedgeFlag Y 投机套保标志
58 Text N
标准消息尾 Y
查询当前所有订单状态请求(MsgType=UF011)
客户请求查询其所有的订单状态。也可查询特定交易所的订单状态。
查询当前所有订单状态请求消息(Present All Orders Status Request)的格式见表
一八:
表一八 查询当前所有订单状态请求(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)
24
查询结算结果请求(MsgType=UF0一三)
客户请求查询结算结果。
查询结算结果请求消息(Settlement Result Status Request)的格式见表 20:
表 20 查询结算结果请求(Settlement Result Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF0一三
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
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 新订单生效时间,默认为当日有效
一五 Currency N 币种
一五 1 LeavesQty Y 订单剩余数量
14 CumQty Y 成交总数
6 AvgPx Y 成交平均价
60 TransactTime N 执行报告时间
381 GrossTradeAmt N 成交总金额
110 MinQty N 最小成交量
8500 OrderEntryTime N 订单申报时间
标准消息尾 Y
25
109 ClientID Y 客户资金帐号
8028 SettlementDate Y 结算结果日期
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
查询结算结果应答(MsgType=UF014)
客户请求查询结算结果请求,期货公司返回的应答。也可以作为客户请求查询结算结果
应答缺口
的应答。
查询结算结果应答(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=UF0一五)
客户请求结算结果确认。
结算结果确认请求消息(Settlement Result Comfirm Request)的格式见表 22:
表 22 结算结果确认请求(Settlement Result Comfirm Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF0一五
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8028 SettlementDate N 结算结果日期
8029 SettlementConfirm Y 结算结果确认
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
结算结果确认应答(MsgType=UF016)
26
客户请求查询结算结果确认,期货公司返回的应答。也可作为客户查询结算结果确认请
求的应答。
查询结算确认应答(Settlement Result Comfirm Response)的格式见表 23:
表 23 查询结算结果应答(Settlement Result Comfirm Response)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF016
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
8028 SettlementDate N 结算结果日期
8030 SettlementConfirmR
esult
Y 结算结果确认结果
207 SecurityExchange Y 用于指定交易所
58 Text N
标准消息尾 Y
查询结算结果确认请求(MsgType=UF017)
客户请求查询结算结果确认。
查询结算结果确认请求消息(Settlement Result Comfirm Status Request)的格式见
表 24:
表 24 查询结算结果确认请求(Settlement Result Comfirm Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF017
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
8028 SettlementDate N 结算结果日期
207 SecurityExchange Y 用于指定交易所
标准消息尾 Y
查询结算结果确认应答
客户请求查询结算结果确认结果,期货公司返回的应答。参考结算结果确认应答消息。
查询保证金率请求(MsgType=UF0一八)
客户请求查询保证金率。客户可查询某种品种的保证金率,也可以查询指定交割期的品
种的保证金率。
查询保证金率请求(Margin Rate Status Request)的格式见表 25:
表 25 查询保证金率请求(Margin Rate Status Request)
Tag 域名 必需 说明
27
标准消息头 Y MsgType=UF0一八
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 SpecShortMarginRat
e
Y 投机空头保证金率
8033 HedgeLongMarginRat
e
Y 套保多头保证金率
8034 HedgeShortMarginRa
te
Y 套保空头保证金率
8035 SpecLongMarginAmt Y 投机多头保证金费
8036 SpecShortMarginAmt Y 投机空头保证金费
8037 HedgeLongMarginAmt Y 套保多头保证金费
8038 HedgeShortMarginAm
t
Y 套保空头保证金费
207 SecurityExchange Y 用于指定交易所
58 Text N
标准消息尾 Y
查询手续费率请求(MsgType=UF020)
28
客户请求查询手续费率。
查询手续费率请求(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 OpenCommissionRate Y 开仓手续费率
8040 OpenCommissionAmt Y 开仓手续费
8041 CloseCommissionRat
e
Y 平仓手续费率
8042 CloseCommissionAmt Y 平仓手续费
8043 CloseTdCommissionR
ate
N 平今手续费率
8044 CloseTdCommissionA
mt
N 平今手续费
8092 SettleFee N 交割手续费
207 SecurityExchange Y 用于指定交易所
58 Text N
29
标准消息尾 Y
查询客户资金状况请求(MsgType=UF022)
客户请求查询其资金状况。
查询客户资金状况请求(Customer Capital Status Request)的格式见表 29:
表 29 查询客户资金状况请求(Customer Capital Status Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF022
8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一
109 ClientID Y 客户资金帐号
一五 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 可用资金
30
8098 FetchAmt N 可取资金
12 Commission N 手续费
8085 FloatProfit N 浮动盈亏
8086 CloseProfit N 平仓盈亏
8087 DayFolatProfit N 当日出入金额
8099 DayPaymentAmt N 当日出金金额
8100 DayIncomeAmt N 当日入金金额
8004 RiskLevel Y 客户风险度
8006 ClientSecuType Y 客户安全类别
8011 Riskratio Y 客户风险率
一五 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 合约名称
31
8075 OneLotQty Y 每手数量
200 MaturityMonthYear N 用于指定期货到期的年和月。
8076 MaxLotQty Y 最大手数
8077 MaxHoldPosition Y 最大持仓
8078 VarietyCode Y 品种代码
8079 VarietyName Y 品种名称
8080 MinPxAlterUnit Y 最小价格变动单位
58 Text N
标准消息尾 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 客户资金帐号
32
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 SubscriptionReques
tType
Y 订阅请求类型
标准消息尾 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 最新价
33
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 申卖档位数(价格由高至低)
一三
3
OfferPx
N
申卖价,3位小数
一三
5
OfferSize
N
申卖量
8066 NoBidPriceLevel Y 申买档位数(价格由高至低)
一三
2
BidPx
N
申买价,3位小数
一三
4
BidSize
N
申买量
200 MaturityMonthYear N 用于指定期货到期的年和月。
205 MaturityDay N 用 于 期 货 的 到 期 日 期 , 并 被 与 到 期 年 月
(MaturityMonthYear)联合使用。
58 Text N
标准消息尾 Y
取消订阅行情请求(MsgType=UF030)
客户请求取消订阅行情。
客户可请求取消订阅所有行情,也可取消订阅某个合约代码的行情。
取消订阅行情请求(Market Data Status Cancel Request)的格式见表 37:
表 37 取消订阅行情请求(Market Data Status Cancel Request)
Tag 域名 必需 说明
34
标准消息头 Y MsgType=UF030
262 MDReqID Y 行情请求标识符,在同一个交易日内必需唯一
55 Symbol N 期货合约代码
207 SecurityExchange N 用于指定交易所
263 SubscriptionReques
tType
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
应答缺口重发应答
35
缺口重发应答对应到各个消息类型的应答消息。
信息发布(MsgType=UF033)
期货公司在需要的时候,发布信息给客户。在通知交易所开市,闭市,开盘,收盘等信
息时,如果没有指定交易所,则表示所有交易所的信息。
信息发布(Information Issue Request)的格式见表 40:
表 40 信息发布(Information Issue Request)
Tag 域名 必需 说明
标准消息头 Y MsgType=UF033
80一三 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
80一三 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
36
10 数据字典
10
以下列出应用层消息和附录 E会话层消息中用到的数据域,数据类型定义格式参见数据类型定义()说明部分。
Ta
g
域名 域中文名 数据类
型
说明
1 Account 客户交易编
码
String 交易所客户分配的交易编码
6 AvgPx 成交平均价 Price 订单所有成交的平均成交价
7 BeginSeqNo 起始消息序
号
SeqNum 重发消息区的起始消息序号
8 BeginStrin
g
起始串 String 起始串,指示协议版本,不可加密,消息中的第一个域,
取值:
9 BodyLength 消息体长度 Length 消息体长度,不可加密,消息的第二个域
10 CheckSum 校验和 String 校验和,不可加密,消息最后一个域
11 ClOrdID 交易客户方
订单编号
String 由交易客户方分配的订单编号,在订单的有效交易日内应
保证唯一。对隔夜订单,可以在该域内嵌入交易日期。如
果是强平回报,则该值取值为以”NONE”开头的当天交易
日唯一的字符串标识
12 Commission 手续费 Amt 期货公司收取的手续费
14 CumQty 成交总数 Qty 累计成交总数量或持仓数量
一
五
Currency 币种 Curren
cy
价格的货币单位,可以缺省,但最好给出
16 EndSeqNo 结束消息序
号
SeqNum 重发消息区的结束消息序号
BeginSeqNo = EndSeqNo,表明重发一条消息
EndSeqNo = “0”,表明重发起始消息序号后的所有消息
37
17 ExecID 执行编号 String 期货公司分配的执行编号,在订单有效交易日内应保证唯
一,主要用于对应具体执行报告消息。在订单状态应答中,
取值为“0”
30 LastMkt 上一成交市
场
Exchan
ge
31 LastPx 上一成交价 Price 订单最近一笔成交的成交价
32 LastShare 上一成交数 Qty 订单最近一笔成交的数量
34 MsgSeqNum 消息序号 SeqNum 消息序号,如果交易双方不采用 FIX 会话机制,可将 tag
置为一个固定的值,例如 0。
35 MsgType 消息类型 String 消息类型,不可加密,消息的第三个域。自定义消息类型
以“UF”开头。消息类型取值范围:
0=心跳(Heartbeat)
1=测试请求(Test Request)
2=重发请求(Resend Request)
3=会话拒绝(Reject)
4=序号重设(Sequence Reset)
5=注销(Logout)
8=执行报告(Execution Report)
9=撤单拒绝(Order Cancel Reject)
38
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)
39
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)
UF0 一三= 查询结算结果请求(Settlement Result
Status Request)
UF014=查询结算结果应答(Settlement Result Status
Response)
UF0 一五= 结算结果确认请求(Settlement Result
Comfirm Request)
UF016= 结算结果确认应答( Settlement Result
Comfirm Response)
UF017=查询结算结果确认请求(Settlement Result
Comfirm Status Request)
UF0 一八=查询保证金率请求(Margin Rate Status
40
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)
41
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 委托数量
39 OrdStatus 订单状态 char 订单当前状态,取值范围:
0=新(New)
1=部分成交(Partially filled)
42
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
43
d=最新价浮动上浮 2个 ticks
e=最新价浮动上浮 3个 ticks
f=卖一价
g=卖一价浮动上浮 1个 ticks
h=卖一价浮动上浮 2个 ticks
i=卖一价浮动上浮 3个 ticks
j=买一价
k=买一价浮动上浮 1个 ticks
l=买一价浮动上浮 2个 ticks
m=买一价浮动上浮 3个 ticks
41 OrigClOrdI
D
原始交易客
户方订单编
号
String 之前相关订单的 ClOrdID,用于撤单
43 PossDupFla
g
可能重复标
志
Boolea
n
指示该消息序号的消息可能重复发送,取值范围:
Y=可能重复
N=首次发送
44
44 Price 价格 Price 价格
45 RefSeqNum 关联消息序
号
SeqNum 消息的关联消息序号
49 SenderComp
ID
发送方代码 String 发送方代码
50 SenderSubI
D
发送方子标
识符
String 发送方子代码(如交易员)
52 SendingTim
e
发送时间 UTCTim
estamp
消息发送时间
54 Side 买卖方向 char 订单买卖方向,取值范围:
1=买入(Buy)
2=卖出(Sell)
55 Symbol 期货合约代
码
String
56 TargetComp
ID
接收方代码 String 接收方代码
57 TargetSubI
D
接收方子标
识符
String 接收方的人员代码
58 Text 文本 String 自由格式文本串
59 TimeInForc
e
生效时间 char 订单生效时间,取值范围:
0=当日有效。
1=撤销前有效。
2=本节有效。
45
3=立即完成,否则撤销。
6=指定日期前有效。
7=集合竞价有效。
60 TransactTi
me
事务时间 UTCTim
estamp
订单或执行的创建时间
65 SymbolSfx 期货合约名
称
String
75 TradeDate 交易日 LocalM
ktDate
77 OpenClose 开仓平仓标
志
char 开仓平仓标志,取值范围:
O=开仓
C=平仓
Y=平昨仓
T=平今仓
Q=强平
89 Signature 数字签名 data 数字签名
90 SecureData
Len
密文数据长
度
Length 加密数据块长度
91 SecureData 密文数据 data 加密数据块
93 SignatureL 数字签名长 Length 数字签名域的字节数
46
ength 度
95 RawDataLen
gth
无格式数据
长度
Length 无格式数据的字节数
96 RawData 无格式数据 data 无格式的数据,可以是位图、WORD文档
97 PossResend 可能重发标
志
Boolea
n
指示该消息可能发送过(使用不同的消息序号),取值范围:
Y=可能重发
N=首次发送
98 EncryptMet
hod
加密方法 int 加密方法,取值范围:
0=无加密或其他加密方法(None / other)
1=PKCS加密方法 (私有)
2=DES加密方法 (ECB 模式)
3=PKCS/DES加密方法 (私有)
4=PGP/DES加密方法
5=PGP/DES-MD5加密方法
6=PEM/DES-MD5加密方法
99 StopPx 停止价 Price
10
2
CxlRejReas
on
撤单拒绝原
因
int 撤单拒绝原因,取值范围:
0=撤单太晚(Too late to cancel)
47
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)
10
3
OrdRejReas
on
订单拒绝原
因
int 订单拒绝原因,取值范围:
0=经纪商/交易所选项(Broker / Exchange option)
1=证券代码非法(Unknown symbol)
2=交易关闭(Exchange closed)
3=订单超过限价(Order exceeds limit)
4=订单太迟(Too late to enter)
48
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)
12=监查选择原因(Surveillence Option)
一三=数量错误(Incorrect quantity)
14=数量分配错误(Incorrect allocated quantity)
一五=未知账号(Unknown account(s))
99=其他(other)
10
7
SecurityDe
sc
证券描述 String 证券描述信息,在 FIX中用以描述证券的英文简称
49
10
8
HeartBtInt 心跳间隔 int 心跳间隔(单位:秒)
10
9
ClientID 客户资金帐
号
String 客户在期货公司开设的资金帐号
11
0
MinQty 最小成交量 Qty
11
1
MaxFloor 每笔限量 Qty 每笔限量
11
2
TestReqID 测试请求标
识符
String 用于测试请求消息,将包含在回应的心跳消息中
1
一
五
OnBehalfOf
CompID
最初发送方
标识符
String 用于经第三方发送消息,指明原始发送方公司代码,
SenderCompID 域指明第三方公司代码
11
6
OnBehalfOf
SubID
最初发送方
子标识符
String 用于经第三方发送消息,指明原始发送方交易员代码
12
2
OrigSendin
gTime
原始发送时
间
UTCTim
estamp
收到重发请求后,将订单重发时,记录的原始消息发送时
间
12
3
GapFillFla
g
缺口填补标
志
Boolea
n
用于序号重设消息,指示是否填补缺口,取值范围:
Y=序号重设-缺口填补消息,消息序号域有效(Gap
Fill message, MsgSeqNum field valid)
N=序号重设-重设消息,消息序号域无效(Sequence
Reset, ignore MsgSeqNum)
12
6
ExpireTime 失效时间 UTCTim
estamp
有条件地用于生效时间(TimeInForce)=在某日前有效
(GTD)和到期日没有被指定的情况之下
12
8
DeliverToC
ompID
最终接收方
标识符
String 用于经第三方发送消息,指明最终接收方公司代码,
TargetCompID域指明第三方公司代码
12
9
DeliverToS
ubID
最终接收方
子标识符
String 用于经第三方发送消息,指明最终接收方人员代码
50
一
三
2
BidPx
申买价,3位
小数
Price
一
三
3
OfferPx
申卖价,3位
小数
Price
一
三
4
BidSize
申买量 Qty
一
三
5
OfferSize
申卖量 Qty
一
三
6
NoMiscFees 杂项费用类
别数
NumInG
roup
杂项费用重复组重复次数
一
三
7
MiscFeeAmt 杂项费用金
额
Amt 杂项费用金额
一
三
9
MiscFeeTyp
e
杂项费用类
别
String 指明杂项费用的费用类型,取值范围:
1=监管费用(Regulatory (. SEC))
2=税(Tax)
3=佣金(Local Commission)
4=经手费(Exchange Fees)
51
5=印花税(Stamp)
6=征管费(Levy)
7=其它(Other)
8=价格附加值(Markup)
9=消费税(Consumption Tax)
10=每次交易(Per transaction)
11=转换费(Conversion)
12=代理费(Agent)
一三=过户费(TransferFee)
14
0
PreClosePx 昨收盘价 Price 昨收盘价
14
1
ResetSeqNu
mFlag
序号重设标
志
Boolea
n
指示会话连接双方是否要重设序号,取值范围:
Y=Yes, 需要重设序号(reset sequence numbers)
N=No
14
2
SenderLoca
tionID
发送方方位
标识符
String 消息发起方人员所在地点
14
3
TargetLoca
tionID
接收方方位
标识符
String 消息接收方人员所在地点
52
14
4
OnBehalfOf
LocationID
最初发送方
方位标识符
String 用于经第三方发送消息,指明消息原始发起方人员所在地
点
14
5
DeliverToL
ocationID
最终接收方
方位标识符
String 用于经第三方发送消息,指明消息最终接收方人员所在地
点
一
五
0
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)
53
一
五
1
LeavesQty 剩余数量 Qty 订单仍开放(可以撮合)部分的数量
16
7
SecurityTy
pe
证券类别 String 指示证券类别,FUT=期货
16
8
EffectiveT
ime
订单有效时
间
UTCTim
estamp
20
0
MaturityMo
nthYear
期货到期的
年月
month-
year
格式:YYYYMM(如 201010)
20
5
MaturityDa
y
期货到期日
期
day-of
-month
与期货到期年月(MaturityMonthYear)联合使用。有效值:
1-31
20
7
SecurityEx
change
交易所代码 Exchan
ge
用于指定交易所,取值范围:
CCFX=中国金融期货交易所
26
3
Subscripti
onRequestT
ype
订阅请求类
型
char 订阅请求类型,取值范围:
0=快照(Snapshot),仅订阅一次最新行情
1= 快 照 + 预 定 更 新 ( Snapshot + Updates
(Subscribe))订阅持续的行情
34
7
MessageEnc
oding
消息编码类
型
String 消息中编码域的字符编码类型(非 ASCII码),取值范围:
ISO-2022-CN
UTF-8 (Unicode字符编码,for using Unicode)
GBK (GBK汉字编码标准,中国大陆、新加坡使用)
54
GB2312 (中华人民共和国国家汉字信息交换用编码)
35
4
EncodedTex
tLen
编码文本长
度
Length EncodedText域的字节数.
35
5
EncodedTex
t
编码文本 data Text域的编码形式,使用 MessageEncoding域指明的编码
方式,如果使用,必须同时使用 Text域(用 ASCII码)
36
9
LastMsgSeq
NumProcess
ed
最近处理消
息序号
SeqNum 最新一次接收并处理的消息序号,可以在每条消息中都给
出,利于对方了解情况
37
0
OnBehalfOf
SendingTim
e
最初发送时
间
UTCTim
estamp
37
1
RefTagID 相关域号 int 所引用的 Tag
37
2
RefMsgType 相关消息类
型
String 所引用消息的类型
37
3
SessionRej
ectReason
会话拒绝原
因
int 用于会话消息拒绝,指示拒绝原因,取值范围:
0=存在无效的域号
1=该消息中必须的域丢失
2=该消息中出现未曾定义的域
3=未定义域号
4=域未赋值
5=域取值错误(范围溢出)
55
6=取值格式错误
7=解密错误
8=签名错误
9=公司标识符错误
10=发送时间精度错误
11=无效的消息类型
12=XML验证错误(XML Validation error)
一三=同一域多次出现(非重复组)
1 =有序的域出现次序错误
一五=重复组域次序错误
16=重复组重复次数错误
17=非 data数据域中出现域界定符<SOH>
37
8
ExecRestat
ementReaso
n
重述原因 int 交易服务方主动发出的执行报告中给出主动执行原因,取
值范围:
0=GT Corporate action
56
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)
38
1
GrossTrade
Amt
成交总金额 Amt 成交总金额:CumQty * AvgPx(Currency单位)
38
3
MaxMessage
Size
最大消息长
度
Length 单条消息的最大字节数
38
4
NoMsgTypes 消息类型个
数
NumInG
roup
重复组中 MsgType的个数
38 MsgDirecti 消息方向 char 指明消息方向,取值范围:
57
5 on
S=发送(Send)
R=接收(Receive)
42
3
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)
43 ExpireDate 失效日期 LocalM 有条件地用于在生效时间(TimeInForce)=在某日前有效
58
2 ktDate (GTD),而没有指定截止时间(ExpireTime)的情况之下
43
4
CxlRejResp
onseTo
撤单拒绝类
型
char 在撤单拒绝消息中,指示是撤单,取值范围:
1=撤单
80
01
LogonPassw
d
交易密码 String
80
02
LogonStatu
s
登录状态 char 客户登录状态,取值范围:
0=已登录
1=已登出
9=其他
80
03
AccountNam
e
帐号名称 String
80
04
RiskLevel 风险度 char 帐号风险度,取值范围:
0=正常
1=追加
2=强平
3=警告
4=爆仓
5=异常
59
80
05
Additional
Margin
追加保证金 Amt
80
06
ClientSecu
Type
客户安全类
别
char 客户安全类别,取值范围:
0=安全客户
1=低风险客户
2=危险客户
3=冻结客户
4=关注客户
80
07
LastLogonI
P
上次登录 IP Sting 客户上次登录 IP
80
08
LastLogonT
ime
上次登录日
期和时间
UTCTim
estamp
客户上次登录日期和时间
80
09
HedgeFlag 投机套保标
志
char 投机套保标志,取值范围:
0=投机
1=套保
80
10
TouchCondi
tion
触发条件 char 订单触发条件,取值范围:
1=立即
2=止损
60
3=止赢
4=预埋单
5=条件价大于最新价
6=条件价大于等于最新价
7=条件价小于最新价
8=条件价小于等于最新价
9=条件价大于卖一价
A=条件价大于等于卖一价
B=条件价小于卖一价
C=条件价小于等于卖一价
D=条件价大于买一价
E=条件价大于等于买一价
F=条件价小于买一价
H=条件价小于等于买一价
80 Riskratio 客户风险率 float 客户风险率=保证金占用/客户权益
61
11
80
12
LatestPx 最新价 Price
80
一
三
Informatio
nID
信息标识符 String
80
14
TotalExMar
ginAmt
总交易所保
证金
Amt
80
一
五
TdPosition 当日持仓 Qty
80
16
YDPosition 昨日持仓 Qty
80
17
FrozenPosi
tion
冻结数量 Qty
80
一
八
FrozenAmt 冻结金额 Amt
80
19
PositionDa
te
持仓日期 LocalM
ktDate
80
20
FrozenComm
ision
冻结手续费 Amt
80
21
PositionPr
ofit
持仓盈亏 Amt
80
22
PositionPr
ice
持仓均价 Amt
80
23
MaxOpenPos
ition
最大开仓量 Qty
62
80
24
MaxClosePo
sition
最大平仓量 Qty
80
25
MaxCloseTd
Position
最大平今仓
量
Qty
80
26
TotalRetNu
m
返回应答数
量
int
80
27
PresentRet
Num
当前返回应
答序号
int
80
28
Settlement
Date
结算结果日
期
LocalM
ktDate
80
29
Settlement
Confirm
结算结果确
认
char 取值范围:
0=确认结算结果
80
30
Settlement
ConfirmRes
ult
结算结果确
认结果
char 取值范围:
0=结算结果已确认
1=结算结果未确认
80
31
SpecLongMa
rginRate
投机多头保
证金率
float
80
32
SpecShortM
arginRate
投机空头保
证金率
float
80
33
HedgeLongM
arginRate
套保多头保
证金率
float
80
34
HedgeShort
MarginRate
套保空头保
证金率
float
80
35
SpecLongMa
rginAmt
投机多头保
证金费
Amt
63
80
36
SpecShortM
arginAmt
投机空头保
证金费
Amt
80
37
HedgeLongM
arginAmt
套保多头保
证金费
Amt
80
38
HedgeShort
MarginAmt
套保空头保
证金费
Amt
80
39
OpenCommis
sionRate
开仓手续费
率
float
80
40
OpenCommis
sionAmt
开仓手续费 Amt
80
41
CloseCommi
ssionRate
平仓手续费
率
float
80
42
CloseCommi
ssionAmt
平仓手续费 Amt
80
43
CloseTdCom
missionRat
e
平今手续费
率
float
80
44
CloseTdCom
missionAmt
平今手续费 Amt
80
45
BuyMarginA
mt
买保证金 Amt
80
46
SellMargin
Amt
卖保证金 Amt
80
47
Supplement
alMarginAm
t
追加保证金 Amt
80
48
OccupyMarg
inAmt
占用保证金 Amt
64
80
49
TotalMargi
nAmt
总保证金 Amt
80
50
PreSettlem
entPrice
昨日结算价 Price
80
51
PreClosePr
ice
昨日收盘价 Price
80
52
PreOpenPos
ition
昨日持仓量 Qty
80
53
OpenPrice 开盘价格 Price
80
54
HighestPri
ce
最高价 Price
80
55
LowestPric
e
最低价 Price
80
56
HoldPositi
on
持仓量 Qty
80
57
ClosePrice 今收盘价 Price
80
58
Settlement
Price
结算价 Price
80
59
UpperLimit
Price
涨停价 Price
80
60
LowerLimit
Price
跌停价 Price
80
61
BidQty 申报买入量 Qty
80
62
AskQty 申报卖出量 Qty
65
80
63
UpdateTime 更新时间 LocalM
ktDate
80
64
UpdateMill
isec
更新毫秒 Sting
80
65
NoOfferPri
ceLevel
申卖档位数
(价格由高
至低)
NumInG
roup
80
66
NoBidPrice
Level
申买档位数
(价格由高
至低)
NumInG
roup
80
67
GapMessage
Type
缺口消息类
型
char 取值范围:
0=查询当前/历史持仓应答缺口
1=查询当前/历史所有订单状态应答缺口
2=查询结算结果应答缺口
3=查询手续费率应答缺口
4=查询合约应答缺口
80
68
GapStartNu
m
缺口开始编
号
SeqNum
80
69
GapEndNum 缺口结束编
号
SeqNum
80
70
ChangePWRe
sult
修改密码结
果
char 取值范围:
0=修改密码成功
66
1=修改密码失败
80
71
RequestMsg
Type
请求消息类
型
String
80
72
ErrorCode 错误代码 char
80
73
ExchangeNa
me
交易所名称 String
80
74
TotalFroze
nAmt
总冻结金额 Amt
80
75
OneLotQty 每手数量 Qty
80
76
MaxLotQty 最大手数 Qty
80
77
MaxHoldPos
ition
最大持仓 Qty
80
78
VarietyCod
e
品种代码 String
80
79
VarietyNam
e
品种名称 String
80
80
MinPxAlter
Unit
最小价格变
动单位
Amt
80
81
YesterdayS
tlAmt
上日存结 Amt
80
82
BuyFrozenA
mt
买入冻结金
额
Amt
80
83
SellFrozen
Amt
卖出冻结金
额
Amt
67
80
84
UseableAmt 可用资金 Amt
80
85
FloatProfi
t
浮动盈亏 Amt
80
86
CloseProfi
t
平仓盈亏 Amt
80
87
DayFolatPr
ofit
当日出入金
额
Amt
80
88
RequestID 客户方请求
编号,在同一
个交易日内
必需唯一
String 如果期货公司主动推送消息时,取值为”NONE” 开头的当
天交易日唯一的字符串标识。该编号由请求方给出,应答
方应答时的 RequestID应与对应的请求方保持一致。
80
89
PassWdType 密码类型 char 取值范围为:
0=交易密码
1=资金密码
2=委托密码
80
90
OldPassWd 客户旧的密
码
String
80
91
NewPassWd 客户新的密
码
String
80
92
SettleFee 交割手续费 Amt
80
93
Declaratio
nID
报单号 String 交易所分配的报单号
80 TradeID 撮合编号 String 交易所分配的撮合编号
68
94
80
95
NextFlag 是否有后续
包标识
Boolea
n
80
96
MacNetInfo 机器网络信
息
String 机器网络信息,格式为”信息编码:取值|信息编码:取
值…”,其中信息编码的取值范围为:
0=IP地址
1=MAC地址
2=主板编号
3=CPU编号
4=硬盘编号
80
97
Infomation
Type
信息类型 char 期货公司发布的信息类型,取值范围为:
0=一般通知
1=交易所开市
2=交易所闭市
3=交易所开盘
4=交易所收盘
5=交易所暂停交易(用于交易集合竞价之后的集中
69
撮合阶段或者某些特殊情况)
6=交易提示
7=市场资讯
8=咨询信息
80
98
FetchAmt 可取资金 Amt
80
99
DayPayment
Amt
当日出金金
额
Amt
81
00
DayIncomeA
mt
当日入金金
额
Amt
81
01
BeginDate 起始时间 LocalM
ktDate
81
02
EndDate 结束时间 LocalM
ktDate
81
03
ClientSoft
Name
客户方的软
件客户端名
称
String
81
04
ClientSoft
Version
客户方的软
件客户端版
本
String
85
00
OrderEntry
Time
订单申报时
间
UTCTim
estamp
70
11 结算数据文件格式
11
结算数据发送方每天分别向基金公司和托管银行发送客户基本资金数据文件、客户出入
金记录文件、成交明细文件、持仓数据文件、平仓明细文件、持仓明细文件和交割明细文件
等7类文件,采用汇总方式发送,即将一个基金公司下所有基金产品或一个托管银行下所有
托管的基金产品的同类数据合并成一个文件,若无该类型数据时应发送空文件。因此,结算
数据发送方每天需向基金公司或托管银行发送7个文本文件,分别为:客户基本资金数据文
件、客户出入金记录文件、客户成交明细文件、客户持仓数据文件、平仓明细文件、持仓明
细文件、交割明细文件。文件命名规则如下:
发送方统一标识+文件类型名+日期+_+接收方(基金公司或托管银行)组织机构代
码.txt
其中,发送方标识(number(4),下文表述为 XXXX)采用中国保证金监控中心公司的编
码方式,基金公司或托管银行采用组织机构代码(char(40),下文表述为 Y)。
客户基本资金数据文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户基本资
金数据文件名:XXXXcusfund+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户基本资金数据文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户基本资金数据文件,每
个资金帐号一条记录,每条记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(一八) 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 逐日盯市下的当日总盈亏,计算方
71
式为:客户当日持仓盈亏+平仓盈亏+
交割配对盈亏
当日总盈亏(逐笔对冲) number(14,2) Y 逐笔对冲下的平仓盈亏
浮动盈亏(逐笔对冲) number(14,2) Y 逐笔对冲方式计算的浮动盈亏
质押金 number(14,2) N 期货公司提供给客户结算单上的质
押金
是否为非结算会员 char N 此处都为否-N
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2004-12- 一 五
客户出入金记录文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户出入金
记录文件名:XXXXfundchg+日期
如报送日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为
710685288的基金公司的客户出入金记录文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户出入金记录文件,基金
公司每发生一次出金或入金,就有一条记录,每条记录的字段和数据类型如下:
内容 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(一
八)
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 监控中心编码
举例:
72
2005-12-一五
2005-12-一五
成交明细文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户成交明
细数据文件名:XXXXtrddata+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户成交明细数据文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户成交明细数据文件,每
条记录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char(一八) N
成交流水号 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(一五) N
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
2005-01-21x000001x00038331xWT501xBx100x 一 五 一 五
:30: 一 五
73
持仓数据文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户持仓数
据文件名:XXXXholddata+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户持仓数据文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户持仓数据文件,每条记
录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char( 一
八)
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
昨结算价 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 监控中心编码
举例:
.
平仓明细文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户平仓明
细文件名:XXXXliquiddetails+日期
74
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户平仓明细文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户平仓明细文件,每条记
录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char( 一
八)
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-26x2565xm0505x000 一 三
持仓明细文件
期货公司(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户持仓
明细文件名:XXXXholddetails+日期
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户持仓明细文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户持仓明细文件,每条记
录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 格式:yyyy-mm-dd
客户内部资金账户 char( 一
八)
N
75
品种合约 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 监控中心编码
举例:
- 一 五
x00171401x0001x0001
交割明细文件
发送方(统一标识 XXXX)发给基金公司或托管银行(组织机构代码证 Y)的客户交割明
细文件名:XXXXdelivdetails+日
如日期为 2005 年 10 月 8 日、标识为 0001 的期货公司发给组织机构代码为 710685288
的基金公司的客户交割明细文件名为 。
发送方每天需给基金公司或托管银行发送一个相应文件名的客户交割明细文件,每条记
录的字段和数据类型如下:
字段 数据类型 是否可为空 备注
日期 date N 交割日,格式:yyyy-mm-dd
客户内部资金账户 char(一八) N
品种合约 char(6) N 交割合约号
买卖标志 char N 买-B,卖-S
成交均价 number(14,2) N 分客户分品种合约分买卖的开
仓成交均价
成交金额 number(14,2) N 总额
交割结算价 number(14,2) N
交割货款 number(14,2) N
交割手数 number(10) N 单位:手
交割手续费 number(14,2) N
交割配对盈亏 number(14,2) N
交易编码 char(10) N
76
结算会员统一标识 char(10) N 监控中心编码
交易会员统一标识 char(10) N 监控中心编码
举例:
x9一三
77
附 录 A FIX会话缺口填补方式
附 录 A
(资料性附录)
使用 FIX会话时,接收方在检测到消息丢失后(发现消息缺口),有两种方式处理缺口,
方式一:接收方发现缺口后向发送方请求发送缺口消息及其后的所有消息,见图 ;方式
二:接收方发现缺口后,保存已收到消息,并向发送方请求发送缺口消息,见图 :
78
图 缺口填补方式一
消息1
基金公司系统 期货公司系统
消息1
重新发送请求(从消息3开始)
消息2 消息2
消息3 丢失消息3
消息4
消息5
消息3
消息4
消息5
收到重新发送请求
消息4
消息5
发现缺口
忽略
忽略
消息3
消息4
消息5
79
图 缺口填补方式二
附 录 B FIX会话连接场景
附 录 B
(资料性附录)
FIX会话登录
图 是一个连接登录的场景,连接申请方向连接服务方发送一个登录消息,第一个消
消息1
基金公司系统 期货公司系统
消息1
重新发送请求(消息3)
消息2 消息2
消息3 丢失消息3
消息4
消息5
消息3
消息6
收到重新发送请求
消息4
丢失消息5
发现缺口
保留
消息3
消息4
消息6收到重新发送请求
重新发送请求(消息5)
发现缺口
保留
80
息因无效而通过注销来拒绝登录。第二个消息有效,服务方回送一条登录消息表示确认。
图 登录
注销
图 显示注销会话的场景,申请注销后,服务方回送注销消息确认断开会话。
TCP/IP连接
基金公司系统 期货公司系统
连接接受
发送登录1 登录无效
接收注销1
发送登录2
接收登录2
发送注销1
Text=invalid logon
接收登录2
HeartBtInt=XXX
ResetSeqNumFlag=N
发送登录2
发送注销100
基金公司系统 期货公司系统
接收注销100
接收注销200 发送注销200
连接关闭 连接关闭
81
图 注销
重发
图 是会话断开而重发消息的场景,发送方在发送完一些应用消息给接收方后,在某
个时刻 TCP/IP 连接意外断开。此后发送方一直发送完 104 号才发现通讯故障并等待通讯恢
复,通讯恢复后,发送方法送 105号登录消息重新连接,连接后接收方发送重发请求消息给
发送方,要求重新发送 103号及其以后的消息。发送方响应其请求,并用序号重设来覆盖 105
号登录消息。
82
图 重发
重发请求
图 是一个重发消息中含有会话消息的重发场景,发送方在发送完一些应用消息和心
发送消息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
连接和消息丢失
83
跳消息给接收方后,收到了一条重发请求 30号(接收方的当前发送消息序号)。发送方于是
重新发送应用消息给接收方,而心跳消息则通过序号重设消息来覆盖或跳过,这样保持了消
息序号的对应和连续。通常发送方应保存一定范围的消息供填补缺口,这些需保存的消息是
含有应用消息和会话消息即所有曾发送的消息。
图 重发请求
发送消息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
84
心跳和测试请求
图 是心跳和测试请求的场景,连接双方的空闲持续在经过一个约定的时间间隔后,
连接双方根据规则都可以发送心跳或测试请求。
图 心跳和测试请求
发送心跳100
基金公司系统 期货公司系统
接收心跳100
发送测试请求101
TestReqID=101
接收测试请求101
接收心跳30
发送心跳30
TestReqID=101
接收心跳31
接收心跳102
发送心跳102
TestReqID=32
接收测试请求32
发送心跳31
发送测试请求32
TestReqID=32
85
附 录 C 应用场景
附 录 C
新订单场景图
新订单场景见图 。
86
图 新订单场景
撤单场景图
撤单场景见图 。
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
(执行回报 - 全部成交)
87
图 撤单场景
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
(执行回报 - 已撤销)
88
附 录 D 计算校验和
附 录 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会话
附 录 E
FIX会话
消息序号
89
任何一条消息都被分配有一个消息序号来唯一标识,消息序号在每次会话过程中从 1开
始,在整个会话过程中连续递增,直到该会话过程全部结束。通过监视消息序号的连续性可
以知道交换中的消息缺口,并做出反应,使得连接双方数据同步。
连接双方都明确确定相互独立的消息序号,参与连接的任何一方负责维护自己发送的消
息序号,并监视接收的消息序号以保证消息缺口的发现和处理。
心跳
在消息交换的空闲期间,连接双方将会产生有规则的心跳消息。通过心跳消息可以监控
通讯连接的状态。心跳间隔时间由会话发起人在登录时确定。在发送任何消息后,应立即重
新设置心跳间隔计时器。心跳间隔时间应该得到连接双方的确认,由登录发起人给出并得到
登录接受方的确认。连接双方使用相同心跳间隔时间。
缺口填补
由于协议是基于乐观的消息传输模式,消息在传输过程中可能存在丢失,而这种消息丢
失发送方不能检测,因此接收方应负责检测消息的缺口并处理。有两种处理方法:接收方发
现缺口后向发送方请求发送缺口消息及其后的所有消息;接收方发现缺口后,保存已收到消
息,并向发送方请求重复发送缺口消息。
消息重复发送
响应一个重发请求而重复发送消息时,或者不确定对方是否收到某消息而重复发送该消
息时,要求在该消息内加上可能重复标志(Possible Duplicate=Y)。如何处理该消息则是
接收方的事情。由于当生成有此类可能重复发送的消息时,仍使用该消息的原来序号,但某
些信息可能会改变,如原始时间、发送时间、正文长度、可能重复标志等,所以应重新计算
校验和。
消息重新发送
基于应用层的可能重发,如发送的订单在相当长的时间内没有确认,或者怀疑其根本未
曾发送过,可以通过设置可能重新发送标志来重新发送(Possible Resend=Y) ,并使用新的
消息序号。接收方应用层收到该类消息后,应通过查询消息内的域(如订单编号等)来确定
此前是否收到此条消息。该类消息应确定包含相同的正文数据,同样,由于某些信息可能会
改变,所以应重新计算校验和。
消息确认
由于协议是基于乐观的消息传输模式,通过监视消息序号发现缺口,不支持对每个消息
收发的确认。但大量消息收发的确认可在应用层定义。在应用层接受和拒绝是允许的,如订
单的确认。
90
连接
会话过程的数据交换可以这样描述:连接双方各有一个连续的消息序号随消息传送,而
交易期间可以多次断开并重新连接,其断开的原因可以是外因引起,也可以是连接双方根据
系统来统一制定何时断开并重新连接。一次会话连接通常不应超过 24 小时,当然,如需要
保持 24 小时以上的连接,则需要发送一条含有序号重设标志的登录消息来建立新的起始消
息序号。
FIX连接分为三个部分:登录、消息交换、注销。
登录
登录连接包含三个步骤:建立电信通讯连接、连接双方的确认/认证、消息传输同步的
初始化。主要有以下几点:
连接
会话的发起方与接收方建立电信通讯连接。
认证
发起方发送登录消息(Logon),接收方认证发起方身份的合法性。登录消息应包括认证
的必要数据,如客户名、密码等。如果发起方身份通过认证,则接收方发送一个登录消息作
回应。如果认证失败,会话接收方则在发送一个含失败说明的注销消息(Logout)后关闭连
接。不过发送注销消息并非是必须的,因为在某些情况下往往会引起其他问题。在发起方收
到接收方的登录消息之后即可认为会话连接建立完成。会话发起方可以紧随登录消息之后开
始发送其他消息。
通常在登录后或者刚发送完测试请求消息(TestRequest)时延迟等待一段时间,然后
再发送新的消息,使得连接双方能有效控制重发请求。否则可能会导致一方会针对对方的每
一条新消息发出重发请求。
初始化
在身份通过认证之后,发起方和接收方应首先同步消息序号,然后才能相互发送新的信
息。同步消息序号通过消息序号域(MsgSeqNum)来确定,将登录消息里的消息序号(MsgSeqNum)
与内部监控的下一个预期的消息序号进行比较就能发现消息的消息序号缺口。同样,发起方
通过将接收方发送的登录消息里的消息序号(MsgSeqNum)与下一个预期的消息序号进行比
较也能发现消息的缺口。
消息交换
在以上初始化完成之后,可以开始进行信息交换。所有有效消息的格式将在“会话消息”
91
和“应用消息”部分中详细叙述。
注销
会话的正常结束是通过连接双方互相发送注销消息(Logout)完成的。若结束时没有收
到回送的注销消息(Logout),则把对方视作已注销。除此之外的其它方式的会话结束视为
非正常,并应按错误来处理。
在发送注销消息(Logout)之前,应发送测试请求消息(TestRequest)以要求对方的
心跳信息,这有助于保证不出现消息序号缺口。
在结束会话之前,注销消息(Logout)的发起方应该等待对方回送的注销消息
(Logout),这样给接收方一个填补缺口的机会。待重发请求的信息全部收到后,接收方才
可发送应答的注销消息(Logout)。如果接收方在一定时间内没有答复,那么会话就可以立
即中断。(注①)
消息恢复
以下描述了有关恢复消息的具体方法。
每一方必须维护两个消息序号,一个为了发送,一个为了接收。
当接收进来的消息序号与预期的消息序号不相符合时,需进行修正处理。但需要注意的
是,如果接收进来的是序号重设-重设(SeqReset-Reset)消息则不需要修正处理,因为处
理该消息时不必考虑它的消息序号。如果接收的消息的消息序号比预期的消息序号小,而且
没有设置可能重复标志(PossDupFlag),那么表明发生了严重的错误。因此必须立即结束会
话,并开始进行人工干预。如果接收进来的消息序号比预期的大,那么表明有消息被遗漏,
应通过发送重发请求申请填补缺口。
当收到重发请求时,重发人可以作出回应为以下三种之一:(注②)
a) 作为正常回应,重发人按顺序发送被请求的消息,这些消息的消息序号仍为原消息
序号,并且将可能重复的标志(PossDupFlag)置位为“Y”。
a)
b) 作为正常回应,重发人发送序号重设-缺口填补(SeqReset-GapFill)消息,可能
重复标志(PossDupFlag)置位为“Y”,以表示删除过时或多余的消息。
b)
c) 作为非正常回应,重发人发送序号重设-重设(SeqReset-Reset)消息,可能重复
注①:注销不影响任何订单的状况。所有有效的订单都可在注销(Logout)之后执行。
注①:本文中请求人指的是提出重发请求的那一方,重发人指的是回应重发请求的那一方。
92
的标志(PossDupFlag)置位为“Y”,以强制消息序号同步。
c)
在缺口填补过程中,不需要重新发送某些会话消息。取而代之的是一种特殊的序号重设
-缺口填补(SeqReset-GapFill)消息。不需要重新发送的会话消息是:登录、注销、重发
请求、心跳、测试请求、序号重设- 重设(SeqReset-Reset )和序号重设- 缺口填补
(SeqReset-GapFill)。这样会话拒绝消息便成为了唯一可能被重新发送的会话消息。
会话过程中应监视接收进来的消息以便发现由于疏漏而被对方重新发送了的会话消息
(设置了可能重复标志(PossDupFlag)的)。当收到这些消息以后,处理时,只要确保它们
具有消息序号的完整性即可,而忽略对它们的业务或应用的处理。
如果碰到多个连续的不需要重发的会话消息,则只需发送一个序号重设-缺口填补
(SeqReset-GapFill)消息取而代之。该序号重设-缺口填补消息的消息序号是下一个预期
的消息序号。序号重设-缺口填补(SeqReset-GapFill)消息的新消息序号(NewSeqNo)为
本连续会话消息段中最大消息序号+1。(注③)
在缺口被填补完成之后,交换引擎应将无序的消息暂时保存为有序的排列并按顺序对它
们进行处理。这样防止出现对 n->m,n->m+1,n->m+2,…的重发请求,从而导致了大量的可能
重复(PossDupFlag=’Y’)标记。
检验消息序号的连续在会话过程管理中是必不可少的部分。不过,针对消息类型的不同,
处理消息序号流的差异也就不同。下列的表 41 列出了当进来的消息序号大于预期消息序号
时而应采取的措施。
(注④)
表 41
消息类型 针对消息序号错误所采取的措施
登录 永远是连接双方发送的第一条消息,用于认证和
连接。如果发现登录消息中有缺口,则应在回送
登录确认消息之后立即发送重发请求
注销 如果发现有缺口,应发送重发请求消息以重新接
收所有丢失的消息,然后再发送注销消息作为对
注销请求的确认。注意严禁在有缺口情况下结束
会话。并由注销的最初发起人负责结束会话,因
注①:如在重新发送操作期间,有 7 条连续的会话消息等待发送,他们以消息序号 9 开始和以消息序号一五
结束,此时只发送一个序号重设-缺口填补(SeqReset-GapFill)消息来代替那 7 条消息,那么该序号重设-
缺口填补(SeqReset-GapFill)消息的消息序号是 9,这是因为要承接上条消息而保持消息序号的连续性;
其中新消息序号(NewSeqNo)是 16,这样使得对方知道下一消息发送时的消息序号。
注①:在任何情况下,除了序号重设-重设消息外,如果进来的消息序号比预期的消息序号小,而且可能重
复标志(PossDupFlag)没有被设置,那么应立即终止会话过程。并应在结束会话之前,向对方发送带有解
释正文的注销(Logout)消息。
93
此注销发起人有责任回应所有的重发请求
重发请求 首先处理完对方的重发请求,随后发送自己的重
发请求以填补消息序号错误而发现的消息缺口。
序号重设-重设 可以忽略消息序号错误。因为在序号重设-重设
( SeqReset-Reset )消息中的新消息序号
(NewSeqNo)强制为下一发送消息的消息序号。
序号重设-缺口填补 应立即向对方发送重发请求。但是,重要的是要
确保没有无意间跳过任何消息,这意味着缺口填
补消息应按次序被接收到,如果次序不对,那么
表示出现了非正常的情况
所有其它信息 执行正常的缺口填补。
FIX会话消息
FIX会话消息涉及标准的使用机制,将在以下各节中予以介绍,并定义会话消息格式。
连接双方均可生成会话消息。
心跳消息(MsgType=0)
心跳消息用于监控通信连接的状况,并可确认是否接收到最后一条消息。
当 FIX连接的任何一方在([HeartBtInt] 秒,心跳间隔)时间内没有发送任何数据的
时候,将产生一个心跳消息并传送出去。当连接的任何一方在([HeartBtInt]+[合理传输
时间] )时间内都没有收到任何有关的数据的时候,将产生一个测试请求消息并传送出去。
如果在此之后的([HeartBtInt]+[合理传输时间] )时间内,仍没有收到心跳消息,那么
可认为此次连接失败,而且需开始实施修正操作。如果 HeartBtInt 被设置为零,那么将不
会定期生成心跳消息。并且不论 HeartBtInt 取值多少,任何一方都可发送测试请求消息,
接收方由此将强行生成心跳消息。
因对方的测试请求消息而产生的心跳(Heartbeats)消息应包括对方测试请求消息中
的测试请求标识符(TestReqID)。这有利于确定该心跳消息是响应测试请求而产生的,而不
是由于超时而产生的。
心跳消息格式见表 42:
表42 心跳(Heartbeat)
Tag 域名 必需 说明
标准消息头 Y MsgType = 0
112 TestReqID N 测试请求标识符,如是对测试请求而响应的心跳消息,
则应包含本域。
94
标准消息尾 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)的心跳作应答。
95
测试请求标识符(TestReqID)用以指明对方生成心跳消息是响应测试请求而非正常超
时引起的。对方发送心跳消息作为应答时,将测试请求标识符(TestReqID)包括在消息中。
任何字符串都可以用作测试请求标识符(TestReqID)(可使用时间戳(timestamp))。
测试请求消息格式见表 44:
表 44 测试请求(Test Request)
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)
注①:接收方按订单顺序进行消息处理是非常有必要的。例如,如果订单第 7 条消息被错过,而收到第 8
和第 9 条,那么应用方将忽略 8 和 9,然后要求重发送第 7-第 9,或者要求重新发送第 7-第 0(0 表现无
限)。在顺序混乱的状况中通常用后一方案恢复消息,因为当连接双方都同时试图尽快恢复缺口的状况下,
此种方法能更快地进行消息恢复。
96
Tag 域名 必需 说明
标准消息头 Y MsgType = 2
7 BeginSeqNo Y 起始消息序号
16 EndSeqNo Y 结束消息序号
标准消息尾 Y
会话拒绝消息(MsgType=3)
当接收方收到一条消息时,由于违反了会话机制而造成不能适当地处理该消息时,应该
发出会话拒绝消息。如:当收到一条消息,这条消息虽成功地通过了解密、校验和和正文长
度检验,但却被发现带有无效的数据(如:消息类型(MsgType)=&),此时应发出拒绝消息。
被拒绝的消息应该写入日志。
接收方应该忽略任何被歪曲,不能被解析,或数据完整性核对失败的消息。立即对下一
个有效的 FIX消息进行处理将会发现消息缺口,并且,将产生重发请求。在 FIX交换引擎内
应能够识别这种无限重发循环。
当产生和收到会话拒绝消息意味着出现了严重错误,可能发送方或接收方的应用存在逻
辑错误。
如果要重新传输拒绝消息,那么应赋予该消息一个新的消息序号,并设置可能重发标志
(PossResend)为 Y。
无论何时,本接口规定应在正文域里尽可能描述拒绝原因。
如果所收到的应用层消息遵循了会话机制,那么可以开始在业务层处理该消息。如果在
处理过程中,发现违反业务规则,那么应该发出业务层的“拒绝”消息。很多业务层的消息
都有指定的“拒绝”消息,此时这些消息可以发挥作用。其它无对应会话拒绝消息的,则均
可通过业务“拒绝”消息进行拒绝。
会话拒绝消息格式见表 46:
表 46 会话拒绝(Reject)
Tag 域名 必需 说明
标准消息头 Y MsgType = 3
45 RefSeqNum Y 关联消息序号,即被拒绝的消息序号
371 RefTagID N 相关错误域号
372 RefMsgType N 相关错误消息类型
373 SessionRejectReaso
n
N 会话拒绝原因编号
58 Text N 文本,可作解释拒绝的原因
354 EncodedTextLen N 编码文本长度
355 EncodedText N 编码文本(非 ASCII码)
97
标准消息尾 Y
会话拒绝原因见表 47:
表 47 会话拒绝原因
会话拒绝原因
0 = 存在无效的域号
1 = 该消息中必须的域丢失
2 = 该消息中出现未曾定义的域
3 = 未定义域号
4 = 域未赋值
5 = 域取值错误(范围溢出)
6 = 取值格式错误
7 = 解密错误
8 = 签名错误
9 = 公司标识符错误
10 = 发送时间精度错误
11 = 无效的消息类型
12 = XML验证错误(XML Validation error)
一三 = 同一域多次出现(非重复组)
14 = 有序的域出现次序错误
一五 = 重复组域次序错误
16 = 重复组重复次数错误
17 = 非 data数据域中出现域界定符<SOH>
序号重设消息(MsgType=4)
序号重设消息由发送方发出,用于告知接收方下一个消息的消息序号。序号重设消息有
两种模式:序号重设-缺口填补(SeqReset-Gap Fill);序号重设-重设(SeqReset
-Reset)。序号重设-重设通常在灾难恢复情况下使用。
当需要支持 24小时的连接并用序号重设标志(ResetSeqNumFlag)来建立新的一套消息
序号的时候,关于连接双方的序号重设时间和发起方另行确定,但序号重设的发起方不同于
登录过程的发起方。其处理过程如下:其中一方先发送测试请求(TestRequest)。在收到心
跳消息后,确认没有消息序号缺口后,发起方发送一条登录消息,在该消息中应附有设为 Y
的序号重设标志(ResetSeqNumFlag),并且它的消息序号(MsgSeqNum)为 1。接收方则应该
发送一条登录消息作回应,其中序号重设标志(ResetSeqNumFlag)为 Y,消息序号(MsgSeqNum)
为 1。此后,连接双方发送出的消息的消息序号应从 2 开始。需要注意的是一旦发起方发送
附有序号重设标志(ResetSeqNumFlag)的登录消息,那么接收人应服从该请求,并且,“昨
天”传送的消息不可能再重发。如果不遵守以上的处理规则应立即中断连接,并手工设置干
预。
序号重设消息两种模式表示:
98
当 GapFillFlag=Y时,该消息为序号重设-缺口填补(SeqReset-Gap Fill),当
GapFillFlag=N或没有设置时,该消息为序号重设-重设(SeqReset-Reset)。
序号重设消息能在下列情况下使用:
a) 在重新发送的处理过程中,发送方可以选择不发送某个消息(例如一个会话消息)。
序号重设-缺口填补(SeqReset-Gap Fill)能被用来填补那条消息。
a)
b) 在重新发送的处理过程中,有大量的会话消息不需要发送,这样产生的消息序号缺
口也可以由序号重设-缺口填补(SeqReset-Gap Fill)消息来填补。
b)
c) 在应用层失败的情况下,有必要通过发送序号重设-重设(SeqReset-Reset)在发
送和接收的连接双方进行强制消息序号同步。
c)
在任何情况下,序号重设消息都指定了 NewSeqNo(新的消息序号),并重设该值为下一
个将被传送消息的消息序号。
如果缺口填补标志(GapFillFlag)域被设置为 Y,那么消息序号(MsgSeqNum)域取值
应该遵循消息序号规则,即:序号重设-缺口填补(SeqReset-Gap Fill)消息的消息序号
(MsgSeqNum)应该对应缺口范围内第一条消息的消息序号,因为对方正准备接收这个消息
序号的消息。
序号重设-缺口填补(SeqReset-Gap Fill)只能增加消息序号。如果收到的序号重设-
缺口填补(SeqReset-Gap Fill)消息试图使下一个预期的消息序号变小,那么此消息应该
被拒绝接受,并被视作为错误。(注⑥)
如果缺口填补标志(GapFillFlag)域没有出现(或被设为 N),即为序号重设-重设
(SeqReset-Reset)消息,那么有可能是此序号重设-重设(SeqReset-Reset)消息的目的
是恢复混乱顺序的消息。此时消息头里的消息序号(MsgSeqNum)应该忽略。禁止在重发请
求的正常回应中使用序号重设-重设(SeqReset-Reset)(应使用序号重设-缺口填补
注①:如可能存在接收方发送多个重发请求(如先请求重发 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)是重复的,应该放弃处理。
99
(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
100
2020 年 8 月 27 日星期四 12:42:49
:4212:42: 时 42 分 12 时 42 分
49 秒 Aug. 27, 2027 August 202012:42:49 PM12:42:49
101
感谢阅读
多年企业管理咨询经验,专注为企业和个人提供精品
管理方案,企业诊断方案,制度参考模板等
欢迎您下载,均可自由编辑