接口模式
交易员API 提供了二种编程接口,分别为CQdpFtdcTraderApi和CQdpFtdcTraderSpi。这两种接口对FTD协议进行了封装,方便客户端应用程序的开发。
客户端应用程序可以通过CQdpFtdcTraderApi发出操作请求,通过继承QdpFtdcTraderSpi并重载回调函数来处理后台服务的响应。
对话流和查询流编程接口
通过对话流进行通讯的编程接口通常如下:
请求:
int CQdpFtdcTraderApi::ReqXXX(CQdpFtdcXXXField *pReqXXX, int nRequestID)
响应:
void CQdpFtdcTraderSpi::OnRspXXX(CQdpFtdcXXXField *pRspXXX, CQdpFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast)
其中请求接口第一个参数 为请求的内容,不能为空。
第一个参数为请求号。请求号由客户端应用程序负责维护,正常情况下每个请求的请求号不要重复。在接收QDP后台系统的响应时,可以得到当时发出请求时填写的请求号,从而可以将响应与请求对应起来。
当收到后台服务应答时,CQdpFtdcTraderSpi的回调函数会被调用。如果响应数据不止一个,则回调函数会被多次调用。
回调函数的第一个参数为响应的具体数据,如果出错或没有结果有可能为NULL。
第二个参数为处理结果,表明本次请求的处理结果是成功还是失败。在发生多次回调时,除了第一次回调,其它的回调该参数都可能为NULL。
第三个参数为请求号,即原来发出请求时填写的请求号。
第四个参数为响应结束标志,表明是否是本次响应的最后一次回调。
私有流编程接口
私有流中的数据中用户的私有信息,包括报单回报、成交回报等。
通过私有流接收回报的编程接口通常如下:
void CQdpFtdcTraderSpi::OnRtnXXX(CQdpFtdcXXXField *pXXX)
或
void CQdpFtdcTraderSpi::OnErrRtnXXX(CQdpFtdcXXXField *pXXX, CQdpFtdcRspInfoField *pRspInfo)
当收到QDP交易系统通过私有流发布的回报数据时,CQdpFtdcTraderSpi的回调函数会被调用。回调函数的参数为回报的具体内容。