中国金融期货交易所技术文档
行情客户端应用程序接口
行情客户端应用程序
接口
2006 年 10 月 19 日
版权所有©中国金融期货交易所
第 I页
中国金融期货交易所技术文档
行情客户端应用程序接口
文件版本号 修正日期
备 注
V1.01
V1.02
2007-03-28
2009-08-07
首次发布
修改示例程序,添加 Join 等待
目录
第 1 章
第 2 章
2.1
2.2
第 3 章
3.1
3.2
第 4 章
4.1
4.2
第 5 章
介绍 ............................................................................................................................ 1
体系结构 .................................................................................................................... 1
通讯模式 .................................................................................................................... 1
数据流........................................................................................................................ 2
运行模式 .................................................................................................................... 1
工作线程 .................................................................................................................... 1
本地文件 .................................................................................................................... 1
开发接口 .................................................................................................................... 1
CFfexFtdcMduserSpi 接口 ....................................................................................... 1
OnFrontConnected 方法 ................................................................................... 1
OnFrontDisconnected 方法 .............................................................................. 1
OnHeartBeatWarning 方法 ................................................................................2
OnRspUserLogin 方法 .......................................................................................2
OnRspUserLogout 方法....................................................................................3
OnRtnDepthMarketData 方法........................................................................... 4
OnRspError 方法 .............................................................................................. 6
CFfexFtdcMduserApi 接口........................................................................................7
CreateFtdcMduserApi 方法 ...............................................................................7
Release 方法 ......................................................................................................7
Init 方法 .............................................................................................................8
Join 方法........................................................................................................... 8
GetTradingDay 方法 ..........................................................................................8
RegisterSpi 方法............................................................................................... 8
RegisterFront 方法............................................................................................9
SubscribeMarketDataTopic 方法 .......................................................................9
ReqUserLogin 方法 .......................................................................................... 9
ReqUserLogout 方法 ...................................................................................... 10
开发示例 .................................................................................................................. 12
4.1.1
4.1.2
4.1.3
4.1.4
4.1.5
4.1.6
4.1.7
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7
4.2.8
4.2.9
4.2.10
版权所有©中国金融期货交易所
第 II页
中国金融期货交易所技术文档
行情客户端应用程序接口
第 1 章 介绍
行情客户端系统 API 是一个基于 C++的类库, 通过使用和扩展类库提供的接
口来实现行情数据的接收。该类库包含以下 5 个文件:
文件名
版本
文件大小
文件描述
CFfexFtdcMduserApi.h
V1.02
11,441 字节
行情接口头文件
CFfexFtdcUserApiStruct.h
V1.02
40,238 字节
定义了 UserAPI 所需的一系列数据
类型的头文件
CffexFtdcUserApiDataType.h V1.02
142,601 字节 定义了一系列业务相关的数据结构
的头文件
CFfexmduserapi.dll
Cffexmduserapi.lib
V1.02
983,121 字节 动态链接库二进制文件
V1.02
3,530 字节
导入库文件
支持 MS VC 6.0,MS VC.NET 2003 编译器。需要打开多线程编译选项/MT。
版权所有©中国金融期货交易所
第 1页,共 21页
中国金融期货交易所技术文档
行情客户端应用程序接口
第 2 章 体系结构
行情 API 使用建立在 TCP 协议之上 FTD 协议与交易所的行情发布服务器进
行通讯。行情发布服务器负责行情信息的产生与发布,但不参与交易过程。参与
交易需要使用另外的“交易员 API”。
2.1 通讯模式
FTD 协议中的所有通讯都基于某个通讯模式。通讯模式实际上就是通讯双
方协同工作的方式。
行情发布涉及的通讯模式共有二种:
对话通讯模式
广播通讯模式
对话通讯模式是指由会员端主动发起的通讯请求。该请求被交易所端接收和
处理,并给予响应。例如登入与登出。这种通讯模式与普通的客户/服务器模式
相同。
广播通讯模式是指交易所端主动,向市场中的相关会员发出相同的信息。例
如行情等。
通讯模式和网络的连接不一定存在简单的一对一的关系。也就是说,一个网
络连接中可能传送多种不同通讯模式的报文,一种通讯模式的报文也可以在多个
不同的连接中传送。
无论哪种通讯模式,其通讯过程都如图 1 所示:
版权所有©中国金融期货交易所
第 1页,共 21页
中国金融期货交易所技术文档
行情客户端应用程序接口
会员系统
交易所系统
连接请求
连接确认
身份认证请求
身份认证响应
发送请求(如果在对话模式下)
给出响应(如果在对话模式下)
发出私有信息(如果在私有模式下)
发出市场公告(如果在市场模式下)
断开请求
断开确认
图 1) 各通讯模式的工作过程
2.2 数据流
行情发布支持对话通讯模式、广播通讯模式:
对话通讯模式下支持对话数据流:
对话数据流是一个双向数据流,会员系统发送请求,行情发布系统反馈应答。
版权所有©中国金融期货交易所
第 2页,共 21页
中国金融期货交易所技术文档
行情客户端应用程序接口
交易系统不维护对话流的状态。系统故障时,对话数据流会重置,通讯途中的数
据可能会丢失。
广播通讯模式下支持行情数据流:
行情数据流是一个单向数据流,由行情发布系统发向会员系统,用于发送行
情信息;行情流是一个可靠的数据流,行情系统维护整个系统的行情流,在一个
交易日内,会员系统断线恢复连接时,可以请求行情系统发送指定序号之后的行
情流数据。
行情服务所提供的行情内容是按照主题组织的。每个主题包括一组合约的行
情,还包括了行情发布内容和发布方式,包括行情深度、采样频率、延迟时间等。
交易所会公布各行情主题的具体内容,并设定每个行情用户所能订阅的行情主
题。每个行情主题对应着一个行情流。
要获得行情通知,客户端必需在连接行情服务器时,订阅一个或多个行情发
布主题。
版权所有©中国金融期货交易所
第 3页,共 21页
中国金融期货交易所技术文档
行情客户端应用程序接口
第 3 章 运行模式
3.1 工作线程
交易员客户端应用程序至少由两个线程组成,一个是应用程序主线程,一个
是交易员 API 工作线程。应用程序与交易系统的通讯是由 API 工作线程驱动的。
CFfexFtdcMduserApi 提供的接口是线程安全的,可以有多个应用程序线程同
时发出请求。
CFfexFtdcMduserSpi 提供的接口回调是由 API 工作线程驱动,如果重载的某
个回调函数阻塞,则等于阻塞了 API 工作线程,API 与交易系统的通讯会停止。
因此,在 CFfexFtdcTraderSpi 派生类的回调函数中,通常应迅速返回,可以利用
将数据放入缓冲区或通过 Windows 的消息机制来实现。
3.2 本地文件
交 易 员 API 在 运 行 过 程 中 , 会 将 一 些 数 据 写 入 本 地 文 件 中 。 调 用
CreateFtdcMduserApi 函数,可以传递一个参数,指明存贮本地文件的路径。该
路径必须在运行前已创建好。本地文件的扩展名都是”.con”。
版权所有©中国金融期货交易所
第 1页,共 21页
中国金融期货交易所技术文档
行情客户端应用程序接口
第 4 章 开发接口
行 情 客 户 端 系 统 API 提 供 了 二 个 接 口 ,分 别 为 CFfexFtdcMduserApi 和
CFfexFtdcMduserSpi。
4.1 CFfexFtdcMduserSpi 接口
CFfexFtdcMduserSpi 实 现 了 事 件 通 知 接 口 。 用 户 必 需 派 生
CFfexFtdcMduserSpi 接口,编写事件处理方法来处理感兴趣的事件。
4.1.1 OnFrontConnected 方法
当客户端与行情发布服务器建立起通信连接时(还未登录前),该方法被调
用。
函数原型:
void OnFrontConnected();
本方法在完成初始化后调用,可以在其中完成用户登录任务。
4.1.2 OnFrontDisconnected 方法
当客户端与交易后台通信连接断开时,该方法被调用。当发生这个情况后,
API 会自动重新连接,客户端可不做处理。
函数原型:
void OnFrontDisconnected (int nReason);
参数:
nReason:连接断开原因
0x1001 网络读失败
0x1002 网络写失败
0x2001 接收心跳超时
0x2002 发送心跳失败
版权所有©中国金融期货交易所
第 1页,共 21页