JR
ICS 03.060
JR
A 11
备案号
中 华 人 民 共 和 国 ❹ 融 行 业 标 准
JR/T 0016—2014
代替 JR/0016-2004
期货交易数据交换协议
Futures trading data exchange protocol
2014 - 12 - 26 发布 2014 - 12 - 26 实施
中国证券监督管理委员会 发 布
目 次
前言 III
1 范围 1
2 规范性引用文件 1
3 术语和定义 1
3.1 有关期货的术语 1
3.2 有关交易的术语 2
3.3 有关报单的术语 4
4 体系结构 5
4.1 要求 5
4.2 通讯模式 5
4.3 通讯模式举例 6
4.4 通讯模式和数据流 10
5 报文格式 11
5.1 FTD 报文 11
5.2 FTDC 报文 13
5.3 主要业务运作机制 15
5.4 关键数据的说明 19
5.5 报文清单 25
6 安全性要求 34
6.1 身份认证 34
6.2 传送加密 34
6.3 权限设置 34
7 可靠性保障 34
7.1 防单点故障 35
7.2 网络断路检测 35
7.3 断点恢复 35
7.4 防止重发乱序机制 35
8 扩展方式 35
附录 A(规范性附录) 信息类型正文值 37
附录 B(规范性附录) 衍生类型明细 39
附录 C(规范性附录) 字段明细 42
附录 D(规范性附录) 数据域内容清单 49
附录 E(规范性附录) 报文内容清单 68
附录 F(规范性附录) FTD DTD 描述 74
附录 G(规范性附录) FTD XML 描述 78
前 言
本标准依据 GB/T1.1-2009 给出的规则起草。
本标准代替了《期货交易数据交换协议》(JR/T 0016-2004)。
本标准为《期货交易数据交换协议》(JR/T 0016-2004)的修订版本,与原文相比,主要有如下非编辑性修改:
——增加了规范性引用文件;
——在 3.1 章节增加了期权术语等的定义;
——在 3.2 章节增加了权利金、执行价等术语的定义;
——在 5.3 章节增加了报价、询价、期权行权等业务运作机制的描述;
——在 5.4 章节中增加了报价、询价等关键数据的说明;
——在 5.5 章节中增加了数据流回退的数据流管理报文及询价通知的广播模式报文;
——规范性附录 A 中增加了报价、询价、期权行权和汇率查询等信息类型值;
——规范性附录 B 中增加了询价方向和期权类型等衍生类型的定义;
——规范性附录 C 中增加了汇率单位、外汇价格、报价编号等字段明细;
——规范性附录 D 中增加了报价、询价、期权、汇率查询等数据域,并在合约数据域中增加了权利金及基础商品乘数等字段明细;
——规范性附录 E 中增加了报价、询价、期权、汇率查询及数据流回退等报文内容;
——资料性附录 G 中增加报价、询价、期权、汇率查询及数据流回退等内容的 XML 描述本标准由全国金融标准化技术委员会证券分技术委员会(SAC/TC180/SC4)提出。
本标准由全国金融标准化技术委员会证券分技术委员会(SAC/TC180/SC4)归口。
本标准起草单位:中国证券监督管理委员会信息中心、中国金融期货交易所、上海期货交易所、郑州商品交易所、大连商品交易所和中国期货保证金监控中心。
本标准主要起草人:xxx、xx、xxx、段其国、xxx、xxx、xxx、xx、xxx、xxx、xx、xxx、xxx。
《期货交易数据交换协议》(JR/T 0016-2004)的历次版本发布情况为:
——《期货交易数据交换协议》(JR/T 0016-2004)——2004年发布。
期货交易数据交换协议
1 范围
本标准规定了交易所、会员单位之间进行交易数据交换时所采用的数据格式、数据定义和数据内容;确立了该数据交换协议的体系结构、报文格式、数据字典、运作机制等内容。
本标准适用于交易所系统和会员系统之间进行交易所需的数据交换和通讯。本标准也可以适用于交易所内部、会员内部、交易所之间或者会员之间的数据交换和通讯。
2 规范性引用文件
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅所注日期的版本适用于本文件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件
GB/T 2659 世界各国和地区名称代码
GB/T 12406 表示货币和资金的代码
GB/T 23696-2009 证券和相关金融工具 交易所和市场识别码
3 术语和定义
下列术语和定义适用于本文件。
3.1 有关期货的术语 3.1.1
期货合约 futures contract
由交易所统一制定的、规定在将来某一特定的时间和地点交割一定数量和质量商品的标准化合约。本标准内有时简称为合约。
注:除了价格、交易双方以外,期货合约的所有其他要素都已经确定了。
3.1.2
期货交易所 futures exchange
根据有关规定,进行期货合约交易的统一场所。
3.1.3
会员 member
在交易所进行期货交易、交割、结算和资金管理的基本单位。
注:交易所实行会员制管理,只有会员才有权在交易所直接从事期货交易。
3.1.4
交易员 trader
会员在某个交易所从事期货交易时的代表。
注:一个会员在一个交易所可以有若干个交易员,每个交易员的权限可能不完全相同。
3.1.5
客户 client
进行期货交易的个人或者机构实体。
注:客户要从事期货交易,必须通过有资格的会员进行,在会员公司开户,由会员代理客户从事期货交易。交易所对会员结算,会员对客户结算。一个客户可以通过该会员有报单权限的任何一个交易员进行报单申请。
3.1.6
投机 speculation
利用市场出现的价差进行买卖从中获得利润的交易行为。
3.1.7
套期保值 hedge
买入(卖出)与现货市场数量相当、但交易方向相反的期货合约,以期在未来某一时间通过卖出(买入)期货合约来补偿现货市场价格变动所带来的实际价格风险的交易行为。
3.1.8
期权合约 option contract
一方授予另一方一种权利,使买方有权(但无责任)以特定的价格在特定的时间内购买(买回)或出售(卖出)一种金融资产的合同。在这个固定日期之后,这个期权就不再存在。
3.1.9
内在价值 intrinsic value
期权处于价内状态,就称具有内在价值。内在价值根据标的资产的市价与期权行权价之差计算得出。
3.1.10
时间价值 time value
这是权利金的组成部分,取决于期权距离到期的时间及标的价格的波动程度。
3.1.11
认购期权 call option
买卖双方之间签订的一项合同,其中买方支付权利金获得权利而不是义务以敲定价格在到期日及之前来购买特定的标的资产。卖方获得权利金有义务按照买方选择行权的敲定价格交付或者出售标的资产。
3.1.12
认沽期权 put option
期权合同赋予持有者权利而不是义务在特定时间以敲定价格来出售特定数量的标的资产。
3.1.13
做市商 market maker
指金融市场上的一些独立的交易商,不断报出买价和卖价,接受投资者的交易指令,为投资者承担某一只证券或者期货合约的买进和卖出,买卖双方不需要等待交易对手出现,只要有做市商出面承担交易对手方即可达成交易。
3.2 有关交易的术语
3.2.1
报单 order
会员或客户对某期货合约的申买申卖委托请求。
注:报单有许多种类,每个报单还可以设置不同的属性,以限定其成交的方式。这些种类和属性的定义见 3.3。
3.2.2
成交 match
按交易所配对撮合原则完成的交易。
注:一个成交是针对买卖双方的,与两个报单相关。
3.2.3
成交行情 match quotation
由交易所发布的,让各个会员和客户了解目前合约成交情况的信息。
3.2.4
报单行情 order quotation
由交易所发布的,让各个会员和客户了解目前合约报单队列情况的信息。
3.2.5
交易状态 trade status
指交易所规定的对不同的交易方式进行区分的状态值。
注:各个交易所可以根据自己的需要,定义自己在不同时段的交易状态。目前的交易状态一般包括开盘集合竞价、连续交易、收盘集合竞价、暂停交易、停止交易等。
3.2.6
交易所系统 exchange system
由交易所提供的可以接收会员的各种业务请求,并发出适当的响应的计算机系统。
3.2.7
会员系统 member system
由会员提供的可以向交易所发出各种业务请求,并且能够恰当地解释所得到响应的计算机系统。
3.2.8
交易所端 exchange side
指本协议连接的两端中,属于交易所系统的一端。
3.2.9
会员端 member side
指本协议连接的两端中,属于会员系统的一端。
3.2.10
连续交易 continuous trade
指交易所提供的,在接收报单后,立即按照当前适当的价格进行成交的交易模式。
3.2.11
集合竞价 auction
指交易所提供的,在接收报单后,不立即进行交易,而是在接收所有报单后,根据总体的报单情况,按照最大成交量、最小剩余量原则确定了成交价格后,再完成成交的交易模式。
3.2.12
保证❹ margin
客户按照规定标准交纳的,用于结算和保证履约的资金。
注:保证金的计算方式由清算机构决定。
3.2.13
熔断 fuse
在交易过程中,市场波动过大,满足某个特定条件时,执行某些特定操作以管理风险的业务过程。
注:这里的特定条件一般是指成交价格升高或降低超过特定的幅度。特定操作一般是指停止交易、暂停交易、重新进行集合竞价等。
3.2.14
权利❹ premium
指买进期权合约所需支付的代价,可视为由期权的内在价值及时间价值构成。
3.2.15
执行价格 exerice price
又叫行权价或者行使价,是期权合约中规定的期权持有者买或卖标的资产的价格。行权价就是敲定价格。
3.3 有关报单的术语
3.3.1
限价报单 limited order
带有限定价格的报单。
注:只有在限定价格或更好价格时才执行。
3.3.2
市价报单 market order
不带有价格限定,按照市场中存在的最好的几个价格买入或者卖出的报单。
注:不能成交的部分将被取消。
3.3.3
止损市价报单 market stop order
在目前的市场价格达到指定的止损价格时,才会被激活,变成市价报单的报单。
3.3.4
止损限价报单 limited stop order
在目前的市场价格达到指定的止损价格时,才会被激活,变成限价报单的报单。
3.3.5
市价转限价报单 market to limited order
按照市价报单的方式成交,但是其不能成交的部分保留在报单队列中,变成限价报单的报单。
3.3.6
最好价格报单 best price order
不带有价格限定,按照市场中存在的最好的一个价格买入或者卖出的报单。
注:不能成交的部分将被取消。
3.3.7
均价报单 average price order
限定了最终成交的平均价格的报单。
注:交易所系统将尝试从市场上最好价格开始来满足报单的全部数量,直到全部成交、找不到对手方或者成交的平均价已经达到限定的均价,再做一个成交则均价的限制就不能满足。剩余未成交部分将被取消。
3.3.8
即时全部成交 fill or kill
表示要求立即全部成交,否则就全部取消的报单属性。
3.3.9
即时部分成交 fill and kill
表示要求立即成交,对于无法满足的部分予以取消的报单属性。
3.3.10
当日有效 good for day
表示只在当日的交易时段有效,一旦当前交易时段结束,自动取消的报单属性。
3.3.11
取消前有效 good till cancel
表示将一直有效,直到交易员取消这个报单,或者该合约本身到期的报单属性。
3.3.12
指定日期前有效 good till date
表示将一直有效,直到指定日期、交易员取消这个报单,或者该合约本身到期的报单属性。
3.3.13
最小成交量 minimum volume
表示要求满足成交量达到这个最小成交量,否则就取消的报单属性。
注:本章定义的所有术语都是针对期货交易的,不包含技术名词,以及本标准自己使用的名词。这些名词的使用,如果可能会产生歧义,都将在本标准中使用时专门进行定义或区分。
4 体系结构
4.1 要求
本标准的体系结构应建立在一个可靠的、有连接的、基于流的广域网络协议的基础之上。该广域网络协议应当:
具备点对点的寻址能力
能够进行连接和断开操作
能够有序地进行信息内容的传送
具有透明的流分割传送机制
具有这些特征的广域网络协议包括但是不限于TCP/IP、X.25、ATM。本标准也可以基于具有某些安全特性的可靠连接之上,例如SSL(Secure Socket Layer)等。
4.2 通讯模式
FTD 中的所有通讯都会基于某个通讯模式。通讯模式实际上就是说明通讯双方协同工作的方式。
FTD 涉及的通讯模式共有三种:
对话通讯模式
私有通讯模式
广播通讯模式
对话通讯模式是指由会员端主动发起的通讯请求。该请求被交易所端接收和处理,并给予响应。例如报单、查询等。这种通讯模式与普通的客户/服务器模式相同。
私有通讯模式是指交易所端主动向某个特定的会员发出的信息。例如成交回报等。
广播通讯模式是指交易所端主动向市场中的所有会员都发出相同的信息。例如市场公告、行情等。通讯模式和网络的连接不一定存在简单的一对一的关系。也就是说,一个网络连接中可能传送多种
不同通讯模式的报文,一种通讯模式的报文也可以在多个不同的连接中传送。通讯模式与连接的关系应由各个交易所决定。
无论哪种通讯模式,其通讯过程都如图 1 所示:
会员系统
交易所系统
连接请求
连接确认
身份认证请求
身份认证响应
发送请求(如果在对话模式下)
给出响应(如果在对话模式下)
发出私有信息(如果在私有模式下)
发出市场公告(如果在广播模式下)
断开请求
断开确认
图1 各通讯模式的工作过程(以会员交易所间通讯为例)
也就是说,无论哪种通讯模式,都应先由会员系统向交易所系统发出连接请求,在得到连接确认后发出身份认证请求。会员系统得到正确的身份认证响应后,开始执行上述通讯模式中的报文传送。报文传送完成以后,一般也是由会员端发出断开请求,在得到交易所系统的断开确认响应后,才真正断开物理连接。
还有两种特殊的断开连接的情况如下:
网络发生故障时,直接发生断开连接
交易所根据实际情况,要求所有的或者指定的交易员断开连接。此时交易所系统将主动发出强制退出报文,然后主动断开物理连接
4.3 通讯模式举例
下面用几个例子说明在网络连接中通讯模式的工作方法。
如果采用每种模式各自一个连接的方式,那么典型的对话模式连接通讯将如图2所示:
连接请求
连接确认
身份认证请求
身份认证响应
发出委托
委托确认
发出查询
查询响应
断开请求
断开确认
图2 对话模式连接举例(以会员交易所间通讯为例)
典型的私有模式连接通讯将如图3所示:
会员系统
交易所系统
连接请求
连接确认
身份认证请求
身份认证响应
成交回报
断开请求
断开确认
图3 私有模式连接举例(以会员交易所间通讯为例)
典型的广播模式连接通讯将如图4所示:
连接请求
连接确认
身份认证请求
身份认证响应
市场行情
市场公告
断开请求
断开确认
图4 广播模式连接举例(以会员交易所间通讯为例)
如果在一个连接中同时运行三个模式,那么典型的混合模式连接通讯将如图5所示:
会员系统
交易所系统
连接请求
连接确认
身份认证请求
身份认证响应
发出委托(对话模式)
委托确认(对话模式)
成交回报(私有模式)
市场行情(广播模式)
断开请求
断开确认
图5 混合模式连接举例(以会员交易所间通讯为例)
上述通讯模式的描述是针对将FTD协议使用在会员系统和交易所系统之间进行通讯的情况。如果该协议被使用在其他情况下,例如会员内部、交易所内部或者交易所之间,那么这些通讯模式中的会员系统和交易所系统就相当于客户系统和服务器系统。
4.4 通讯模式和数据流
在本标准中需要区分的两个重要概念是通讯模式和数据流。数据流表示的是一个单向或双向的,连续的,没有重复和遗漏的数据报文的序列,它可以完成特定的功能。通讯模式是指一个数据流进行互动的工作模式。每个数据流应该对应一个通讯模式,但是一个通讯模式下可能有多个数据流。
一种最简单的使用方法是为上述每种通讯模式构造一种数据流,产生了对话流、私有流和广播流。也可以使用其他方法,在一个通讯模式下建立多种数据流,例如在对话通讯模式下建立两个流:交易流和查询流;在广播通讯模式下建立两个流,通知流和行情流。本标准只规定各个报文工作在哪个通讯模式下,但是不规定具体的数据流划分方法,而是将这个划分方法留给各个交易所自行决定。
不同的通信模式有着不同的数据流管理原则。在使用对话模式时,一个数据流就是一个连接的过程,在这个连接内将保障各个信息的完整性和有序性。但是,当连接断开后,重新连接将开始一个新的数据流,这个数据流和原来的数据流没有直接的关系。如果会员系统在提交报单以后,没有收到报单确认以前,连接被断开,会员端不能假设此报单已经被接收,也不能假设其没有被接收。再次连接后,即使该报单已经被接收,会员系统也不能在这个连接中收到该报单的确认信息。会员系统的解决办法有三种:可以进行一次查询;或者使用相同的本地报单单号再次提交该报单,因为如果该报单已经被接收,那么交易所系统会返回一个重复报单的信息;另一种方法是利用在私有模式中的报单确认信息,确定交易所系统是否已经收到报单。
对于私有模式和广播模式,一个数据流对应在一个交易时段内(一般为一个交易日)的完成某项功能的所有连接。也就是说,会员在重新连接时,会从上次断开连接的地方继续接收下去,而不会从头开始,除非会员强制指定。每个会员或者交易员都有自己的私有模式数据流,该会员或交易员只能接收自己私有模式下的信息。交易所的每个市场会有一个广播模式的数据流,如果交易所只有一个市场,或者交易所不区分多个市场的概念,那么整个系统就只有一个广播模式的数据流。
5 报文格式
5.1 FTD 报文
FTD报文由报头、扩充报头和信息正文三个部分组成。如图6所示。报头描述数据报文的整体信息;扩充报头提供链路管理功能;信息正文是具体的各个域的内容。
FTD报头 (4字节) | FTD扩充报头 (可选,最多127字节) | FTD信息正文 (可选,最多4096字节) |
图6 FTD 报文结构
5.1.1 FTD 报头
FTD报头由四个字节组成,如图7所示:
字节0 | 字节1 | 字节2 | 字节3 |
报文类型 | 扩充长度 | 信息正文长度 |
报文类型,见表 1
图7 FTD 报头结构
扩充长度:扩充报头字节长度。如果扩充长度等于 0,代表没有扩充报头,紧跟在报头后面的是信息正文
信息正文长度:整个报文中信息正文的字节长度。采用网络顺序,前一字节是高位字节,后一字节是低位字节。如果信息正文长度等于 0,代表此报文没有信息正文,是链路管理报文。注意:信息正文长度不包括报头和扩充报头的长度
表1 FTD 报文类型表
报文类型 | 数值 | 描述 |
FTDTypeNone | 0x00 | 此报文不具有任何意义,一般用于心跳。 |
FTDTypeFTDC | 0x01 | 信息正文中是正常的域数据内容。 |
FTDTypeCompressed | 0x02 | 信息正文中包括的是压缩数据,解压缩后再处理。 |
注:交易所系统和会员系统在收到非上述报文类型的报文时,可以将其丢弃,不做任何处理。 |
由于回送给会员的响应信息可能非常多(例如查询命令),为了节约网络传送带宽,交易所服务器可以把一个或多个FTD数据报文压缩后存放在另一个FTD信息正文中,会员系统在接收后,应当将其解压缩后作为一个或多个普通的FTD报文处理。
5.1.2 FTD 扩充报头
扩充报头最长127个字节,由一系列的按照图8规定的标记组成。
字节0 | 字节1 | 字节2,... |
标记类型 | 标记长度 | 数据(按照标记长度指定) |
图8 FTD 扩充报头标记结构
标记类型及其内容描述的定义见表2。如果没有标记数据,则标记长度等于0。
表2 标记类型说明
标记类型 | 数值 | 长度 | 描述 |
FTDTagNone | 0x00 | 0 | 丢弃不处理此标记。 |
FTDTagDatetime | 0x01 | 4 | 时间戳。Unix 格式时间HHMMSS,网络序。 |
FTDTagCompressMethod | 0x02 | 1 | 信息正文压缩方法。现在只支持一种压缩方法。0 表示 没有压缩;1 表示LZ 压缩。 |
FTDTagSessionState | 0x03 | 1 | 发送端状态。 0:未知状态;1:未登录;2:已登录,但在同步数据; 3:同步状态。 |
FTDTagKeepAlive | 0x04 | 0 | 发送端发送心跳信息,表示还在正常工作。 |
FTDTagTradedate | 0x05 | 4 | 交易所当前交易日日期。Unix 格式时间 YYYYMMDD,网 络序。 |
FTDTagTarget | 0x06 | 2 | 说明报文的目标,使用两个字母,表示目标的交易所。 如果要发送的目标就是接收方所处于的交易所,那么就不需要使用此项 |
由于系统功能的扩展,交易所可以增加扩充标记的类型。会员端系统如果接收到无法识别的标记,只需将其简单丢弃,不做其他处理。
5.1.3 FTD 信息正文
FTD信息正文可能是以下两种内容:
未压缩过的 FTDC 报文
压缩后的 FTDC 报文
FTD 信息正文的长度由 FTD 报头中的信息正文长度字段确定。
5.2 FTDC 报文
FTDC报文是FTD报文中的主要内容,它封装在FTD报文中,其结构如图9所示:
FTD报头和扩充报头 >=4字节 | FTD信息正文 | |||
FTDC报头 16字节 | FTDC信息正文 |
图9 FTDC 报文结构
FTDC报文包括16个字节的FTDC报头和为数不等的数据域组成的FTDC信息正文。整个FTDC报文长度不能超过4096字节(4K)。报文中所有传送的二进制数据全部采用网络序。
5.2.1 FTDC 报头
FTDC报头有16个字节,表示FTD信息正文的类型、长度等控制信息,长度与FTD报头中长度除去扩充报头和FTDC报头长度不一致时,说明报文格式错误,直接丢弃。其具体定义见表3。
表3 FTDC 报头说明
报头数据项 | 名称 | 字节长度 | 描述 |
Version | 版本号 | 1 | 二进制无符号整数。目前版本为 2 |
TransactionId(TID) | FTD 信息正文类型 | 4 | 二进制无符号整数。 |
Chain | 报文链 | 1 | ASCII 码字符。 |
SequenceSeries | 序列类别号 | 2 | 二进制无符号短整数。 |
SequenceNumber(SeqNo) | 序列号 | 4 | 二进制无符号整数。 |
FieldCount | 数据域数量 | 2 | 二进制无符号短整数。 |
FTDCContentLength | FTDC 信息正文长度 | 2 | 二进制无符号短整数。以字节为单位。 |
5.2.1.1 信息正文类型
信息正文类型TID是二进制整数,表示信息正文的类型。这些类型的定义见附录A。
5.2.1.2 报文链
在一个报文中,可能需要放入多个数据域。特别是对于某些报文,数据域的个数是不确定的,例如许多查询响应报文,都有这样的情况。当域的数量充分多时,就会超过报文总长度的限制,也就是超过了4096个字节,本标准把这种报文称为长报文。一个长报文需要分割成多个报文发送。此时需要一种机制,让报文的接收方能够识别收到的报文是一个被分割成多块的长报文的一部分。因此,我们就使用了报文链的概念。报文链用于说明本报文是长报文中的哪一部分。一个长报文被分割成多个报文后,其序列号是相同的。具体的报文链定义见表4。
表4 报文链定义
报文链 | 描述 |
‘S’ | 报文链中只有单个FTDC 报文。 |
‘F’ | 报文链的第一个FTDC 报文。 |
‘C’ | 报文链的中间FTDC 报文。 |
‘L’ | 报文链的最后一个FTDC 报文。 |
5.2.1.3 序列类别号和序列号
序列类别号和序列号是用于保障交易所和会员之间信息的完整性和有序性而定义的两个字段。使用这两个字段,应当达到如下最终效果:
一个数据流中任何发送方发出的信息,如果发生遗漏,那么接收方应当在收到其后面的信息时就能立即识别出信息遗漏。此时,接收方可以采取直接断开线路或者要求重发的措施
一个数据流中任何发送方发出的信息,如果发生错序,那么接收方应当在收到第 1 个错序的报文时就能立即识别信息错序。此时,接收方可以采取直接断开线路或者要求重发的措施
不同的数据流之间的报文顺序是各自独立,互不相关的
序列类别号表示了一个具体的数据流,这个数据流使用某一种通讯模式,也就是说这种通讯模式中的所有报文,无论上行还是下行,都应当使用这个序列类别号,但是不包括连接、登录和断开报文。在一个序列类别号下,一个方向的信息传送将用序列号进行编号,第 1 个报文的序列号为 1,后面的逐一增加。
对于对话模式,所有的请求由会员端发出,其序列类别号应设置为 0。完成登录后的第一个请求,其序列号为 1,其后逐一递增不能重复。交易所系统如果发现收到的序列号中有间歇,说明通讯或者应用程序本身出现故障,将主动断开与会员的连接且不发送提示报文。在此模式下,序列号由会员端确定。交易所端在给出每个响应时,将使用收到请求的同一序列号。
对于广播模式,只有从交易所发出的信息,所以不存在上行信息序列号的问题。对于下行的数据,其序列类别号应当对所有会员都是相同的,其取值范围是大于等于 1 的整数,具体数值由各个交易所确定。交易所发给会员登录响应后的第 1 个广播报文,其序列号为 1,以后也逐一增加。
私有模式与广播模式基本相同,但是其下行的序列类别号对于每个会员是不同的。每个会员应当唯一对应一个私有模式的序列类别号,对应方式由各个交易所自行决定。其取值范围也是大于等于 1 的整数。
对于有关登录和断开的报文,无论是请求还是响应,其序列类别号和序列号一律为 0。如果在一个连接中有多个通讯模式,各通讯模式也是各自遵守上述序列号规则。
在发生断路时,会员可以重新进行连接和登录。对于对话模式,原来的通讯不需要恢复,所以新的序列号重新从 1 开始。但是对于私有模式和广播模式,会员在重新进行连接和登录时,需要说明上次收到的该序列类别号对应的最后一个序列号,这样交易所系统就可以从下一个序列号的地方继续发送后面的报文。也就是说,私有模式和广播模式的序列号在一个交易时段(一般就是一个交易日)内是唯一的,而对话模式的序列号只在一个连接内是唯一的。
5.2.1.4 数据域数量
FTDC 的信息正文包括顺序排列的数据域,数据域数量字段说明了本报文中数据域的多少。
5.2.1.5 FTDC 信息正文长度
FTDC信息正文长度字段表示FTDC信息正文的长度,不包括FTDC报头的16个字节。
5.2.2 FTDC 信息正文
FTDC信息正文由一系列的自我描述的数据域。数据域包括一个数据域编码(FieldId, FID),内容长度(FIDLength)和内容(DataItem)。其格式如表5所示:
表5 数据域格式
数据域项目 | 字节长度 | 描述 |
FieldId(FID) | 4 | 数据域标识。类型为二进制整数。 |
FieldLength(FIDLength) | 2 | 内容字节长度,不包括 FID 和FIDLength。网络序短整数。 |
DataItem | FieldLength | 内容 |
数据域分为基本数据域和补充数据域。基本数据域是必选的,补充数据域可以根据需要选用。
数据域中的内容是多个字段,字段有必填字段和非必填字段。所有未使用的字段应该用相应类型的初始化值填充。
在数据域中的所有字段,都有一个自己的类型。类型分为基本类型和衍生类型。目前支持的基本类型如表6所示:
表6 基本类型表
基本类型名 | 类型说明 | 长度 | 精度 | 对齐 | 初始化 |
FTDCharType | 单字节类型 | 1 | 二进制 | 0 | |
FTDFloatType<a,b> | 浮点数类型,ASCII 方式存放 | a | b | 右对齐,前段用 0 补足,如果 为负,第一位为'-' | 0.0 |
FTDIntType | 四字节整数类型 | 4 | 二进制,高位在前 | 0 | |
FTDNumberType<a> | 整数类型,ASCII 方式存放 | a | 右对齐,前段用 0 补足,如果 为负,第一位为'-' | 0 | |
FTDStringType<a> | 字符串类型 | a | 左对齐,后段用空格补足 | 空格 | |
FTDWordType | 双字节整数类型 | 2 | 二进制,高位在前 | 0 |
所有的衍生类型都是某个基本类型的实例,这些衍生类型的定义见附录B。所有使用这些基本类型和衍生类型定义的字段见附录C。
所有使用这些字段组合形成的数据域的定义见附录D。所有使用这些数据域组合形成的报文的定义见附录E。
5.3 主要业务运作机制
5.3.1 连接管理机制
5.3.1.1 登录机制
本标准是基于有连接的通讯机制上的。一个连接上可能有多个数据流。会员系统首先需要连接到交易所的系统,然后针对每个数据流,分别登录。也就是说,在交易员登录请求 XxxXxxxXxxxx 报文中,需要说明要登录的数据流名称。目前已经定义的数据流名称依赖于每个通讯模式一个数据流的假设。如果交易所定义其他数据流,则需要扩展这个数据流名称。
在通过认证后,交易所将和会员在这个连接中使用此数据流通讯。在一个连接中,可以进行多次登录请求,如果这些登录请求申请的是不同的数据流,那么这个连接就可以提供多个数据流的信息和服务;如果这些登录请求申请的是相同的数据流,那么不影响这个连接提供的信息和服务。一个连接中存在的多个数据流应该是给同一个会员的。
对于私有模式和广播模式,如果交易员端曾经收到过该交易时段的部分信息,那么就需要同时在 ReqUserLogin 报文中给出发送信息起始说明域 DisseminationstartField,用于通知交易所从哪个信息开始继续发送。这样就可以保障跨连接的数据流得到保持。
5.3.1.2 登录退出机制
在会员使用交易员登录退出 ReqUserLogout 报文,退出登录时,也需要同样指定退出的是哪个数据流。即使退出了所有的数据流,也不一定会断开连接。在正常情况下,只有会员会主动断开连接。会员也可以不发送登录退出报文,直接断开连接,这会相当于自动退出所有的数据流。交易所希望断开连接时,可以选择先发送一个强制退出 ForceExit 报文,通知会员原因,然后断开连接,也可以直接断开。强制退出意味着所有的数据流全部断开。
5.3.1.3 心跳机制
在连接已经建立的情况下,如果任何一侧在相当长的时间内,没有需要向另一侧发送任何报文,那么应该定期发送心跳报文。心跳报文就是报文类型为 FTDTypeNone 的,不含有 FTDC 的 FTD 报文,而且在扩充报头内有 FTDTagKeepAlive 项。心跳间隔时间的长度将由交易所决定,或者利用登录报文中的字段进行协商决定。任何一侧,在更长的一段时间内,没有收到任何有意义的报文和心跳报文时,将可以直接断开连接,也就相当于退出了所有的数据流。
5.3.2 报单和成交机制
5.3.2.1 报单录入和成交的正常过程
报单录入和成交的正常过程将如下所示:
a) 会员通过对话模式发出报单录入 ReqOrderInsert 报文
b) 交易所在确认此报文后,给予报单应答RspOrderInsert 报文
c) 交易所在私有模式中发出报单确认 OrderConfirmation 报文
d) 交易所在广播模式中发出增量报单行情MarketOrderIncData 报文(这是可选步骤)
e) 在发生成交后,交易所在私有模式中向双方分别发出单边成交回报 TradeInsertSingle 报文
f) 交易所在广播模式中发出增量成交行情MarketMatchIncData 报文(这是可选步骤)
5.3.2.2 报单操作的正常过程
报单操作的正常过程将如下所示:
a) 会员通过对话模式发出报单操作请求 ReqOrderAction 报文
b) 交易所在确认此报文后,给予报单操作应答 RspOrderAction 报文
c) 交易所在私有模式中发出报单确认 OrderConfirmation 报文
d) 交易所在广播模式中发出增量报单行情MarketOrderIncData 报文(这是可选步骤)
5.3.2.3 立即执行的报单录入和成交过程
如果录入的报单是属于立即执行,不进行排队的,那么其报单录入和成交的正常过程将如下所示:
a) 会员通过对话模式发出报单录入 ReqOrderInsert 报文
b) 交易所在确认此报文后,给予报单应答RspOrderInsert 报文
c) 在发生成交后,交易所在私有模式中向双方分别发出单边成交回报 TradeInsertSingle 报文
d) 交易所在广播模式中发出增量成交行情MarketMatchIncData 报文(这是可选步骤)
e) 交易所在广播模式中发出增量报单行情MarketOrderIncData 报文(这是可选步骤)
f) 反复进行上述 3、4、5 三个步骤,直到无法成交为止
g) 交易所在私有模式中发出报单确认 OrderConfirmation 报文
5.3.2.4 报价录入的正常过程
报价录入的正常过程将如下所示:
a) 会员通过对话模式发出报价录入 ReqQuoteInsert 报文
b) 交易所在确认此报文后,给予报价应答RspQuoteInsert 报文
c) 交易所在私有模式中发出报价确认 QuoteConfirmation 报文
d) 询价的正常过程
询价的正常过程将如下所示:
a) 会员通过对话模式发出询价请求 ReqEnquireQuote 报文
b) 交易所在确认此报文后,给予询价应答RspEnquireQuote 报文
c) 交易所在广播模式中发出询价通知 EnquireQuoteNotify 报文
5.3.2.5 期权执行宣告的正常过程
期权执行宣告的正常过程将如下所示:
a) 会员通过对话模式发出期权执行宣告请求 XxxXxxxXxxxxXxxxxx 报文
b) 交易所在确认此报文后,给予期权执行宣告应答RspExecOrderInsert 报文
c) 交易所在私有模式中发出期权执行宣告回报 ExecOrder 报文
5.3.2.6 期权执行宣告操作的正常过程
期权执行宣告操作的正常过程将如下所示:
a) 会员通过对话模式发出期权执行宣告操作请求 XxxXxxxXxxxxXxxxxx 报文
b) 交易所在确认此报文后,给予期权执行宣告操作应答RspExecOrderAction 报文
c) 交易所在私有模式中发出期权执行宣告回报 ExecOrder 报文
5.3.3 行情机制
交易所提供的行情信息,可以分为多个层次。交易所可以自行决定提供哪些类型的行情。这些层次包括:
成交行情
报单行情
5.3.3.1 正常接收
5.3.3.1.1 成交行情
如果交易所提供成交行情,又有两种实现机制:完全成交行情机制和增量成交行情机制。
如果采用完全成交行情机制, 在正常情况下, 交易所需要在广播模式中发送成交行情 MarketMatchData 报文。在该报文中,有两种可能的域,分别是成交行情域 MarketMatchDataField 和成交行情变化域 MarketMatchDataChgField。成交行情域是对一个合约当前行情的完整描述,而成交行情变化域提供的是一个合约行情信息中不断变化的信息。一般情况下,交易所需要在一些重要的时刻,例如开市、收市等,发送成交行情域的信息,而在平时发送成交行情变化域。会员在收到这些信息后,将能够立即得到当前的完全行情信息。发送成交行情报文的时间,也可以由各个交易所自行决定,例如每隔固定的时间发送,或者每当发生变化时发送等。
如果交易所提供的成交行情采用增量成交行情机制,在正常情况下,交易所也需要在广播模式中发出一些成交行情 MarketMatchData 报文,特别是在开市、收市这样的重要时刻。而在平时,交易所将发出 增 量 成 交 行 情 MarketMatchIncData 报 文 , 这 个 报 文 中 含 有 的 每 个 增 量 成 交 行 情 域 MarketMatchIncField,说明了一个或多个相同合约、相同价格、相同成交双方性质的成交信息。如果会
员已经拥有完整的当前成交行情信息,那么根据收到的这个增量成交行情信息,就可以计算出新的最新价、最高价、最低价、成交数量等信息。根据成交双方的性质(指同为开仓、同为平仓或不同),就可以计算出目前的持仓信息,这样,会员就可以继续拥有完整的当前成交行情信息。而初始的成交行情信息应当通过成交行情报文发给会员。增量成交行情报文的发送时机可以是固定时间间隔,也可以是每当发生变化时,这将由交易所自行决定。
5.3.3.1.2 报单行情
如果交易所提供报单行情, 在正常情况下, 交易所就需要在广播模式中发出增量报单行情 MarketOrderIncData 报文和增量成交行情 MarketMatchIncData 报文。在初始时,我们知道报单队列中应当是空的(对于前一个交易时段遗留到本交易时段的报单,需要在后面再次发给会员)。假设我们知道当前的完整报单队列信息(不包括报单来源方面的信息),那么在收到的增量报单行情报文时,可以得到在某个合约某个价格某个买卖方向上报单发生的变化,会员就可以计算出新的报单行情。这里的变化可能因为新增报单造成的增加,可能因为取消报单造成的减少,但是不包括由于成交造成的减少。对于由于成交造成的减少,会员可以通过接收增量成交行情报文,计算出报单量减少的情况,保证报单行情的准确性。在增量报单行情报文中,可以设定所提供数量的类型,即是绝对量还是增量。如果是绝对量,会员可以直接替换相关的数量,如果是增量,就需要对原有的数量进行加减。交易所可以选择在发生一些重要变化的时刻,例如开市,发出含有绝对数量的增量报单行情报文。交易所在提供报单行情时,还可以选择完全报单行情还是部分报单行情。如果选择部分报单行情,那么交易所可以只对最接近行情水面的若干个价格,发出绝对数量的报单行情,会员在收到这些信息后,就可以得出最优的几个买价和卖价的信息。发送增量报单行情和增量成交行情的时机,可以是固定的时间间隔,也可以是每当发生变化时,这将由交易所自行决定。
5.3.3.2 恢复接收
行情机制中另一个重要方面是在失去联络一段时间后,如何恢复接收行情。在恢复接收行情时,会员应当有两个选择,是恢复所有的历史行情,还是快速恢复当前的行情。交易所应当同时提供足够的机制,允许会员进行上面的选择。
5.3.3.2.1 完全恢复接收
无论采用何种行情机制,如果会员希望恢复所有的历史行情,可以使用广播模式的登录中,使用发送信息起始说明域 DisseminationstartField,告知交易所希望收到的下一个报文的序列号,这样就可以得到所有遗漏的报文,恢复整个历史行情。
5.3.3.2.2 快速恢复接收
在使用完全成交行情或者增量成交行情机制的情况下,如果会员希望快速恢复当前行情,可以先通过对话模式,发出成交行情查询 ReqQryMarketMatchData 报文。通过得到的响应,迅速得到目前的最新成交行情,同时得到该行情对应的广播模式序列号。然后在广播模式中登录时,在发送信息起始说明域 DisseminationstartField,使用收到的广播模式序列号加 1,让交易所从这个报文开始发送所有的报文。这样,目前行情迅速恢复,未来的行情将正常获得。
在使用报单行情的情况下,如果会员希望快速恢复当前行情,可以先通过对话模式,发出报单行情查询 ReqQryMarketOrderData 报文,迅速得到目前的最新报单行情,同时得到该行情对应的广播模式序列号。然后在广播模式中登录时,在发送信息起始说明域 DisseminationstartField,使用收到的广播模式序列号加 1,让交易所从这个报文开始发送所有的报文。这样,目前行情迅速恢复,未来的行情将正常获得。
一个需要特别考虑的情况是交易所同时提供成交行情和报单行情的快速恢复机制。在这种情况下,会员发出的成交行情查询ReqQryMarketMatchData 报文和报单行情查询ReqQryMarketOrderData 报文得到的响应,可能对应的时间点有所不同,这样得到的广播模式序列号也不同。在这种情况下,会员在广播模式中登录时,在发送信息起始说明域 DisseminationstartField,应当使用收到的较小的广播模式序列号加 1,让交易所从这个报文开始发送所有的报文。当会员收到的广播模式报文达到了较大的广播模式序列号时,会员就得到了足够的恢复当前行情信息了。在这个阶段,会员系统具体的处理方式如下:
如果先查成交,后查报单
收到增量成交行情时,更新当前成交行情,不更新当前报单行情收到增量报单行情时,将其抛弃
如果先查报单,后查成交
收到增量成交行情时,更新当前报单行情,不更新当前成交行情收到增量报单行情时,更新当前报单行情
5.4 关键数据的说明
以下对各个关键的数据域中的字段进行说明。其明确定义以附录C为准。
5.4.1 持仓
5.4.1.1 定义持仓数据时的假设
会员或者客户的持仓说明基于下列的假设:
所有的持仓量都分为套期保值量和投机量
会员或者客户可以同时拥有一个合约的多仓和空仓
平仓需要区分平今日仓和昨日仓
5.4.1.2 部分使用持仓数据的方法
对于不使用上述假设的交易所,可以只使用下面的一部分字段,具体的规则如下:
不区分套期保值量和投机量
只使用所有的投机字段,所有的套期保值字段都设为 0
不同时拥有一个合约的多仓和空仓
在多仓情况下,多仓量为正,空仓量为 0。在空仓情况下,多仓量为 0,空仓量为正。注意,可能出现客户持仓不允许同时多仓和空仓,而会员允许的情况
不区分平今日仓和昨日仓
只有平昨日仓的字段有效,平今日仓的字段全部为 0
5.4.1.3 持仓数据的字段
下面分别介绍主要的持仓字段:
前日留下的多仓和空仓量,作为今日初始的持仓量信息 YdBuyHedgePosition:前买持仓量(保) YdBuySpecPosition:前买持仓量(投) YdSellHedgePosition:前卖持仓量(保) YdSellSpecPosition:前卖持仓量(投)
今日买卖的成交量,包括了开仓和平仓量的总和 BuyHedgeVolume:买成交量(保)
BuySpecVolume:买成交量(投) SellHedgeVolume:卖成交量(保) SellSpecVolume:卖成交量(投)
今日的多头和空头的开仓量 BuyHedgePosition:买开仓量(保) BuySpecPosition:买开仓量(投) SellHedgePosition:卖开仓量(保) SellSpecPosition:卖开仓量(投)
今日的多头和空头的平仓量,平仓对象是今日开的仓 BuyOffsHPosition:买平今量(保) BuyOffsSPosition:买平今量(投) SellOffsHPosition:卖平今量(保) SellOffsSPosition:卖平今量(投)
今日的多头和空头的平仓量,平仓对象是昨日开的仓 YdBuyOffsHPosition:买平昨量(保) YdBuyOffsSPosition:买平昨量(投) YdSellOffsHPosition:卖平昨量(保) YdSellOffsSPosition:卖平昨量(投)
今日发生的开仓报单,但是还没有成交造成的多头或空头的持仓冻结,在计算限仓时有用 LongOpenFrozHPosition:多头开仓冻结持仓手(保)
LongOpenFrozSPosition:多头开仓冻结持仓手(投) ShortOpenFrozHPosition:空头开仓冻结持仓手(保) ShortOpenFrozSPosition:空头开仓冻结持仓手(投)
今日发生的平今日仓报单,但是还没有成交造成的多头或空头的持仓冻结,在计算可以平今日仓的余量时有用
LongOffsFrozHPosition:多头平仓冻结持仓手(保) LongOffsFrozSPosition:多头平仓冻结持仓手(投) ShortOffsFrozHPosition:空头平仓冻结持仓手(保) ShortOffsFrozSPosition:空头平仓冻结持仓手(投)
今日发生的平昨日仓报单,但是还没有成交造成的多头或空头的持仓冻结,在计算可以平昨日仓的余量时有用
YdLongOffsFrozHPosition:上日多头平仓冻结持仓手(保) YdLongOffsFrozSPosition:上日多头平仓冻结持仓手(投) YdShortOffsFrozHPosition:上日空头平仓冻结持仓手(保) YdShortOffsFrozSPosition:上日空头平仓冻结持仓手(投)
5.4.2 资❹
5.4.2.1 定义资❹数据时的假设
会员资金信息是基于这样的假设:套期保值和投机是分开的。如果交易所不需要做这个区分,那么就可以只使用下面的投机字段,而所有的套期保值字段为 0。
5.4.2.2 资❹数据的字段
资金数据的字段主要包括:
今日初的保证金 InitMargin:初始保证金
今日多头或空头开仓用掉的保证金 BuySpecOpenUsedMargin:买投开仓使用保证金 BuyHedgeOpenUsedMargin:买保开仓使用保证金 SellSpecOpenUsedMargin:卖投开仓使用保证金 SellHedgeOpenUsedMargin:卖保开仓使用保证金 BuyOpenUsedPremium:买开仓使用权利金
今日多头或空头平仓时产生的盈亏 BuySpecOffsetProfit:买投平仓盈亏 BuyHedgeOffsetProfit:买保平仓盈亏 SellSpecOffsetProfit:卖投平仓盈亏 SellHedgeOffsetProfit:卖保平仓盈亏 Premium:权利金收支
今日多头或空头平仓返回的保证金 BuySpecOffsetMargin:买投平仓返回保证金 BuyHedgeOffsetMargin:买保平仓返回保证金 SellSpecOffsetMargin:卖投平仓返回保证金 SellHedgeOffsetMargin:卖保平仓返回保证金
今日多头或空头发出的开仓,但是还没有成交造成冻结的保证金 BuySpecOpenFrozMargin:买投开仓冻结保证金 BuyHedgeOpenFrozMargin:买保开仓冻结保证金 SellSpecOpenFrozMargin:卖投开仓冻结保证金 SellHedgeOpenFrozMargin:卖保开仓冻结保证金 BuyOpenFrozPremium:买开仓冻结权利金
今日多头或空头的成交额 BuySpecTurnOver:买投成交额 BuyHedgeTurnOver:买保成交额 SellSpecTurnOver:卖投成交额 SellHedgeTurnOver:卖保成交额
今日加入或提出的保证金 AddValue:本交易日新增资金 DelValue:本交易日提出资金
会员可用的资金余额 BalanceValue:可用资金余额
5.4.3 报单
有关报单内容的域有两个,分别是报单信息域 OrderInsertField 和报单状态域 OrderStatusField。报单信息域在报单录入和应答时使用,而报单状态域在报单确认和查询报单的响应中使用。报单信息域只说明报单本身的信息,而报单状态域还包括了其成交、挂起等方面的信息,所以报单信息域的字段是报单状态域的一个子集。
5.4.3.1 报单信息域字段
在报单信息域中有下列字段:
OrderSysId:合同编号
在一个交易时段内唯一标识报单的编号,在报单录入时应当为空,应答时会填入
OrderLocalId:委托编号
在一个交易时段内,在一个交易员范围内唯一的报单标识,在报单录入时填入,交易所会检查是否与过去的重复。如果重复,那么就会抛弃
UserId:交易员编码提交此报单的交易员
ParticipantId:交易会员编码提交此报单的交易员所属的会员
ClientId:客户编码希望进行交易的客户
InstrumentId:合约编码要交易的合约
Direction:买卖方向是买入还是卖出
OffsetFlag:开平仓标记是开仓还是平仓
HedgeFlag:投保标记
是投机还是套期保值,对于不区分这两者的交易所,此字段无效
StopPrice:止损价格
在止损限价和止损市价报单时,表示触发止损的价格
LimitPrice:限价
在限价、止损市价和市价转限价报单时,表示希望成交的限价。在均价报单时,表示均价的限价
VolumeTotalOrginal:原始总申报数量(以手为单位)申报成交的数量
OrderType:报单类型
是限价、市价、止损限价、止损市价、市价转限价、最好价格还是均价报单
MatchCondition:报单成交属性
说明是即时全部成交、即时部分成交、当日有效、取消前有效还是指定日期前有效
MatchSession:报单成交时间
允许成交的时间段是在开盘集合竞价、连续交易、收盘集合竞价还是其中的若干个阶段
ValidThrough:有效时间约束
当报单成交属性是指定日期前有效时,表示指定的日期
MinimalVolume:最小成交量
当报单成交属性是即时部分成交时,表示应该完成成交的最小数量
AutoSuspend:自动挂起标志
表示在连接断开或者交易员退出时,如果该报单还在报单队列中,交易所是否需要自动挂起这个报单
InsertTime:录入时间
报单录入的时间
对于上面的各个报单类型、成交属性、成交时间等,各个交易所并不一定需要全部实现。交易所只需要实现其支持的那几种类型的报单即可。
5.4.3.2 报单状态域字段
报单状态域具有报单信息域的所有字段,此外它还有下列字段:
VolumeTotal:剩余总申报数量(以手为单位)目前还没有成交的剩余申报数量
OrderStatus:报单状态
目前的报单状态是全部成交、部分成交还在队列中、部分成交不在队列中、未成交还在队列中、未成交不在队列中还是撤单
SuspendTime:挂起时间
如果不为空,表示本报单被挂起,此字段的值为挂起的时间
ActiveTime:激活时间
如果不为空,表示本报单曾经被挂起,现在又被激活了,此字段的值为激活的时间
UpdateTime:最后修改时间最后一次修改此报单的时间
ActiveUserId:操作交易员编码
对此报单进行过撤单、挂起或者激活操作的最后一个交易员
Margin:保证金
由于本报单占用或者冻结的保证金量
ForceGroupId:强平组号
强平单的组号主要用于方便撤单,一般交易员不使用这个字段
TradePrice:最新成交价格最新的一个成交的价格
TradeVolume:今成交量已经完成的成交量
5.4.4 成交单
在成交回报中的单边成交回报域 TradeInsertSingleField 中的内容如下:
InstrumentId:合约编码成交的合约
InstrumentVersion:合约版本号成交合约的版本号,目前应该为 0
CancelFlag:成交是否被取消是否已经取消了这个成交
CancelDate:取消日期
如果取消了此成交,说明取消的日期
CancelTime:取消时间
如果取消了此成交,说明取消的时间
TradeId:成交编号成交单的唯一标识
MatchDate:成交日期
发生成交的日期
MatchTime:成交时间发生成交的时间
ClearDate:清算日期进行清算的日期
Price:价格成交价格
Volume:数量成交量
OrderSysId:合同编号
此成交对应的报单的合同编号
UserId:交易员编码
提交此成交对应报单的交易员
Direction:买卖方向是买入还是卖出
OffsetFlag:开平仓标记是开仓还是平仓
HedgeFlag:投保标记是投机还是套期保值
ParticipantId:交易会员编码成交的会员
ClientId:客户编码成交的客户
OrderLocalId:委托编号
此成交对应的报单的委托编号
5.4.5 报价
报价信息域InsertQuoteField在报价录入和应答时使用。该域的内容如下:
QuoteSysID:报价编号
在一个交易时段内唯一标识报价的编号,在报价录入时应当为空,应答时会填入
ParticipantID:交易会员编码提交此报单的交易员所属的会员
ClientID:客户编码希望进行交易的客户
UserID:交易员编码提交此报价的交易员
InstrumentID:合约编码要交易的合约
QuoteLocalID:报价本地编号
在一个交易时段内,在一个交易员范围内唯一的报价标识,在报价录入时填入,交易所会检查是否与过去的重复。如果重复,那么就会抛弃
BidCombOffsetFlag:买方组合开平标识买方是开仓还是平仓
BidCombHedgeFlag:买方组合套保标识
买方是投机还是套期保值,对于不区分这两者的交易所,此字段无效
BidVolume:买方数量买方报价申报数量
BidPrice:买方价格买方报价价格
AskCombOffsetFlag:卖方组合开平标识卖方是开仓还是平仓
AskCombHedgeFlag:卖方组合套保标识
卖方是投机还是套期保值,对于不区分这两者的交易所,此字段无效
AskVolume:卖方数量卖方报价申报数量
AskPrice:卖方价格卖方报价价格
5.4.6 询价
询价信息域EnquireQuoteField在询价请求和应答中使用,该域的内容如下:
QuoteSysID:报价编号
在一个交易时段内唯一标识报价的编号,在询价录入时应当为空,应答时会填入
ParticipantID:交易会员编码提交此报单的交易员所属的会员
ClientID:客户编码希望进行交易的客户
UserID:交易员编码提交此询价的交易员
InstrumentID:合约编码要交易的合约
Direction:买卖方向是买入还是卖出
QuoteLocalID:报价本地编号
在一个交易时段内,在一个交易员范围内唯一的报价标识,在询价录入时填入,交易所会检查是否与过去的重复。如果重复,那么就会抛弃
5.5 报文清单
5.5.1 报文清单列表
报文清单列表见表 7。
表7 报文清单列表
要求 | 会员发出报文名 | 会员发出报文说 明 | 交易所发出报文 名 | 交易所发出报文 说明 | 信息正文类型 |
数据流管理报文 | |||||
要求 | XxxXxxxXxxxx | 交易员登录请求 | RspUserLogin | 交易员登录应答 | TID_UserLogin |
要求 | XxxXxxxXxxxxx | 交易员登录退出 | RspUserLogout | 交易员登录退出 应答 | TID_UserLogout |
可选 | ForceExit | 强制退出 | TID_ForceExit | ||
FlowMessageCanc el | 数据流回退 | TID_FlowMessag eCancel | |||
要求 | Error | 错误响应 | TID_Error | ||
对话模式报文 | |||||
交易员功能 | |||||
可选 | ReqUserPassword Update | 交易员修改密码 | RspUserPassword Update | 交易员修改密码 应答 | TID_UserPasswor dUpdate |
报单 | |||||
要求 | XxxXxxxxXxxxxx | 报单录入 | RspOrderInsert | 报单应答 | TID_OrderInsert |
要求 | ReqOrderAction | 报单操作请求 | RspOrderAction | 报单操作应答 | TID_OrderAction |
报价 | |||||
要求 | ReqQuoteInsert | 报价录入 | RspQuoteInsert | 报价应答 | TID_QuoteInsert |
要求 | ReqQuoteAction | 报价操作 | RspQuoteAction | 报价操作应答 | TID_QuoteAction |
要求 | XxxXxxxxxxXxxxx | 询价录入 | RspEnquireQuote | 询价应答 | TID_EnquireQuot e |
期权执行 | |||||
要求 | XxxXxxxXxxxxXxxx xx | 期权宣告录入 | RspExecOrderInse rt | 期权宣告应答 | TID_ExecOrderIn sert |
要求 | XxxXxxxXxxxxXxxx xx | 期权宣告操作录 入 | RspExecOrderActi on | 期权宣告操作应 答 | TID_ExecOrderAc tion |
交易所信息查询 | |||||
可选 | ReqQryMarket | 市场查询请求 | RspQryMarket | 市场查询应答 | TID_QryMarket |
可选 | ReqQryMarketStat us | 查询市场交易状 态请求 | RspQryMarketStat us | 查询市场交易状 态应答 | TID_QryMarketSt atus |
可选 | ReqQryInstrument | 合约查询 | RspQryInstrument | 合约查询应答 | TID_QryInstrume nt |
可选 | ReqQryInstrument Status | 查询合约交易状 态请求 | RspQryInstrument Status | 查询合约交易状 态应答 | TID_QryInstrume ntStatus |
表 7 报文清单列表(续)
要求 | 会员发出报文名 | 会员发出报文说 明 | 交易所发出报文 名 | 交易所发出报文 说明 | 信息正文类型 |
行情查询 | |||||
可选 | ReqQryMarketMat chData | 成交行情查询 | RspQryMarketMat chData | 成交行情查询应 答 | TID_QryMarketM atchData |
可选 | ReqQryMarketOrd erData | 报单行情查询 | RspQryMarketOrd erData | 报单行情查询应 答 | TID_QryMarketOr derData |
会员客户信息查询 | |||||
可选 | ReqQryParticipant | 会员信息查询 | RspQryParticipant | 会员信息查询应 答 | TID_QryParticipa nt |
可选 | ReqQryClient | 客户信息查询 | RspQryClient | 客户信息查询响 应 | TID_QryClient |
可选 | ReqQryDeposit | 会员资金查询 | RspQryDeposit | 会员资金查询应 答 | TID_QryDeposit |
可选 | ReqQryPPosition | 会员xxxx | RspQryPPosition | 会员xxxx应 答 | TID_QryPPosition |
可选 | ReqQryPosition | 会员客户持仓查 询 | RspQryPosition | 会员客户持仓查 询应答 | TID_QryPosition |
报单成交查询 | |||||
可选 | ReqQryOrder | 报单查询 | RspQryOrder | 报单查询应答 | TID_QryOrder |
可选 | ReqQryTrade | 成交单查询 | RspQryTrade | 成交单查询应答 | TID_QryTrade |
报价查询 | |||||
可选 | ReqQryQuote | 报价查询 | RspQryQuote | 报价查询应答 | TID_QryQuote |
期权执行查询 | |||||
可选 | ReqQryExecOrder | 执行宣告查询 | RspQryExecOrder | 执行宣告查询应 答 | TID_QryExecOrd er |
汇率信息查询 | |||||
可选 | ReqExchangeRate | 汇率信息查询 | RspExchangeRate | 汇率信息应答 | TID_QryExchange Rate |
交易员查询 | |||||
可选 | ReqQryUser | 查询交易员请求 | RspQryUser | 查询交易员应答 | TID_QryUser |
可选 | ReqQryUserLogin | 交易员在线查询 | RspQryUserLogin | 交易员在线查询 应答 | TID_QryUserLogi n |
出错 | |||||
要求 | Error | 错误响应 | TID_Error |
表 7 报文清单列表(续)
要求 | 会员发出报文名 | 会员发出报文说 明 | 交易所发出报文 名 | 交易所发出报文 说明 | 信息正文类型 |
私有模式报文 | |||||
要求 | OrderConfirmatio n | 报单确认 | TID_OrderConfir mation | ||
要求 | TradeInsertSingle | 单边成交回报 | TID_TradeInsertSi ngle | ||
可选 | ParticipantBulletin | 会员告示 | TID_ParticipantBu lletin | ||
广播模式报文 | |||||
状态改变通知 | |||||
要求 | MarketStatusChan geNotify | 市场状态改变通 知 | TID_MarketStatus ChangeNotify | ||
要求 | InstrumentChange Notify | 合约参数改变通 知 | TID_InstrumentCh angeNotify | ||
要求 | InstrumentStatusC hangeNotify | 合约状态改变通知 | TID_InstrumentSt atusChang | ||
eNotify | |||||
行情 | |||||
要求 | MarketMatchData | 成交行情 | TID_MarketMatch Data | ||
可选 | MarketMatchIncD ata | 增量成交行情 | TID_MarketMatch IncData | ||
可选 | MarketOrderIncDa ta | 增量报单行情 | TID_MarketOrder IncData | ||
告示 | |||||
可选 | MarketBulletin | 交易所告示广播 | TID_MarketBullet in |
5.5.2 报文功能说明
5.5.2.1 数据流管理报文
5.5.2.1.1 登录报文
交易员在进行任何与交易所系统有关的操作之前,应该先连接到交易所系统,发出交易员登录请求 ReqUserLogin 报文。交易所系统在对交易员进行认证后,可以通过交易员登录应答 RspUserLogin 给出响应,同意交易员使用各项服务。
在 ReqUserLogin 报文中,最核心的域是交易员请求登录域 ReqUserLoginField。此域中除了基本的交易会员编码、交易员编码、口令等信息外,最主要的信息是数据流的名称。每次登录都是针对特定的
数据流的,需要说明是针对对话模式、私有模式和广播模式的数据流。在通过认证后,交易员开始使用这个指定的数据流。
在一个连接中,可以进行多次登录请求,如果这些登录请求申请的是不同的数据流,那么可以在一个连接中同时提供多个数据流的信息和服务。一个连接中存在的多个数据流应该是给同一个会员的。
如果登录失败,则交易所系统会给出错误响应 Error 报文。对于私有模式和广播模式,如果交易员端曾经收到过该交易时段的部分信息,那么就需要同时在 ReqUserLogin 报文中给出发送信息起始说明域 DisseminationstartField,用于通知交易所从哪个信息开始继续发送。
5.5.2.1.2 退出报文
交易员要退出系统时,应当发出交易员登录退出 ReqUserLogout 报文。交易所系统会给出交易员登录退出应答 RspUserLogout 报文作为响应。如果退出失败(一般是因为根本就没有登录进去),那么交易所系统会给出错误响应 Error 报文。
由于在一个连接中可能存在多个数据流,所以在退出时需要说明退出哪一个数据流。在退出后,连接将继续保持,因为可能还存在其他数据流,或者交易员可能希望使用此连接进行一次新的登录。最后将连接断开是会员系统的责任。
交易员也可以不发送退出报文,直接断开连接,这样此连接中的所有登录的流将全部自动退出。
5.5.2.1.3 强制退出报文
在交易所要求某个交易员立刻断开连接时,可以发出强制退出报文 ForceExit。该报文是由交易所发给会员的,包含了强制退出的原因信息。在发出此报文后,交易所将立即断开此连接。强制退出是针对一个连接的,而不是针对一个数据流的。
5.5.2.1.4 数据流回退报文
在交易所要求某个交易员进行数据流回退时,可以发出数据流回退报文 CancelMessageFlow。该报文是由交易所发给会员的,包含了数据流回退信息。在发出此报文后,交易员端应按照回退信息中指定的数据流回退到指定的序号位置。
5.5.2.2 对话模式报文
5.5.2.2.1 交易员功能
可以使用对话模式报文完成的交易员功能只有修改密码功能。交易员可以发出交易员修改密码 ReqUserPasswordUpdate 报文,交易所在修改成功后,给出交易员修改密码应答 RspUserPasswordUpdate报文。如果出错,给出错误响应 Error 报文。
5.5.2.2.2 报单
交易员可以通过报单录入 ReqOrderInsert 报文,提交新的报单。在 ReqOrderInsert 报文中,将包含一个报单信息域 OrderInsertField,该域中需要说明各个报单的基本信息,该域还含有对限价指令、立即成交指令等的支持。
在发出请求时,交易员端需要填入委托编号,并保证在一个交易时段内,同一个交易员的委托编号是唯一的。如有多次登录,交易员可以在每次登录响应中获得已经提交的最大的本地报单编号,超过这个编号的都是未用的,这样就可以让交易员知道如何进行合适的编号。
交易所系统在收到此报文后,如果成功接收,则会返回报单应答 RspOrderInsert 报文,其包含的主要域也是 OrderInsertField 域,但是交易所会设置一个合同编号,该编号全系统唯一。如果交易所不能
接收这个报单,则返回错误响应 Error 报文。这里的错误仅指报单本身的错误,与其是否能够成交无关。交易所返回 RspOrderInsert 报文的同时, 可以同时在私有模式中, 向该会员发出报单确认 OrderConfirmation 报文。交易所也可以同时在广播模式中发出增量报单行情 MarketOrderIncData 报文。
交易员还可以发出报单操作请求 ReqOrderAction 报文,对报单的状态进行调整。目前本标准只定义了删除、挂起和激活三种操作。如果操作成功,交易所将返回报单操作应答 RspOrderAction 报文。如果操作失败,则交易所将会发出错误响应Error 报文。如果交易所发出了 RspOrderAction 报文,就会同时在私有模式中,向该会员发出报单确认 OrderConfirmation 报文。交易所也可以同时在广播模式中发出增量报单行情 MarketOrderIncData 报文。
5.5.2.2.3 报价
交易员可以通过报价录入 ReqQuoteInsert 报文,提交新的报价。在 ReqQuoteInsert 报文中,将包含一个报单信息域 InputQuoteField,该域中需要说明各个报价的基本信息。
在发出请求时,交易员端需要填入委托编号,并保证在一个交易时段内,同一个交易员的委托编号是唯一的。如有多次登录,交易员可以在每次登录响应中获得已经提交的最大的本地报价编号,超过这个编号的都是未用的,这样就可以让交易员知道如何进行合适的编号。
交易所系统在收到此报文后,如果成功接收,则会返回报单应答 RspQuoteInsert 报文,其包含的主要域也是 InputQuoteField 域,但是交易所会设置一个合同编号,该编号全系统唯一。如果交易所不能接收这个报单,则返回错误响应 Error 报文。这里的错误仅指报单本身的错误,与其是否能够成交无关。交易所返回 RspQuoteInsert 报文的同时,可以同时在私有模式中,向该会员发出报价确认 Quote 报文。
交易员还可以发出报价操作请求 ReqQuoteAction 报文,对报价的状态进行调整。目前本标准只定义了删除、挂起和激活三种操作。如果操作成功,交易所将返回报价操作应答 RspQuoteAction 报文。如果操作失败,则交易所将会发出错误响应 Error 报文。如果交易所发出了 RspQuoteAction 报文,就会同时在私有模式中,向该会员发出报价确认 Quote 报文。
5.5.2.2.4 交易所信息查询
交易员可以发出市场查询请求 ReqQryMarket 报文,在报文中可以指定市场编号,也可以置为空,表示查询所有的市场。交易所将返回市场查询应答 RspQryMarket 报文,应答报文可以包含多个市场域 MarketField,该域包含了该市场的基本信息,特别是包括该市场广播模式信息序列号。市场域中的市场交易类型是保留字段,未来可能用于区分非撮合交易的情况。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对市场的静态信息的。
交易员也可以发出查询市场交易状态请求 ReqQryMarketStatus 报文,在报文中可以指定市场编号,也可以置为空,表示查询所有的市场。交易所将返回查询市场交易状态应答 RspQryMarketStatus 响应,其中可以包含多个市场状态域 MarketStatusField,说明各个市场目前的交易状态,以及目前的广播模式序列值。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对市场的动态信息的。
交易员还可以发出合约查询 ReqQryInstrument 报文,在报文中可以指定合约编码,也可以指定市场编码(表示该市场下的所有合约),还可以都不指定(表示所有的合约)。交易所将返回合约查询应答 RspQryInstrument 报文,包含多个合约域 InstrumentField,详细说明该合约的各种信息。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对合约的静态信息的。
交易员也可以发出查询合约交易状态请求 ReqQryInstrumentStatus 报文,在报文中可以指定合约编码,也可以指定市场编码(表示该市场下的所有合约),还可以都不指定(表示所有的合约)。交易所将返回查询合约交易状态应答 RspQryInstruementStatus 报文, 其中可以包含多个合约状态域 InstruementStatusField,说明各个合约的目前交易状态。如果发生错误,交易所可以返回错误响应 Error报文。这个查询是针对合约的动态信息的。
5.5.2.2.5 行情查询
交易员可以使用成交行情查询 ReqQryMarketMatchData 报文,查询目前的成交行情。在此报文中,交易员可以指定合约,也可以不指定,表示查询所有合约的成交行情。交易所将返回一个成交行情查询应答 RspQryMarketMatchData 报文,包含多个成交行情域 MarketMatchDataField。每个域说明一个合约目前的成交行情,包括相关的所有信息。该域中还包含一个广播模式中的序列号,说明该行情对应的广播模式数据流的位置。在存在多个 MarketMatchDataField 域的情况下,交易所有义务保证在一个 RspQryMarketMatchData 报文中的所有 MarketMatchDataField 中,广播模式中的数据序列号应该完全相同,即使该响应报文是通过多报文的形式返回的。也就是说,一个行情查询的结果,应该是历史上存在的某个时刻的行情的一个快照。如果发生错误,交易所可以返回错误响应Error 报文。
交易员可以使用报单行情查询 ReqQryMarketOrderData 报文,查询目前的报单行情。在此报文中,交易员可以指定合约, 方向或者同时指定这两者。 交易所将返回一个报单行情查询应答 RspQryMarketOrderData 报文,包含多个报单行情域 MarketOrderDataField。每个 MarketOrderDataField说明特定合约、特定买卖方向、特定价位上的报单数量。特别的,该域中还包含一个广播模式中的数据序列号,说明该行情对应的广播模式数据流的位置。在存在多个 MarketOrderDataField 域的情况下,交易所有义务保证在一个 RspQryMarketOrderData 报文中的所有 MarketOrderDataField 中,广播模式中的数据序列号应该完全相同,即使该响应报文是通过多报文的形式返回的。也就是说,一个行情查询的结果,应该是历史上存在的某个时刻的行情的一个快照。如果发生错误,交易所可以返回错误响应 Error报文。
5.5.2.2.6 会员客户查询
交易员可以使用会员信息查询 ReqQryParticipant 报文,查询会员的信息。在此报文中,交易员可以指定交易会员编码, 也可以不指定, 表示查询所有的会员。交易所将返回会员信息查询应答 RspQryParticipant 报文,包含多个会员域 ParticipantField,每个 ParticipantField 域说明一个会员的信息,包括会员的基本信息,交易权限等。一个交易员是否可以查询其他会员的信息,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对会员的静态信息的。
交易员可以使用客户信息查询 ReqQryClient 报文,查询客户的信息。在此报文中,交易员可以指定客户编码,也可以指定交易会员编码(表示该会员下的所有客户),也可以什么也不指定(表示所有客户)。交易所将返回客户信息查询应答 RspQryClient 报文,包含多个客户域 ClientField,每个 ClientField域说明一个客户的信息,包括客户的基本信息,交易权限等。一个交易员是否可以查询其他会员下的客户信息,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对客户的静态信息的。
交易员可以使用会员资金查询 ReqQryDeposit 报文,查询会员的资金状况。在此报文中,交易员可以指定交易会员编码, 也可以不指定,表示查询所有的会员。交易所将返回会员资金查询应答 RspQryDeposit 报文,包含多个会员资金域 DepositField,每个 DepositField 是一个会员的资金信息。其中具体字段的定义见 5.4.2。一个交易员是否可以查询其他会员的信息,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对会员的动态信息的。
交易员可以使用会员xxxx ReqQryPPosition 报文,查询会员的持仓状况。在此报文中,交易员可以指定特定的或不指定交易会员编码和合约编码,以控制查询的范围。交易所将返回会员持仓查询应答 RspQryPPosition 报文,包含多个会员持仓域 PPositionField,每个 PPositionField 是一个会员的持仓信息。其中的具体字段定义见 5.4.1。一个交易员是否可以查询其他会员的信息,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对会员的动态信息的。
交易员可以使用会员客户持仓查询 ReqQryPosition 报文,查询客户在一个会员处的持仓状况。在此
报文中,交易员可以指定特定的或不指定交易会员编码、客户编码和合约编码,以控制查询的范围。交易所将返回会员客户持仓查询 RspQryPosition 报文, 包含多个客户持仓域 PositionField , 每个 PositionField 是一个客户在一个会员的持仓信息。其中的具体字段定义见 5.4.1。一个交易员是否可以查询其他会员处客户的信息,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应 Error 报文。这个查询是针对客户的动态信息的。
5.5.2.2.7 报单成交查询
交易员可以使用报单查询 ReqQryOrder 报文,查询报单的情况。在此报文中,交易员可以指定特定的或不指定合约编码、交易会员编码、交易员编码、客户编码和合同编号,以控制查询的范围。交易所将返回报单查询应答 RspQryOrder 报文,包括多个报单状态域 OrderStatusField,每个 OrderStatusField表示一张报单,其中具体字段的定义见 5.4.3。一个交易员是否可以查询其他会员处的报单信息,以及非此交易时段内的报单,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应 Error 报文。
交易员可以使用成交单查询 ReqQryTrade 报文,查询成交单的情况。在此报文中,交易员可以指定特定的或不指定合约编码、交易会员编码、交易员编码、客户编码、合同编号、开始时间和直到时间,以控制查询的范围。交易所将返回成交单查询应答 RspQryTrade 报文,包含多个单边成交回报域 TradeInsertSingleField 域,每个 TradeInsertSingleField 表示一张成交单,其中具体字段的定义见 5.4.4。一个交易员是否可以查询其他会员处的成交单信息,以及非此交易时段内的成交单,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应Error 报文。
5.5.2.2.8 交易员查询
交易员可以使用查询交易员请求 ReqQryUser 报文,查询交易员的情况。在此报文中,交易员可以指定特定的或不指定交易会员编码和交易员编码,以控制查询的范围。交易所将返回查询交易员应答 RspQryUser 报文,包含多个交易员域 UserField,每个 UserField 域表示一个交易员,其中包含了该交易员的基本信息。一个交易员是否可以查询其他会员的交易员信息,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应Error 报文。
交易员可以使用交易员在线查询 ReqQryUserLogin 报文,查询交易员在线的情况。在此报文中,交易员可以指定特定的或不指定交易会员编码和交易员编码,以控制查询的范围。交易所将返回交易员在线查询应答 RspQryUserLogin 报文,包含多个交易员在线域 UserLoginField,每个 UserLoginField 域表示一个交易员的在线状况,其中包含了该交易员不同模式的状态,登录退出时间等信息。一个交易员是否可以查询其他会员的交易员在线信息,由各个交易所自行决定。如果发生错误,交易所可以返回错误响应 Error 报文。
5.5.2.2.9 出错
在发生各种错误时,交易所可以返回错误响应 Error 报文。在此报文中,有一个错误域 ErrorField,该域用于给出错误代码、正文和时间信息。另外, Error 报文还可以附带一个错误序列号域 ErrorTargetSequenceField 和错误报单号域 ErrorTargetOrderField。ErrorTargetSequenceField 中包含了一个序列类别号和序列号,可以在此数据流中唯一指定一个报文,用于说明此错误响应是针对哪一个请求的。如果交易所使用异步的方式实现对话模式的数据流, 则这个域将是非常重要的。另一个域 ErrorTargetOrderField 中包含了一个报单的合同编号和委托编号,用于唯一指定一个报单。交易所在收到报单录入或者报单操作时,发生错误,可以选择返回这个域,以帮助会员端方便地找到出错的报单。
5.5.2.3 私有模式报文
5.5.2.3.1 报单确认
在收到报单后,交易所可以在该会员的私有模式数据流中,向会员发出报单确认 OrderConfirmation报文。此报文中含有一个报单状态域 OrderStatusField,说明了该报单目前的状态。关于其中字段的定义,见 5.4.3。
5.5.2.3.2 报价确认
在收到报价后,交易所可以在该会员的私有模式数据流中,向会员发出报价确认 QuoteConfirmation报文。此报文中含有一个报单状态域 QuoteField,说明了该报单目前的状态。关于其中字段的定义,见 5.4.3。
5.5.2.3.3 单边成交回报
在完成一次成交后,交易所将在成交双方会员的私有模式数据流中,各发出一个单边成交回报 TradeInsertSingle 报文。该报文中含有一个单边成交回报域 TradeInsertSingleField,说明了该成交单的信息。关于其中字段的定义,见 5.4.4。
5.5.2.3.4 会员告示
交易所可以通过会员告示 ParticipantBulletin 报文,向特定的会员发出通知。该报文中含有一个告示域 BulletinField,包含了这个告示的详细内容,包括消息的类型、发送时间、消息来源、消息正文等。
5.5.2.4 广播模式报文
5.5.2.4.1 状态改变通知
交易所可以通过市场状态改变通知 MarketStatusChangeNotify 报文,向所有会员通知市场状态的变更。在该报文中有一个市场状态域 MarketStatusField,说明该市场新的交易状态,以及目前的广播模式序列号。
交易所可以通过合约参数改变通知 InstrumentChangeNotify 报文,向所有会员通知合约参数的变化。在该报文中有一个合约域 InstrumentField,说明了该合约的所有新参数。
交易所可以通过合约状态改变通知 InstrumentStatusChangeNofity 报文,向所有会员通知合约状态的变化。在该报文中有一个合约状态域 InstruementStatusField,说明该合约新的交易状态。
5.5.2.4.2 行情
交易所可以使用成交行情 MarketMatchData 发送完整的或部分的成交行情。在此报文中,可以包含任意个成交行情域 MarketMatchDataField 和成交行情变化域 MarketMatchChgDataField 。 每个 MarketMatchDataField 表示一个合约的当前行情,包括了开盘价、收盘价、最新价、结算价、清算价、买入价、卖出价、前收盘价、前结算价、总成交手数、总成交金额、持仓量等所有这些行情信息。而 MarketMatchChgDataField 实际上是 MarketMatchDataField 的一个子集,只包含了最新价、最高价、最低价等在一个交易时段内会发生变化的字段、交易所可以自行决定如何使用这两种类型的域。例如仅在开市和收市时发送 MarketMatchDataField,平时都发送 MarketMatchChgDataField。
交易所可以使用增量成交行情 MarketMatchIncData 报文,发送增量的成交行情信息。在这个报文中,包含多个增量成交行情域 MarketMatchIncDataField,每个域说明了一个合约在一个价位上的几次成交情况。根据目前的成交行情,以及这个增量信息,会员端可以自行计算新的即时行情。交易所可以自行决定是否通过这种增量成交行情报文,还是完全通过成交行情报文来发送成交行情。
交易所可以使用增量报单行情 MarketOrderIncData 报文,发送增量的报单行情信息。在这个报文中,包含多个报单行情域 MarketOrderDataField,每个域说明了一个合约在一个价位一个买卖方向上的报单
增量情况。根据历史的报单行情,以及这个增量报单行情和上面的增量成交行情,会员可以计算出整个报单队列,产生完成的报单行情。
5.5.2.4.3 告示
交易所可以通过交易所告示广播 MarketBulletin 报文,向所有会员发出通知。该报文中含有一个告示域 BulletinField,包含了这个告示的详细内容,包括消息的类型、发送时间、消息来源、消息正文等。
5.5.2.4.4 询价通知
交易所可以通过询价通知EnquireQuoteNotify报文,向所有会员通知当前市场上的询价业务。会员可以根据询价通知域EnquireQuoteField中的信息进行报价交易。
6 安全性要求
安全性要求包括三个方面:
身份认证要求
传送加密要求
权限设置要求
6.1 身份认证
对于身份认证要求,我们可以采用多种身份认证方式混合的方法。在标准中规定了交易员登录时应该提供的交易员名和口令信息。对于最低要求的交易所,可以使用这种机制,要求每个交易员拥有一个私有的口令进行认证。对于较高要求的交易所,可以在这种口令机制的基础上,增加底层通讯协议提供的身份认证机制,例如使用 SSL 的客户认证机制,通过证书加强认证的强度。这种方式对于本标准没有影响。对于更高要求的交易所,可以采用动态口令机制,让每个交易员有自己一张口令卡,通过输入这张口令卡的当时口令,进入本系统。此时,交易所的系统应该能够对动态口令进行认证。使用这种方式,也不会影响本标准的执行。
6.2 传送加密
传送加密要求是为了保证会员与交易所之间的信息不被泄漏给其他人员。最普遍的方法是使用底层通讯协议的加密方式,例如使用 SSL 的加密机制,这样,上层的协议就不需要做任何调整。如果交易所需要定义自己特殊的加密算法,可以在 FTD 报头的报文类型中选用 FTDTypeCompressed,然后在扩充报头的 FTDTagCompressMethod 项中,定义一个自己特有的编号,这样就可以实现将需要的部分报文采用自己特有的加密算法处理的效果。
6.3 权限设置
本标准涉及的权限就是交易的权限。本标准规定的交易权限分为三个等级:完全可交易、只可平仓和不准交易。交易的权限可以针对客户设置,也可以针对合约设置。对于特定客户特定合约的交易权限,取这两个权限中较低的权限。
7 可靠性保障
可靠性保障机制包括:
防单点故障
网络断路检测
断点恢复
防止重发、乱序机制
7.1 防单点故障
基于本标准,可以实现无单点故障的系统。由于本标准没有限定会员端连接到交易所的寻址机制,各个交易所在实现时,可以使用后备地址、目录服务查询等方式,找到交易所能够工作的前置系统,因此交易所系统是可以没有单点故障的。同时,会员端可以使用多个终端同时接入会员端,本标准没有进行限制,因此,如果需要,会员端也可以实现无单点故障的要求。
7.2 网络断路检测
本标准中含有网络断路检测机制。在本标准中,规定了心跳信息。交易所和会员在实现本标准时,可以使用此机制,根据各个通讯模式的特点,实现单向或双向的心跳发送和检测机制,可以选用固定心跳,或者普通报文信息同时携带心跳的方式。具体心跳的发送周期和检测周期,可以由各个交易所自行规定,也可以在登录时,由会员系统建议。
7.3 断点恢复
本标准含有进行断点恢复的功能。在发生各种类型的问题后,进行断点恢复时,会员系统将需要重新登录到交易所。此时,对于私有模式,会员系统可以指定发生问题前,本会员已经收到的信息的最大序列号,这样,交易所可以将此号码后面的所有针对这个会员的信息报文发给会员,这样就实现了私有模式的断点恢复。对于广播模式,如果会员需要重新复原所有的历史行情信息,也可以采用与私有模式相同的机制。如果会员希望快速恢复到目前的状态,可以通过查询,知道目前的行情信息,然后根据此时行情信息对应的广播模式序列号,继续接收后面的行情。对于对话模式,如果会员端发出的所有报单请求都已经得到了响应,那么就不需要恢复。如果最后的报单请求没有得到响应,则可以重发此报单,使用相同的委托编号,这样,如果交易所没有收到过此报单,就会接收它,如果收到过,就会发现重复,将其抛弃。
7.4 防止重发乱序机制
本标准的序列号可以有效地防止重发和乱序机制。具体方式见5.2.1.3。
8 扩展方式
对本标准的扩展分为两种基本方式:兼容性扩展和非兼容性扩展。兼容性扩展需要保障低版本的实现在收到高版本的报文时,能够识别出它是高版本的,而高版本的实现在收到低版本的报文时,应当能够识别出它是低版本的。无论何种情况,系统都能在低版本的概念下给出正确的响应。而非兼容性扩展不需要保障这一点。
对本标准的扩展可以由两种机构进行,一种是负责制定本标准的标准化小组,另一种是各个交易所。标准化委员会可以作出兼容性扩展或非兼容性扩展,而各个交易所只能作出兼容性扩展。下面的定义的扩展方式都是针对兼容性扩展的。
FTD 报文的总体格式,包括 FTD 报头的结构,FTD 扩充报头的长度限制,FTD 信息正文的长度限制,在扩展时是不能改变的,应该符合 5.1.1 中的规定。
FTD 的报文类型中,在表 1 已经定义的类型是不能改变的,但是在扩展时可以增加新的报文类型。
FTD 扩充报头中的结构和预定义的标记类型在扩展时是不能改变的,应该符合 5.1.2 中的规定。但是,在扩展时可以增加新的标记。
FTDC 报文的结构,在扩展时是不能改变的,应该符合 5.2 中的规定。
FTDC 报头的结构,在扩展时是不能改变的,应该符合 5.2.1 中的规定。
FTDC 报头中的版本号,在标准化小组作出的扩展时,应该增加,而交易所的扩展,不能改变版本号。
FTDC 报头中的信息正文类型中,凡是在附录 A 中规定的,将不能被改变,但是扩展时可以增加新的信息正文类型。
FTDC 报头中的报文链、序列类别号、序列号、数据域个数、信息 FTDC 信息正文的字节长度在扩展时是不能改变的,应该符合 5.2.1 中相应各节的规定。
FTDC 信息正文中采用数据域的形式,以及数据域本身的格式,在扩展时是不能改变的,应该符合 5.2.2 的规定。
FTDC 数据域中基本类型,无论其表示方式、初始化方式还是对齐模式,在扩展时是不能改变的,应该符合 5.2.2 的规定,但是扩展时可以增加新的基本类型。
对于在 5.5 中规定的所有预定义报文,其各个数据域是在扩展时是不能改变的,但是扩展时可以在这些报文中增加新的可选域。
除了在 5.5 中规定的预定义报文,扩展时可以增加新的自定义报文。这些报文需要使用新的信息正文类型。这些自定义报文可以使用预定义的数据域,也可以定义新的数据域。
在附录 D 中定义的数据域定义,在扩展时是不能改变的,但是可以定义新的数据域,使用不同的数据域标识。
在附录 C 中定义的字段,在扩展时是不能改变的,但是可以定义新的字段。
在附录 B 中定义的自定义类型,除了在所有以 FTDCharType 形式存在的枚举类型外,在扩展时是不能改变。枚举类型在扩展时,不能改变其已经定义的枚举值,但是可以增加定义新的枚举值。在扩展时,也可以定义新的自定义类型。
如果各个交易所需要按照上面的规定,进行兼容性扩展,应当将这些扩展要求提交给本标准化小组,经过批准后使用,以便保证不同交易所之间的扩展不发生冲突。
在进行兼容性扩展时,应当同时定义按照附录F中规定的DTD,定义扩展后的本标准的XML描述。在附录G中有未经过扩展的本标准的XML描述。
附 录 A
(规范性附录)信息类型正文值
信息正文类型值见表A.1中的定义。
表A.1 信息正文类型值表
信息正文类型编号 | 信息正文类型值 |
TID_Error | 0x0001 |
TID_ForceExit | 0x1005 |
TID_InstrumentChangeNotify | 0x2007 |
TID_InstrumentStatusChangeNotify | 0x2006 |
TID_MarketBulletin | 0x2003 |
TID_MarketMatchData | 0x2004 |
TID_MarketMatchIncData | 0x2002 |
TID_MarketOrderIncData | 0x2001 |
TID_MarketStatusChangeNotify | 0x2005 |
TID_OrderAction | 0x0004 |
TID_OrderConfirmation | 0x1003 |
TID_OrderInsert | 0x0003 |
TID_ParticipantBulletin | 0x1002 |
TID_QryClient | 0x000C |
TID_QryDeposit | 0x0008 |
TID_QryInstrument | 0x0005 |
TID_QryInstrumentStatus | 0x000E |
TID_QryMarket | 0x000B |
TID_QryMarketMatchData | 0x0002 |
TID_QryMarketOrderData | 0x0012 |
TID_QryMarketStatus | 0x000D |
TID_QryOrder | 0x0006 |
TID_QryParticipant | 0x0013 |
TID_QryPosition | 0x000A |
TID_QryPPosition | 0x0009 |
TID_QryTrade | 0x0007 |
TID_QryUser | 0x0014 |
TID_QryUserLogin | 0x0015 |
TID_TradeInsertSingle | 0x1001 |
TID_UserLogin | 0x0016 |
表 A.1 信息正文类型值表(续)
信息正文类型编号 | 信息正文类型值 |
TID_UserLogout | 0x0017 |
TID_UserPasswordUpdate | 0x0018 |
TID_QuoteInsert | 0x1009 |
TID_Quote | 0x5004 |
TID_QryQuote | 0x4005 |
TID_EnquireQuote | 0x6008 |
TID_EnquireQuoteNotify | 0x6009 |
TID_ExecOrderInsert | 0x1011 |
TID_ExecOrderAction | 0x1012 |
TID_ExecOrder | 0x5003 |
TID_QryExecOrder | 0x5004 |
TID_QryExchangeRate | 0x5006 |
TID_FlowMessageCancel | 0x5007 |
附 录 B
(规范性附录)衍生类型明细
衍生类型明细信息见表B.1。
表B.1 衍生类型表
衍生类型名称 | 基本类型 | 长度 | 精度 | 格式 | 取值范围 |
FTDActionFlag | FTDCharType | 1 | 0 | 0->删除,1->挂起,2->激活 | |
FTDBoolFlag | FTDCharType | 1 | 0 | 1->真,0->假 | |
FTDClientId | FTDStringType<8> | 8 | 0 | ||
FTDClientType | FTDCharType | 1 | 0 | 0->自然人,1->法人 | |
FTDConnectionReference | FTDStringType<5> | 5 | 0 | ||
FTDDataFlowFlag | FTDCharType | 1 | 0 | 0->对话流,1->私有流,2->广播流 | |
FTDDate | FTDStringType<8> | 8 | 0 | YYYYMMDD | 2003 年 1 月 1 日表示为“20030101” |
FTDDateTime | FTDStringType<20> | 20 | 0 | YYYYMMDDHH mmss | 2003 年 1 月 1 日下午 3 点 45 分 30 秒表 示为“20030101154530” |
FTDDirection | FTDCharType | 1 | 0 | 0->买,1->卖 | |
FTDQuoteDirection | FTDCharType | 1 | 0 | 0->买,1->卖,2->双向 | |
FTDErrorCode | FTDStringType<10> | 10 | 0 | 错误码由各交易所自行定义 | |
FTDForceExitCode | FTDCharType | 1 | 0 | 0->目前应该为 0 | |
FTDHedgeFlag | FTDCharType | 1 | 0 | 1->投机,3->套期保值,2->套利 | |
FTDInstrumentId | FTDStringType<30> | 30 | 0 | ||
FTDInstrumentStatus | FTDCharType | 1 | 0 | 0->连续交易,1->开盘集合竞价,2->收 盘集合竞价,3->暂停,4->非交易 | |
FTDInstrumentType | FTDCharType | 1 | 0 | 0->目前应该为 0 | |
FTDInstrumentVersion | FTDCharType | 1 | 0 | 0->目前应该为 0 | |
FTDLocalId | FTDStringType<24> | 24 | 0 | ||
FTDMarketId | FTDStringType<10> | 10 | 0 | ||
FTDMarketStatus | FTDCharType | 1 | 0 | 0->连续交易,1->开盘集合竞价,2->收 盘集合竞价,3->暂停,4->非交易 | |
FTDMatchCondition | FTDCharType | 1 | 0 | 1->即时全部成交,2->即时部分成 交,3->当日有效,4->取消前有效,5-> 指定日期前有效 | |
FTDMatchFlag | FTDCharType | 1 | 0 | 0->同为开仓,1->同为平仓,2-> 不同 |
表 B.1 衍生类型表(续)
衍生类型名称 | 基本类型 | 长度 | 精度 | 格式 | 取值范围 |
FTDMatchSession | FTDCharType | 1 | 0 | 1->开盘集合竞价,2->连续交易,3->开盘集合竞价和连续交易,4->收盘集合竞价,5->开盘集合竞价和收盘集合竞价,6->连续交易和收盘集合竞价,7->开盘集合竞价,连续交易和收盘集合竞 价 | |
FTDMsgRef | FTDStringType<6> | 6 | 0 | ||
FTDName | FTDStringType<80> | 80 | 0 | ||
FTDNewsType | FTDStringType<3> | 3 | 0 | 由各交易所自行定义 | |
FTDNewsUrgency | FTDCharType | 1 | 0 | 0->不紧急,1->紧急 | |
FTDOffsetFlag | FTDCharType | 1 | 0 | 0->开仓,1->平仓,2->强平,3->强减 | |
FTDOrderStatus | FTDCharType | 1 | 0 | 0->全部成交,1->部分成交还在队列中,2->部分成交不在队列中,3->未成交还在队列中,4->未成交不在队列 中,5->撤单 | |
FTDOrderType | FTDCharType | 1 | 0 | 0->限价,1->市价,2->止损限价,3->止 损市价,4->市价转限价,5->最好价格,6->均价 | |
FTDOptionType | FTDCharType | 1 | 0 | 0->非期权,1->认购期权,2->认沽期权 | |
FTDParticipantId | FTDStringType<8> | 8 | 0 | ||
FTDParticipantType | FTDCharType | 1 | 0 | 0->自营,1->经纪,2->综合,3->特 别,4->做市商 | |
FTDPassword | FTDStringType<40> | 40 | 0 | ||
FTDPercent | FTDFloatType<4,2> | 4 | 2 | ||
FTDPrice | FTDFloatType<12,4> | 12 | 4 | ||
FTDProtocolVersion | FTDStringType<8> | 8 | 0 | ||
FTDPubStyle | FTDCharType | 1 | 0 | 0->不发布,1->发布 | |
FTDRequestByType | FTDCharType | 1 | 0 | 0->交易所,1->会员 | |
FTDSequenceNo | FTDIntType | 4 | 0 | ||
FTDSequenceSeries | FTDWordType | 2 | 0 | ||
FTDServerAppName | FTDStringType<20> | 20 | 0 | ||
FTDStopCode | FTDCharType | 1 | 0 | 0->目前应该为 0 | |
FTDSysOrderId | FTDStringType<20> | 20 | 0 | FTDSysOrderId | |
FTDTime | FTDStringType<8> | 8 | 0 | HHmmss | 下午 3 点 45 分 30 秒表示为“154530” |
FTDTimeOut | FTDNumberType<3> | 3 | 0 | 0->不紧急,1->紧急 | |
FTDTimeStamp | FTDStringType<20> | 20 | 0 | Unix 系统 UTC 时间 |
表 B.1 衍生类型表(续)
衍生类型名称 | 基本类型 | 长度 | 精度 | 格式 | 取值范围 |
FTDTradeId | FTDStringType<20> | 20 | 0 | ||
FTDTradeRight | FTDCharType | 1 | 0 | 0->完全,1->只可平,2->不准交易 | |
FTDTradeType | FTDCharType | 1 | 0 | 0->目前应该为 0 | |
FTDUserId | FTDStringType<15> | 15 | 0 | ||
FTDUserStatus | FTDCharType | 1 | 0 | 0->目前应该为 0 | |
FTDUserType | FTDCharType | 1 | 0 | 0->目前应该为 0 | |
FTDValue | FTDFloatType<14,2> | 14 | 2 | ||
FTDVolume | FTDIntType | 4 | 0 | ||
FTDVolumeType | FTDCharType | 1 | 0 | 0->增量,1->绝对量 |
附 录 C
(规范性附录)字段明细
字段明细信息见表C.1。
表C.1 字段明细表
字段名称 | 字段类型 | 字段说明 |
Abstract | FTDStringType<80> | 摘要/说明 |
ActionLocalId | FTDLocalId | 报单操作本地编号 |
ActionDate | FTDDate | 实际交易日期 |
ActiveTime | FTDTime | 激活时间 |
ActiveUserId | FTDUserId | 操作交易员编码 |
AddValue | FTDValue | 本交易日新增资金 |
AskLot | FTDVolume | 卖出数量 |
AskPrice | FTDPrice | 卖出价 |
AutoSuspend | FTDBoolFlag | 自动挂起标志 |
AveragePrice | FTDPrice | 均价 |
BalanceValue | FTDValue | 可用保证金余额 |
BidLot | FTDVolume | 买入数量 |
BidPrice | FTDPrice | 买入价格 |
BroadcastLoginTime | FTDDateTime | 最后一次广播模式登录时间 |
BroadcastLogOutTime | FTDDateTime | 最后一次广播模式退出时间 |
BroadcastSequenceNo | FTDIntType | 广播模式中的数据序列号 |
BroadcastSequenceSeries | FTDWordType | 广播模式序列类别号 |
BroadcastStreamStatus | FTDBoolFlag | 广播模式在线状态 |
BuyHedgeOffsetMargin | FTDValue | 买保平仓返回保证金 |
BuyHedgeOffsetProfit | FTDValue | 买保平仓盈亏 |
BuyHedgeOpenFrozMargin | FTDValue | 买保开仓冻结保证金 |
BuyHedgeOpenUsedMargin | FTDValue | 买保开仓使用保证金 |
BuyHedgePosition | FTDVolume | 买开仓量(保) |
BuyHedgeTurnOver | FTDValue | 买保成交额 |
BuyHedgeVolume | FTDVolume | 买成交量(保) |
BuyOffsHPosition | FTDVolume | 买平今量(保) |
BuyOffsSPosition | FTDVolume | 买平今量(投) |
BuySpecOffsetMargin | FTDValue | 买投平仓返回保证金 |
BuySpecOffsetProfit | FTDValue | 买投平仓盈亏 |
字段名称 | 字段类型 | 字段说明 |
BuySpecOpenFrozMargin | FTDValue | 买投开仓冻结保证金 |
BuySpecOpenUsedMargin | FTDValue | 买投开仓使用保证金 |
BuySpecPosition | FTDVolume | 买开仓量(投) |
BuySpecTurnOver | FTDValue | 买投成交额 |
BuySpecVolume | FTDVolume | 买成交量(投) |
CancelDate | FTDDate | 取消日期 |
CancelFlag | FTDBoolFlag | 成交是否被取消。 |
CancelTime | FTDTime | 取消时间 |
ClearDate | FTDDate | 清算日期 |
ClearPrice | FTDPrice | 清算价 |
ClientId | FTDClientId | 客户编码 |
ClientName | FTDName | 客户名称 |
ClientType | FTDClientType | 客户类别 |
ClosePrice | FTDPrice | 收盘价 |
ComeFrom | FTDStringType<20> | 消息来源 |
ConnectionReference | FTDConnectionReference | 链路标示 |
Content | FTDStringType<500> | 消息正文 |
Currency | FTDStringType<3> | 交易用的货币,按照ISO 4217 标准定义 |
DataFlowFlag | FTDDataFlowFlag | 数据流名称 |
DelValue | FTDValue | 本交易日提出资金 |
DialogLoginTime | FTDDateTime | 最后一次对话模式登录时间 |
DialogLogoutTime | FTDDateTime | 最后一次对话模式退出时间 |
DialogStreamStatus | FTDBoolFlag | 对话模式在线状态 |
Direction | FTDDirection | 买卖方向 |
EndDelvDate | FTDDate | 最后交割日 |
EndTrdDate | FTDDate | 最后交易日 |
ErrorCode | FTDErrorCode | 错误代码 |
ErrorText | FTDStringType<100> | 错误正文 |
ExchangeDateTime | FTDDateTime | 交易所系统时间 |
ExecOrderLocalID | FTDLocalId | 执行宣告本地编号 |
ExecOrderSysID | FTDSysOrderId | 执行编号 |
Forcedistime | FTDIntType | 强平的撮合间隔 |
ForceExitCode | FTDForceExitCode | 强制退出号 |
ForceExitMsg | FTDStringType<100> | 强制退出原因 |
ForceGroupId | FTDLocalId | 强平组号 |
FrontId | FTDStringType<20> | 前置机标识 |
字段名称 | 字段类型 | 字段说明 |
FuseFlag | FTDBoolFlag | 熔断标记 |
Fuselimit | FTDPrice | 熔断限额 |
Fusepersisttime | FTDIntType | 熔断最大持续时间 |
Fusepoint | FTDStringType<6> | 在该时间点后不可熔断,为HHmmss 格式 |
FuseRights | FTDBoolFlag | 可否熔断 |
HedgeFlag | FTDHedgeFlag | 投保标记 |
HighLimit | FTDPrice | 涨停板 |
HighLimitRate | FTDPercent | 涨停板率 |
HighPrice | FTDPrice | 最高价 |
InitMargin | FTDValue | 初始保证金 |
InsertTime | FTDDateTime | 录入时间 |
InstrStopCode | FTDStopCode | 停止交易原因 |
InstrumentId | FTDInstrumentId | 合约编码 |
InstrumentName | FTDName | 合约名称 |
InstrumentStatus | FTDInstrumentStatus | 合约交易状态 |
InstrumentType | FTDInstrumentType | 合约类型 |
InstrumentVersion | FTDInstrumentVersion | 合约版本号 |
IpAddr | FTDStringType<20> | 登录者的IP 地址 |
IsLogin | FTDBoolFlag | 是否登录 |
LastLot | FTDVolume | 最后一笔成交手数,双向计算 |
LastPrice | FTDPrice | 最新价 |
LifeHigh | FTDPrice | 历史最高成交价格 |
LifeLow | FTDPrice | 历史最低成交价格 |
LimitPrice | FTDPrice | 限价 |
LongOffsFrozHPosition | FTDVolume | 多头平仓冻结持仓手(保) |
LongOffsFrozSPosition | FTDVolume | 多头平仓冻结持仓手(投) |
LongOpenFrozHPosition | FTDVolume | 多头开仓冻结持仓手(保) |
LongOpenFrozSPosition | FTDVolume | 多头开仓冻结持仓手(投) |
LowLimit | FTDPrice | 跌停板 |
LowLimitRate | FTDPercent | 跌停板率 |
LowPrice | FTDPrice | 最低价 |
Margin | FTDPrice | 保证金 |
MarketId | FTDMarketId | 市场编码 |
MarketMatchDataStatus | FTDBoolFlag | 是否主动发送成交行情 |
MarketName | FTDName | 市场名称 |
MarketStatusId | FTDMarketStatus | 市场交易状态编码 |
字段名称 | 字段类型 | 字段说明 |
MatchCondition | FTDMatchCondition | 报单成交属性 |
MatchDate | FTDDate | 成交日期 |
MatchFlag | FTDMatchFlag | 成交双方的性质 |
MatchSession | FTDMatchSession | 报单成交时间 |
MatchTime | FTDTime | 成交时间 |
MaxLot | FTDVolume | 最大可下单手数 |
MaxOrderLocalId | FTDLocalId | 最大报单本地编号 |
MessageReference | FTDMsgRef | 用户自定义数据。可打印ASCII 字符 |
MinimalVolume | FTDVolume | 最小成交量 |
MinLot | FTDVolume | 最小可下单手数 |
Name | FTDStringType<20> | 名称 |
NewPassword | FTDPassword | 新口令 |
NewsType | FTDNewsType | 消息类型 |
NewsUrgency | FTDNewsUrgency | 紧急程度 |
OffsetFlag | FTDOffsetFlag | 开平仓标记 |
OldPassword | FTDPassword | 旧口令 |
OpenInterest | FTDVolume | 持仓量 |
OpenPrice | FTDPrice | 开盘价 |
OptionsType | FTDOptionType | 期权类型 |
OrderActionCode | FTDActionFlag | 报单操作类型码 |
OrderLocalId | FTDLocalId | 委托编号 |
OrderStatus | FTDOrderStatus | 报单状态 |
OrderSysId | FTDSysOrderId | 合同编号 |
OrderType | FTDOrderType | 报单类型 |
ParticipantId | FTDParticipantId | 交易会员编码 |
ParticipantName | FTDName | 会员名称 |
ParticipantType | FTDParticipantType | 会员类型 |
PartiTrdRight | FTDTradeRight | 会员权限 |
Password | FTDPassword | 口令 |
PreClose | FTDPrice | 前收盘价格 |
PreOpenInterest | FTDVolume | 前最后持仓量,双向计算 |
PreSettle | FTDPrice | 前结算价格 |
Price | FTDPrice | 价格 |
PrivateLoginTime | FTDDateTime | 最后一次私有模式登录时间 |
PrivateLogoutTime | FTDDateTime | 最后一次私有模式退出时间 |
PrivateStreamStatus | FTDBoolFlag | 私有模式的状态 |
字段名称 | 字段类型 | 字段说明 |
ProtocolVersion | FTDProtocolVersion | 使用FTD 版本号 |
Pubstyle | FTDPubStyle | 竞价阶段合约行情发布方式 |
Premium | FTDValue | 权利金收支 |
QuoteSysID | FTDSysOrderId | 报价编号 |
QuoteLocalID | FTDLocalId | 报价委托编号 |
RequestBy | FTDRequestByType | 询价发起方 |
RateUnit | FTDRateUnit | 汇率单位 |
RatePrice | FTDPrice | 外汇价格 |
SellHedgeOffsetMargin | FTDValue | 卖保平仓返回保证金 |
SellHedgeOffsetProfit | FTDValue | 卖保平仓盈亏 |
SellHedgeOpenFrozMargin | FTDValue | 卖保开仓冻结保证金 |
SellHedgeOpenUsedMargin | FTDValue | 卖保开仓使用保证金 |
SellHedgePosition | FTDVolume | 卖开仓量(保) |
SellHedgeTurnOver | FTDValue | 卖保成交额 |
SellHedgeVolume | FTDVolume | 卖成交量(保) |
SellOffsHPosition | FTDVolume | 卖平今量(保) |
SellOffsSPosition | FTDVolume | 卖平今量(投) |
SellSpecOffsetMargin | FTDValue | 卖投平仓返回保证金 |
SellSpecOffsetProfit | FTDValue | 卖投平仓盈亏 |
SellSpecOpenFrozMargin | FTDValue | 卖投开仓冻结保证金 |
SellSpecOpenUsedMargin | FTDValue | 卖投开仓使用保证金 |
SellSpecPosition | FTDVolume | 卖开仓量(投) |
SellSpecTurnOver | FTDValue | 卖投成交额 |
SellSpecVolume | FTDVolume | 卖成交量(投) |
SendTime | FTDTime | 发送时间 |
SequenceNo | FTDSequenceNo | 序列号 |
SequenceSeries | FTDSequenceSeries | 序列类别号 |
ServerAppName | FTDServerAppName | 会员应用系统名称 |
SettlePrice | FTDPrice | 结算价 |
ShortCutKey | FTDCharType | 输入快捷键 |
ShortOffsFrozHPosition | FTDVolume | 空头平仓冻结持仓手(保) |
ShortOffsFrozSPosition | FTDVolume | 空头平仓冻结持仓手(投) |
ShortOpenFrozHPosition | FTDVolume | 空头开仓冻结持仓手(保) |
ShortOpenFrozSPosition | FTDVolume | 空头开仓冻结持仓手(投) |
StartDelvDate | FTDDate | 开始交割日 |
StartTime | FTDTime | 开始时间 |
字段名称 | 字段类型 | 字段说明 |
StartTrdDate | FTDDate | 开始交易日 |
StopPrice | FTDPrice | 止损价格 |
SuspendTime | FTDTime | 挂起时间 |
StrikePrice | FTDPrice | 执行价格 |
ThroughTime | FTDTime | 直到时间 |
Tick | FTDPrice | 最小价位 |
TimeOut | FTDTimeOut | 发送监测信号时间间隔 |
TimeSpan | FTDNumberType<3> | 时区,正数表示东区,负数表示西区 |
TimeStamp | FTDTimeStamp | 时间戳 |
TotalMarketMatchData | FTDIntType | 发送成交行情记录总数,网络序 |
TotalVolume | FTDVolume | 总成交量 |
TradeDate | FTDDate | 交易日期 |
TradeId | FTDTradeId | 成交编号 |
TradeLot | FTDIntType | 总成交手数,双向计算 |
TradePrice | FTDPrice | 最新成交价格 |
TradeRights | FTDTradeRight | 交易权限 |
TradeTurnover | FTDVolume | 总成交金额,双向计算 |
TradeType | FTDTradeType | 市场交易类型 |
TradeVolume | FTDIntType | 今成交量 |
Unit | FTDIntType | 每手乘数 |
UpdateTime | FTDTime | 最后修改时间 |
URLLink | FTDStringType<200> | 此消息的WEB 联结 |
UserId | FTDUserId | 交易员编码 |
UserStatus | FTDUserStatus | 交易员状态 |
UserType | FTDUserType | 交易员类别 |
UnderlyingInstrID | FTDStringType<30> | 基础商品代码 |
UnderlyingMultiple | FTDVolume | 基础商品乘数 |
ValidThrough | FTDDate | 有效时间约束 |
Volume | FTDVolume | 数量 |
VolumeTotal | FTDIntType | 剩余总申报数量(以手为单位) |
VolumeTotalOrginal | FTDIntType | 原始总申报数量(以手为单位) |
VolumeType | FTDVolumeType | 数量类型 |
YdBuyHedgePosition | FTDVolume | 前买持仓量(保) |
YdBuyOffsHPosition | FTDVolume | 买平昨量(保) |
YdBuyOffsSPosition | FTDVolume | 买平昨量(投) |
YdBuySpecPosition | FTDVolume | 前买持仓量(投) |
字段名称 | 字段类型 | 字段说明 |
YdLongOffsFrozHPosition | FTDVolume | 上日多头平仓冻结持仓手(保) |
YdLongOffsFrozSPosition | FTDVolume | 上日多头平仓冻结持仓手(投) |
YdSellHedgePosition | FTDVolume | 前卖持仓量(保) |
YdSellOffsHPosition | FTDVolume | 卖平昨量(保) |
YdSellOffsSPosition | FTDVolume | 卖平昨量(投) |
YdSellSpecPosition | FTDVolume | 前卖持仓量(投) |
YdShortOffsFrozHPosition | FTDVolume | 上日空头平仓冻结持仓手(保) |
YdShortOffsFrozSPosition | FTDVolume | 上日空头平仓冻结持仓手(投) |
附 录 D
(规范性附录)数据域内容清单
数据域内容的清单见表D.1。
表D.1 数据域内容清单
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
BulletinField | 告示域 | FID_BulletinFiel d | 0x0001 | ||
NewsType | 消息类型 | ||||
NewsUrgency | 紧急程度 | ||||
SendTime | 发送时间 | ||||
Abstract | 摘要/说明 | ||||
ComeFrom | 消息来源 | ||||
MarketId | 市场编码 | ||||
Content | 消息正文 | ||||
URLLink | 此消息的WEB 联结 | ||||
ClientField | 客户域 | FID_ClientField | 0x0002 | ||
ClientId | 客户编码 | ||||
ParticipantId | 交易会员编码 | ||||
ClientName | 客户名称 | ||||
ClientType | 客户类别 | ||||
TradeRights | 交易权限 | ||||
DepositField | 会员资金域 | FID_DepositField | 0x0003 | ||
ParticipantId | 交易会员编码 | ||||
ParticipantType | 会员类型 | ||||
TradeDate | 交易委托日期 | ||||
InitMargin | 初始保证金 | ||||
BuySpecOpenUsedMar gin | 买投开仓使用保证金 | ||||
BuyHedgeOpenUsedMa rgin | 买保开仓使用保证金 | ||||
SellSpecOpenUsedMa rgin | 卖投开仓使用保证金 | ||||
SellHedgeOpenUsedM argin | 卖保开仓使用保证金 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
BuySpecOffsetProfi t | 买投平仓盈亏 | ||||
BuyHedgeOffsetProf it | 买保平仓盈亏 | ||||
SellSpecOffsetProf it | 卖投平仓盈亏 | ||||
SellHedgeOffsetPro fit | 卖保平仓盈亏 | ||||
BuySpecOpenFrozMar gin | 买投开仓冻结保证金 | ||||
BuyHedgeOpenFrozMa rgin | 买保开仓冻结保证金 | ||||
SellSpecOpenFrozMa rgin | 卖投开仓冻结保证金 | ||||
SellHedgeOpenFrozM argin | 卖保开仓冻结保证金 | ||||
BuySpecOffsetMargi n | 买投平仓返回保证金 | ||||
BuyHedgeOffsetMarg in | 买保平仓返回保证金 | ||||
SellSpecOffsetMarg in | 卖投平仓返回保证金 | ||||
SellHedgeOffsetMar gin | 卖保平仓返回保证金 | ||||
BuySpecTurnOver | 买投成交额 | ||||
BuyHedgeTurnOver | 买保成交额 | ||||
SellSpecTurnOver | 卖投成交额 | ||||
SellHedgeTurnOver | 卖保成交额 | ||||
AddValue | 本交易日新增资金 | ||||
DelValue | 本交易日提出资金 | ||||
BalanceValue | 可用保证金余额 | ||||
Premium | 期权权利金收支 | ||||
BuyOpenUsedPremium | 买开仓使用权利金 | ||||
BuyOpenFrozPremium | 买开仓冻结权利金 | ||||
Disseminationst artField | 发送信息起 始说明域 | FID_Disseminatio nstartField | 0x0004 | ||
SequenceSeries | 序列类别号 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
SequenceNo | 序列号 | ||||
ErrorField | 错误域 | FID_ErrorField | 0x0005 | ||
ErrorCode | 错误代码 | ||||
ErrorText | 错误正文 | ||||
TimeStamp | 时间戳 | ||||
ErrorTargetOrde rField | 错误报单号 域 | FID_ErrorTargetO rderField | 0x002D | ||
OrderSysId | 合同编号 | ||||
OrderLocalId | 委托编号 | ||||
ErrorTargetSequ enceField | 错误序列号 域 | FID_ErrorTargetS equenceField | 0x002E | ||
SequenceSeries | 序列类别号 | ||||
SequenceNo | 序列号 | ||||
ForceExitField | 强制退出域 | FID_ForceExitFie ld | 0x0006 | ||
ForceExitCode | 强制退出号 | ||||
ForceExitMsg | 强制退出原因 | ||||
InstrumentField | 合约域 | FID_InstrumentFi eld | 0x0007 | ||
MarketId | 市场编码 | ||||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
InstrumentName | 合约名称 | ||||
ShortCutKey | 输入快捷键 | ||||
StartTrdDate | 开始交易日 | ||||
EndTrdDate | 最后交易日 | ||||
InstrumentType | 合约类型 | ||||
EndDelvDate | 最后交割日 | ||||
StartDelvDate | 开始交割日 | ||||
InstrStopCode | 停止交易原因 | ||||
Currency | 交易用的货币 | ||||
TradeRights | 交易权限 | ||||
FuseRights | 可否熔断 | ||||
Unit | 每手乘数 | ||||
Tick | 最小价位 | ||||
HighLimitRate | 涨停板率 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
LowLimitRate | 跌停板率 | ||||
MaxLot | 最大可下单手数 | ||||
MinLot | 最小可下单手数 | ||||
Pubstyle | 竞价阶段合约行情发布方式 | ||||
Fuselimit | 熔断限额 | ||||
Fusepersisttime | 熔断最大持续时间 | ||||
Fusepoint | 在该时间点后不可熔断 | ||||
FuseFlag | 熔断标记 | ||||
Forcedistime | 强平的撮合间隔 | ||||
StrikePrice | 执行价 | ||||
OptionsType | 期权类型 | ||||
UnderlyingInstrID | 基础商品代码 | ||||
UnderlyingMultiple | 基础商品乘数 | ||||
InstrumentStatu sField | 合约状态域 | FID_InstrumentSt atusField | 0x0008 | ||
InstrumentId | 合约编码 | ||||
InstrumentStatus | 合约交易状态 | ||||
MarketField | 市场域 | FID_MarketField | 0x0026 | ||
MarketId | 市场编码 | ||||
MarketName | 市场名称 | ||||
BroadcastSequenceS eries | 广播模式序列类别号 | ||||
TradeType | 市场交易类型 | ||||
MarketMatchData ChgField | 成交行情变 化域 | FID_MarketMatchD ataChgField | 0x0012 | ||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
OpenPrice | 开盘价 | ||||
HighPrice | 最高价 | ||||
LowPrice | 最低价 | ||||
LastPrice | 最新价 | ||||
BidPrice | 买入价格 | ||||
AskPrice | 卖出价 | ||||
BidLot | 买入数量 | ||||
AskLot | 卖出数量 | ||||
Volume | 数量 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
OpenInterest | 持仓量 | ||||
InstrumentVersion | 合约版本号 | ||||
MarketMatchData Field | 成交行情域 | FID_MarketMatchD ataField | 0x0013 | ||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
PreClose | 前收盘价格 | ||||
PreSettle | 前结算价格 | ||||
PreOpenInterest | 前最后持仓量,双向计算 | ||||
OpenPrice | 开盘价 | ||||
BidPrice | 买入价格 | ||||
BidLot | 买入数量 | ||||
AskPrice | 卖出价 | ||||
AskLot | 卖出数量 | ||||
LastPrice | 最新价 | ||||
LastLot | 最后一笔成交手数,双向计 算 | ||||
TradeLot | 总成交手数,双向计算 | ||||
TradeTurnover | 总成交金额,双向计算 | ||||
OpenInterest | 持仓量 | ||||
HighPrice | 最高价 | ||||
LowPrice | 最低价 | ||||
ClosePrice | 收盘价 | ||||
SettlePrice | 结算价 | ||||
ClearPrice | 清算价 | ||||
AveragePrice | 均价 | ||||
LifeHigh | 历史最高成交价格 | ||||
LifeLow | 历史最低成交价格 | ||||
HighLimit | 涨停板 | ||||
LowLimit | 跌停板 | ||||
TotalVolume | 总成交量 | ||||
UpdateTime | 最后修改时间 | ||||
MarketMatchDataSta tus | 是否主动发送成交行情 | ||||
TotalMarketMatchDa ta | 发送成交行情记录总数,网 络序 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
BroadcastSequenceN o | 广播模式中的数据序列号 | ||||
Direction | 买卖方向 | ||||
Price | 价格 | ||||
Volume | 数量 | ||||
BroadcastSequenceN o | 广播模式中的数据序列号 | ||||
MarketStatusFie ld | 市场状态域 | FID_MarketStatus Field | 0x0009 | ||
MarketId | 市场编码 | ||||
MarketStatusId | 市场交易状态编码 | ||||
BroadcastSequenceN o | 广播模式中的数据序列号 | ||||
OrderActionFiel d | 报单操作域 | FID_OrderActionF ield | 0x000B | ||
OrderActionCode | 报单操作类型码 | ||||
OrderSysId | 合同编号 | ||||
ActionLocalId | 报单操作本地编号 | ||||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
UserId | 交易员编码 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
OrderInsertFiel d | 报单信息域 | FID_OrderInsertF ield | 0x000C | ||
TradeDate | 交易日期 | ||||
ActionDate | 实际日期 | ||||
OrderSysId | 合同编号 | ||||
OrderLocalId | 委托编号 | ||||
UserId | 交易员编码 | ||||
ParticipantId | 交易会员编码 | ||||
ClientId | 客户编码 | ||||
InstrumentId | 合约编码 | ||||
Direction | 买卖方向 | ||||
OffsetFlag | 开平仓标记 | ||||
HedgeFlag | 投保标记 | ||||
StopPrice | 止损价格 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
LimitPrice | 限价 | ||||
VolumeTotalOrginal | 原始总申报数量(以手为单 位) | ||||
OrderType | 报单类型 | ||||
MatchCondition | 报单成交属性 | ||||
MatchSession | 报单成交时间 | ||||
ValidThrough | 有效时间约束 | ||||
MinimalVolume | 最小成交量 | ||||
AutoSuspend | 自动挂起标志 | ||||
InsertTime | 录入时间 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
OrderStatusFiel d | 报单状态域 | FID_OrderStatusF ield | 0x000E | ||
TradeDate | 交易日期 | ||||
ActionDate | 实际日期 | ||||
OrderSysId | 合同编号 | ||||
OrderLocalId | 委托编号 | ||||
UserId | 交易员编码 | ||||
ParticipantId | 交易会员编码 | ||||
ClientId | 客户编码 | ||||
InstrumentId | 合约编码 | ||||
Direction | 买卖方向 | ||||
OffsetFlag | 开平仓标记 | ||||
HedgeFlag | 投保标记 | ||||
StopPrice | 止损价格 | ||||
LimitPrice | 限价 | ||||
VolumeTotalOrginal | 原始总申报数量(以手为单 位) | ||||
OrderType | 报单类型 | ||||
AutoSuspend | 自动挂起标志 | ||||
OrderStatus | 报单状态 | ||||
InsertTime | 录入时间 | ||||
ActiveTime | 激活时间 | ||||
SuspendTime | 挂起时间 | ||||
UpdateTime | 最后修改时间 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
ActiveUserId | 操作交易员编码 | ||||
Margin | 保证金 | ||||
ForceGroupId | 强平组号 | ||||
TradePrice | 最新成交价格 | ||||
TradeVolume | 今成交量 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
ParticipantFiel d | 会员域 | FID_ParticipantF ield | 0x000F | ||
ParticipantId | 交易会员编码 | ||||
ParticipantName | 会员名称 | ||||
ParticipantType | 会员类型 | ||||
PartiTrdRight | 会员权限 | ||||
PositionField | 客户持仓域 | FID_PositionFiel d | 0x0010 | ||
ParticipantId | 交易会员编码 | ||||
ClientId | 客户编码 | ||||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
TradeDate | 交易委托日期 | ||||
YdBuyHedgePosition | 前买持仓量(保) | ||||
YdBuySpecPosition | 前买持仓量(投) | ||||
YdSellHedgePositio n | 前卖持仓量(保) | ||||
YdSellSpecPosition | 前卖持仓量(投) | ||||
BuyHedgeVolume | 买成交量(保) | ||||
BuySpecVolume | 买成交量(投) | ||||
SellHedgeVolume | 卖成交量(保) | ||||
SellSpecVolume | 卖成交量(投) | ||||
BuyHedgePosition | 买开仓量(保) | ||||
BuySpecPosition | 买开仓量(投) | ||||
SellHedgePosition | 卖开仓量(保) | ||||
SellSpecPosition | 卖开仓量(投) | ||||
BuyOffsHPosition | 买平今量(保) | ||||
BuyOffsSPosition | 买平今量(投) | ||||
SellOffsHPosition | 卖平今量(保) |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
SellOffsSPosition | 卖平今量(投) | ||||
YdBuyOffsHPosition | 买平昨量(保) | ||||
YdBuyOffsSPosition | 买平昨量(投) | ||||
YdSellOffsHPositio n | 卖平昨量(保) | ||||
YdSellOffsSPositio n | 卖平昨量(投) | ||||
LongOpenFrozHPosit ion | 多头开仓冻结持仓手(保) | ||||
LongOpenFrozSPosit ion | 多头开仓冻结持仓手(投) | ||||
ShortOpenFrozHPosi tion | 空头开仓冻结持仓手(保) | ||||
ShortOpenFrozSPosi tion | 空头开仓冻结持仓手(投) | ||||
LongOffsFrozHPosit ion | 多头平仓冻结持仓手(保) | ||||
LongOffsFrozSPosit ion | 多头平仓冻结持仓手(投) | ||||
ShortOffsFrozHPosi tion | 空头平仓冻结持仓手(保) | ||||
ShortOffsFrozSPosi tion | 空头平仓冻结持仓手(投) | ||||
YdLongOffsFrozHPos ition | 上日多头平仓冻结持仓手 (保) | ||||
YdLongOffsFrozSPos ition | 上日多头平仓冻结持仓手 (投) | ||||
YdShortOffsFrozHPo sition | 上日空头平仓冻结持仓手 (保) | ||||
YdShortOffsFrozSPo sition | 上日空头平仓冻结持仓手 (投) | ||||
PPositionField | 会员持仓域 | FID_PPositionFie ld | 0x0011 | ||
ParticipantId | 交易会员编码 | ||||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
TradeDate | 交易委托日期 | ||||
YdBuyHedgePosition | 前买持仓量(保) |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
YdBuySpecPosition | 前买持仓量(投) | ||||
YdSellHedgePositio n | 前卖持仓量(保) | ||||
YdSellSpecPosition | 前卖持仓量(投) | ||||
BuyHedgeVolume | 买成交量(保) | ||||
BuySpecVolume | 买成交量(投) | ||||
SellHedgeVolume | 卖成交量(保) | ||||
SellSpecVolume | 卖成交量(投) | ||||
BuyHedgePosition | 买开仓量(保) | ||||
BuySpecPosition | 买开仓量(投) | ||||
SellHedgePosition | 卖开仓量(保) | ||||
SellSpecPosition | 卖开仓量(投) | ||||
BuyOffsHPosition | 买平今量(保) | ||||
BuyOffsSPosition | 买平今量(投) | ||||
SellOffsHPosition | 卖平今量(保) | ||||
SellOffsSPosition | 卖平今量(投) | ||||
YdBuyOffsHPosition | 买平昨量(保) | ||||
YdBuyOffsSPosition | 买平昨量(投) | ||||
YdSellOffsHPositio n | 卖平昨量(保) | ||||
YdSellOffsSPositio n | 卖平昨量(投) | ||||
LongOpenFrozHPosit ion | 多头开仓冻结持仓手(保) | ||||
LongOpenFrozSPosit ion | 多头开仓冻结持仓手(投) | ||||
ShortOpenFrozHPosi tion | 空头开仓冻结持仓手(保) | ||||
ShortOpenFrozSPosi tion | 空头开仓冻结持仓手(投) | ||||
LongOffsFrozHPosit ion | 多头平仓冻结持仓手(保) | ||||
LongOffsFrozSPosit ion | 多头平仓冻结持仓手(投) | ||||
ShortOffsFrozHPosi tion | 空头平仓冻结持仓手(保) |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
ShortOffsFrozSPosi tion | 空头平仓冻结持仓手(投) | ||||
YdLongOffsFrozHPos ition | 上日多头平仓冻结持仓手 (保) | ||||
YdLongOffsFrozSPos ition | 上日多头平仓冻结持仓手 (投) | ||||
YdShortOffsFrozHPo sition | 上日空头平仓冻结持仓手 (保) | ||||
YdShortOffsFrozSPo sition | 上日空头平仓冻结持仓手 (投) | ||||
ReqQryClientFie ld | 客户查询请 求域 | FID_ReqQryClient Field | 0x0014 | ||
ParticipantId | 交易会员编码 | ||||
ClientId | 客户编码 | ||||
ReqQryDepositFi eld | 会员资金查 询域 | FID_ReqQryDeposi tField | 0x0015 | ||
ParticipantId | 交易会员编码 | ||||
ReqQryInstrumen tField | 合约查询请 求域 | FID_ReqQryInstru mentField | 0x0016 | ||
MarketId | 市场编码 | ||||
InstrumentId | 合约编码 | ||||
ReqQryInstrumen tStatusField | 合约状态查 询响应域 | FID_ReqQryInstru mentStatusField | 0x0017 | ||
MarketId | 市场编码 | ||||
InstrumentId | 合约编码 | ||||
ReqQryMarketFie ld | 市场查询请 求域 | FID_ReqQryMarket Field | 0x0018 | ||
MarketId | 市场编码 | ||||
ReqQryMarketMat chDataField | 成交行情查 询请求域 | FID_ReqQryMarket MatchDataField | 0x001F | ||
InstrumentId | 合约编码 | ||||
ReqQryMarketOrd erDataField | 报单行情查 询请求 | FID_ReqQryMarket OrderDataField | 0x001B | ||
InstrumentId | 合约编码 | ||||
Direction | 买卖方向 | ||||
ReqQryMarketSta tusField | 市场状态查 询请求域 | FID_ReqQryMarket StatusField | 0x0019 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
MarketId | 市场编码 | ||||
ReqQryOrderFiel d | 报单查询请 求域 | FID_ReqQryOrderF ield | 0x001A | ||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
ClientId | 客户编码 | ||||
OrderSysId | 合同编号 | ||||
ReqQryParticipa ntField | 会员查询请 求域 | FID_ReqQryPartic ipantField | 0x001C | ||
ParticipantId | 交易会员编码 | ||||
ReqQryPositionF ield | 客户持仓查 询请求域 | FID_ReqQryPositi onField | 0x001D | ||
ParticipantId | 交易会员编码 | ||||
ClientId | 客户编码 | ||||
InstrumentId | 合约编码 | ||||
ReqQryPPosition Field | 会员持仓查 询请求域 | FID_ReqQryPPosit ionField | 0x001E | ||
ParticipantId | 交易会员编码 | ||||
InstrumentId | 合约编码 | ||||
ReqQryTradeFiel d | 成交查询请 求域 | FID_ReqQryTradeF ield | 0x0020 | ||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
ClientId | 客户编码 | ||||
OrderSysId | 合同编号 | ||||
StartTime | 开始时间 | ||||
ThroughTime | 直到时间 | ||||
ReqQryUserField | 交易员查询 域 | FID_ReqQryUserFi eld | 0x0021 | ||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
ReqQryUserLogin Field | 交易员在线 查询域 | FID_ReqQryUserLo ginField | 0x0022 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
ReqUserLoginFie ld | 交易员登录 请求域 | FID_ReqUserLogin Field | 0x0023 | ||
DataFlowFlag | 数据流名称 | ||||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
Password | 口令 | ||||
ConnectionReferenc e | 链路标示 | ||||
ServerAppName | 会员应用系统名称 | ||||
ProtocolVersion | 使用FTD 版本号 | ||||
TimeOut | 发送监测信号时间间隔 | ||||
IpAddr | 登录者的IP 地址 | ||||
ReqUserLogoutFi eld | 交易员退出 登录请求域 | FID_ReqUserLogou tField | 0x0024 | ||
DataFlowFlag | 数据流名称 | ||||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
ReqUserPassword UpdateField | 交易员修改 口令请求域 | FID_ReqUserPassw ordUpdateField | 0x0025 | ||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
NewPassword | 新口令 | ||||
OldPassword | 旧口令 | ||||
RspUserLoginFie ld | 交易员登录 响应域 | FID_RspUserLogin Field | 0x0027 | ||
DataFlowFlag | 数据流名称 | ||||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
Password | 口令 | ||||
ExchangeDateTime | 交易所系统时间 | ||||
TimeSpan | 时区 | ||||
IpAddr | 登录者的IP 地址 | ||||
MaxOrderLocalId | 最大报单本地编号 | ||||
TradeDate | 交易日 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
ActionDate | 实际日期 | ||||
RspUserLogoutFi eld | 交易员退出 登录响应域 | FID_RspUserLogou tField | 0x0028 | ||
DataFlowFlag | 数据流名称 | ||||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
ExchangeDateTime | 交易所系统时间 | ||||
RspUserPassword UpdateField | 交易员修改 口令响应域 | FID_RspUserPassw ordUpdateField | 0x0029 | ||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
NewPassword | 新口令 | ||||
TradeInsertSing leField | 单边成交回 报域 | FID_TradeInsertS ingleField | 0x002A | ||
InstrumentId | 合约编码 | ||||
InstrumentVersion | 合约版本号 | ||||
CancelFlag | 成交是否被取消。 | ||||
CancelDate | 取消日期 | ||||
CancelTime | 取消时间 | ||||
TradeId | 成交编号 | ||||
MatchDate | 成交日期 | ||||
MatchTime | 成交时间 | ||||
ClearDate | 清算日期 | ||||
Price | 价格 | ||||
Volume | 数量 | ||||
OrderSysId | 合同编号 | ||||
UserId | 交易员编码 | ||||
Direction | 买卖方向 | ||||
OffsetFlag | 开平仓标记 | ||||
HedgeFlag | 投保标记 | ||||
ParticipantId | 交易会员编码 | ||||
ClientId | 客户编码 | ||||
OrderLocalId | 委托编号 | ||||
UserField | 交易员域 | FID_UserField | 0x002B | ||
UserId | 交易员编码 | ||||
ParticipantId | 交易会员编码 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
Name | 名称 | ||||
IsLogin | 是否登录 | ||||
UserStatus | 交易员状态 | ||||
UserType | 交易员类别 | ||||
UserLoginField | 交易员在线 域 | FID_UserLoginFie ld | 0x002C | ||
ParticipantId | 交易会员编码 | ||||
UserId | 交易员编码 | ||||
IpAddr | 登录者的IP 地址 | ||||
DialogStreamStatus | 对话模式在线状态 | ||||
DialogLoginTime | 最后一次对话模式登录时间 | ||||
DialogLogoutTime | 最后一次对话模式退出时间 | ||||
PrivateStreamStatu s | 私有模式的状态 | ||||
PrivateLoginTime | 最后一次私有模式登录时间 | ||||
PrivateLogoutTime | 最后一次私有模式退出时间 | ||||
BroadcastStreamSta tus | 广播模式在线状态 | ||||
BroadcastLoginTime | 最后一次广播模式登录时间 | ||||
BroadcastLogOutTim e | 最后一次广播模式退出时间 | ||||
FrontId | 前置机标识 | ||||
InputQuoteField | 报价录入域 | FID_InputQuoteFi eld | 0x002D | ||
QuoteSysID | 报价编号 | ||||
ParticipantID | 交易会员编码 | ||||
ClientID | 客户编码 | ||||
UserID | 交易员编码 | ||||
InstrumentID | 合约编码 | ||||
QuoteLocalID | 报价本地编号 | ||||
BidCombOffsetFlag | 买方组合开平标识 | ||||
BidCombHedgeFlag | 买方组合套保标识 | ||||
BidVolume | 买方数量 | ||||
BidPrice | 买方价格 | ||||
AskCombOffsetFlag | 卖方组合开平标识 | ||||
AskCombHedgeFlag | 卖方组合套保标识 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
AskVolume | 卖方数量 | ||||
AskPrice | 卖方价 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
QuoteField | 报价状态域 | FID_QuoteField | 0x002E | ||
TradeDate | 交易日期 | ||||
ActionDate | 实际日期 | ||||
QuoteSysID | 报价编号 | ||||
ParticipantID | 交易会员编码 | ||||
ClientID | 客户编码 | ||||
UserID | 交易员编码 | ||||
InstrumentID | 合约编码 | ||||
QuoteLocalID | 报价本地编号 | ||||
BidCombOffsetFlag | 买方组合开平标识 | ||||
BidCombHedgeFlag | 买方组合套保标识 | ||||
BidVolume | 买方数量 | ||||
BidPrice | 买方价格 | ||||
AskCombOffsetFlag | 卖方组合开平标识 | ||||
AskCombHedgeFlag | 卖方组合套保标识 | ||||
AskVolume | 卖方数量 | ||||
AskPrice | 卖方价 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
InsertTime | 报入时间 | ||||
CancelTime | 撤销时间 | ||||
TradeTime | 成交时间 | ||||
BidOrderSysID | 买方报单编号 | ||||
AskOrderSysID | 卖方报单编号 | ||||
ClearingPartID | 结算会员编码 | ||||
QryQuoteField | 报价查询请 求域 | FID_QryQuoteFiel d | 0x002F | ||
QuoteSysID | 报价编号 | ||||
ClientID | 客户编号 | ||||
InstrumentID | 合约编号 | ||||
UserID | 用户编号 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
EnquireQuoteFie ld | 询价域 | FID_EnquireQuote Field | 0x0030 | ||
QuoteSysID | 报价编号 | ||||
ParticipantID | 交易会员编码 | ||||
ClientID | 客户编码 | ||||
UserID | 交易员编码 | ||||
InstrumentID | 合约编码 | ||||
QuoteDirection | 询价方向 | ||||
QuoteLocalID | 报价本地编号 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
EnquireQuoteNot ifyField | 询价通知域 | FID_EnquireQuote NotifyField | 0x0031 | ||
QuoteSysID | 报价编号 | ||||
InstrumentID | 合约编码 | ||||
QuoteDirection | 询价方向 | ||||
RequestBy | 请求方 | ||||
InputExecOrderF ield | 执行宣告录 入域 | FID_InputExecOrd erField | 0x0032 | ||
InstrumentID | 合约编码 | ||||
ParticipantID | 会员编码 | ||||
ClientID | 客户编码 | ||||
UserID | 用户编码 | ||||
ExecOrderLocalID | 本地执行宣告编号 | ||||
Volume | 数量 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
ExecOrderAction Field | 执行宣告操 作域 | FID_ExecOrderAct ionField | 0x0033 | ||
ExecOrderSysID | 执行宣告编号 | ||||
ExecOrderLocalID | 本地执行宣告编号 | ||||
ActionFlag | 操作标识 | ||||
ParticipantID | 会员编码 | ||||
ClientID | 客户编码 | ||||
UserID | 用户编码 | ||||
ActionLocalID | 操作本地编号 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
ExecOrderField | 执行宣告状 态域 | FID_ExecOrderFie ld | 0x0034 | ||
TradingDay | 交易日 | ||||
ActionDay | 实际日期 | ||||
SettlementGroupID | 结算组编码 | ||||
SettlementID | 结算编码 | ||||
InstrumentID | 合约编码 | ||||
ParticipantID | 会员编码 | ||||
ClientID | 客户编码 | ||||
UserID | 用户编码 | ||||
ExecOrderLocalID | 本地执行宣告编号 | ||||
Volume | 数量 | ||||
MessageReference | 用户自定义数据。可打印 ASCII 字符 | ||||
ExecOrderSysID | 执行宣告编号 | ||||
InsertDate | 报入日期 | ||||
InsertTime | 报入时间 | ||||
CancelTime | 撤销时间 | ||||
ExecResult | 执行结果 | ||||
ClearingPartID | 结算会员编号 | ||||
QryExecOrderFie ld | 执行宣告查 询域 | FID_QryExecOrder Field | 0x0035 | ||
ExecOrderSysID | 执行宣告编号 | ||||
InstrumentID | 合约编码 | ||||
ParticipantID | 会员编码 | ||||
ClientID | 客户编码 | ||||
UserID | 用户编码 | ||||
QryExchangeRate Field | 汇率信息查 询请求域 | FID_QryExchangeR ateField | 0x0036 | ||
TradeDate | 交易日期 | ||||
CurrencyID | 币种编码 | ||||
ExchangeRateFie ld | 汇率信息域 | FID_ExchangeRate Field | 0x0037 | ||
TradeDate | 交易日期 | ||||
CurrencyID | 币种编码 |
域名称 | 域说明 | 域编号 | 域编号值 | 字段名称 | 字段说明 |
RateUnit | 外汇交易单位 | ||||
RatePrice | 外汇中间价 | ||||
FlowMessageCanc elField | 数据流回退 域 | FID_FlowMessageC ancelField | 0x0038 | ||
SequenceSeries | 序列类别号 | ||||
TradeDate | 交易日期 | ||||
ActionDate | 实际日期 | ||||
DataCenterID | 数据中心代码 | ||||
StartSequenceNo | 回退起始序列号 | ||||
EndSequenceNo | 回退结束序列号 |
附 录 E
(规范性附录)报文内容清单
报文内容清单见表E.1。
表E.1 报文内容清单
报文名称 | 报文解释 | 数据域名称 | 数据域解释 | 最多出 现次数 | 最少出 现次数 |
Error | 错误响应 | 注 | |||
ErrorField | 错误域 | 1 | 1 | ||
ErrorTargetSequenceField | 错误序列号域 | 1 | 0 | ||
ErrorTargetOrderField | 错误报单号域 | 1 | 0 | ||
ForceExit | 强制退出 | ||||
ForceExitField | 强制退出域 | 1 | 1 | ||
InstrumentChangeN otify | 合约参数改变通知 | ||||
InstrumentField | 合约域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
InstrumentStatusC hangeNotify | 合约状态改变通知 | ||||
InstrumentStatusField | 合约状态域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
MarketBulletin | 交易所告示广播 | ||||
BulletinField | 告示域 | 1 | 1 | ||
MarketMatchData | 成交行情 | ||||
MarketMatchDataField | 成交行情域 | 任意 | 0 | ||
MarketMatchDataChgField | 成交行情变化域 | 任意 | 0 | ||
MarketMatchIncDat a | 增量成交行情 | ||||
MarketMatchIncDataField | 增量成交行情域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
MarketOrderIncDat a | 增量报单行情 | ||||
MarketOrderDataField | 报单行情域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 |
报文名称 | 报文解释 | 数据域名称 | 数据域解释 | 最多出 现次数 | 最少出 现次数 |
MarketStatusChang eNotify | 市场状态改变通知 | ||||
MarketStatusField | 市场状态域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
OrderConfirmation | 报单确认 | ||||
OrderStatusField | 报单状态域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
ParticipantBullet in | 会员告示 | ||||
BulletinField | 告示域 | 1 | 1 | ||
ReqOrderAction | 报单操作请求 | ||||
OrderActionField | 报单操作域 | 1 | 1 | ||
ReqOrderInsert | 报单录入 | ||||
OrderInsertField | 报单信息域 | 1 | 1 | ||
ReqQryClient | 客户信息查询 | ||||
ReqQryClientField | 客户查询请求域 | 1 | 1 | ||
ReqQryDeposit | 会员资金查询 | ||||
ReqQryDepositField | 会员资金查询域 | 1 | 1 | ||
ReqQryInstrument | 合约查询 | ||||
ReqQryInstrumentField | 合约查询请求域 | 1 | 1 | ||
ReqQryInstrumentS tatus | 查询合约交易状态请 求 | ||||
ReqQryInstrumentStatusFie ld | 合约状态查询响应域 | 1 | 1 | ||
ReqQryMarket | 市场查询请求 | ||||
ReqQryMarketField | 市场查询请求域 | 1 | 1 | ||
ReqQryMarketMatch Data | 成交行情查询 | ||||
ReqQryMarketMatchDataFiel d | 成交行情查询请求域 | 1 | 1 | ||
ReqQryMarketOrder Data | 报单行情查询请求 | ||||
ReqQryMarketOrderDataFiel d | 报单行情查询请求 | 1 | 1 | ||
ReqQryMarketStatu s | 查询市场交易状态请 求 |
报文名称 | 报文解释 | 数据域名称 | 数据域解释 | 最多出 现次数 | 最少出 现次数 |
ReqQryMarketStatusField | 市场状态查询请求域 | 1 | 1 | ||
ReqQryOrder | 报单查询 | ||||
ReqQryOrderField | 报单查询请求域 | 1 | 1 | ||
ReqQryParticipant | 会员信息查询 | ||||
ReqQryParticipantField | 会员查询请求域 | 1 | 1 | ||
ReqQryPosition | 会员客户持仓查询 | ||||
ReqQryPositionField | 客户持仓查询请求域 | 1 | 1 | ||
ReqQryPPosition | 会员持仓查询 | ||||
ReqQryPPositionField | 会员持仓查询请求域 | 1 | 1 | ||
ReqQryTrade | 成交单查询 | ||||
ReqQryTradeField | 成交查询请求域 | 1 | 1 | ||
ReqQryUser | 查询交易员请求 | ||||
ReqQryUserField | 交易员查询域 | 1 | 1 | ||
ReqQryUserLogin | 交易员在线查询 | ||||
ReqQryUserLoginField | 交易员在线查询域 | 1 | 1 | ||
ReqUserLogin | 交易员登录请求 | ||||
ReqUserLoginField | 交易员登录请求域 | 1 | 1 | ||
DisseminationstartField | 发送信息起始说明域 | 1 | 0 | ||
ReqUserLogout | 交易员登录退出 | ||||
ReqUserLogoutField | 交易员退出登录请求域 | 1 | 1 | ||
ReqUserPasswordUp date | 交易员修改密码 | ||||
ReqUserPasswordUpdateFiel d | 交易员修改口令请求域 | 1 | 1 | ||
RspOrderAction | 报单操作应答 | ||||
OrderActionField | 报单操作域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspOrderInsert | 报单应答 | ||||
OrderInsertField | 报单信息域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryClient | 客户信息查询应答 | ||||
ClientField | 客户域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryDeposit | 会员资金查询应答 | ||||
DepositField | 会员资金域 | 任意 | 1 |
报文名称 | 报文解释 | 数据域名称 | 数据域解释 | 最多出 现次数 | 最少出 现次数 |
ErrorField | 错误域 | 1 | 0 | ||
RspQryInstrument | 合约查询应答 | ||||
InstrumentField | 合约域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryInstrumentS tatus | 查询合约交易状态应 答 | ||||
InstrumentStatusField | 合约状态域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryMarket | 市场查询应答 | ||||
MarketField | 市场域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryMarketMatch Data | 成交行情查询应答 | ||||
MarketMatchDataField | 成交行情域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryMarketOrder Data | 报单行情查询应答 | ||||
MarketOrderDataField | 报单行情域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryMarketStatu s | 查询市场交易状态应 答 | ||||
MarketStatusField | 市场状态域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryOrder | 报单查询应答 | ||||
OrderStatusField | 报单状态域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryParticipant | 会员信息查询应答 | ||||
ParticipantField | 会员域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryPosition | 会员客户持仓查询应 答 | ||||
PositionField | 客户持仓域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryPPosition | 会员持仓查询应答 | ||||
PPositionField | 会员持仓域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 |
报文名称 | 报文解释 | 数据域名称 | 数据域解释 | 最多出 现次数 | 最少出 现次数 |
RspQryTrade | 成交单查询应答 | ||||
TradeInsertSingleField | 单边成交回报域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryUser | 查询交易员应答 | ||||
UserField | 交易员域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspQryUserLogin | 交易员在线查询应答 | ||||
UserLoginField | 交易员在线域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspUserLogin | 交易员登录应答 | ||||
RspUserLoginField | 交易员登录响应域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspUserLogout | 交易员登录退出应答 | ||||
RspUserLogoutField | 交易员退出登录响应域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
RspUserPasswordUp date | 交易员修改密码应答 | ||||
RspUserPasswordUpdateFiel d | 交易员修改口令响应域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
TradeInsertSingle | 单边成交回报 | ||||
TradeInsertSingleField | 单边成交回报域 | 1 | 1 | ||
ReqQuoteInsert | 报价录入请求 | ||||
InputQuoteField | 报价录入域 | 1 | 1 | ||
RspQuoteInsert | 报价录入应答 | ||||
InputQuoteField | 报价录入域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
Quote | 报价回报 | ||||
QuoteField | 报价域 | 1 | 1 | ||
ReqQryQuote | 报价查询请求 | ||||
QryQuoteField | 报价查询请求域 | 1 | 1 | ||
RspQryQuote | 报价查询应答 | ||||
QuoteField | 报价域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
ReqEnquireQuote | 询价请求 |
报文名称 | 报文解释 | 数据域名称 | 数据域解释 | 最多出 现次数 | 最少出 现次数 |
EnquireQuoteField | 询价域 | 1 | 1 | ||
RspEnquireQuote | 询价应答 | ||||
EnquireQuoteField | 询价域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
EnquireQuoteNotif y | 询价通知 | ||||
EnquireQuoteNotifyField | 询价通知域 | 1 | 1 | ||
ReqExecOrderInser t | 执行宣告录入请求 | ||||
InputExecOrderField | 执行宣告录入域 | 1 | 1 | ||
RspExecOrderInser t | 执行宣告录入应答 | ||||
InputExecOrderField | 执行宣告录入域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
ReqExecOrderActio n | 执行宣告操作请求 | ||||
ExecOrderActionField | 执行宣告操作域 | 1 | 1 | ||
RspExecOrderActio n | 执行宣告操作应答 | ||||
ExecOrderActionField | 执行宣告操作域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
ExecOrder | 执行宣告回报 | ||||
ExecOrderField | 执行宣告域 | 1 | 1 | ||
ReqQryExecOrder | 执行宣告查询 | ||||
QryExecOrderField | 执行宣告查询域 | 1 | 1 | ||
RspQryExecOrder | 执行宣告查询应答 | ||||
ExecOrderField | 执行宣告域 | 任意 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
ReqExchangeRate | 汇率信息查询 | ||||
QryExchangeRateField | 汇率查询请求域 | 1 | 1 | ||
RspExchangeRate | 汇率信息应答 | ||||
ExchangeRateField | 汇率信息域 | 1 | 1 | ||
ErrorField | 错误域 | 1 | 0 | ||
FlowMessageCancel | 数据流回退通知 | ||||
FlowMessageCancelField | 数据流回退域 | 1 | 1 |
附 录 F
(规范性附录) FTD DTD 描述
使用DTD,刻划FTD及其兼容性扩展的方式,应当按照如下规定。
<?xml version="1.0" encoding="GB2312"?>
<!--
中国证券交易标准 期货交易传输协议标准 1.0(Securities Exchange Protocol 1.0)描述用 DTD
-->
<!ELEMENT ftd (packages, tids, fields, items, types)>
<!--
ftd 中包含下列内容
packages 所有报文的定义
tids 所有的报文编号的定义
fields 所有域的定义
items 所有字段的定义
types 所有衍生类型的定义
-->
<!ELEMENT packages (packageDefine*)>
<!--
packages 中是一组 packageDefine
-->
<!ELEMENT packageDefine (field*)>
<!ATTLIST packageDefine
name NMTOKEN #REQUIRED tid NMTOKEN #REQUIRED
model (none|dialog|private|market) #REQUIRED comment CDATA #IMPLIED
>
<!--
-->
每个 packageDefine 中可以定义下列属性 name 报文名称,在 packages 中唯一
tid 报文编号,应该出现在 tids 中的 tidDefine 中的 name 中
comment 报文说明
在每个 packageDefine 中,需要用 field 说明包含的所有域的使用
<!ELEMENT field EMPTY>
<!ATTLIST field
name NMTOKEN #REQUIRED
>
<!--
-->
maxOccur CDATA #REQUIRED minOccur CDATA #REQUIRED comment CDATA #IMPLIED
在报文定义中使用的域不需要给出详细说明,仅仅是对 fields 中定义的域的引用。每个 field 中可以定义下列属性
name 域名称,应该出现在 fields 中的 fieldDefine 中的 name 中 maxOccur 报文中该域最多出现次数,应当是整数,或者用*表示任意多个 minOccur 报文中该域最少出现次数,应当是整数
comment 在此报文中使用该域的说明(不是域本身的说明)
<!ELEMENT tids (tidDefine*)>
<!--
tids 中是一组 tidDefine
-->
<!ELEMENT tidDefine EMPTY>
<!ATTLIST tidDefine
name NMTOKEN #REQUIRED value NMTOKEN #REQUIRED
>
<!--
-->
每个报文编号定义 tidDefine 中可以定义下列属性 name 编号名称,在 tids 中唯一
value 编号的值,应当是一个整数
<!ELEMENT fields (fieldDefine*)>
<!--
fields 中是一组 fieldDefine
-->
<!ELEMENT fieldDefine (item*)>
<!ATTLIST fieldDefine
name NMTOKEN #REQUIRED fid NMTOKEN #REQUIRED fidValue NMTOKEN #REQUIRED
comment CDATA #IMPLIED
>
<!--
每个域定义 fieldDefine 中可以定义下列属性 name 域的名称,在 fields 中唯一 fid 域编号
fidValue 域编号的值,应当是一个整数
comment 域说明
在每个 fieldDefine 中,需要说明包含的字段 item 的使用
-->
<!ELEMENT item EMPTY>
<!ATTLIST item
name NMTOKEN #REQUIRED
comment CDATA #IMPLIED
>
<!--
-->
在域中使用的字段不需要给出详细说明,仅仅是对 items 中定义的字段的引用每个 item 中可以定义下列属性
name 字段名称,应该出现在 items 中的 itemDefine 中的 name 中 comment 在此域中使用该字段的说明(不是字段本身的说明)
<!ELEMENT items (itemDefine*)>
<!--
items 中是一组 itemDefine
-->
<!ELEMENT itemDefine EMPTY>
<!ATTLIST itemDefine
name NMTOKEN #REQUIRED type CDATA #REQUIRED
comment CDATA #IMPLIED
>
<!--
每个字段定义 itemDefine 中可以定义下列属性 name 字段的名称,在 items 中唯一
type 字段类型,应该是基本类型,或者出现在 types 中的 typeDefine 中
的 name 中
-->
comment 字段说明
<!ELEMENT types (typeDefine*)>
<!--
types 中是一组 typeDefine
-->
<!ELEMENT typeDefine (enumValue*)>
<!ATTLIST typeDefine
name NMTOKEN #REQUIRED
baseType CDATA #REQUIRED length CDATA #IMPLIED precision CDATA #IMPLIED comment CDATA #IMPLIED
>
<!--
-->
每个衍生类型定义 typeDefine 中可以定义下列属性 name 类型名称,在 types 中唯一
baseType 基础类型,即此类型实际上就是什么类型,应该是 FTDStringType 或
FTDNumberType 或 FTDFloatType 或 FTDCharType 或 FTDWordType 或 FTDIntType
加上可能的长度说明
comment 类型说明,一般用于说明其格式和用途
如果该类型只有有限的几个允许的取值,那么就需要定义枚举值 enumValue
<!ELEMENT enumValue EMPTY>
<!ATTLIST enumValue
name CDATA #REQUIRED
comment CDATA #IMPLIED
>
<!--
-->
每个枚举值可以定义下列属性
name 枚举值,应当符合所属的类型定义
comment 该枚举值表示的意义
附 录 G
(规范性附录) FTD XML 描述
使用XML方式,刻划本标准中规定的内容,应当使用下列的XML文件。
<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE FTD SYSTEM "ftd.1.dtd">
<ftd>
<packages>
<packageDefine name="Error" tid="TID_Error" model="dialog" comment="错误响应">
<field name="ErrorField" maxOccur="1" minOccur="1" comment="错误域"/>
<field name="ErrorTargetSequenceField" maxOccur="1" minOccur="0" comment="错误
序列号域"/>单号域"/>
">
<field name="ErrorTargetOrderField" maxOccur="1" minOccur="0" comment="错误报
</packageDefine>
<packageDefine name="ForceExit" tid="TID_ForceExit" model="none" comment="强制退出
<field name="ForceExitField" maxOccur="1" minOccur="1" comment="强制退出域"/>
</packageDefine>
<packageDefine name="InstrumentChangeNotify" tid="TID_InstrumentChangeNotify"
model="broadcast" comment="合约参数改变通知">
<field name="InstrumentField" maxOccur="1" minOccur="1" comment="合约域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="InstrumentStatusChangeNotify" tid="TID_InstrumentStatusChangeNotify" model="broadcast" comment="合约状态改变通知">
<field name="InstrumentStatusField" maxOccur="1" minOccur="1" comment="合约状态
域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="MarketBulletin" tid="TID_MarketBulletin" model="broadcast"
comment="交易所告示广播">
<field name="BulletinField" maxOccur="1" minOccur="1" comment="告示域"/>
</packageDefine>
<packageDefine name="MarketStatusChangeNotify" tid="TID_MarketStatusChangeNotify" model="broadcast" comment="市场状态改变通知">
<field name="MarketStatusField" maxOccur="1" minOccur="1" comment="市场状态域
"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="MarketMatchIncData" tid="TID_MarketMatchIncData" model="broadcast" comment="增量成交行情">
<field name="MarketMatchIncDataField" maxOccur="任意" minOccur="1" comment="
增量成交行情域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="MarketMatchData" tid="TID_MarketMatchData" model="broadcast" comment="成交行情">
<field name="MarketMatchDataField" maxOccur="任意" minOccur="0" comment="成交
行情域"/>
<field name="MarketMatchDataChgField" maxOccur="任意" minOccur="0" comment="
成交行情变化域"/>
</packageDefine>
<packageDefine name="OrderConfirmation" tid="TID_OrderConfirmation" model="private" comment="报单确认">
<field name="OrderStatusField" maxOccur="1" minOccur="1" comment="报单状态域
"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="MarketOrderIncData" tid="TID_MarketOrderIncData"
model="broadcast" comment="增量报单行情">
<field name="MarketOrderDataField" maxOccur="任意" minOccur="1" comment="报单
行情域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="ParticipantBulletin" tid="TID_ParticipantBulletin" model="private"
comment="会员告示">
<field name="BulletinField" maxOccur="1" minOccur="1" comment="告示域"/>
</packageDefine>
<packageDefine name="ReqOrderAction" tid="TID_OrderAction" model="dialog" comment="
报单操作请求">
"/>
报单录入">
户信息查询">求域"/>
<field name="OrderActionField" maxOccur="1" minOccur="1" comment="报单操作域
</packageDefine>
<packageDefine name="ReqOrderInsert" tid="TID_OrderInsert" model="dialog" comment="
<field name="OrderInsertField" maxOccur="1" minOccur="1" comment="报单信息域"/>
</packageDefine>
<packageDefine name="ReqQryClient" tid="TID_QryClient" model="dialog" comment="客
<field name="ReqQryClientField" maxOccur="1" minOccur="1" comment="客户查询请
</packageDefine>
<packageDefine name="ReqQryDeposit" tid="TID_QryDeposit" model="dialog" comment="
会员资金查询">
查询域"/>
<field name="ReqQryDepositField" maxOccur="1" minOccur="1" comment="会员资金
</packageDefine>
<packageDefine name="ReqQryInstrument" tid="TID_QryInstrument" model="dialog"
comment="合约查询">
<field name="ReqQryInstrumentField" maxOccur="1" minOccur="1" comment="合约查
询请求域"/>
</packageDefine>
<packageDefine name="ReqQryInstrumentStatus" tid="TID_QryInstrumentStatus"
model="dialog" comment="查询合约交易状态请求">
<field name="ReqQryInstrumentStatusField" maxOccur="1" minOccur="1" comment="合约状态查询响应域"/>
</packageDefine>
<packageDefine name="ReqQryMarket" tid="TID_QryMarket" model="dialog" comment="市
场查询请求">请求域"/>
<field name="ReqQryMarketField" maxOccur="1" minOccur="1" comment="市场查询
</packageDefine>
<packageDefine name="ReqQryMarketStatus" tid="TID_QryMarketStatus" model="dialog"
comment="查询市场交易状态请求">
<field name="ReqQryMarketStatusField" maxOccur="1" minOccur="1" comment="市场状态查询请求域"/>
</packageDefine>
<packageDefine name="ReqQryOrder" tid="TID_QryOrder" model="dialog" comment="报单
查询">求域"/>
<field name="ReqQryOrderField" maxOccur="1" minOccur="1" comment="报单查询请
</packageDefine>
<packageDefine name="ReqQryMarketOrderData" tid="TID_QryMarketOrderData"
model="dialog" comment="报单行情查询请求">
<field name="ReqQryMarketOrderDataField" maxOccur="1" minOccur="1" comment="
报单行情查询域"/>
</packageDefine>
<packageDefine name="ReqQryParticipant" tid="TID_QryParticipant" model="dialog" comment="会员信息查询">
<field name="ReqQryParticipantField" maxOccur="1" minOccur="1" comment="会员查
询请求域"/>
</packageDefine>
<packageDefine name="ReqQryPosition" tid="TID_QryPosition" model="dialog" comment="
会员客户持仓查询">
<field name="ReqQryPositionField" maxOccur="1" minOccur="1" comment="客户持仓
查询请求域"/>
</packageDefine>
<packageDefine name="ReqQryPPosition" tid="TID_QryPPosition" model="dialog" comment="会员持仓查询">
<field name="ReqQryPPositionField" maxOccur="1" minOccur="1" comment="会员持
仓查询请求域"/>
</packageDefine>
<packageDefine name="ReqQryMarketMatchData" tid="TID_QryMarketMatchData" model="dialog" comment="成交行情查询">
<field name="ReqQryMarketMatchDataField" maxOccur="1" minOccur="1" comment="
成交行情查询请求域"/>
</packageDefine>
<packageDefine name="ReqQryTrade" tid="TID_QryTrade" model="dialog" comment="成交
单查询">求域"/>
易员请求">域"/>
<field name="ReqQryTradeField" maxOccur="1" minOccur="1" comment="成交查询请
</packageDefine>
<packageDefine name="ReqQryUser" tid="TID_QryUser" model="dialog" comment="查询交
<field name="ReqQryUserField" maxOccur="1" minOccur="1" comment="交易员查询
</packageDefine>
<packageDefine name="ReqQryUserLogin" tid="TID_QryUserLogin" model="dialog"
comment="交易员在线查询">
<field name="ReqQryUserLoginField" maxOccur="1" minOccur="1" comment="交易员
在线查询域"/>
</packageDefine>
<packageDefine name="ReqUserLogin" tid="TID_UserLogin" model="none" comment="交易
员登录请求">请求域"/>
息起始说明域"/>
<field name="ReqUserLoginField" maxOccur="1" minOccur="1" comment="交易员登录
<field name="DisseminationstartField" maxOccur="1" minOccur="0" comment="发送信
</packageDefine>
<packageDefine name="ReqUserLogout" tid="TID_UserLogout" model="none" comment="交易员登录退出">
<field name="ReqUserLogoutField" maxOccur="1" minOccur="1" comment="交易员退
出登录请求域"/>
</packageDefine>
<packageDefine name="ReqUserPasswordUpdate" tid="TID_UserPasswordUpdate" model="dialog" comment="交易员修改密码">
<field name="ReqUserPasswordUpdateField" maxOccur="1" minOccur="1" comment="
交易员修改口令请求域"/>
</packageDefine>
<packageDefine name="RspQryUserLogin" tid="TID_QryUserLogin" model="dialog" comment="交易员在线查询应答">
<field name="UserLoginField" maxOccur="任意" minOccur="1" comment="交易员在线
域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspOrderAction" tid="TID_OrderAction" model="dialog" comment="
报单操作应答"> "/>
<field name="OrderActionField" maxOccur="1" minOccur="1" comment="报单操作域
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
报单应答">
</packageDefine>
<packageDefine name="RspOrderInsert" tid="TID_OrderInsert" model="dialog" comment="
<field name="OrderInsertField" maxOccur="1" minOccur="1" comment="报单信息域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryClient" tid="TID_QryClient" model="dialog" comment="客户
信息查询应答">
<field name="ClientField" maxOccur="任意" minOccur="1" comment="客户域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryDeposit" tid="TID_QryDeposit" model="dialog" comment="
会员资金查询应答">
<field name="DepositField" maxOccur="任意" minOccur="1" comment="会员资金域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryInstrument" tid="TID_QryInstrument" model="dialog" comment="合约查询应答">
<field name="InstrumentField" maxOccur="任意" minOccur="1" comment="合约域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryInstrumentStatus" tid="TID_QryInstrumentStatus" model="dialog" comment="查询合约交易状态应答">
<field name="InstrumentStatusField" maxOccur="任意" minOccur="1" comment="合约
状态域"/>
场查询应答">
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryMarket" tid="TID_QryMarket" model="dialog" comment="市
<field name="MarketField" maxOccur="任意" minOccur="1" comment="市场域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryMarketStatus" tid="TID_QryMarketStatus" model="dialog" comment="查询市场交易状态应答">
<field name="MarketStatusField" maxOccur="任意" minOccur="1" comment="市场状态
域"/>
查询应答">域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryOrder" tid="TID_QryOrder" model="dialog" comment="报单
<field name="OrderStatusField" maxOccur="任意" minOccur="1" comment="报单状态
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryMarketOrderData" tid="TID_QryMarketOrderData"
model="dialog" comment="报单行情查询应答">
<field name="MarketOrderDataField" maxOccur="任意" minOccur="1" comment="报单
行情域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryParticipant" tid="TID_QryParticipant" model="dialog"
comment="会员信息查询应答">
<field name="ParticipantField" maxOccur="任意" minOccur="1" comment="会员域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryPosition" tid="TID_QryPosition" model="dialog" comment="
会员客户持仓查询应答">
<field name="PositionField" maxOccur="任意" minOccur="1" comment="客户持仓域
"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryPPosition" tid="TID_QryPPosition" model="dialog"
comment="会员持仓查询应答">
<field name="PPositionField" maxOccur="任意" minOccur="1" comment="会员持仓域
"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspQryMarketMatchData" tid="TID_QryMarketMatchData"
model="dialog" comment="成交行情查询应答">
<field name="MarketMatchDataField" maxOccur="任意" minOccur="1" comment="成交
行情域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
单查询应答">
<packageDefine name="RspQryTrade" tid="TID_QryTrade" model="dialog" comment="成交
<field name="TradeInsertSingleField" maxOccur="任意" minOccur="1" comment="单边
成交回报域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
易员应答">
员登录应答">响应域"/>
</packageDefine>
<packageDefine name="RspQryUser" tid="TID_QryUser" model="dialog" comment="查询交
<field name="UserField" maxOccur="任意" minOccur="1" comment="交易员域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspUserLogin" tid="TID_UserLogin" model="none" comment="交易
<field name="RspUserLoginField" maxOccur="1" minOccur="1" comment="交易员登录
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspUserLogout" tid="TID_UserLogout" model="none" comment="交
易员登录退出应答">
<field name="RspUserLogoutField" maxOccur="1" minOccur="1" comment="交易员退
出登录响应域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="RspUserPasswordUpdate" tid="TID_UserPasswordUpdate" model="dialog" comment="交易员修改密码应答">
<field name="RspUserPasswordUpdateField" maxOccur="1" minOccur="1" comment="
交易员修改口令响应域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="TradeInsertSingle" tid="TID_TradeInsertSingle" model="private" comment="单边成交回报">
<field name="TradeInsertSingleField" maxOccur="1" minOccur="1" comment="单边成
交回报域"/>
价录入请求">
价录入应答">
</packageDefine>
<packageDefine name="ReqQuoteInsert" tid="TID_QuoteInsert" model="none" comment="报
<field name="InputQuoteField" maxOccur="1" minOccur="1" comment="报价录入域"/>
</packageDefine>
<packageDefine name="RspQuoteInsert" tid="TID_QuoteInsert" model="none" comment="报
<field name="InputQuoteField" maxOccur="1" minOccur="1" comment="报价录入域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="Quote" tid="TID_Quote" model="private" comment="报价状态回报
">
<field name="QuoteField" maxOccur="1" minOccur="1" comment="报价状态回报域"/>
</packageDefine>
<packageDefine name="ReqEnquireQuote" tid="TID_EnquireQuote" model="none"
comment="询价请求">
<field name="EnquireQuoteField" maxOccur="1" minOccur="1" comment="询价域"/>
</packageDefine>
<packageDefine name="RspEnquireQuoteInsert" tid="TID_EnquireQuote" model="none" comment="询价应答">
<field name="EnquireQuoteField" maxOccur="1" minOccur="1" comment="询价域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="EnquireQuoteNotify" tid="TID_EnquireQuoteNotify" model="public" comment="询价通知">
<field name="EnquireQuoteNotifyField" maxOccur="1" minOccur="1" comment="询价
通知域"/>
</packageDefine>
<packageDefine name="ReqExecOrderInsert" tid="TID_ExecOrderInsert" model="none"
comment="执行宣告录入请求">
<field name="InputExecOrderField" maxOccur="1" minOccur="1" comment="执行宣告
录入域"/>
</packageDefine>
<packageDefine name="RspExecOrderInsert" tid="TID_ExecOrderInsert" model="none"
comment="执行宣告录入应答">
<field name="InputExecOrderField" maxOccur="1" minOccur="1" comment="执行宣告
录入域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="ReqExecOrderAction" tid="TID_ExecOrderAction" model="none"
comment="执行宣告操作请求">
<field name="ExecOrderActionField" maxOccur="1" minOccur="1" comment="执行宣
告操作域"/>
</packageDefine>
<packageDefine name="RspExecOrderAction" tid="TID_ExecOrderAction" model="none"
comment="执行宣告操作应答">
<field name="ExecOrderActionField" maxOccur="1" minOccur="1" comment="执行宣
告操作域"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="ReqQryExecOrder" tid="TID_QryExecOrder" model="none"
comment="执行宣告查询请求">
<field name="QryExecOrderField" maxOccur="1" minOccur="1" comment="执行宣告查
询域"/>
</packageDefine>
<packageDefine name="RspQryExecOrder" tid="TID_QryExecOrder" model="none"
comment="执行宣告查询应答">
<field name="ExecOrderField" maxOccur="任意" minOccur="1" comment="执行宣告域
"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="ExecOrder" tid="TID_ExecOrder" model="private" comment="执行
宣告状态回报">
<field name="ExecOrderField" maxOccur="1" minOccur="1" comment="执行宣告域"/>
</packageDefine>
<packageDefine name="ReqQryExchangeRate" tid="TID_QryExchangeRate" model="none" comment="汇率信息查询请求">
<field name="QryExchangeRateField" maxOccur="1" minOccur="1" comment="汇率信
息查询域"/>
</packageDefine>
<packageDefine name="RspQryExchangeRate" tid="TID_QryExchangeRate" model="none"
comment="汇率信息查询应答">
<field name="ExecOrderField" maxOccur="任意" minOccur="1" comment="汇率信息域
"/>
<field name="ErrorField" maxOccur="1" minOccur="0" comment="错误域"/>
</packageDefine>
<packageDefine name="FlowMessageCancel" tid="TID_FlowMessageCancel"
model="private" comment="数据流回退通知">
<field name="FlowMessageCancelField" maxOccur="1" minOccur="1" comment="数据
流回退域"/>
</packageDefine>
</packages>
<tids>
<tidDefine name="TID_Error" value="0x0001"/>
<tidDefine name="TID_QryMarketMatchData" value="0x0002"/>
<tidDefine name="TID_OrderInsert" value="0x0003"/>
<tidDefine name="TID_OrderAction" value="0x0004"/>
<tidDefine name="TID_QryInstrument" value="0x0005"/>
<tidDefine name="TID_QryOrder" value="0x0006"/>
<tidDefine name="TID_QryTrade" value="0x0007"/>
<tidDefine name="TID_QryDeposit" value="0x0008"/>
<tidDefine name="TID_QryPPosition" value="0x0009"/>
<tidDefine name="TID_QryPosition" value="0x000A"/>
<tidDefine name="TID_QryMarket" value="0x000B"/>
<tidDefine name="TID_QryClient" value="0x000C"/>
<tidDefine name="TID_QryMarketStatus" value="0x000D"/>
<tidDefine name="TID_QryInstrumentStatus" value="0x000E"/>
<tidDefine name="TID_QryMarketOrderData" value="0x0012"/>
<tidDefine name="TID_QryParticipant" value="0x0013"/>
<tidDefine name="TID_QryUser" value="0x0014"/>
<tidDefine name="TID_QryUserLogin" value="0x0015"/>
<tidDefine name="TID_UserLogin" value="0x0016"/>
<tidDefine name="TID_UserLogout" value="0x0017"/>
<tidDefine name="TID_UserPasswordUpdate" value="0x0018"/>
<tidDefine name="TID_TradeInsertSingle" value="0x1001"/>
<tidDefine name="TID_ParticipantBulletin" value="0x1002"/>
<tidDefine name="TID_OrderConfirmation" value="0x1003"/>
<tidDefine name="TID_ForceExit" value="0x1005"/>
<tidDefine name="TID_MarketOrderIncData" value="0x2001"/>
<tidDefine name="TID_MarketMatchIncData" value="0x2002"/>
<tidDefine name="TID_MarketBulletin" value="0x2003"/>
<tidDefine name="TID_MarketMatchData" value="0x2004"/>
<tidDefine name="TID_MarketStatusChangeNotify" value="0x2005"/>
<tidDefine name="TID_InstrumentStatusChangeNotify" value="0x2006"/>
<tidDefine name="TID_InstrumentChangeNotify" value="0x2007"/>
<tidDefine name=" TID_QuoteInsert " value="0x1009"/>
<tidDefine name=" TID_Quote " value="0x5004"/>
<tidDefine name=" TID_ QryQuote " value="0x4005"/>
<tidDefine name=" TID_ EnquireQuote " value="0x6008"/>
<tidDefine name=" TID_ EnquireQuoteNotify " value="0x6009"/>
<tidDefine name=" TID_ ExecOrderInsert " value="0x1011"/>
<tidDefine name=" TID_ ExecOrderAction " value="0x1012"/>
<tidDefine name=" TID_ ExecOrder " value="0x5003"/>
<tidDefine name=" TID_ QryExecOrder " value="0x5004"/>
<tidDefine name=" TID_ QryExchangeRate" value="0x5006"/>
<tidDefine name=" TID_ FlowMessageCancle" value="0x5007"/>
示域">
</tids>
<fields>
<fieldDefine name="BulletinField" fid="FID_BulletinField" fidValue="0x0001" comment="告
<item name="NewsType" comment="消息类型"/>
<item name="NewsUrgency" comment="紧急程度"/>
<item name="SendTime" comment="发送时间"/>
<item name="Abstract" comment="摘要/说明"/>
<item name="ComeFrom" comment="消息来源"/>
<item name="MarketId" comment="市场编码"/>
<item name="Content" comment="消息正文"/>
<item name="URLLink" comment="此消息的 WEB 联结"/>
域">
员资金域">
</fieldDefine>
<fieldDefine name="ClientField" fid="FID_ClientField" fidValue="0x0002" comment="客户
<item name="ClientId" comment="客户编码"/>
<item name="ParticipantId" comment="交易会员编码"/>
<item name="ClientName" comment="客户名称"/>
<item name="ClientType" comment="客户类别"/>
<item name="TradeRights" comment="交易权限"/>
</fieldDefine>
<fieldDefine name="DepositField" fid="FID_DepositField" fidValue="0x0003" comment="会
<item name="ParticipantId" comment="交易会员编码"/>
<item name="ParticipantType" comment="会员类型"/>
<item name="TradeDate" comment="交易委托日期"/>
<item name="InitMargin" comment="初始保证金"/>
<item name="BuySpecOpenUsedMargin" comment="买投开仓使用保证金"/>
<item name="BuyHedgeOpenUsedMargin" comment="买保开仓使用保证金"/>
<item name="SellSpecOpenUsedMargin" comment="卖投开仓使用保证金"/>
<item name="SellHedgeOpenUsedMargin" comment="卖保开仓使用保证金"/>
<item name="BuySpecOffsetProfit" comment="买投平仓盈亏"/>
<item name="BuyHedgeOffsetProfit" comment="买保平仓盈亏"/>
<item name="SellSpecOffsetProfit" comment="卖投平仓盈亏"/>
<item name="SellHedgeOffsetProfit" comment="卖保平仓盈亏"/>
<item name="BuySpecOpenFrozMargin" comment="买投开仓冻结保证金"/>
<item name="BuyHedgeOpenFrozMargin" comment="买保开仓冻结保证金"/>
<item name="SellSpecOpenFrozMargin" comment="卖投开仓冻结保证金"/>
<item name="SellHedgeOpenFrozMargin" comment="卖保开仓冻结保证金"/>
<item name="BuySpecOffsetMargin" comment="买投平仓返回保证金"/>
<item name="BuyHedgeOffsetMargin" comment="买保平仓返回保证金"/>
<item name="SellSpecOffsetMargin" comment="卖投平仓返回保证金"/>
<item name="SellHedgeOffsetMargin" comment="卖保平仓返回保证金"/>
<item name="BuySpecTurnOver" comment="买投成交额"/>
<item name="BuyHedgeTurnOver" comment="买保成交额"/>
<item name="SellSpecTurnOver" comment="卖投成交额"/>
<item name="SellHedgeTurnOver" comment="卖保成交额"/>
<item name="AddValue" comment="本交易日新增资金"/>
<item name="DelValue" comment="本交易日提出资金"/>
<item name="BalanceValue" comment="可用保证金余额"/>
<item name="Premium" comment="权利金"/>
<item name="BuyOpenUsedPremium" comment="买开仓使用权利金"/>
<item name="BuyOpenFrozPremium" comment="买开仓冻结权利金"/>
</fieldDefine>
<fieldDefine name="DisseminationstartField" fid="FID_DisseminationstartField"
fidValue="0x0004" comment="发送信息起始说明域">
<item name="SequenceSeries" comment="序列类别号"/>
<item name="SequenceNo" comment="序列号"/>
</fieldDefine>
<fieldDefine name="ErrorField" fid="FID_ErrorField" fidValue="0x0005" comment="错误域
">
<item name="ErrorCode" comment="错误代码"/>
<item name="ErrorText" comment="错误正文"/>
<item name="TimeStamp" comment="时间戳"/>
</fieldDefine>
<fieldDefine name="ErrorTargetOrderField" fid="FID_ErrorTargetOrderField"
fidValue="0x002D" comment="错误报单号域">
<item name="OrderSysId" commnet="合同编号"/>
<item name="OrderLocalId" comment="委托编号"/>
</fieldDefine>
<fieldDefine name="ErrorTargetSequenceField" fid="FID_ErrorTargetSequenceField" fidValue="0x002E" comment="错误序列号域">
<item name="SequenceSeries" comment="序列类别号"/>
<item name="SequenceNo" comment="序列号"/>
</fieldDefine>
<fieldDefine name="ForceExitField" fid="FID_ForceExitField" fidValue="0x0006" comment="强制退出域">
<item name="ForceExitCode" comment="强制退出号"/>
<item name="ForceExitMsg" comment="强制退出原因"/>
</fieldDefine>
<fieldDefine name="InstrumentField" fid="FID_InstrumentField" fidValue="0x0007" comment="合约域">
<item name="MarketId" comment="市场编码"/>
<item name="InstrumentId" comment="合约编码"/>
<item name="InstrumentVersion" comment="合约版本号"/>
<item name="InstrumentName" comment="合约名称"/>
<item name="ShortCutKey" comment="输入快捷键"/>
<item name="StartTrdDate" comment="开始交易日"/>
<item name="EndTrdDate" comment="最后交易日"/>
<item name="InstrumentType" comment="合约类型"/>
<item name="EndDelvDate" comment="最后交割日"/>
<item name="StartDelvDate" comment="开始交割日"/>
<item name="InstrStopCode" comment="停止交易原因"/>
<item name="Currency" comment="交易用的货币"/>
<item name="TradeRights" comment="交易权限"/>
<item name="FuseRights" comment="可否熔断"/>
<item name="Unit" comment="每手乘数"/>
<item name="Tick" comment="最小价位"/>
<item name="HighLimitRate" comment="涨停板率"/>
<item name="LowLimitRate" comment="跌停板率"/>
<item name="MaxLot" comment="最大可下单手数"/>
<item name="MinLot" comment="最小可下单手数"/>
<item name="Pubstyle" comment="竞价阶段合约行情发布方式"/>
<item name="Fuselimit" comment="熔断限额"/>
<item name="Fusepersisttime" comment="熔断最大持续时间"/>
<item name="Fusepoint" comment="在该时间点后不可熔断"/>
<item name="FuseFlag" comment="熔断标记"/>
<item name="Forcedistime" comment="强平的撮合间隔"/>
<item name="StrikePrice" comment="执行价"/>
<item name="OptionsType" comment="期权类型"/>
<item name="UnderlyingInstrID" comment="基础商品代码"/>
<item name="UnderlyingMultiple" comment="基础商品乘数"/>
</fieldDefine>
<fieldDefine name="InstrumentStatusField" fid="FID_InstrumentStatusField" fidValue="0x0008" comment="合约状态域">
<item name="InstrumentId" comment="合约编码"/>
<item name="InstrumentStatus" comment="合约交易状态"/>
</fieldDefine>
<fieldDefine name="MarketStatusField" fid="FID_MarketStatusField" fidValue="0x0009" comment="市场状态域">
<item name="MarketId" comment="市场编码"/>
<item name="MarketStatusId" comment="市场交易状态编码"/>
<item name="BroadcastSequenceNo" comment="广播模式中的数据序列号"/>
</fieldDefine>
<fieldDefine name="MarketMatchIncDataField" fid="FID_MarketMatchIncDataField" fidValue="0x000A" comment="增量成交行情域">
<item name="InstrumentId" comment="合约编码"/>
<item name="InstrumentVersion" comment="合约版本号"/>
<item name="VolumeType" comment="数量类型"/>
<item name="Price" comment="价格"/>
<item name="Volume" comment="成交量"/>
<item name="MatchFlag" comment="成交双方的性质"/>
</fieldDefine>
<fieldDefine name="OrderActionField" fid="FID_OrderActionField" fidValue="0x000B" comment="报单操作域">
<item name="OrderActionCode" comment="报单操作类型码"/>
<item name="OrderSysId" comment="合同编号"/>
<item name="ActionLocalId" comment="报单操作本地编号"/>
<item name="InstrumentId" comment="合约编码"/>
<item name="InstrumentVersion" comment="合约版本号"/>
<item name="UserId" comment="交易员编码"/>
<item name="MessageReference" comment="用户自定义数据。可打印 ASCII 字符"/>
</fieldDefine>
<fieldDefine name="OrderInsertField" fid="FID_OrderInsertField" fidValue="0x000C" comment="报单信息域">
<item name="TradeDate" comment="交易日期"/>
<item name="ActionDate" comment="实际日期"/>
<item name="OrderSysId" comment="合同编号"/>
<item name="OrderLocalId" comment="委托编号"/>
<item name="UserId" comment="交易员编码"/>
<item name="ParticipantId" comment="交易会员编码"/>
<item name="ClientId" comment="客户编码"/>
<item name="InstrumentId" comment="合约编码"/>
<item name="Direction" comment="买卖方向"/>
<item name="OffsetFlag" comment="开平仓标记"/>
<item name="HedgeFlag" comment="投保标记"/>
<item name="StopPrice" comment="止损价格"/>
<item name="LimitPrice" comment="限价"/>
<item name="VolumeTotalOrginal" comment="原始总申报数量(以手为单位)"/>
<item name="OrderType" comment="报单类型"/>
<item name="MatchCondition" comment="报单成交属性"/>
<item name="MatchSession" comment="报单成交时间"/>
<item name="ValidThrough" comment="有效时间约束"/>
<item name="MinimalVolume" comment="最小成交量"/>
<item name="AutoSuspend" comment="自动挂起标志"/>
<item name="InsertTime" comment="录入时间"/>
<item name="MessageReference" comment="用户自定义数据。可打印 ASCII 字符"/>
</fieldDefine>
<fieldDefine name="MarketOrderDataField" fid="FID_MarketOrderDataField" fidValue="0x000D" comment="报单行情域">
<item name="InstrumentId" comment="合约编码"/>
<item name="InstrumentVersion" comment="合约版本号"/>
<item name="VolumeType" comment="数量类型"/>
<item name="Direction" comment="买卖方向"/>
<item name="Price" comment="价格"/>
<item name="Volume" comment="成交量"/>
<item name="BroadcastSequenceNo" comment="广播模式中的数据序列号"/>
</fieldDefine>
<fieldDefine name="OrderStatusField" fid="FID_OrderStatusField" fidValue="0x000E" comment="报单状态域">
<item name="TradeDate" comment="交易日期"/>
<item name="ActionDate" comment="实际日期"/>
<item name="OrderSysId" comment="合同编号"/>
<item name="OrderLocalId" comment="委托编号"/>
<item name="UserId" comment="交易员编码"/>
<item name="ParticipantId" comment="交易会员编码"/>
<item name="ClientId" comment="客户编码"/>
<item name="InstrumentId" comment="合约编码"/>
<item name="Direction" comment="买卖方向"/>
<item name="OffsetFlag" comment="开平仓标记"/>
<item name="HedgeFlag" comment="投保标记"/>
<item name="StopPrice" comment="止损价格"/>
<item name="LimitPrice" comment="限价"/>
<item name="VolumeTotalOrginal" comment="原始总申报数量(以手为单位)"/>
<item name="OrderType" comment="报单类型"/>
<item name="VolumeTotal" comment="剩余总申报数量(以手为单位)"/>
<item name="MatchCondition" comment="报单成交属性"/>
<item name="MatchSession" comment="报单成交时间"/>
<item name="ValidThrough" comment="有效时间约束"/>
<item name="MinimalVolume" comment="最小成交量"/>
<item name="AutoSuspend" comment="自动挂起标志"/>
<item name="OrderStatus" comment="报单状态"/>
<item name="InsertTime" comment="录入时间"/>
<item name="ActiveTime" comment="激活时间"/>
<item name="SuspendTime" comment="挂起时间"/>
<item name="UpdateTime" comment="最后修改时间"/>
<item name="ActiveUserId" comment="操作交易员编码"/>
<item name="Margin" comment="保证金"/>
<item name="ForceGroupId" comment="强平组号"/>
<item name="TradePrice" comment="最新成交价格"/>
<item name="TradeVolume" comment="今成交量"/>
<item name="MessageReference" comment="用户自定义数据。可打印 ASCII 字符"/>
</fieldDefine>
<fieldDefine name="ParticipantField" fid="FID_ParticipantField" fidValue="0x000F" comment="会员域">
<item name="ParticipantId" comment="交易会员编码"/>
<item name="ParticipantName" comment="会员名称"/>
<item name="ParticipantType" comment="会员类型"/>
<item name="PartiTrdRight" comment="会员权限"/>
</fieldDefine>
<fieldDefine name="PositionField" fid="FID_PositionField" fidValue="0x0010" comment="客
户持仓域">
<item name="ParticipantId" comment="交易会员编码"/>
<item name="ClientId" comment="客户编码"/>
<item name="InstrumentId" comment="合约编码"/>
<item name="InstrumentVersion" comment="合约版本号"/>
<item name="TradeDate" comment="交易委托日期"/>
<item name="YdBuyHedgePosition" comment="前买持仓量(保)"/>
<item name="YdBuySpecPosition" comment="前买持仓量(投)"/>
<item name="YdSellHedgePosition" comment="前卖持仓量(保)"/>
<item name="YdSellSpecPosition" comment="前卖持仓量(投)"/>
<item name="BuyHedgeVolume" comment="买成交量(保)"/>
<item name="BuySpecVolume" comment="买成交量(投)"/>
<item name="SellHedgeVolume" comment="卖成交量(保)"/>
<item name="SellSpecVolume" comment="卖成交量(投)"/>
<item name="BuyHedgePosition" comment="买开仓量(保)"/>
<item name="BuySpecPosition" comment="买开仓量(投)"/>
<item name="SellHedgePosition" comment="卖开仓量(保)"/>
<item name="SellSpecPosition" comment="卖开仓量(投)"/>
<item name="BuyOffsHPosition" comment="买平今量(保)"/>
<item name="BuyOffsSPosition" comment="买平今量(投)"/>
<item name="SellOffsHPosition" comment="卖平今量(保)"/>
<item name="SellOffsSPosition" comment="卖平今量(投)"/>
<item name="YdBuyOffsHPosition" comment="买平昨量(保)"/>
<item name="YdBuyOffsSPosition" comment="买平昨量(投)"/>
<item name="YdSellOffsHPosition" comment="卖平昨量(保)"/>
<item name="YdSellOffsSPosition" comment="卖平昨量(投)"/>
<item name="LongOpenFrozHPosition" comment="多头开仓冻结持仓手(保)"/>
<item name="LongOpenFrozSPosition" comment="多头开仓冻结持仓手(投)"/>
<item name="ShortOpenFrozHPosition" comment="空头开仓冻结持仓手(保)"/>
<item name="ShortOpenFrozSPosition" comment="空头开仓冻结持仓手(投)"/>
会员持仓域">
<item name="LongOffsFrozHPosition" comment="多头平仓冻结持仓手(保)"/>
<item name="LongOffsFrozSPosition" comment="多头平仓冻结持仓手(投)"/>
<item name="ShortOffsFrozHPosition" comment="空头平仓冻结持仓手(保)"/>
<item name="ShortOffsFrozSPosition" comment="空头平仓冻结持仓手(投)"/>
<item name="YdLongOffsFrozHPosition" comment="上日多头平仓冻结持仓手(保)"/>
<item name="YdLongOffsFrozSPosition" comment="上日多头平仓冻结持仓手(投)"/>
<item name="YdShortOffsFrozHPosition" comment="上日空头平仓冻结持仓手(保)"/>
<item name="YdShortOffsFrozSPosition" comment="上日空头平仓冻结持仓手(投)"/>
</fieldDefine>
<fieldDefine name="PPositionField" fid="FID_PPositionField" fidValue="0x0011" comment="
<item name="ParticipantId" comment="交易会员编码"/>