金仕达个股期权系统OTP_APIReference: Q & A

OTP_API Reference

金仕达个股期权系统OTP_APIReference 1.0.50303
Q & A
1: OTP_API通讯模式有哪几种,具体用途是什么?
金仕达服务器提供了对话、私有、广播等三种通讯模式
  • 对话模式:客户端给金仕达服务器发送请求,该请求被服务器端接收和处理,并给予响应。例如报单、查询等。这种通讯模式与普通的客户/服务器模式相同。在对话模式中,传输的是对话数据流和查询数据流。对话和查询数据流是双向数据流,客户端发出请求,金仕达服务器返回结果。金仕达服务器并不保存对话和查询数据流。当故障发生时,比如连接中断后又重新连接,对话和查询数据流将会重置,通讯途中的数据可能会丢失。
  • 私有模式:金仕达服务器把特定的私人信息发送给对应的客户端,包括报单状态、成交信息等。在私人通讯模式中,传输的是私人数据流。私人数据流是单向数据流,金仕达服务器就是利用它来把相应的私人信息发给提出申请的客户端。私人数据流是可靠的。当客户端和金仕达服务器失去连接后,在同一交易日的任何时间,客户端都可重新连上金仕达服务器,获取一系列指定的私人信息而不用担心这些数据会丢失。
  • 广播模式:金仕达服务器将把公告等信息发送给所有的注册用户。在广播通讯模式中,传输的是公共数据流。和私人数据流一样,它是单向数据流,而且可靠。区别在于,广播通讯数据会发送到所有连接的客户端上。它的主要用途就是发布公共设备的状态信息或重要的公共信息。
  • 通讯模式和网络的连接不一定存在简单的一对一的关系。也就是说,一个网络连接中可能传送多种不同通讯模式的报文,一种通讯模式的报文也可以在多个不同的连接中传送。
2: OTP_API编程接口有什么特色?
OTP_API是一个基于 C++的类库, 通过使用和扩展类库提供的接口来实现实现客户端和金仕达服务器之间的数据传输。
  • 对话模式:
    请求: int CKSOTPTraderApi::ReqXXX(CKSOTPXXXField *pReqXXX,int nRequestID);
    响应: void CKSOTPTraderSpi::OnRspXXX(CKSOTPXXXField *pRspXXX,CKSOTPRspInfoField *pRspInfo,int nRequestID,bool bIsLast);
    其中请求接口第一个参数为请求的内容,不能为空。
    第二个参数为请求号。请求号由客户端应用程序负责维护,正常情况下每个请求的请求号不要重复。在接收金仕达服务器的响应时,可以得到当时发出请求时填写的请求号,从而可以将响应与请求对应起来。
    请求函数的返回值:0 表示正确,其他表示返回错误。
    当客户端收到金仕达服务器发出的反馈时,回调函数CKSOTPXXXSpi被激活。如果反馈多于一条,回调函数CKSOTPXXXSpi会反复被激活,直到数据全部接收完毕。
    回调函数的第一个参数为响应的具体数据,如果出错或没有结果有可能为NULL。
    第二个参数为处理结果,表明本次请求的处理结果是成功还是失败。在发生多次回调时,除了第一次回调,其它的回调该参数都可能为 NULL。
    第三个参数为请求号,即原来发出请求时填写的请求号。
    最后一个参数是结束标识,其值为“true”时表示进行的是该请求的最后一个反馈。
  • 私有模式、广播模式:
    void CKSOTPTraderSpi::OnRtnXXX(CKSOTPXXXField *pXXX);
    void CKSOTPTraderSpi::OnErrRtnXXX(CKSOTPXXXField *pXXX,CKSOTPRspInfoField *pRspInfo);
    当金仕达服务器发出私有、公有数据流时,OnRtnXXX的回调函数将被激活。所有回调函数的第一个参数都是金仕达服务器返回的具体内容,OnErrRtnXXX函数的第二个参数是报错时详细的错误信息。
3: OTP_API编程步骤具体哪些?
客户端应用程序需要经过两步才能连接到金仕达服务器:初始化与功能启用。
(1)创建一个“CKSOTPTraderApi”实例。
(2)创建一个处理来自“CKSOTPTraderSpi”接口的事件处理器,然后使用“CKSOTPTraderApi”的“RegisterSpi”函数记录下这些事件。
(3)使用“CKSOTPTraderApi”的“SubscribePrivateTopic”函数处理私有数据流。
(4)使用“CKSOTPTraderApi”的“SubscribePublicTopic” 函数处理公共数据流。
(5)使用“CKSOTPTraderApi”的“RegisterFront” 函数记录金仕达服务器的前端地址。
(6)使用“CKSOTPTraderApi”的“Init“函数来连接金仕达服务器。
(7)连上金仕达服务器之后,“CKSOTPTraderSpi”接口的回调函数“OnFrontConnected”将被激活。函数运行过程中,客户端的应用程序需要使用“CKSOTPTraderApi”的“ReqUserLogin” 函数来提交登录请求。
(8)当金仕达服务器确认登陆成功后,“CKSOTPTraderSpi”接口回调函数“OnRspUserLogin” 将被激活。
(9)这样,客户端与Kingstar服务器的通讯就建立起来了。客户端交易应用程序可以使用其他金仕达 API业务来与Kingstar服务器进行通讯。