编辑: glay | 2019-07-06 |
1 所示: 中国金融期货交易所技术文档 行情客户端应用程序接口 版权所有?中国金融期货交易所 第4页,共36 页图1) 各通讯模式的工作过程 2.2 数据流 行情发布支持对话通讯模式、广播通讯模式:
1、对话通讯模式 对话通讯模式下支持对话数据流: 中国金融期货交易所技术文档 行情客户端应用程序接口 版权所有?中国金融期货交易所 第5页,共36 页 对话数据流是一个双向数据流, 会员系统发送请求, 行情发布系统反馈应答. 交易系统不维护对话流的状态.系统故障时,对话数据流会重置,通讯途中的数 据可能会丢失.
2、广播通讯模式 广播通讯模式下支持行情数据流: 行情数据流是一个单向数据流,由行情发布系统发向会员系统,用于发送行 情信息;
行情流是一个可靠的数据流,行情系统维护整个系统的行情流,在一个 交易日内,会员系统断线恢复连接时,可以请求行情系统发送指定序号之后的行 情流数据. 行情服务所提供的行情内容是按照主题组织的. 每个主题包括一组合约的行 情, 还包括了行情发布内容和发布方式, 包括行情深度、 采样频率、 延迟时间等. 交易所会公布各行情主题的具体内容,并设定每个行情用户所能订阅的行情主 题.每个行情主题对应着一个行情流. 要获得行情通知,客户端必需在连接行情服务器时,订阅一个或多个行情发 布主题. 中国金融期货交易所技术文档 行情客户端应用程序接口 版权所有?中国金融期货交易所 第6页,共36 页第3章 接口模式 3.1 MduserAPI 接口 与TraderAPI 类似, MduserAPI 提供了二个接口, 分别为 CFfexFtdcMduserApi 和CFfexFtdcMduserSpi.这两个接口是对 FTD 协议的封装. 行情接收系统可以通过 CFfexFtdcMduserApi 发出操作请求,通继承 CFfexFtdcMduserSpi 并重载回调函数来处理交易系统的响应. 3.1.1 对话流编程接口 通过对话流进行通讯的编程接口通常如下: ////请求: int CFfexFtdcMduserApi::ReqXXX( CFfexFtdcXXXField *pReqXXX, int nRequestID) ////响应: void CFfexFtdcMduserSpi::OnRspXXX( CFfexFtdcXXXField *pRspXXX, CFfexFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) 其中请求接口第一个参数为请求的内容,不能为空. 请求接口的第二个参数为请求号.请求号由行情接收系统应用程序负责维 护,正常情况下每个请求的请求号不会重复.在接收交易系统的响应时,可以得 到当时发出请求时填写的请求号,从而可以将响应与请求对应起来. 当收到交易系统应答时,CFfexFtdcMduserSpi 的回调函数会被调用.如果响 应数据不止一个,则回调函数会被多次调用. 回调函数一共包含四个参数.其中: 中国金融期货交易所技术文档 行情客户端应用程序接口 版权所有?中国金融期货交易所 第7页,共36 页 第一个参数为响应的具体数据,如果出错或没有结果有可能为 NULL. 第二个参数为处理结果,表明本次请求的处理结果是成功还是失败.在发生 多次回调时,除了第一次回调,其它的回调该参数都可能为 NULL. 第三个参数为请求号,即原来发出请求时填写的请求号. 第四个参数为响应结束标志,表明是否是本次响应的最后一次回调. 3.1.2 行情流编程接口 行情流中的数据包含了交易系统推出的行情信息. 通过行情流接收回报的编程接口通常如下: void CFfexFtdcMduserSpi::OnRtnXXX(CFfexFtdcXXXField *pXXX);