gitee.com/haifengat/gotap_dipper@v0.0.4-0.20231212021028-041a6fa876e5/v9.3.8.7_20230117/iTapTradeAPI.h (about)

     1  #ifndef ITAP_TRADE_API_H
     2  #define ITAP_TRADE_API_H
     3  
     4  #include "iTapTradeAPIDataType.h"
     5  // #include "TapProtocol.h"
     6  
     7  #if defined WIN32 || defined WIN64
     8  #define TAP_CDECL __cdecl
     9  #define TAP_DLLEXPORT __declspec(dllexport)
    10  #else
    11  #define TAP_CDECL
    12  #define TAP_DLLEXPORT
    13  #endif
    14  // TapTradeAPI.h
    15  // 文件定义了TapTradeAPI提供给开发者的对外接口、函数和回调接口。
    16  
    17  // TapTradeAPI 的回调通知接口。
    18  namespace ITapTrade {
    19  /**
    20   * @brief 回调类:ITapTradeAPINotify
    21   * @details TapTradeAPI的回调通知接口。
    22   */
    23  class ITapTradeAPINotify {
    24     public:
    25      /**
    26       * @brief 连接成功回调通知
    27       * @details	开启重连后,可以设置多个地址,故OnConnect只通知连接成功的地址。
    28       * @param[in] HostAddress 格式为IP:PORT,例0.0.0.0:1234。
    29       * @attention	该回调返回成功,说明地址连接成功。但不代表登录成功。
    30       * @ingroup G_T_Login
    31       */
    32      virtual void TAP_CDECL OnConnect(const ITapTrade::TAPISTR_40 HostAddress) = 0;
    33      /**
    34       * @brief	系统登录过程回调。
    35       * @details	此函数为Login()登录函数的回调,调用Login()成功后建立了链路连接,然后API将向服务器发送登录认证信息,
    36       *			登录期间的数据发送情况和登录的回馈信息传递到此回调函数中。登录反馈信息会包含下次二次认证日期。
    37       * @param[in] errorCode 返回错误码,0表示成功。
    38       * @param[in] loginRspInfo 登录应答信息,如果errorCode!=0,则loginRspInfo=NULL。
    39       * @attention	该回调返回成功,说明用户登录成功。但是不代表API准备完毕。
    40       * @ingroup G_T_Login
    41       */
    42      virtual void TAP_CDECL OnRspLogin(ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPITradeLoginRspInfo* loginRspInfo) = 0;
    43      /**
    44       * @brief	二次认证联系方式通知。
    45       * @details	登录完成后,如果需要二次认证(9.2.7后台),会收到联系方式的通知,可以选择通知消息的一个联系方式(邮箱或者电话)
    46       *			请求发送二次认证授权码(RequestVertificateCode)。
    47       * @param[in] errorCode 返回错误码,0表示成功。如果账户没有绑定二次认证联系方式,则返回10016错误。
    48       * @param[in] isLast,标识是否是最后一条联系信息。
    49       * @param[in] 认证方式信息,如果errorCode!=0,则ContactInfo为空。
    50       * @attention 该回调返回成功,说明需要二次认证,并且需要选择一个联系方式然后调用RequestVertificateCode。
    51       * @ingroup G_T_Login
    52       */
    53      virtual void TAP_CDECL OnRtnContactInfo(ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TAPISTR_40 ContactInfo) = 0;
    54  
    55      /**
    56       * @brief	请求发送二次认证码应答。
    57       * @details	请求获取二次认证授权码,后台发送邮件或者短信,并给出应答,包含发送序号以及认证码有效期。
    58       *
    59       * @param[in] sessionID 请求二次认证码会话ID。
    60       * @param[in]  errorCode 如果没有绑定联系,返回10016错误.
    61       * @param[in]  rsp二次认证码有效期,以秒返回,在二次认证有效期内,可以重复设置二次认证码,但是不能再重新申请二次认证码。
    62       * @attention	该回调返回成功,说明验证码已发送目标手机或邮箱,需要调用SetVertificateCode将手机收到的验证码发送给后台。
    63       * @ingroup G_T_Login
    64       */
    65      virtual void TAP_CDECL OnRspRequestVertificateCode(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const TapAPIRequestVertificateCodeRsp* rsp) = 0;
    66  
    67      /**
    68       * @brief	API到期提醒回调
    69       * @details	此函数为Login()登录成功后,如果到期日与当前日期小于30天,则进行回调提醒。
    70       * @param[in] date 返回API授权到期日。
    71       * @param[in] days 返回还有几天授权到期。
    72       * @attention	该函数回调,则说明授权在一个月之内到期。否则不产生该回调。
    73       * @ingroup G_T_Login
    74       */
    75      virtual void TAP_CDECL OnExpriationDate(ITapTrade::TAPIDATE date, int days) = 0;
    76  
    77      /**
    78       * @brief	通知用户API准备就绪。
    79       * @details	只有用户回调收到此就绪通知时才能进行后续的各种行情数据查询操作。\n
    80       *			此回调函数是API能否正常工作的标志。
    81       * @attention 就绪后才可以进行后续正常操作
    82       * @ingroup G_T_Login
    83       */
    84      virtual void TAP_CDECL OnAPIReady(ITapTrade::TAPIINT32 errorCode) = 0;
    85      /**
    86       * @brief	API和服务失去连接的回调
    87       * @details	在API使用过程中主动或者被动与服务器服务失去连接后都会触发此回调通知用户与服务器的连接已经断开。
    88       * @param[in] reasonCode 断开原因代码。
    89       * @attention 注意,OnDisconnect与后台连接断开时才会回调此函数;如果连接之前已断开,再主动调用Disconnect时不会回调此函数。
    90       * @ingroup G_T_Disconnect
    91       */
    92      virtual void TAP_CDECL OnDisconnect(ITapTrade::TAPIINT32 reasonCode) = 0;
    93      /**
    94       * @brief 通知用户密码修改结果
    95       * @param[in] sessionID 修改密码的会话ID,和ChangePassword返回的会话ID对应。
    96       * @param[in] errorCode 返回错误码,0表示成功。
    97       * @ingroup G_T_UserInfo
    98       */
    99      virtual void TAP_CDECL OnRspChangePassword(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode) = 0;
   100  
   101      /**
   102       * @brief 认证账户密码反馈
   103       * @param[in] sessionID 修改密码的会话ID,和AuthPassword返回的会话ID对应。
   104       * @param[in] errorCode 返回错误码,0表示成功。
   105       * @ingroup G_T_UserInfo
   106       */
   107      virtual void TAP_CDECL OnRspAuthPassword(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode) = 0;
   108      /**
   109       * @brief	返回系统交易日期和当天LME到期日
   110       * @param[in] sessionID 请求的会话ID;
   111       * @param[in] errorCode 错误码。0 表示成功。
   112       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   113       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   114       * @ingroup G_T_TradeSystem
   115       */
   116  
   117      virtual void TAP_CDECL OnRspQryTradingDate(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPITradingCalendarQryRsp* info) = 0;
   118      /**
   119       * @brief 设置用户预留信息反馈
   120       * @param[in] sessionID 设置用户预留信息的会话ID
   121       * @param[in] errorCode 返回错误码,0表示成功。
   122       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   123       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   124       * @note 该接口暂未实现
   125       * @ingroup G_T_UserInfo
   126       */
   127      virtual void TAP_CDECL OnRspSetReservedInfo(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TAPISTR_50 info) = 0;
   128      /**
   129       * @brief	返回用户信息
   130       * @details	此回调接口向用户返回查询的资金账号的详细信息。用户有必要将得到的账号编号保存起来,然后在后续的函数调用中使用。
   131       * @param[in] sessionID 请求的会话ID;
   132       * @param[in] errorCode 错误码。0 表示成功。
   133       * @param[in] isLast 标示是否是最后一批数据;
   134       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   135       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   136       * @ingroup G_T_AccountInfo
   137       */
   138      virtual void TAP_CDECL OnRspQryAccount(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIUINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIAccountInfo* info) = 0;
   139      /**
   140       * @brief 返回资金账户的资金信息
   141       * @param[in] sessionID 请求的会话ID;
   142       * @param[in] errorCode 错误码。0 表示成功。
   143       * @param[in] isLast 	标示是否是最后一批数据;
   144       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   145       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   146       * @ingroup G_T_AccountDetails
   147       */
   148      virtual void TAP_CDECL OnRspQryFund(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIFundData* info) = 0;
   149      /**
   150       * @brief	用户资金变化通知
   151       * @details	用户的委托成交后会引起资金数据的变化,因此需要向用户实时反馈。
   152       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   153       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   154       * @ingroup G_T_AccountDetails
   155       */
   156      virtual void TAP_CDECL OnRtnFund(const ITapTrade::TapAPIFundData* info) = 0;
   157      /**
   158       * @brief 返回系统中的交易所信息
   159       * @param[in] sessionID 请求的会话ID;
   160       * @param[in] errorCode 错误码。0 表示成功。
   161       * @param[in] isLast 	标示是否是最后一批数据;
   162       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   163       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   164       * @ingroup G_T_TradeSystem
   165       */
   166      virtual void TAP_CDECL OnRspQryExchange(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIExchangeInfo* info) = 0;
   167      /**
   168       * @brief	返回系统中品种信息
   169       * @details	此回调接口用于向用户返回得到的所有品种信息。
   170       * @param[in] sessionID 请求的会话ID,和GetAllCommodities()函数返回对应;
   171       * @param[in] errorCode 错误码。0 表示成功。
   172       * @param[in] isLast 	标示是否是最后一批数据;
   173       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   174       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   175       * @ingroup G_T_Commodity
   176       */
   177      virtual void TAP_CDECL OnRspQryCommodity(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPICommodityInfo* info) = 0;
   178      /**
   179       * @brief 返回系统中合约信息
   180       * @param[in] sessionID 请求的会话ID;
   181       * @param[in] errorCode 错误码。0 表示成功。
   182       * @param[in] isLast 	标示是否是最后一批数据;
   183       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   184       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   185       * @ingroup G_T_Contract
   186       */
   187      virtual void TAP_CDECL OnRspQryContract(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPITradeContractInfo* info) = 0;
   188      /**
   189       * @brief	返回新增合约信息
   190       * @details	向用户推送新的合约。主要用来处理在交易时间段中服务器添加了新合约时,向用户发送这个合约的信息。
   191       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   192       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   193       * @ingroup G_T_Contract
   194       */
   195      virtual void TAP_CDECL OnRtnContract(const ITapTrade::TapAPITradeContractInfo* info) = 0;
   196      /**
   197       * @brief	订单操作应答
   198       * @details	下单、撤单、改单应答。下单都会有次应答回调,如果下单请求结构中没有填写合约或者资金账号,则仅返回错误号。\n
   199       * 撤单、改单错误由应答和OnRtnOrder,成功仅返回OnRtnOrder回调。\n
   200       * sessionID标识请求对应的sessionID,以便确定该笔应答对应的请求。\n
   201       *
   202       * @param[in] sessionID 请求的会话ID;
   203       * @param[in] errorCode 错误码。0 表示成功。
   204       * @param[in] info 订单应答具体类型,包含订单操作类型和订单信息指针。
   205       * 订单信息指针部分情况下可能为空,如果为空,可以通过SessiuonID找到对应请求获取请求类型。
   206       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   207       * @ingroup G_T_TradeActions
   208       */
   209      virtual void TAP_CDECL OnRspOrderAction(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIOrderActionRsp* info) = 0;
   210      /**
   211       * @brief 返回新委托通知。新下的或者其他地方下的推送过来的。
   212       * @details	服务器接收到客户下的委托内容后就会保存起来等待触发,同时向用户回馈一个
   213       *			新委托信息说明服务器正确处理了用户的请求,返回的信息中包含了全部的委托信息,
   214       *			同时有一个用来标示此委托的委托号。
   215       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   216       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   217       * @ingroup G_T_TradeActions
   218       */
   219      virtual void TAP_CDECL OnRtnOrder(const ITapTrade::TapAPIOrderInfoNotice* info) = 0;
   220      /**
   221       * @brief	返回查询的委托信息
   222       * @details	返回用户查询的委托的具体信息。
   223       * @param[in] sessionID 请求的会话ID;
   224       * @param[in] errorCode 错误码。0 表示成功。
   225       * @param[in] isLast 标示是否是最后一批数据;
   226       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   227       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   228       * @ingroup G_T_TradeInfo
   229       */
   230      virtual void TAP_CDECL OnRspQryOrder(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIOrderInfo* info) = 0;
   231      /**
   232       * @brief 返回查询的委托变化流程信息
   233       * @param[in] sessionID 请求的会话ID;
   234       * @param[in] errorCode 错误码,当errorCode==0时,info指向返回的委托变化流程结构体,不然为NULL;
   235       * @param[in] isLast 标示是否是最后一批数据;
   236       * @param[in] info 返回的委托变化流程指针。
   237       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   238       * @ingroup G_T_TradeInfo
   239       */
   240      virtual void TAP_CDECL OnRspQryOrderProcess(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIOrderInfo* info) = 0;
   241      /**
   242       * @brief 返回查询的成交信息
   243       * @param[in] sessionID 请求的会话ID;
   244       * @param[in] errorCode 错误码。0 表示成功。
   245       * @param[in] isLast 	标示是否是最后一批数据;
   246       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   247       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   248       * @ingroup G_T_TradeInfo
   249       */
   250      virtual void TAP_CDECL OnRspQryFill(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIFillInfo* info) = 0;
   251      /**
   252       * @brief	推送来的成交信息通知
   253       * @details	用户的委托成交后将向用户推送成交信息。
   254       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   255       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   256       * @ingroup G_T_TradeActions
   257       */
   258      virtual void TAP_CDECL OnRtnFill(const ITapTrade::TapAPIFillInfo* info) = 0;
   259      /**
   260       * @brief 返回查询的持仓
   261       * @param[in] sessionID 请求的会话ID;
   262       * @param[in] errorCode 错误码。0 表示成功。
   263       * @param[in] isLast 	标示是否是最后一批数据;
   264       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   265       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   266       * @ingroup G_T_TradeInfo
   267       */
   268      virtual void TAP_CDECL OnRspQryPosition(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIPositionInfo* info) = 0;
   269      /**
   270       * @brief 持仓变化推送通知
   271       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   272       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   273       * @ingroup G_T_TradeActions
   274       */
   275      virtual void TAP_CDECL OnRtnPosition(const ITapTrade::TapAPIPositionInfo* info) = 0;
   276      /**
   277       * @brief 返回查询的持仓汇总
   278       * @param[in] sessionID 请求的会话ID;
   279       * @param[in] errorCode 错误码。0 表示成功。
   280       * @param[in] isLast 	标示是否是最后一批数据;
   281       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   282       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   283       * @ingroup G_T_TradeInfo
   284       */
   285      virtual void TAP_CDECL OnRspQryPositionSummary(TAPIUINT32 sessionID, TAPIINT32 errorCode, TAPIYNFLAG isLast, const TapAPIPositionSummary* info) = 0;
   286  
   287      /**
   288       * @brief 持仓汇总变化推送通知
   289       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   290       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   291       * @ingroup G_T_TradeActions
   292       */
   293      virtual void TAP_CDECL OnRtnPositionSummary(const TapAPIPositionSummary* info) = 0;
   294      /**
   295       * @brief 持仓盈亏通知
   296       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   297       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   298       * @ingroup G_T_TradeActions
   299       */
   300      virtual void TAP_CDECL OnRtnPositionProfit(const ITapTrade::TapAPIPositionProfitNotice* info) = 0;
   301  
   302      /**
   303       * @brief 返回系统中的币种信息
   304       * @param[in] sessionID 请求的会话ID;
   305       * @param[in] errorCode 错误码。0 表示成功。
   306       * @param[in] isLast 	标示是否是最后一批数据;
   307       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   308       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   309       * @ingroup G_T_TradeSystem
   310       */
   311      virtual void TAP_CDECL OnRspQryCurrency(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPICurrencyInfo* info) = 0;
   312  
   313      /**
   314      * @brief	交易消息通知
   315      * @details	返回查询的用户资金状态信息。信息说明了用户的资金状态,用户需要仔细查看这些信息。
   316      * @param[in] sessionID 请求的会话ID;
   317      * @param[in] errorCode 错误码。0 表示成功。
   318      * @param[in] isLast 	标示是否是最后一批数据;
   319      * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   320      * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   321      说明:易盛保留接口
   322      * @ingroup G_T_AccountDetails
   323      */
   324      virtual void TAP_CDECL OnRspQryTradeMessage(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPITradeMessage* info){};
   325      /**
   326      * @brief	交易消息查询应答
   327      * @details	用户在交易过程中可能因为资金、持仓、平仓的状态变动使账户处于某些危险状态,或者某些重要的信息需要向用户通知。
   328      * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   329      * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   330      说明:易盛保留接口
   331      * @ingroup G_T_AccountDetails
   332      */
   333      virtual void TAP_CDECL OnRtnTradeMessage(const ITapTrade::TapAPITradeMessage* info){};
   334      /**
   335       * @brief 历史委托查询应答
   336       * @param[in] sessionID 请求的会话ID;
   337       * @param[in] errorCode 错误码。0 表示成功。
   338       * @param[in] isLast 	标示是否是最后一批数据
   339       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   340       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   341       * @ingroup G_T_HisInfo
   342       */
   343      virtual void TAP_CDECL OnRspQryHisOrder(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIHisOrderQryRsp* info){};
   344      /**
   345       * @brief 历史委托流程查询应答
   346       * @param[in] sessionID 请求的会话ID;
   347       * @param[in] errorCode 错误码。0 表示成功。
   348       * @param[in] isLast 	标示是否是最后一批数据
   349       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   350       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   351       * @ingroup G_T_HisInfo
   352       */
   353      virtual void TAP_CDECL OnRspQryHisOrderProcess(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIHisOrderProcessQryRsp* info){};
   354      /**
   355       * @brief 历史成交查询应答
   356       * @param[in] sessionID 请求的会话ID;
   357       * @param[in] errorCode 错误码。0 表示成功。
   358       * @param[in] isLast 	标示是否是最后一批数据
   359       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   360       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   361       * @ingroup G_T_HisInfo
   362       */
   363      virtual void TAP_CDECL OnRspQryHisMatch(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIHisMatchQryRsp* info){};
   364      /**
   365       * @brief 历史持仓查询应答
   366       * @param[in] sessionID 请求的会话ID;
   367       * @param[in] errorCode 错误码。0 表示成功。
   368       * @param[in] isLast 	标示是否是最后一批数据
   369       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   370       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   371       * @ingroup G_T_HisInfo
   372       */
   373      virtual void TAP_CDECL OnRspQryHisPosition(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIHisPositionQryRsp* info){};
   374      /**
   375       * @brief 历史交割查询应答
   376       * @param[in] sessionID 请求的会话ID;
   377       * @param[in] errorCode 错误码。0 表示成功。
   378       * @param[in] isLast 	标示是否是最后一批数据
   379       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   380       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   381       * @ingroup G_T_HisInfo
   382       */
   383      virtual void TAP_CDECL OnRspQryHisDelivery(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIHisDeliveryQryRsp* info){};
   384      /**
   385       * @brief 资金调整查询应答
   386       * @param[in] sessionID 请求的会话ID;
   387       * @param[in] errorCode 错误码。0 表示成功。
   388       * @param[in] isLast 	标示是否是最后一批数据
   389       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   390       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   391       * @ingroup G_T_HisInfo
   392       */
   393      virtual void TAP_CDECL OnRspQryAccountCashAdjust(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIAccountCashAdjustQryRsp* info){};
   394      /**
   395       * @brief 查询用户账单应答 Add:2013.12.11
   396       * @param[in] sessionID 请求的会话ID;
   397       * @param[in] errorCode 错误码。0 表示成功。
   398       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   399       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   400       * @ingroup G_T_Bill
   401       */
   402      virtual void TAP_CDECL OnRspQryBill(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIBillQryRsp* info){};
   403      /**
   404       * @brief 查询账户手续费计算参数 Add:2017.01.14
   405       * @param[in] sessionID 请求的会话ID;
   406       * @param[in] errorCode 错误码。0 表示成功。
   407       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   408       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   409       * @ingroup G_T_Rent
   410       */
   411      virtual void TAP_CDECL OnRspQryAccountFeeRent(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIAccountFeeRentQryRsp* info){};
   412      /**
   413       * @brief 查询账户保证金计算参数 Add:2017.01.14
   414       * @param[in] sessionID 请求的会话ID;
   415       * @param[in] errorCode 错误码。0 表示成功。
   416       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   417       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   418       * @ingroup G_T_Rent
   419       */
   420      virtual void TAP_CDECL OnRspQryAccountMarginRent(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIAccountMarginRentQryRsp* info){};
   421  
   422      /**
   423       * @brief 港交所做市商双边报价应答 Add:2017.08.29
   424       * @param[in] sessionID 请求的会话ID;
   425       * @param[in] errorCode 错误码。0 表示成功。
   426       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   427       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   428       * @ingroup G_T_HKMarket
   429       */
   430      virtual void TAP_CDECL OnRspHKMarketOrderInsert(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIOrderMarketInsertRsp* info){};
   431  
   432      /**
   433       * @brief 港交所做市商双边撤单应答 Add:2017.08.29
   434       * @param[in] sessionID 请求的会话ID;
   435       * @param[in] errorCode 错误码。0 表示成功。
   436       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   437       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   438       * @ingroup G_T_HKMarket
   439       */
   440      virtual void TAP_CDECL OnRspHKMarketOrderDelete(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIOrderMarketDeleteRsp* info){};
   441  
   442      /**
   443       * @brief 港交所询价通知 Add:2017.08.29
   444       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   445       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   446       * @ingroup G_T_HKMarket
   447       */
   448      virtual void TAP_CDECL OnHKMarketQuoteNotice(const ITapTrade::TapAPIOrderQuoteMarketNotice* info){};
   449  
   450      /**
   451       * @brief 订单删除应答 Add:2017.12.05
   452       * @param[in] sessionID 请求的会话ID;
   453       * @param[in] errorCode 错误码。0 表示成功。
   454       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   455       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   456       * @ingroup G_T_LocalActions
   457       */
   458      virtual void TAP_CDECL OnRspOrderLocalRemove(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIOrderLocalRemoveRsp* info){};
   459  
   460      /**
   461       * @brief 订单录入应答 Add:2017.12.05
   462       * @param[in] sessionID 请求的会话ID;
   463       * @param[in] errorCode 错误码。0 表示成功。
   464       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   465       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   466       * @ingroup G_T_LocalActions
   467       */
   468      virtual void TAP_CDECL OnRspOrderLocalInput(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIOrderLocalInputRsp* info){};
   469  
   470      /**
   471       * @brief 订单修改应答 Add:2017.12.05
   472       * @param[in] sessionID 请求的会话ID;
   473       * @param[in] errorCode 错误码。0 表示成功。
   474       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   475       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   476       * @ingroup G_T_LocalActions
   477       */
   478      virtual void TAP_CDECL OnRspOrderLocalModify(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIOrderLocalModifyRsp* info){};
   479  
   480      /**
   481       * @brief 订单转移应答 Add:2017.12.05
   482       * @param[in] sessionID 请求的会话ID;
   483       * @param[in] errorCode 错误码。0 表示成功。
   484       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   485       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   486       * @ingroup G_T_LocalActions
   487       */
   488      virtual void TAP_CDECL OnRspOrderLocalTransfer(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIOrderLocalTransferRsp* info){};
   489  
   490      /**
   491       * @brief 成交录入应答 Add:2017.12.05
   492       * @param[in] sessionID 请求的会话ID;
   493       * @param[in] errorCode 错误码。0 表示成功。
   494       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   495       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   496       * @ingroup G_T_LocalActions
   497       */
   498      virtual void TAP_CDECL OnRspFillLocalInput(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIFillLocalInputRsp* info){};
   499  
   500      /**
   501       * @brief 成交删除应答 Add:2017.12.05
   502       * @param[in] sessionID 请求的会话ID;
   503       * @param[in] errorCode 错误码。0 表示成功。
   504       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   505       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   506       * @ingroup G_T_LocalActions
   507       */
   508      virtual void TAP_CDECL OnRspFillLocalRemove(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIFillLocalRemoveRsp* info){};
   509  
   510      /**
   511       * @brief 客户现货锁定量查询应答
   512       * @param[in] sessionID 请求的会话ID;
   513       * @param[in] errorCode 错误码。0 表示成功。
   514       * @param[in] isLast 	标示是否是最后一批数据
   515       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   516       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   517       * @ingroup G_T_Spot
   518       */
   519      virtual void TAP_CDECL OnRspQrySpotLock(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPISpotLockDataRsp* info){};
   520  
   521      /**
   522       * @brief 客户现货锁定量变更通知
   523       * @param[in] info		指向返回的信息结构体。
   524       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   525       * @ingroup G_T_Spot
   526       */
   527      virtual void TAP_CDECL OnRtnSpotLock(const ITapTrade::TapAPISpotLockDataRsp* info){};
   528  
   529      /**
   530       * @brief 用户提交用户登录信息应答。
   531       * @details 直连在登陆后收到此应答和登录应答;中继在主动提交采集后收到应答。
   532       * @param[in] sessionID 请求的会话ID;
   533       * @param[in] errorCode 错误码。0 表示成功。
   534       * @param[in] isLast 	标示是否是最后一批数据
   535       * @param[in] info		指向返回的信息结构体。当errorCode不为0时,info为空。
   536       * @attention  不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   537       * @ingroup G_T_Spot
   538       */
   539      virtual void TAP_CDECL OnRspSubmitUserLoginInfo(TAPIUINT32 sessionID, TAPIINT32 errorCode, TAPIYNFLAG isLast, const TapAPISubmitUserLoginRspInfo* info){};
   540      /**
   541       * @brief	特殊业务委托操作应答
   542       * @details	特殊业务操作都会有次应答回调,sessionID标识请求对应的sessionID,以便确定该笔应答对应的请求。\n
   543       * @param[in] sessionID 请求的会话ID;
   544       * @param[in] errorCode 错误码。0 表示成功。
   545       * @param[in] info 订单应答具体类型,包含订单操作类型和订单信息指针。
   546       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   547       * @ingroup G_T_Spot
   548       */
   549      virtual void TAP_CDECL OnRspSpecialOrderAction(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPISpecialOrderInfo* info){};
   550      /**
   551       * @brief 返回特殊业务委托通知。
   552       * @details	返回的信息中包含了全部的特殊业务委托信息,同时有一个用来标示此特殊业务委托的委托号。
   553       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   554       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   555       * @ingroup G_T_Spot
   556       */
   557      virtual void TAP_CDECL OnRtnSpecialOrder(const ITapTrade::TapAPISpecialOrderInfo* info){};
   558      /**
   559       * @brief 返回特殊业务委托信息查询结果
   560       * @details	是主动查询的查询结果
   561       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   562       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   563       * @ingroup G_T_Spot
   564       */
   565      virtual void TAP_CDECL OnRspQrySpecialOrder(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPISpecialOrderInfo* info){};
   566      /**
   567       * @brief 返回组合持仓信息查询结果
   568       * @details	是主动查询的查询结果
   569       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   570       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   571       * @ingroup G_T_Spot
   572       */
   573      virtual void TAP_CDECL OnRspQryCombinePosition(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPICombinePositionInfo* info){};
   574      /**
   575       * @brief  返回组合持仓变化推送通知
   576       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   577       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   578       * @ingroup G_T_Spot
   579       */
   580      virtual void TAP_CDECL OnRtnCombinePosition(const ITapTrade::TapAPICombinePositionInfo* info){};
   581  
   582      /**
   583       * @brief  返回查询用户信任设备结果
   584       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   585       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   586       * @ingroup G_T_TrustDevice
   587       */
   588      virtual void TAP_CDECL OnRspQryUserTrustDevice(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIUserTrustDeviceQryRsp* info){};
   589  
   590      /**
   591       * @brief  返回增加用户信任设备结果
   592       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   593       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   594       * @ingroup G_T_TrustDevice
   595       */
   596      virtual void TAP_CDECL OnRspAddUserTrustDevice(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIUserTrustDeviceAddRsp* info){};
   597  
   598      /**
   599       * @brief  返回删除用户信任设备结果
   600       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   601       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   602       * @ingroup G_T_TrustDevice
   603       */
   604      virtual void TAP_CDECL OnRspDelUserTrustDevice(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIUserTrustDeviceDelRsp* info){};
   605  
   606      /**
   607       * @brief  返回用户信任设备结果增加推送通知
   608       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   609       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   610       * @ingroup G_T_TrustDevice
   611       */
   612      virtual void TAP_CDECL OnRtnAddUserTrustDevice(const ITapTrade::TapAPIUserTrustDeviceAddRsp* info){};
   613  
   614      /**
   615       * @brief  返回用户信任设备结果删除推送通知
   616       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   617       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   618       * @ingroup G_T_TrustDevice
   619       */
   620      virtual void TAP_CDECL OnRtnDelUserTrustDevice(const ITapTrade::TapAPIUserTrustDeviceDelRsp* info){};
   621  
   622      /**
   623       * @brief  返回IPO基础信息查询结果
   624       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   625       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   626       * @ingroup G_T_IPO
   627       */
   628      virtual void TAP_CDECL OnRspQryIPOInfo(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIIPOInfoQryRsp* info){};
   629      /**
   630       * @brief  返回IPO可申购数量查询结果
   631       * @details 每一个品种返回多条可申购数量
   632       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   633       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   634       * @ingroup G_T_IPO
   635       */
   636      virtual void TAP_CDECL OnRspQryIPOStockQty(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIAvailableApplyQryRsp* info){};
   637      /**
   638       * @brief  用户IPO信息查询应答
   639       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   640       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   641       * @ingroup G_T_IPO
   642       */
   643      virtual void TAP_CDECL OnRspQryAccountIPO(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, ITapTrade::TAPIYNFLAG isLast, const ITapTrade::TapAPIAccountIPOQryRsp* info){};
   644      /**
   645       * @brief  用户IPO信息增加应答
   646       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   647       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   648       * @ingroup G_T_IPO
   649       */
   650      virtual void TAP_CDECL OnRspAddAccountIPO(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIAccountIPOAddRsp* info){};
   651      /**
   652       * @brief  用户IPO信息撤销应答
   653       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   654       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   655       * @ingroup G_T_IPO
   656       */
   657      virtual void TAP_CDECL OnRspCancelAccountIPO(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode, const ITapTrade::TapAPIAccountIPOCancelRsp* info){};
   658      /**
   659       * @brief  用户IPO信息增加通知
   660       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   661       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   662       * @ingroup G_T_IPO
   663       */
   664      virtual void TAP_CDECL OnRtnAddAccountIPO(const ITapTrade::TapAPIAccountIPOAddNotice* info){};
   665      /**
   666       * @brief  用户IPO信息撤销通知
   667       * @param[in] info 指向返回的信息结构体。当errorCode不为0时,info为空。
   668       * @attention 不要修改和删除info所指示的数据;函数调用结束,参数不再有效。
   669       * @ingroup G_T_IPO
   670       */
   671      virtual void TAP_CDECL OnRtnCancelAccountIPO(const ITapTrade::TapAPIAccountIPOCancelNotice* info){};
   672  
   673      /**
   674       * @brief  解冻信息验证应答
   675       * @ingroup G_T_UF
   676       */
   677      virtual void TAP_CDECL OnRspUnFreezeVerificate(ITapTrade::TAPIUINT32 sessionID, ITapTrade::TAPIINT32 errorCode){};
   678  };
   679  
   680  /**
   681   * @brief 接口类:TapTradeAPI
   682   * @details TapTradeAPI对外功能接口。包含了用户可以调用的功能函数。
   683   */
   684  class ITapTradeAPI {
   685     public:
   686      /**
   687       * @brief	设置API的回调接口对象。
   688       * @details	系统对API的通知将通过设置的回调对象通知给使用者。
   689       *			ITapTradeAPINotify是API的回调接口,用户需要继承实现此接口类对象来完成用户需要的功能。
   690       *			如果用户没有设置回调接口,则API不会向用户返回任何有用的信息。\n
   691       *			ITapTradeAPINotify类的详细内容请查看TapTradeAPI.h 文件。
   692       * @param[in] apiNotify 实现了ITapTradeAPINotify接口的对象指针。
   693       * @note 同步操作
   694       * @ingroup G_T_Login
   695       */
   696      virtual ITapTrade::TAPIINT32 TAP_CDECL SetAPINotify(ITapTrade::ITapTradeAPINotify* pSpi) = 0;
   697      /**
   698       * @brief 设置服务器的IP地址和端口。
   699       * @details  可以多次调用来设置多个地址。第一次设置的为主地址,之后地址为断线重连时切换的备地址。调用Login时只会连接主地址。
   700       * @param[in] IP   IP地址
   701       * @param[in] port 端口号
   702       * @param[in] bSSL 是否为ssl端口
   703       * @note 同步操作
   704       * @ingroup G_T_Login
   705       */
   706      virtual ITapTrade::TAPIINT32 TAP_CDECL SetHostAddress(const ITapTrade::TAPICHAR* IP, ITapTrade::TAPIUINT16 port, bool bSSL = false) = 0;
   707  
   708      /**
   709       * @brief	发起登录请求。API将先连接服务,建立链路,发起登录认证。
   710       * @details	在使用函数前用户需要完成服务器的设置SetHostAddress(),并且创建TapAPITradeLoginAuth类型的用户信息,
   711       *			并且需要设置好回调接口。\n
   712       *			登录过程中建立连接的返回信息通过回调OnConnect返回给用户。\n
   713       *			连接建立后的用户验证回馈信息通过回调OnRspLogin()返回给用户。\n
   714       *			登录成功后API会自动进行API的初始化,API向服务器请求基础数据,查询完以后会通过回调OnAPIReady()
   715       *			指示用户API初始化完成,可以进行后续的操作了。
   716       *			调用Login时只会连接第一次调用SetHostAddress时设置的主地址。
   717       *			若开起了重连,则登录失败也会重连(密码错误、登录数超限时除外)。
   718       * @param[in] loginAuth 登录验证信息结构指针。包含登录需要的验证信息。
   719       * @retval 0 登录成功,API开始准备后台数据
   720       * @retval 非0 错误码
   721       * @note 异步操作
   722       * @attention Login()函数调用成功只是代表于服务器建立了链路连接,只有回调OnRspLogin()的返回能指示用户是否成功登录了。
   723       * @ingroup G_T_Login
   724       */
   725      virtual ITapTrade::TAPIINT32 TAP_CDECL Login(const ITapTrade::TapAPITradeLoginAuth* loginAuth) = 0;
   726  
   727      /**
   728       * @brief	请求后台发送二次认证码
   729       * @details	登录完成后,如果系统配置需要进行二次认证码输入,则登录后会提示需要进行二次认证。
   730       *			此函数需要9.2.7后台,根据回调函数OnRtnContactInfo中的联系方式,选择接收地址(手机或邮箱),请求二次认证码,
   731       *			收到正确应答后可以调用SetVertificateCode 来设置二次认证码完成登录过程。
   732       *			认证码有效期内只能请求一次,重新登录后可以重新请求。
   733       * @param[out] sessionID本次请求的会话ID。
   734       * @param[in]  ContactInfo,要接收二次认证码的联系地址,即邮箱或手机号。
   735       * @retval 0 发送认证码成功
   736       * @retval 非0 错误码
   737       * @note 异步操作
   738       * @attention 该函数需要在登录应答后返回10003错误之后调用。在一个二次认证码有效期内,只可调用该函数一次。
   739       * @ingroup G_T_Login
   740       */
   741      virtual ITapTrade::TAPIINT32 TAP_CDECL RequestVertificateCode(ITapTrade::TAPIUINT32* sessionID, ITapTrade::TAPISTR_40 ContactInfo) = 0;
   742      /**
   743       * @brief	发送二次认证码进行验证
   744       * @details	需要先调用RequestVertificateCode请求验证码,(手机或邮箱)收到验证码后,再调用该函数输入验证码来完成登录。
   745       *			登录完成后不允许再调用此函数。其他原因引起的登录失败也不能调用次函数,否则会返回对应的错误信息。
   746       *			调用此接口后,OnRspLogin会返回登录应答成功与否的标记,如果成功表示登录完成,可以等待OnAPIReady完成回调。
   747       *			如果验证码错误,则可以再次调用此函数输入正确的验证码进行验证。
   748       *			如果超时,回调完成后API会主动断开链接,需要再次进行登录操作。
   749       * @param[out]	sessionID 返回此次修改密码的会话ID;
   750       * @param[in]	req 请求修改密码的结构体指针。LoginType为二次认证登录类型:若LOGINTYPE_NORMAL(正常登录)则记录并判断二次认证有效期、
   751       *				若LOGINTYPE_TEMPORARY(临时登录)则下次登录仍需二次认证。
   752       * @retval 0 发送认证码成功
   753       * @retval 非0 错误码
   754       * @note 异步操作
   755       * @ingroup G_T_Login
   756       */
   757      virtual ITapTrade::TAPIINT32 TAP_CDECL SetVertificateCode(ITapTrade::TAPIUINT32* sessionID, ITapTrade::TapAPISecondCertificationReq* req) = 0;
   758  
   759      /**
   760       * @brief	断开和服务器的链路连接。
   761       * @details	调用函数后API将登出并断开与服务器的连接。
   762       *			如果正在自动重连,也后会终止正在进行的自动重连。
   763       * @attention 注意,与后台连接断开时才会回调OnDisconnect;如果连接之前已断开,再主动调用Disconnect时不会回调OnDisconnect。
   764       * @note 异步操作
   765       * @ingroup G_T_Disconnect
   766       */
   767      virtual ITapTrade::TAPIINT32 TAP_CDECL Disconnect() = 0;
   768      /**
   769       * @brief	修改密码。
   770       * @details	成功后用户密码将被设置成newPassword。
   771       * @param[out]	sessionID 返回此次修改密码的会话ID;
   772       * @param[in]	req 请求修改密码的结构体指针
   773       * @retval 0 成功
   774       * @retval 非0 错误码
   775       * @note 异步操作
   776       * @ingroup G_T_UserInfo
   777       */
   778      virtual ITapTrade::TAPIINT32 TAP_CDECL ChangePassword(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIChangePasswordReq* req) = 0;
   779  
   780      /**
   781       * @brief	认证密码。
   782       * @details	交易员认证某个账户密码是否正确。
   783       * @param[out]	sessionID 返回此次修改密码的会话ID;
   784       * @param[in]	req 请求认证密码的结构体指针
   785       * @retval 0 成功
   786       * @retval 非0 错误码
   787       * @note 异步操作
   788       * @ingroup G_T_UserInfo
   789       */
   790      virtual ITapTrade::TAPIINT32 TAP_CDECL AuthPassword(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIAuthPasswordReq* req) = 0;
   791  
   792      /**
   793       * @brief	判断登录用户是否具有某权限。
   794       * @details	用户的权限在用户登录时已经传递给API,所以此函数执行的是本地的查询。
   795       * @param[in] rightID 权限ID。
   796       * @retval 0 不具有权限
   797       * @retval 非0 具有权限
   798       * @note 同步操作
   799       * @ingroup G_T_UserRight
   800       */
   801      virtual ITapTrade::TAPIINT32 TAP_CDECL HaveCertainRight(ITapTrade::TAPIRightIDType rightID) = 0;
   802      /**
   803       * @brief	查询系统日历。
   804       * @details	获取当前交易日,上次结算日,LME到期日,和上日LME到期日
   805       * @param[out]	sessionID 返回请求的会话ID;
   806       * @retval 0 请求成功
   807       * @retval 非0 错误码
   808       * @note 异步操作
   809       * @ingroup G_T_TradeSystem
   810       */
   811      virtual ITapTrade::TAPIINT32 TAP_CDECL QryTradingDate(ITapTrade::TAPIUINT32* sessionID) = 0;
   812      /**
   813       * @brief	设置用户预留信息。
   814       * @details	用户可以设置一个长度为50以内的字符信息,下次登录后可以得到这个信息。
   815       *			这个功能主要是用来让用户确认是自己的账号,主要是用来进行防伪。
   816       * @param[out]	sessionID 返回请求的会话ID;
   817       * @param[in] info	预留信息字符串指针
   818       * @retval 0 请求成功
   819       * @retval 非0 错误码
   820       * @note 异步操作
   821       * @note 该接口暂未实现
   822       * @ingroup G_T_UserInfo
   823       */
   824      virtual ITapTrade::TAPIINT32 TAP_CDECL SetReservedInfo(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TAPISTR_50 info) = 0;
   825      /**
   826       * @brief 查询用户下属的资金账号
   827       * @details	TapAPIAccQryReq是包含资金账号结构的结构体,用户需要实例化此结构体,
   828       *			但是不需要填写,这个结构体主要是用来提醒用户保存资金账号,资金账号
   829       *			在后续的函数调用中很多函数都需要使用到。
   830       * @param[out]	sessionID 返回请求的会话ID;
   831       * @param[in]	qryReq 查询用户下属的资金账号的结构体指针
   832       * @retval 0 请求成功
   833       * @retval 非0 错误码
   834       * @note 异步操作
   835       * @ingroup G_T_AccountInfo
   836       */
   837      virtual ITapTrade::TAPIINT32 TAP_CDECL QryAccount(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIAccQryReq* qryReq) = 0;
   838      /**
   839       * @brief	查询客户资金
   840       * @details	TapAPIFundReq需要QryAccount()获取的资金账号。
   841       *			函数的回调将返回资金账号的资金信息。用户的委托成交后会引起资金数据的变化,因此需要向用户实时反馈。\n
   842       *			查询一次客户资金后,自动订阅该客户资金变更通知。\n
   843       * @param[out] sessionID 返回请求的会话ID;
   844       * @param[in] qryReq	查询客户资金请求的结构体指针
   845       * @retval 0 请求成功
   846       * @retval 非0 错误码
   847       * @note 异步操作
   848       * @ingroup G_T_AccountDetails
   849       * @attention 每次登录,该接口只能进行一次调用。建议初始化时调用一次,后续的通知通过OnRtnFund取得。
   850       */
   851      virtual ITapTrade::TAPIINT32 TAP_CDECL QryFund(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIFundReq* qryReq) = 0;
   852      /**
   853       * @brief 查询交易系统交易所信息
   854       * @param[out] sessionID 返回请求的会话ID;
   855       * @retval 0 请求成功
   856       * @retval 非0 错误码
   857       * @note 异步操作
   858       * @ingroup G_T_TradeSystem
   859       */
   860      virtual ITapTrade::TAPIINT32 TAP_CDECL QryExchange(ITapTrade::TAPIUINT32* sessionID) = 0;
   861      /**
   862       * @brief	查询系统品种信息
   863       * @details	函数请求获取所有的品种信息。
   864       * @param[out] sessionID 返回请求的会话ID;
   865       * @retval 0 请求成功
   866       * @retval 非0 错误码
   867       * @note 异步操作
   868       * @ingroup G_T_Commodity
   869       */
   870      virtual ITapTrade::TAPIINT32 TAP_CDECL QryCommodity(ITapTrade::TAPIUINT32* sessionID) = 0;
   871      /**
   872       * @brief	查询系统中指定品种的合约信息
   873       * @details	使用此函数前需要先Qrycommodity()取得品种信息,
   874       *			然后选择需要的品种将信息填入TapAPICommodity结构体中完成查询请求。
   875       *			或者TapAPICommodity不填,则返回所有信息。
   876       * @param[out] sessionID 返回请求的会话ID;
   877       * @param[in] qryReq 查询系统中指定品种的合约信息请求的结构体指针;\n
   878       *				    该参数各字段为可选字段,可以用以下方法查询:\n
   879       *					1.全部留空:查所有合约\n
   880       *					2.仅交易所编码有效:查该交易所下所有品种的合约\n
   881       *					3.交易所编码和品种类型有效:查该交易所下指定品种类型的合约\n
   882       *					4.交易所编码、品种类型和品种编码都有效:查该品种下的所有合约
   883       * @retval 0 请求成功
   884       * @retval 非0 错误码
   885       * @note 异步操作
   886       * @ingroup G_T_Contract
   887       */
   888      virtual ITapTrade::TAPIINT32 TAP_CDECL QryContract(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPICommodity* qryReq) = 0;
   889  
   890      /**
   891       * @brief	下单
   892       * @details	用户下单的操作函数。
   893       *			用户的下单操作会造成用户的资金、持仓、平仓、资金、风控标记等多种数据的变化,所以用户下的单成交后,
   894       *			会有多个回调通知来向用户展示数据的变化。
   895       * @param[out]	sessionID 返回请求的会话ID;
   896       * @param[out]	ClientOrderNo 返回客户本地委托号。
   897       * @param[in]	order 新的委托。
   898       * @retval 0 请求成功
   899       * @retval 非0 错误码
   900       * @note 异步操作
   901       * @ingroup G_T_TradeActions
   902       */
   903      virtual ITapTrade::TAPIINT32 TAP_CDECL InsertOrder(ITapTrade::TAPIUINT32* sessionID, ITapTrade::TAPISTR_50* ClientOrderNo, const ITapTrade::TapAPINewOrder* order) = 0;
   904  
   905      /**
   906       * @brief	撤单
   907       * @details	用户委托没有完全成交之前撤销剩余的委托。
   908       * @param[out]	sessionID 返回请求的会话ID;
   909       * @param[in]	order 撤销的委托
   910       * @retval 0 请求成功
   911       * @retval 非0 错误码
   912       * @note 异步操作
   913       * @ingroup G_T_TradeActions
   914       */
   915      virtual ITapTrade::TAPIINT32 TAP_CDECL CancelOrder(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIOrderCancelReq* order) = 0;
   916  
   917      /**
   918       * @brief	改单
   919       * @details	用户的委托没有完全成交之前可以进行改单操作来修改剩余的未成交的委托。\n
   920       *			用户填写新的委托来修改原来的未成交的部分。报单的修改会对比已经成交的部分来扣除成交部分。
   921       * @param[out]	sessionID 返回请求的会话ID;
   922       * @param[in]	order 修改的委托
   923       * @retval 0 请求成功
   924       * @retval 非0 错误码
   925       * @note 异步操作
   926       * @ingroup G_T_TradeActions
   927       */
   928      virtual ITapTrade::TAPIINT32 TAP_CDECL AmendOrder(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIAmendOrder* order) = 0;
   929  
   930      /**
   931       * @brief 订单激活
   932       * @details 用户的埋单需要发送时需要进行激活。或者港交所已挂起的订单。
   933       * @param[out]	sessionID 返回请求的会话ID;
   934       * @param[in]	order 要激活的订单
   935       * @retval 0 请求成功
   936       * @retval 非0 错误码
   937       * @note 异步操作
   938       * @ingroup G_T_TradeActions
   939       */
   940      virtual ITapTrade::TAPIINT32 TAP_CDECL ActivateOrder(TAPIUINT32* sessionID, const TapAPIOrderActivateReq* order) = 0;
   941  
   942      /**
   943       * @brief	查询委托信息
   944       * @details	返回当前的委托信息,可以查询所有委托,也可以查询所有未结束的委托。\n
   945       * @retval 0 请求成功
   946       * @retval 非0 错误码
   947       * @note 异步操作
   948       * @ingroup G_T_TradeInfo
   949       * @attention 每次登录,该接口只能进行一次调用。建议初始化时调用一次,后续的通知通过OnRtnOrder取得。
   950       */
   951      virtual ITapTrade::TAPIINT32 TAP_CDECL QryOrder(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIOrderQryReq* qryReq) = 0;
   952      /**
   953       * @brief	查询委托变化流程
   954       * @details	查询用户的委托的变化流程,查询将返回委托的每一次的变化。
   955       * @param[out] sessionID 返回请求的会话ID;
   956       * @param[in] qryReq 委托流程查询信息结构体指针。
   957       * @retval 0 请求成功
   958       * @retval 非0 错误码
   959       * @note 异步操作
   960       * @ingroup G_T_TradeInfo
   961       */
   962      virtual ITapTrade::TAPIINT32 TAP_CDECL QryOrderProcess(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIOrderProcessQryReq* qryReq) = 0;
   963      /**
   964       * @brief 查询成交信息
   965       * @details	查询系统中成交的信息。
   966       * @param[out] sessionID 返回请求的会话ID;
   967       * @param[in] qryReq 成交查询信息结构体指针。
   968       * @retval 0 请求成功
   969       * @retval 非0 错误码
   970       * @note 异步操作
   971       * @ingroup G_T_TradeInfo
   972       * @attention 每次登录,该接口只能进行一次调用。建议初始化时调用一次,后续的通知通过OnRtnFill取得。
   973       */
   974      virtual ITapTrade::TAPIINT32 TAP_CDECL QryFill(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIFillQryReq* qryReq) = 0;
   975      /**
   976       * @brief	查询用户持仓
   977       * @details	查询用户的所有持仓信息。
   978       * @param[out] sessionID 返回请求的会话ID;
   979       * @param[in] qryReq	查询用户持仓请求的结构体指针
   980       * @retval 0 请求成功
   981       * @retval 非0 错误码
   982       * @note 异步操作
   983       * @ingroup G_T_TradeInfo
   984       * @attention 每次登录,该接口只能进行一次调用。建议初始化时调用一次,后续的通知通过OnRtnPosition取得。
   985       */
   986      virtual ITapTrade::TAPIINT32 TAP_CDECL QryPosition(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIPositionQryReq* qryReq) = 0;
   987  
   988      /**
   989       * @brief	查询用户持仓汇总
   990       * @details	查询用户的所有持仓信息。
   991       * @param[out] sessionID 返回请求的会话ID;
   992       * @param[in] qryReq	查询用户持仓请求的结构体指针
   993       * @retval 0 请求成功
   994       * @retval 非0 错误码
   995       * @note 异步操作
   996       * @ingroup G_T_TradeInfo
   997       * @attention 每次登录,该接口只能进行一次调用。建议初始化时调用一次,后续的通知通过OnRtnPositionSummary取得。
   998       */
   999      virtual ITapTrade::TAPIINT32 TAP_CDECL QryPositionSummary(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIPositionQryReq* qryReq) = 0;
  1000  
  1001      /**
  1002       * @brief 获取交易所用币种的信息
  1003       * @param[out] sessionID 返回请求的会话ID;
  1004       * @retval 0 请求成功
  1005       * @retval 非0 错误码
  1006       * @note 异步操作
  1007       * @ingroup G_T_TradeSystem
  1008       */
  1009      virtual ITapTrade::TAPIINT32 TAP_CDECL QryCurrency(ITapTrade::TAPIUINT32* sessionID) = 0;
  1010      /**
  1011       * @brief 客户资金调整查询请求
  1012       * @param[out] sessionID 返回请求的会话ID;
  1013       * @param[in]	Req	客户资金调整查询请求的结构体指针
  1014       * @retval 0 请求成功
  1015       * @retval 非0 错误码
  1016       * @note 异步操作
  1017       * @ingroup G_T_HisInfo
  1018       */
  1019      virtual ITapTrade::TAPIINT32 TAP_CDECL QryAccountCashAdjust(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIAccountCashAdjustQryReq* qryReq) = 0;
  1020      /**
  1021      * @brief	获取交易或风控消息
  1022      * @details	此函数用来主动获取账号的交易或者风控消息。交易或者风控消息用来标识账号的状态。
  1023      * @param[out] sessionID 返回请求的会话ID;
  1024      * @param[in] qryReq 获取交易或风控消息请求的结构体指针;
  1025      * @retval 0 请求成功
  1026      * @retval 非0 错误码
  1027      * @note 异步操作
  1028      说明:易盛保留接口
  1029      * @ingroup G_T_AccountDetails
  1030      */
  1031      virtual ITapTrade::TAPIINT32 TAP_CDECL QryTradeMessage(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPITradeMessageReq* qryReq) = 0;
  1032      /**
  1033       * @brief 查询用户账单
  1034       * @param[out]	sessionID 返回请求的会话ID;
  1035       * @param[in]	qryReq	查询帐单请求的结构体指针
  1036       * @retval 0 请求成功
  1037       * @retval 非0 错误码
  1038       * @note 异步操作
  1039       * @ingroup G_T_Bill
  1040       */
  1041      virtual ITapTrade::TAPIINT32 TAP_CDECL QryBill(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIBillQryReq* qryReq) = 0;
  1042      /**
  1043       * @brief 历史委托查询请求
  1044       * @details	相同请求查询间隔为60秒
  1045       * @param[out]	sessionID 返回请求的会话ID;
  1046       * @param[in]	Req	历史委托查询请求的结构体指针
  1047       * @retval 0 请求成功
  1048       * @retval 非0 错误码
  1049       * @note 异步操作
  1050       * @ingroup G_T_HisInfo
  1051       */
  1052      virtual ITapTrade::TAPIINT32 TAP_CDECL QryHisOrder(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIHisOrderQryReq* qryReq) = 0;
  1053      /**
  1054       * @brief 历史委托流程查询请求
  1055       * @details	相同请求查询间隔为60秒
  1056       * @param[out] sessionID 返回请求的会话ID;
  1057       * @param[in]	Req	历史委托流程查询请求的结构体指针
  1058       * @retval 0 请求成功
  1059       * @retval 非0 错误码
  1060       * @note 异步操作
  1061       * @ingroup G_T_HisInfo
  1062       */
  1063      virtual ITapTrade::TAPIINT32 TAP_CDECL QryHisOrderProcess(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIHisOrderProcessQryReq* qryReq) = 0;
  1064      /**
  1065       * @brief 历史成交查询请求
  1066       * @details	相同请求查询间隔为60秒
  1067       * @param[out] sessionID 返回请求的会话ID;
  1068       * @param[in]	Req	历史成交查询请求的结构体指针
  1069       * @retval 0 请求成功
  1070       * @retval 非0 错误码
  1071       * @note 异步操作
  1072       * @ingroup G_T_HisInfo
  1073       */
  1074      virtual ITapTrade::TAPIINT32 TAP_CDECL QryHisMatch(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIHisMatchQryReq* qryReq) = 0;
  1075      /**
  1076       * @brief 历史持仓查询请求
  1077       * @details	相同请求查询间隔为60秒
  1078       * @param[out] sessionID 返回请求的会话ID;
  1079       * @param[in]	Req	历史持仓查询请求的结构体指针
  1080       * @retval 0 请求成功
  1081       * @retval 非0 错误码
  1082       * @note 异步操作
  1083       * @ingroup G_T_HisInfo
  1084       */
  1085      virtual ITapTrade::TAPIINT32 TAP_CDECL QryHisPosition(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIHisPositionQryReq* qryReq) = 0;
  1086      /**
  1087       * @brief 历史交割查询请求
  1088       * @details	相同请求查询间隔为60秒
  1089       * @param[out] sessionID 返回请求的会话ID;
  1090       * @param[in]	Req	历史交割查询请求的结构体指针
  1091       * @retval 0 请求成功
  1092       * @retval 非0 错误码
  1093       * @note 异步操作
  1094       * @ingroup G_T_HisInfo
  1095       */
  1096      virtual ITapTrade::TAPIINT32 TAP_CDECL QryHisDelivery(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIHisDeliveryQryReq* qryReq) = 0;
  1097  
  1098      /**
  1099       * @brief 客户手续费计算参数查询请求
  1100       * @details	相同请求查询间隔为60秒
  1101       * @param[out] sessionID 返回请求的会话ID;
  1102       * @param[in]	Req	客户手续费计算参数查询请求结构
  1103       * @retval 0 请求成功
  1104       * @retval 非0 错误码
  1105       * @note 异步操作
  1106       * @ingroup G_T_Rent
  1107       */
  1108      virtual ITapTrade::TAPIINT32 TAP_CDECL QryAccountFeeRent(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIAccountFeeRentQryReq* qryReq) = 0;
  1109      /**
  1110       * @brief 客户保证金计算参数查询请求
  1111       * @details	相同请求查询间隔为60秒
  1112       * @param[out] sessionID 返回请求的会话ID;
  1113       * @param[in]	Req	客户保证金计算参数查询请求结构
  1114       * @retval 0 请求成功
  1115       * @retval 非0 错误码
  1116       * @note 异步操作
  1117       * @ingroup G_T_Rent
  1118       */
  1119      virtual ITapTrade::TAPIINT32 TAP_CDECL QryAccountMarginRent(ITapTrade::TAPIUINT32* sessionID, const ITapTrade::TapAPIAccountMarginRentQryReq* qryReq) = 0;
  1120      /**
  1121       * @brief 港交所做市商双边报价指令
  1122       * @param[out] sessionID 返回当前请求的SessionID;
  1123       * @param[out] ClientBuyOrderNo返回港交所双边报价中买单的客户本地委托号;
  1124       * @param[out] ClientSellOrderNo返回港交所双边报价中卖单的客户本地委托号;
  1125       * @param[in] order双边报价请求结构;
  1126       * @retval 0 请求成功
  1127       * @retval 非0 错误码
  1128       * @note 异步操作
  1129       * @ingroup G_T_HKMarket
  1130       */
  1131      virtual ITapTrade::TAPIINT32 TAP_CDECL InsertHKMarketOrder(TAPIUINT32* sessionID, TAPISTR_50* ClientBuyOrderNo, TAPISTR_50* ClientSellOrderNo, const TapAPIOrderMarketInsertReq* order) = 0;
  1132  
  1133      /**
  1134       * @brief 港交所做市商双边撤单指令
  1135       * @param[out] sessionID 返回当前请求的sessionID。
  1136       * @param[in] order 港交所做市商撤单指令请求结构。
  1137       * @retval 0 请求成功
  1138       * @retval 非0 错误码
  1139       * @note 异步操作
  1140       * @ingroup G_T_HKMarket
  1141       */
  1142      virtual ITapTrade::TAPIINT32 TAP_CDECL CancelHKMarketOrder(TAPIUINT32* sessionID, const TapAPIOrderMarketDeleteReq* order) = 0;
  1143  
  1144      /**
  1145       * @brief 订单删除指令
  1146       * @param[out] sessionID 返回当前请求的sessionID。
  1147       * @param[in] order 要订单删除的订单。
  1148       * @retval 0 请求成功
  1149       * @retval 非0 错误码
  1150       * @note 异步操作
  1151       * @ingroup G_T_LocalActions
  1152       */
  1153      virtual ITapTrade::TAPIINT32 TAP_CDECL OrderLocalRemove(TAPIUINT32* sessionID, const TapAPIOrderLocalRemoveReq* order) = 0;
  1154      /**
  1155       * @brief 订单录入指令
  1156       * @param[out] sessionID 返回当前请求的sessionID。
  1157       * @param[in] order 订单录入请求信息。
  1158       * @retval 0 请求成功
  1159       * @retval 非0 错误码
  1160       * @note 异步操作
  1161       * @ingroup G_T_LocalActions
  1162       */
  1163      virtual ITapTrade::TAPIINT32 TAP_CDECL OrderLocalInput(TAPIUINT32* sessionID, const TapAPIOrderLocalInputReq* order) = 0;
  1164      /**
  1165       * @brief 订单修改指令
  1166       * @param[out] sessionID 返回当前请求的sessionID。
  1167       * @param[in] order 订单修改请求结构
  1168       * @retval 0 请求成功
  1169       * @retval 非0 错误码
  1170       * @note 异步操作
  1171       * @ingroup G_T_LocalActions
  1172       */
  1173      virtual ITapTrade::TAPIINT32 TAP_CDECL OrderLocalModify(TAPIUINT32* sessionID, const TapAPIOrderLocalModifyReq* order) = 0;
  1174      /**
  1175       * @brief  订单转移指令
  1176       * @param[out] sessionID 返回当前请求的sessionID。
  1177       * @param[in] 订单转移请求信息。
  1178       * @retval 0 请求成功
  1179       * @retval 非0 错误码
  1180       * @note 异步操作
  1181       * @ingroup G_T_LocalActions
  1182       */
  1183      virtual ITapTrade::TAPIINT32 TAP_CDECL OrderLocalTransfer(TAPIUINT32* sessionID, const TapAPIOrderLocalTransferReq* order) = 0;
  1184      /**
  1185       * @brief 成交录入指令
  1186       * @param[out] sessionID 返回当前请求的sessionID。
  1187       * @param[in] 要录入的成交信息
  1188       * @retval 0 请求成功
  1189       * @retval 非0 错误码
  1190       * @note 异步操作
  1191       * @ingroup G_T_LocalActions
  1192       */
  1193      virtual ITapTrade::TAPIINT32 TAP_CDECL FillLocalInput(TAPIUINT32* sessionID, const TapAPIFillLocalInputReq* fill) = 0;
  1194      /**
  1195       * @brief 成交删除指令
  1196       * @param[out] sessionID 返回当前请求的sessionID。
  1197       * @param[in] 成交删除请求信息
  1198       * @retval 0 请求成功
  1199       * @retval 非0 错误码
  1200       * @note 异步操作
  1201       * @ingroup G_T_LocalActions
  1202       */
  1203      virtual ITapTrade::TAPIINT32 TAP_CDECL FillLocalRemove(TAPIUINT32* sessionID, const TapAPIFillLocalRemoveReq* fill) = 0;
  1204  
  1205      /**
  1206       * @brief 客户现货锁定量查询
  1207       * @param[out] sessionID 返回当前请求的sessionID。
  1208       * @param[in] 客户现货锁定量查询请求信息
  1209       * @retval 0 请求成功
  1210       * @retval 非0 错误码
  1211       * @note 异步操作,北斗星系统不可调用
  1212       * @ingroup G_T_Spot
  1213       */
  1214      virtual ITapTrade::TAPIINT32 TAP_CDECL QrySpotLock(TAPIUINT32* sessionID, const TapAPISpotLockQryReq* qryReq) = 0;
  1215  
  1216      /**
  1217      * @brief 提交采集信息-中继方式
  1218      * @details 看穿式监管需要提交采集信息,直连方式在登陆过程会自动提交采集信息,
  1219                         中继方式需要APIready之后主动调用此函数来上报客户采集信息。
  1220      * @param[out] sessionID 返回当前请求的sessionID。
  1221      * @param[in] 中继模式下,主动上报下级的采集信息。
  1222      * @retval 0 请求成功
  1223      * @retval 非0 错误码
  1224      * @note 异步操作,北斗星系统不可调用
  1225      * @ingroup G_T_Spot
  1226      */
  1227      virtual ITapTrade::TAPIINT32 TAP_CDECL SubmitUserLoginInfo(TAPIUINT32* sessionID, const TapAPISubmitUserLoginInfo* qryReq) = 0;
  1228  
  1229      /**
  1230       * @brief 特殊业务指令
  1231       * @details 以用户发送特殊业务指令后,会有一个应答和多个通知来向用户展示数据的变化。
  1232       * @param[out]	sessionID 返回请求的会话ID;
  1233       * @param[out]	ClientOrderNo 返回客户本地委托号。
  1234       * @param[in]	order 新的特殊业务指令
  1235       * @retval 0 请求成功
  1236       * @retval 非0 错误码
  1237       * @note 异步操作,北斗星系统不可调用
  1238       * @ingroup G_T_Spot
  1239       */
  1240      virtual ITapTrade::TAPIINT32 TAP_CDECL InsertSpecialOrder(TAPIUINT32* sessionID, TAPISTR_50* clientorderno, const TapAPISpecialOrderInsertReq* order) = 0;
  1241  
  1242      /**
  1243       * @brief 查询特殊业务委托信息
  1244       * @param[out] sessionID 返回当前请求的sessionID。
  1245       * @param[in]  qryReq 特殊业务委托查询结构
  1246       * @retval 0 请求成功
  1247       * @retval 非0 错误码
  1248       * @note 异步操作,北斗星系统不可调用
  1249       * @ingroup G_T_Spot
  1250       */
  1251      virtual ITapTrade::TAPIINT32 TAP_CDECL QrySpecialOrder(TAPIUINT32* sessionID, const TapAPISpecialOrderQryReq* qryReq) = 0;
  1252  
  1253      /**
  1254       * @brief 查询用户组合策略持仓
  1255       * @param[out] sessionID 返回当前请求的sessionID。
  1256       * @param[in]  qryReq 组合策略持仓查询结构
  1257       * @retval 0 请求成功
  1258       * @retval 非0 错误码
  1259       * @note 异步操作,北斗星系统不可调用
  1260       * @ingroup G_T_Spot
  1261       */
  1262      virtual ITapTrade::TAPIINT32 TAP_CDECL QryCombinePosition(TAPIUINT32* sessionID, const TapAPICombinePositionQryReq* qryReq) = 0;
  1263  
  1264      /**
  1265       * @brief 查询用户信任设备
  1266       * @details 只返回当前用户自己的信任设备。
  1267       * @param[out] sessionID 返回当前请求的sessionID。
  1268       * @param[in]  qryReq 用户信任设备查询结构
  1269       * @retval 0 请求成功
  1270       * @retval 非0 错误码
  1271       * @note 异步操作
  1272       * @ingroup G_T_TrustDevice
  1273       */
  1274      virtual ITapTrade::TAPIINT32 TAP_CDECL QryUserTrustDevice(TAPIUINT32* sessionID, const TapAPIUserTrustDeviceQryReq* qryReq) = 0;
  1275      /**
  1276       * @brief 增加用户信任设备
  1277       * @details	API自动获取当前登录的用户名、授权码、本机MAC、设备名称,传入后台进行信任设备的增加。
  1278       * @param[out] sessionID 返回当前请求的sessionID。
  1279       * @param[in]  qryReq 用户信任设备增加结构
  1280       * @retval 0 请求成功
  1281       * @retval 非0 错误码
  1282       * @note 异步操作
  1283       * @ingroup G_T_TrustDevice
  1284       */
  1285      virtual ITapTrade::TAPIINT32 TAP_CDECL AddUserTrustDevice(TAPIUINT32* sessionID, const TapAPIUserTrustDeviceAddReq* qryReq) = 0;
  1286      /**
  1287       * @brief 删除用户信任设备
  1288       * @details 只可删除当前用户自己的信任设备
  1289       * @param[out] sessionID 返回当前请求的sessionID。
  1290       * @param[in]  qryReq 用户信任设备删除结构
  1291       * @retval 0 请求成功
  1292       * @retval 非0 错误码
  1293       * @note 异步操作
  1294       * @ingroup G_T_TrustDevice
  1295       */
  1296      virtual ITapTrade::TAPIINT32 TAP_CDECL DelUserTrustDevice(TAPIUINT32* sessionID, const TapAPIUserTrustDeviceDelReq* qryReq) = 0;
  1297  
  1298      /**
  1299       * @brief 查询IPO基础信息
  1300       * @details 查询全部IPO基础信息
  1301       * @param[out] sessionID 返回当前请求的sessionID。
  1302       * @param[in]  qryReq
  1303       * @retval 0 请求成功
  1304       * @retval 非0 错误码
  1305       * @note 异步操作
  1306       * @attention 港股系统使用,北斗星系统不可调用
  1307       * @ingroup G_T_IPO
  1308       */
  1309      virtual ITapTrade::TAPIINT32 TAP_CDECL QryIPOInfo(TAPIUINT32* sessionID, const TapAPIIPOInfoQryReq* qryReq) = 0;
  1310      /**
  1311       * @brief 查询IPO可申购股数
  1312       * @details 查询请求不可填空。申购时,申购数量只能在可申购股数中选择。
  1313       * @param[out] sessionID 返回当前请求的sessionID。
  1314       * @param[in]  qryReq
  1315       * @retval 0 请求成功
  1316       * @retval 非0 错误码
  1317       * @note 异步操作
  1318       * @attention 港股系统使用,北斗星系统不可调用
  1319       * @ingroup G_T_IPO
  1320       */
  1321      virtual ITapTrade::TAPIINT32 TAP_CDECL QryIPOStockQty(TAPIUINT32* sessionID, const TapAPIAvailableApplyQryReq* qryReq) = 0;
  1322      /**
  1323       * @brief 查询客户已申报IPO信息
  1324       * @details 查询客户已申报IPO信息,填空查所有。
  1325       * @param[out] sessionID 返回当前请求的sessionID。
  1326       * @param[in]  qryReq
  1327       * @retval 0 请求成功
  1328       * @retval 非0 错误码
  1329       * @note 异步操作
  1330       * @attention 港股系统使用,北斗星系统不可调用
  1331       * @ingroup G_T_IPO
  1332       */
  1333      virtual ITapTrade::TAPIINT32 TAP_CDECL QryAccountIPO(TAPIUINT32* sessionID, const TapAPIAccountIPOQryReq* qryReq) = 0;
  1334      /**
  1335       * @brief 客户申购IPO
  1336       * @details 客户申购IPO。需要设置品种、申购类型、申购数量、融资比例;
  1337       * API自动计算手续费,如果有融资比例,还会自动计算融资利息、融资金额。
  1338       * 融资金额为 = 配售价*数量*融资比例;申购金额 = 配售价*数量 -融资金额;融资利息 = 融资利率/360*融资天数*融资金额;
  1339       * 现金申购时,手续费= IPO手续费;融资申购时,手续费 = IPO手续费 + 融资手续费;
  1340       * 此外,还会检查申购数量是否符合可申购数量,检查IPO品种是否存在,检查融资金额、融资比例是否过高。只有申购类型为融资时融资比例有效。
  1341       * @param[out] sessionID 返回当前请求的sessionID。
  1342       * @param[in]  qryReq
  1343       * @retval 0 请求成功
  1344       * @retval 非0 错误码
  1345       * @note 异步操作
  1346       * @attention 港股系统使用,北斗星系统不可调用
  1347       * @ingroup G_T_IPO
  1348       */
  1349      virtual ITapTrade::TAPIINT32 TAP_CDECL AddAccountIPO(TAPIUINT32* sessionID, const TapAPIAccountIPOAddReq* qryReq) = 0;
  1350      /**
  1351       * @brief 撤销客户申购IPO
  1352       * @details 撤销客户IPO信息。将客户已提交的IPO申请状态改为“已撤销”,而不是删除记录。
  1353       * @param[out] sessionID 返回当前请求的sessionID。
  1354       * @param[in]  qryReq
  1355       * @retval 0 请求成功
  1356       * @retval 非0 错误码
  1357       * @note 异步操作
  1358       * @attention 港股系统使用,北斗星系统不可调用
  1359       * @ingroup G_T_IPO
  1360       */
  1361      virtual ITapTrade::TAPIINT32 TAP_CDECL CancelAccountIPO(TAPIUINT32* sessionID, const TapAPIAccountIPOCancelReq* qryReq) = 0;
  1362  
  1363      /**
  1364       * @brief 开始申请自助解冻
  1365       * @details 若账户已冻结,则可以自助申请解除冻结。自助解冻操作流程为:
  1366       * 1.调用UnFreeze,收到登录应答OnRspLogin错误码“TAPIERROR_LOGIN_UNFREEZE”:允许自助解冻。其他错误码则无法自助解冻。
  1367       * 2.调用VerificateUnFreezeInfo,收到OnRspUnFreezeVerificate错误码为0,验证成功
  1368       * 3.调用RequestVertificateCode,联系信息填写VerificateUnFreezeInfo中填写的手机号,收到OnRspRequestVertificateCode成功后继续
  1369       * 4.调用SetVertificateCode,收到OnRspLogin错误码为“TAPIERROR_UNFREEZE_SUCCESS”,则账户解冻成功,连接断开。之后可以重新登录操作。
  1370       * @param[out] sessionID 返回当前请求的sessionID。
  1371       * @param[in]  qryReq
  1372       * @retval 0 请求成功
  1373       * @retval 非0 错误码
  1374       * @note 异步操作
  1375       * @ingroup G_T_UF
  1376       */
  1377      virtual ITapTrade::TAPIINT32 TAP_CDECL UnFreeze(const TapAPITradeLoginAuth* loginAuth) = 0;
  1378      /**
  1379       * @brief 自助解冻信息验证
  1380       * @details 验证证件、邮箱、手机号。验证全部成功后,可以进行下一步验证码操作。
  1381       * @param[out] sessionID 返回当前请求的sessionID。
  1382       * @param[in]  qryReq
  1383       * @retval 0 请求成功
  1384       * @retval 非0 错误码
  1385       * @note 异步操作
  1386       * @ingroup G_T_UF
  1387       */
  1388      virtual ITapTrade::TAPIINT32 TAP_CDECL VerificateUnFreezeInfo(TAPIUINT32* sessionID, const TapAPIVerifyIdentityReq* qryReq) = 0;
  1389  };
  1390  };  // namespace ITapTrade
  1391  
  1392  //-----------------------------TapTradeAPI导出函数------------------------------------
  1393  
  1394  #ifdef __cplusplus
  1395  extern "C" {
  1396  #endif  // __cplusplus
  1397  
  1398  /**
  1399   * @brief	创建TapTradeAPI的接口对象。
  1400   * @details	创建整个交易API的接口
  1401   *			断线时API自动重连,根据TapAPIApplicationInfo的参数设置,每隔设定值重连一次,重连次数达到设定值则切换下一个地址,继续重连。
  1402   *			所有地址切换完后,回到第一个地址循环重连。调用Disconnect可以终止续连。
  1403   *			重连进行时无法登录、无法设置地址;重连会清空缓存重新查询。特别地,若连接成功但登录失败,则不重连。
  1404   * @param[in] appInfo 应用程序相关信息。
  1405   * @param[in] iResult 创建接口的错误码。
  1406   * @retval NULL	创建失败,具体原因可通过输出参数iResult判断。
  1407   * @retval !NULL	实现了ITapTradeAPI接口的对象指针。
  1408   * @ingroup G_T_API
  1409   */
  1410  TAP_DLLEXPORT ITapTrade::ITapTradeAPI* TAP_CDECL CreateITapTradeAPI(const ITapTrade::TapAPIApplicationInfo* appInfo, ITapTrade::TAPIINT32& iResult);
  1411  /**
  1412   * @brief	销毁通过CreateTapTradeAPI函数创建的ITapTradeAPI对象。
  1413   * @param[in] apiObj ITapTradeAPI对象指针。
  1414   * @ingroup G_T_API
  1415   */
  1416  TAP_DLLEXPORT void TAP_CDECL FreeITapTradeAPI(ITapTrade::ITapTradeAPI* apiObj);
  1417  /**
  1418   * @brief	获取TapTradeAPI的版本信息
  1419   * @ingroup G_T_API
  1420   */
  1421  TAP_DLLEXPORT const ITapTrade::TAPICHAR* TAP_CDECL GetITapTradeAPIVersion();
  1422  
  1423  /**
  1424   * @brief	根据错误码获取错误信息。在创建完API指针后即可调用,否则返回空值。
  1425   * @details	根据错误码可以获取到对应的错误信息,
  1426   * @param[in]	errorCode 错误码
  1427   * @retval 返回错误描述信息
  1428   * @note 同步操作
  1429   * @ingroup G_T_API
  1430   */
  1431  TAP_DLLEXPORT const char* TAP_CDECL GetITapErrorDescribe(ITapTrade::TAPIINT32 errorCode);
  1432  
  1433  // 注释的两个函数参数都移动到创建API指针的参数里边,在创建API指针的时候创建APIRun日志和设置日志级别,
  1434  /**
  1435   * @brief	设置API自身保存数据目录
  1436   * @details	\n
  1437   *			没有此文件的情况下会试图创建此文件。\n
  1438   *			文件中保存的数据为API接收到的重要数据和API的使用和错误日志。
  1439   * @param[in] path 目录。必须可用,目录符号Window下为”\\”或者”/”, Linux下为”/”。
  1440   * @retval 0 成功
  1441   * @retval 非0 错误码
  1442   * @note 同步操作
  1443   * @ingroup G_T_LogConfig
  1444   */
  1445  //	TAP_DLLEXPORT ITapTrade::TAPIINT32 TAP_CDECL SetITapTradeAPIDataPath(const ITapTrade::TAPICHAR *path);
  1446  /**
  1447   * @brief	设置API的日志级别
  1448   * @details	设定日志的输出级别,只有当实际日志级别与此处设定的级别相同或更高时,才会将日志写入SetTapTradeAPIDataPath()函数打开的日志文件。\n
  1449   * @param[in]	level 日志级别:\n
  1450   *					APILOGLEVEL_NONE	:不记录日志\n
  1451   *					APILOGLEVEL_ERROR	:记录Error日志\n
  1452   *					APILOGLEVEL_WARNING	:记录Error和Warning日志\n
  1453   *					APILOGLEVEL_DEBUG	:记录Error、Warning和Debug日志\n
  1454   * @retval 0 设定成功
  1455   * @retval 非0 错误码
  1456   * @note 同步操作
  1457   * @ingroup G_T_LogConfig
  1458   */
  1459  // TAP_DLLEXPORT ITapTrade::TAPIINT32 TAP_CDECL SetITapTradeAPILogLevel(ITapTrade::TAPILOGLEVEL level);
  1460  
  1461  #ifdef __cplusplus
  1462  }
  1463  #endif  // __cplusplus
  1464  
  1465  #endif  // TAP_TRADE_API_H