自定义消息的消息类型值首字符为‘UF’。其他类型的消息由全国金融标准化技术委员会根据国际相关标准的变化统一定义并发布。对于尚未发布的扩展消息,将以参考文件《股指期货业务基金期货间数据交换接口_扩充消息参考指引》的形式发布。
消息的模块顺序在扩展定义时不能改变,即保持消息头、消息体和消息尾的顺序。而模块的内部,域和重复组的顺序是可以变化的。
消息头的头三个域的定义和位置不能改变,但可以扩展增加消息头的可选域。 消息尾最后一个域的定义和位置不能改变,但可以扩展增加消息尾的可选域。 8.3 版本管理
本协议的版本管理权属于中国证券业协会。
版本号格式为X.Y.Z,版本号从1.0.0起始,当新版本完全兼容上一版本时只改变版本号中的Z。 本协议当前版本的版本号为1.0.0。 9 消息定义
9.1 消息头
每一个会话或应用消息有一个消息头,该消息头指明消息类型、消息体长度、发送目的地、消息序号、发送起始点和发送时间。
其中有两个域用于消息重发。使用FIX会话时对于会话级的事件而重复发送消息时将可能重复发送标志(PossDupFlag)设置为Y(发送时用原来的消息序号)。当重新发送时使用新的消息序号时将可能重新发送标志(PossResend)设置为Y,接受者应按以下方法处理上述消息:
可能重复发送:如果带有该消息序号的消息在以前曾经接受过,则忽略消息,如果未曾收到过,则按正常步骤处理。(支持FIX会话层需要)
可能重新发送:将消息传递给应用层以确定此前是否收到该消息(通过检查订单编号或相关参数)。 消息头格式见表1:
表1 消息头 Tag 域名 8 9 35 49 56 BeginString BodyLength MsgType SenderCompID TargetCompID 必需 说明 Y Y Y Y Y N N N N Y N N N N N N 起始串,取值:FIX.4.2(不可加密,消息的第一个域) 消息体长度(不可加密,消息的第二个域) 消息类型(不可加密,消息的第三个域) 发送方代码(不可加密,发送方标识符) 接收方代码(不可加密,接收方标识符) 最初发送方标识符(可加密),用于经第三方发送。 最终接收方标识符(可加密),用于经第三方发送。 密文数据长度 密文数据(紧跟密文数据长度域) 消息序号(可加密),如果交易双方不采用FIX会话机制,可将该tag置为一个固定的值,例如0。 发送方子标识符(可加密) 发送方方位标识符(可加密) 接收方子标识符(可加密) 接收方方位标识符(可加密) 最初发送方子标识符(可加密) 最初发送方方位标识符(可加密) 7
115 OnBehalfOfCompID 128 DeliverToCompID 90 91 34 50 57 SecureDataLen SecureData MsgSeqNum SenderSubID TargetSubID 142 SenderLocationID 143 TargetLocationID 116 OnBehalfOfSubID 144 OnBehalfOfLocationID
129 DeliverToSubID 145 DeliverToLocationID 43 97 52 PossDupFlag PossResend SendingTime N N N N Y N N N N 最终接收方子标识符(可加密) 最终接收方方位标识符(可加密) 可能重复标志,重复发送时,作此标记。(可加密) 可能重发标志。(可加密) 发送时间(可加密) 原始发送时间(可加密) 消息中Encoded域的字符编码类型(非ASCII码) 最后处理消息序号(可加密) 最初发送时间(用UTC表示时间) 122 OrigSendingTime 347 MessageEncoding 369 LastMsgSeqNumProcessed 370 OnBehalfOfSendingTime 9.2 消息尾
每一个消息(会话或应用消息)有一个消息尾,并以此终止。消息尾可用于分隔多个消息,包含有3位数的校验和值。
消息尾格式见表2:
表2 消息尾 Tag 93 89 10 域名 SignatureLength Signature CheckSum 必需 N N Y 说明 数字签名长度(不可加密) 数字签名(不可加密) 校验和,消息的最末域。(不可加密) 9.3 应用消息 9.3.1 客户登录管理类
客户登录类消息主要是支持客户登录、登出和其他客户管理的等消息。交易双方可根据自身业务需要选择是否支持登录、登出等交易。
9.3.1.1 客户登录请求(MsgType=UF001)
在会话层连接建立以后,客户请求登录期货公司的系统。 客户登录请求(User Logon Request)的格式见表3:
表3 客户登录请求(User Logon Request) Tag 8088 109 98 8001 95 96 8096 8103 8104 域名 标准消息头 RequestID ClientID EncryptMethod LogonPasswd RawDataLength RawData MacNetInfo ClientSoftName ClientSoftVersion 标准消息尾 必需 Y Y Y Y Y N N N N N Y 说明 MsgType=UF001 客户方请求编号,在同一个交易日内必需唯一 客户资金帐号 加密方法(不可加密) 交易密码 无格式数据长度,用于认证 无格式数据,用于认证(可用于表示密钥) 客户方机器网络信息 客户方的软件客户端名称 客户方的软件客户端版本 9.3.1.2 客户登录应答(MsgType=UF002) 客户请求登录期货公司的系统后,期货公司返回的应答。 客户登录应答(User Logon Response)的格式见表4:
表4 客户登录应答(User Logon Response)
8
Tag 域名 必需 说明 标准消息头 Y MsgType=UF002 8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一 109 ClientID Y 客户资金帐号 8002 LogonStatus Y 登录状态 8003 AccountName N 客户名称 8004 RiskLevel N 客户风险度 8005 AdditionalMargin N 追加保证金 8006 ClientSecuType N 客户安全类别 8011 Riskratio N 客户风险率 8007 LastLogonIP N 上次登录IP 8008 LastLogonTime N 上次登录日期和时间 58 Text N 标准消息尾 Y 9.3.1.3 客户登出请求(MsgType=UF003)
在业务时间结束以后,客户请求登出期货公司的系统。 客户登出请求(User Logout Request)的格式见表5:
表5 客户登出请求(User Logout Request) Tag 域名 必需 说明 标准消息头 Y MsgType=UF003 8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一 109 ClientID Y 客户资金帐号 标准消息尾 Y 9.3.1.4 客户登出应答(MsgType=UF004)
期货公司对客户请求登出系统的应答。
客户登出应答(User Logout Response)的格式见表6:
表6 客户登出应答(User Logout Response) Tag 域名 必需 说明 标准消息头 Y MsgType=UF004 8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一 109 ClientID Y 客户资金帐号 8002 LogonStatus Y 登录状态 58 Text N 标准消息尾 Y 9.3.1.5 客户修改密码请求(MsgType=UF005) 客户请求修改密码。
客户修改密码请求(User Change PassWd Request)的格式见表7:
表7 客户修改密码请求(User Change PassWd Request) Tag 域名 必需 说明 标准消息头 Y MsgType=UF005 8088 RequestID Y 客户方请求编号,在同一个交易日内必需唯一 109 ClientID Y 客户资金帐号 8089 PassWdType Y 密码类型
9
8090 8091 58 OldPassWd NewPassWd Text 标准消息尾 Y Y N Y 客户旧的密码 客户新的密码 9.3.1.6 客户修改密码应答(MsgType=UF006) 期货公司对客户请求修改密码的应答。
客户修改密码应答(User Change PassWd Response)的格式见表8:
表8 客户修改密码应答(User Change PassWd Response) Tag 8088 109 8070 58 域名 标准消息头 RequestID ClientID ChangePWResult Text 标准消息尾 必需 Y Y Y Y N Y 说明 MsgType=UF006 客户方请求编号,在同一个交易日内必需唯一 客户资金帐号 修改密码结果 9.3.2 订单业务类
订单业务类消息主要是支持日常实时交易消息。 9.3.2.1 新订单消息(MsgType=D)
对于在消息头中设置了PossResend标志的订单消息,应当使用交易客户方订单编号(ClOrdID)核实是否已收到该订单,具体实现时还应检查订单参数(买卖方向、证券代码、数量等)进行核实。如果之前收到该订单,应以执行报告消息回应订单状态。如果之前未收到,则以执行报告消息回应订单确认。
TransactTime域指示订单发起时间,可结合业务规则来判断收到的订单是否已过期。 新订单消息(New Order-Single)的格式见表9:
表9 新订单(New Order-Single) Tag 11 109 1 110 55 167 200 205 207 77 8009 8010 54 38 60 域名 标准消息头 ClOrdID ClientID Account MinQty Symbol SecurityType MaturityMonthYear MaturityDay SecurityExchange OpenClose HedgeFlag TouchCondition Side OrderQty TransactTime 必需 Y Y Y Y N Y N N N Y Y Y N Y N Y 说明 MsgType=D 交易客户方订单编号,在订单有效交易日内必需唯一 客户资金帐号 客户交易编码 最小成交量。 期货合约代码 FUT = 期货 用于指定期货到期的年和月 用于期货的到期日期,并被与到期年月(MaturityMonthYear)联合使用 用于指定交易所 指明开仓,平仓 投机套保标志 触发条件 买卖方向 委托手数 订单发起时间 10
40 44 423 99 15 59 168 432 OrdType Price PriceType StopPx Currency TimeInForce EffectiveTime ExpireDate Y N N N N N N N 订单类型 价格(限价订单时有效) 价格类型 停止价 币种 新订单生效时间,默认为当日有效 用于指定定单有效的时间 有条件地用于在生效时间(TimeInForce)=在某日前有效(GTD),而没有指定截止时间(ExpireTime)的情况之下 有条件地用于生效时间(TimeInForce) = 在某日前有效(GTD)和到期日没有被指定的情况之下 委托方的机器网络信息 126 ExpireTime N 8096 58 MacNetInfo Text 标准消息尾 N N Y 9.3.2.2 执行报告消息(MsgType=8) 执行报告消息可用于: a) 订单确认
b) 订单状态变化确认(如撤单确认) c) 发送订单的成交回报 d) 订单拒绝
每个执行报告中都包含两个域:OrdStatus,订单状态;ExecType,执行类型。 OrdStatus用以报告订单当前状态。
ExecType域用以标识执行报告的执行类型。执行报告中ExecType和OrdStatus共同指示了订单状态的改变。
执行信息(如已成交或部分成交)与其它状态变化信息(如待撤消、已撤消、已接受、当天完成)不能在一个执行报告中同时传递。
撤单在订单有剩余数量时才有效。
一般性公式为:订单手数OrderQty = 累计执行数量CumQty + 订单剩余数量LeavesQty
公式的例外情况:如果ExecType和/或OrdStatus为已撤消、当天完成、已过期、已计算、已拒绝,则订单不处于活跃状态,LeavesQty为0。
ClOrdID提供给交易客户方进行订单标识,在其内部系统中唯一。域OrderID则是由期货公司生成的委托号。在撤单中,ClOrdID/OrigClOrdID需要形成链接。
支持强平推送消息,并置OpenClose为”Q”。
对于不支持返回成交平均价的柜台,可将成交平均价置为0. 执行报告消息(Execution Report)的格式见表10:
表10 执行报告消息(Execution Report) Tag 37 11 域名 标准消息头 OrderID ClOrdID 必需 Y Y N 说明 MsgType=8 期货公司委托号,同个交易日必需保证唯一 交易客户方订单编号。如果是强平回报,则该值取值为以”NONE”开头的当天交易日唯一的字符串标识 11