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