《上海期货交易所交易系统接口.docx》由会员分享,可在线阅读,更多相关《上海期货交易所交易系统接口.docx(7页珍藏版)》请在三一办公上搜索。
1、上海期货交易所交易系统接口上海期货交易所交易系统接口说明 一、概述 除了交易行情是通过UDP端口实时广播外,PC端与交易主机/交易前置机的信息交换以TCP协议实现。交易系统接收并维护来自各PC端的TCP连接,通过各连接链路接收每个PC端的登录、下撤单命令以及各类查询命令,同时交易系统将命令的应答发给相应的PC端。TCP连接端口号分别是7150,7151,7152,7153。通讯的最小单元称为包,每个包大小限制在83字节与4096字节之间。通信包结构: 包头 + 命令字和处理状态 + 正文信息/回送信息 1.1 数据包头结构 PC端发送的命令、交易系统返回的处理结果都包含一个开始的数据包头,大小
2、固定为55个字节。里面包括交易系统用户名以及后续数据的长短。 struct char head; /开始标志,固定为0x01 char sadd16; /PC端填0x20,交易系统返回信息时填PC登录用户名 char suse6; /发送端用户名的前6个字节,可不用 char radd16; /PC端发送时填本地用户名 char ruse6; /可不用 char start; /信息开始符 char vary2; /命令类型,二进制 char stat; /信息状态 /1:第一次发送,其他:非第一次 char line; /信息行号 0结束,1有后续行 char leng5; /信息正文长度
3、+ 28 char comm8; /命令字 char echo20; /处理状态 ; head:开始标志,必须为二进制0x01。 sadd:客户端发送时添ASCII空格 。交易系统回送以二进制0结尾的客户端用户名(Null Terminated)。 suse:客户端发送时添ASCII空格 。可不用。 radd:客户端发送时添以二进制0结尾的用户名(Null Terminated)。 ruse:客户端用户名的前6位。可不用。 start:二进制0x02。 vary:命令字类型,和命令字一起标示命令。根据命令不同,填充不同的二进制值。交易系统处理之后,返回的vary0加0x01,vary1不变。
4、stat:信息状态1。表示是否是本命令/处理回送结果的第一个数据包。ASCII值 /1代表第一个数据包;其他数值代表后续包。对于PC机或其他客户端,请求的一条命令不会超过4013个字节,因此总是填 /1。对于交易系统的处理结果,如查询客户,结果可能超过一个包的最大长度,必须分成不同的连续包进行传送。 line:信息状态2。表示是否是本命令/处理回送结果的最后一个数据包,主要在客户端查询命令的回送信息中使用。ASCII字符1代表是处理结果的非结束数据包,后面还有数据包。ASCII字符0代表是处理结果的最后一个数据包。 leng:数据包除包头的长度,也就是“正文信息/回送信息”长度+28字节。 c
5、omm:命令字。命令由左对齐的ASCII码字符组成,不足8位后面补足ASCII空格。服务器返回结果时使用OK 代表处理成功,ERROR 代表处理失败,在echo字段给出失败原因。对于交易系统状态改变,如开盘、暂停、收盘等或告警命令,则有不同的命令字,不同于OK/ERROR。 echo:客户端发送时填入28个字节的ASCII空格 ,交易系统回送信息时为处理状态。 二、交易系统与客户端接口 以下为接口的各条命令,客户端向交易系统发送请求命令,系统处理后返回处理结果及相应的数据结构。每条命令对应的命令类型在标题栏的括号内以16进制方式表示。客户端程序必须认识到只有在命令字中返回”OK “时,命令表述
6、的应答结构中的内容才有效,否则,要么不返回应答结构,要么结构中的内容不确定。 21 用户登录命令 客户端用户必须向交易系统登录后才能够进行其他后续处理。 命令字:login。命令结构: struct unsigned char userid15; /交易员,字符型 unsigned char passwd40; /口令,字符型 ; 若该交易员已经登录且其登录的IP地址与现在的IP地址不一致,则此次登录失败。若地址相同,可以进行其他合法性检查。口令检查通过后,将该交易员在此前所用的最大本地编号返回,该编号每个交易日从0开始往上增长。前置机、交易系统主机连接返回的结构有些不一致。必须想办法解决。
7、应答命令(0x0501),应答结构: struct unsigned char userid15; /交易员 unsigned char passwd40; /口令 unsigned char usernm8; /交易员姓名 unsigned char localno08; /交易员用最大报单本地编号 unsigned char time8; /交易系统时间,格式为hhmmssuu unsigned char sysstat8; /交易系统状态,1:系统初始化 / 21:系统开市 / 22:系统开盘 / 25:系统收盘,生成收盘价 / 26:系统收市,生成结算价 / 255:系统暂停 / 51
8、2;系统结算 unsigned char membid8; /所属会员 unsigned char section2; /当前交易节代码 unsigned char sstatus; /交易节状态,请参阅交易节状态变换图 ; 应答结构: struct unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char ; userid15; passwd40; usernm8; dat
9、e8; time8; sysstat8; membid8; section2; sstatus; localno08; /交易员 /口令 /交易员姓名 /交易员用最大报单本地编号 /交易系统时间,格式为hhmmssuu /交易系统状态,1:系统初始化 / 21:系统开市 / 22:系统开盘 / 25:系统收盘,生成收盘价 / 26:系统收市,生成结算价 / 255:系统暂停 / 512;系统结算 /所属会员 /当前交易节代码 /交易节状态,请参阅交易节状态变换图 /交易员用最大报单本地编号 22 用户登录退出命令 命令字:logout,命令结构 struct unsigned char use
10、rid15; /交易员,字符型 unsigned char passwd40; /口令,字符型 ; 首先检查该用户是否登录,且其IP地址是否一致。返回结果同登录。前置机接口尚未确定。若登录后修改过口令,此时应用修改后的口令。 23 用户口令修改命令 命令字:modpwd,命令结构 struct unsigned char userid15; /交易员,字符型 unsigned char oldpwd40; /旧口令,字符型 unsigned char passwd40; /新口令,字符型 ; 应答命令(0x0320),应答结构与命令结构一致。 24 系统强制用户退出 命令字、命令结构无。 应答
11、命令(0x0513)中的命令字为“killlog ”,应答结构无。此时该交易员已经标示为删除状态,无法继续登录和操作。 25 系统发送警告系统 命令字、命令结构无。 应答命令(0x02310), 应答结构: struct unsigned char ; content70; /警告信息,固定70字节长 2. 6 系统开市命令 命令字、命令结构无。 应答命令start(0x0502),应答结构无。 交易系统状态控制如下:初始化开市开盘节操作/暂停收盘 三、行情广播接口 交易系统主动广播变化行情,而且每隔20秒刷新所有行情。UDP广播断口号7200。 struct unsigned short s
12、tatus; /判断是否为20秒轮循广播,0x8000置位代表是,其他否 unsigned short unsigned short unsigned short unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned
13、 char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char unsigned char ; total; /发送行情记录总数,网络序 no; /记录总数的序号,网络序 id; /未用 name7; /交易品种 psettle7; /前结算 pclose7; /前收盘 open7; /开盘价 bid7; /最高买价 bvol7; /该买价申报手数 ask7; /最低卖
14、价 svol7; /该买价申报手数 last7; /当前价 high7; /当天最高成交价 low7; /当天最低成交价 sum7; /总成交手数 open_interest10; /当前持仓手数 open_interest010; /当天初始化时持仓手数 close7; /收盘价 settle7; /结算价 average7; /实时均价 his_high7; /历史最高成交价 his_low7; /历史最低成交价 upper7; /涨停板 lower7; /跌停板 turnover13; /成交金额 lastv7; /最后一笔成交手数 date8; /行情修改日期,格式ccyymmdd time8; /行情修改时间,格式hhmmdduu seq4; /在相同日期时间内的修改序号 not_used30; /未用