#pragma once#ifndef interface#define interface struct#endif/*************************************************Copyright: FUTUAuthor: LinDate: 2015年03月18日Description: 交易API和回调接口定义Ver: 1.2更新记录:1. 2015年12月28日 增加查询订单、账户、持仓接口,版本升级为1.12. 2016年01月07日 增加美股API,版本升级为1.2特别提醒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!×ばつ1000,即最小单位是0.001元**************************************************/enum Trade_Env{Trade_Env_Real = 0, //真实环境(实盘交易, 目前支持港股/美股)Trade_Env_Virtual = 1, //虚拟环境(仿真交易或模拟交易, 目前仅支持港股)};enum Trade_SvrResult{Trade_SvrResult_Succeed = 0, //服务器返回请求处理成功Trade_SvrResult_Failed = -1, //服务器返回请求处理失败(失败的原因可能很多,包括网络超时,暂时统一返回失败)};enum Trade_OrderSide{Trade_OrderSide_Buy = 0, //买入Trade_OrderSide_Sell = 1, //卖出Trade_OrderSide_SellShort = 2, //卖空(目前仅美股)Trade_OrderSide_BuyBack = 3, //卖空补回(目前仅美股)};enum Trade_OrderStatus{Trade_OrderStatus_Processing = 0, //服务器处理中...Trade_OrderStatus_WaitDeal = 1, //等待成交Trade_OrderStatus_PartDealt = 2, //部分成交Trade_OrderStatus_AllDealt = 3, //全部成交Trade_OrderStatus_Disabled = 4, //已失效Trade_OrderStatus_Failed = 5, //下单失败(订单已产生,后续的失败)Trade_OrderStatus_Cancelled = 6, //已撤单Trade_OrderStatus_Deleted = 7, //已删除Trade_OrderStatus_WaitOpen = 8, //等待开盘Trade_OrderStatus_LocalSent = 21, //本地已发送Trade_OrderStatus_LocalFailed = 22, //本地已发送,服务器返回下单失败,没产生订单Trade_OrderStatus_LocalTimeOut = 23, //本地已发送,等待服务器返回超时};//港股的一些枚举定义////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////enum Trade_OrderType_HK{//目前只支持0、1、3Trade_OrderType_HK_EnhancedLimit = 0, //增强限价单(普通交易)Trade_OrderType_HK_Auction = 1, //竞价单(竞价交易)Trade_OrderType_HK_Limit = 2, //限价单Trade_OrderType_HK_AuctionLimit = 3, //竞价限价单(竞价限价)Trade_OrderType_HK_SpecialLimit = 4, //特别限价单};enum Trade_SetOrderStatus{Trade_SetOrderStatus_Cancel = 0, //撤单Trade_SetOrderStatus_Disable = 1, //失效Trade_SetOrderStatus_Enable = 2, //生效Trade_SetOrderStatus_Delete = 3, //删除//以下并不是真正状态、是收到OnOrderErrNotify后对对应的错误提示作出确认Trade_SetOrderStatus_HK_SplitLargeOrder = 11, //确认拆分大单Trade_SetOrderStatus_HK_PriceTooFar = 12, //确认价格偏离太大也继续Trade_SetOrderStatus_HK_BuyWolun = 13, //确认买卖窝轮Trade_SetOrderStatus_HK_BuyGuQuan = 14, //确认买卖股权Trade_SetOrderStatus_HK_BuyLowPriceStock = 15, //确认买卖低价股};enum Trade_OrderErrNotify_HK{Trade_OrderErrNotify_HK_Normal = 0, //普通错误//以下错误,是提示性的,如果不确认订单保持失败状态,如果通过SetOrderStatus对对应错误做出确认,则订单重新生效Trade_OrderErrNotify_HK_LargeOrder = 1, //订单数量太大Trade_OrderErrNotify_HK_PriceTooFar = 2, //订单价格偏离太大Trade_OrderErrNotify_HK_FengXian_Wolun = 3, //买卖窝轮有风险Trade_OrderErrNotify_HK_FengXian_GuQuan = 4, //买卖股权有风险Trade_OrderErrNotify_HK_FengXian_LowPriceStock = 5, //买卖低价股有风险};//美股的一些枚举定义////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////enum Trade_OrderType_US{Trade_OrderType_US_Market = 1, //市价单Trade_OrderType_US_Limit = 2, //限价Trade_OrderType_US_PreMarket = 51, //盘前交易,限价Trade_OrderType_US_PostMarket = 52 //盘后交易,限价};//订单、成交记录、账户、持仓数据结构//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////struct Trade_OrderItem{//特别提醒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!×ばつ1000,即最小单位是0.001元UINT64 nLocalID; //客户端产生的订单ID,非订单真正的ID,用于关联UINT64 nOrderID; //订单号,服务器产生的订单真正的IDUINT8 nType; //不同市场、取值对应具体的枚举定义 Trade_OrderType_HK 或 Trade_OrderType_USTrade_OrderSide enSide;UINT8 nStatus; //取值对应具体的枚举定义Trade_OrderStatusWCHAR szCode[16];WCHAR szName[128];UINT64 nPrice;UINT64 nQty;UINT64 nDealtQty; //成交数量double fDealtAvgPrice; //成交均价,没有放大UINT64 nSubmitedTime; //服务器收到的订单提交时间UINT64 nUpdatedTime; //订单最后更新的时间//只支持港股调用GetErrDesc传nErrCode来得到错误描述,后续请都调用GetErrDescV2传nErrCode或nErrDescStrHashUINT16 nErrCode; //错误码,仅支持港股INT64 nErrDescStrHash; //错误描述字符串的hash};struct Trade_DealItem{//特别提醒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!×ばつ1000,即最小单位是0.001元UINT64 nOrderID; //订单号,服务器产生的订单真正的IDUINT64 nDealID; //成交号Trade_OrderSide enSide; //方向WCHAR szCode[16]; //代码WCHAR szName[128]; //名称UINT64 nPrice; //成交价格UINT64 nQty; //成交数量UINT64 nTime; //成交时间};struct Trade_AccInfo{//特别提醒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!×ばつ1000,即最小单位是0.001元INT64 nPower; //购买力INT64 nZcjz; //资产净值INT64 nZqsz; //证券市值INT64 nXjjy; //现金结余INT64 nKqxj; //可取现金INT64 nDjzj; //冻结资金INT64 nZsje; //追收金额INT64 nZgjde; //最高借贷额INT64 nYyjde; //已用信贷额INT64 nGpbzj; //股票保证金};struct Trade_PositionItem{//特别提醒!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!×ばつ1000,即最小单位是0.001元WCHAR szCode[16];WCHAR szName[128];INT64 nQty; //持有数量INT64 nCanSellQty; //可卖数量INT64 nNominalPrice; //市价INT64 nMarketVal; //市值double fCostPrice; //成本价bool bCostPriceValid; //成本价是否有效INT64 nPLVal; //盈亏金额bool bPLValValid; //盈亏金额是否有效double fPLRatio; //盈亏比例bool bPLRatioValid; //盈亏比例是否有效INT64 nToday_PLVal; //今日盈亏金额INT64 nToday_BuyQty; //今日买入成交量INT64 nToday_BuyVal; //今日买入成交额INT64 nToday_SellQty; //今日卖出成交量INT64 nToday_SellVal; //今日卖出成交额};//港股交易API调用/回调接口定义///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*** 港股交易接口 ITrade_HK, 插件宿主实现,插件通过查询IFTPluginCore::QueryFTInterface得到*/static const GUID IID_IFTTrade_HK ={ 0x69a88049, 0x252e, 0x4a12, { 0x83, 0x41, 0xdd, 0x4c, 0x6e, 0x84, 0x8b, 0x27 } };interface ITrade_HK{/*** 解锁* @param pCookie 接收本次调用对应的Cookie值,用于服务器返回时做对应关系判断.* @param lpszPassword 密码.* @return true发送成功,false发送失败.*/virtual bool UnlockTrade(UINT32* pCookie, LPCWSTR lpszPassword) = 0;/*** 下单* @param enEnv 交易环境(实盘交易或仿真交易).* @param pCookie 接收本次调用对应的Cookie值,用于服务器返回时做对应关系判断.* @param enType 订单类型.* @param enSide 订单方向,买或卖.* @param lpszCode 股票代码.* @param nPrice 订单价格. ×ばつ1000,即最小单位是0.001元* @param nQty 订单数量.* @param pnResult 返回错误码, 目前可能的错误码: QueryData_FailFreqLimit, QueryData_FailNetwork* @return true发送成功,false发送失败.*/virtual bool PlaceOrder(Trade_Env enEnv, UINT32* pCookie, Trade_OrderType_HK enType,Trade_OrderSide enSide, LPCWSTR lpszCode, UINT64 nPrice, UINT64 nQty, int* pnResult = NULL) = 0;/*** 得到订单状态* @param enEnv 交易环境(实盘交易或仿真交易).* @param nOrderID 订单真正的ID.* @param eStatus 返回订单状态* @return true/false 订单是否存在*/virtual bool GetOrderStatus(Trade_Env enEnv, UINT64 nOrderID, Trade_OrderStatus& eStatus) = 0;/*** 设置订单状态* @param enEnv 交易环境(实盘交易或仿真交易).* @param pCookie 接收本次调用对应的Cookie值,用于服务器返回时做对应关系判断.* @param nOrderID 订单真正的ID.* @param enStatus 设置为何种状态.* @param pnResult 返回错误码, 目前可能的错误码: QueryData_FailFreqLimit, QueryData_FailNetwork* @return true发送成功,false发送失败.*/virtual bool SetOrderStatus(Trade_Env enEnv, UINT32* pCookie, UINT64 nOrderID,Trade_SetOrderStatus enStatus, int* pnResult = NULL) = 0;/*** 改单* @param enEnv 交易环境(实盘交易或仿真交易).* @param pCookie 接收本次调用对应的Cookie值,用于服务器返回时做对应关系判断.* @param nOrderID 订单真正的ID.* @param nPrice 新的订单价格. ×ばつ1000,即最小单位是0.001元* @param nQty 新的订单数量.* @param pnResult 返回错误码, 目前可能的错误码: QueryData_FailFreqLimit, QueryData_FailNetwork* @return true发送成功,false发送失败.*/virtual bool ChangeOrder(Trade_Env enEnv, UINT32* pCookie, UINT64 nOrderID, UINT64 nPrice,UINT64 nQty, int* pnResult = NULL) = 0;/*** 通过错误码得到错误描述* @param nErrCode 错误码.* @param szErrDesc 错误描述.* @return true获取成功,false获取失败.*/virtual bool GetErrDesc(UINT16 nErrCode, WCHAR szErrDesc[256]) = 0;/*** 通过错误码或错误描述Hash得到错误描述* @param nErrCodeOrHash 错误码或错误描述Hash.* @param szErrDesc 错误描述.* @return true获取成功,false获取失败.*/virtual bool GetErrDescV2(INT64 nErrCodeOrHash, WCHAR szErrDesc[256]) = 0;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////以下为查询运行时交易内存数据,即返回数据与是牛牛客户端显示数据一致,虽不会请求服务器,但服务器与客户端是TCP长连接,服务器在实时推送最新数据/*** 查询订单列表* @param enEnv 交易环境(实盘交易或仿真交易).* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryOrderList(Trade_Env enEnv, UINT32* pCookie) = 0;/*** 查询成交记录列表* @param enEnv 交易环境(实盘交易或仿真交易).* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryDealList(Trade_Env enEnv, UINT32* pCookie) = 0;/*** 查询账户信息* @param enEnv 交易环境(实盘交易或仿真交易).* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryAccInfo(Trade_Env enEnv, UINT32* pCookie) = 0;/*** 查询持仓列表* @param enEnv 交易环境(实盘交易或仿真交易).* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryPositionList(Trade_Env enEnv, UINT32* pCookie) = 0;/*** 通过本地订单id得到svr订单id* @param Trade_Env 交易环境(实盘交易或仿真交易).* @param nLocalID 订单本地id.* @return 订单ServerID , 如果还没生成或者查找不到返回0*/virtual INT64 FindOrderSvrID(Trade_Env enEnv, INT64 nLocalID) = 0;};interface ITradeCallBack_HK{/*** 解锁交易请求返回* @param nCookie 请求时的Cookie.* @param enSvrRet 服务器处理结果.* @param nErrCode 错误码.*/virtual void OnUnlockTrade(UINT32 nCookie, Trade_SvrResult enSvrRet, UINT64 nErrCode) = 0;/*** 下单请求返回* @param enEnv 交易环境(实盘交易或仿真交易).* @param nCookie 请求时的Cookie.* @param enSvrRet 服务器处理结果.* @param nLocalID 客户端产生的订单ID,用于与后续推送订单关联.* @param nErrCode 错误码.*/virtual void OnPlaceOrder(Trade_Env enEnv, UINT32 nCookie, Trade_SvrResult enSvrRet, UINT64 nLocalID, UINT16 nErrCode) = 0;/*** 订单更新推送* @param enEnv 交易环境(实盘交易或仿真交易).* @param orderItem 订单结构体.*/virtual void OnOrderUpdate(Trade_Env enEnv, const Trade_OrderItem& orderItem) = 0;/*** 设置订单状态请求返回* @param enEnv 交易环境(实盘交易或仿真交易).* @param nCookie 请求时的Cookie.* @param enSvrRet 服务器处理结果.* @param nOrderID 订单号.* @param nErrCode 错误码.*/virtual void OnSetOrderStatus(Trade_Env enEnv, UINT32 nCookie, Trade_SvrResult enSvrRet, UINT64 nOrderID, UINT16 nErrCode) = 0;/*** 改单请求返回* @param enEnv 交易环境(实盘交易或仿真交易).* @param nCookie 请求时的Cookie.* @param enSvrRet 服务器处理结果.* @param nOrderID 订单号.* @param nErrCode 错误码.*/virtual void OnChangeOrder(Trade_Env enEnv, UINT32 nCookie, Trade_SvrResult enSvrRet, UINT64 nOrderID, UINT16 nErrCode) = 0;/*** 订单错误推送* @param enEnv 交易环境(实盘交易或仿真交易).* @param nOrderID 订单号.* @param enErrNotify 订单错误类型.* @param nErrCode 错误码.*/virtual void OnOrderErrNotify(Trade_Env enEnv, UINT64 nOrderID, Trade_OrderErrNotify_HK enErrNotify, UINT16 nErrCode) = 0;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////以下为查询运行时交易内存数据的回调,返回数据与是牛牛客户端显示数据一致,虽不会请求服务器,但服务器与客户端是TCP长连接,服务器在实时推送最新数据/*** 查询订单列表回调* @param enEnv 交易环境(实盘交易或仿真交易).* @param nCookie 请求时的Cookie.* @param nCount 订单个数.* @param pArrOrder 订单数组指针.*/virtual void OnQueryOrderList(Trade_Env enEnv, UINT32 nCookie, INT32 nCount, const Trade_OrderItem* pArrOrder) = 0;/*** 查询成交记录列表回调* @param enEnv 交易环境(实盘交易或仿真交易).* @param nCookie 请求时的Cookie.* @param nCount 成交记录个数.* @param pArrDeal 成交记录数组指针.*/virtual void OnQueryDealList(Trade_Env enEnv, UINT32 nCookie, INT32 nCount, const Trade_DealItem* pArrDeal) = 0;/*** 查询账户信息回调* @param enEnv 交易环境(实盘交易或仿真交易).* @param nCookie 请求时的Cookie.* @param accInfo 账户信息结构体.*/virtual void OnQueryAccInfo(Trade_Env enEnv, UINT32 nCookie, const Trade_AccInfo& accInfo, int nResult) = 0;/*** 查询持仓列表回调* @param enEnv 交易环境(实盘交易或仿真交易).* @param nCookie 请求时的Cookie.* @param nCount 持仓个数.* @param pArrPosition 持仓数组指针.*/virtual void OnQueryPositionList(Trade_Env enEnv, UINT32 nCookie, INT32 nCount, const Trade_PositionItem* pArrPosition) = 0;};//美股交易API调用/回调接口定义///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*** 美股交易接口 ITrade_US, 插件宿主实现,通过查询IFTPluginCore::QueryFTInterface得到*/static const GUID IID_IFTTrade_US ={ 0x66c2e76d, 0x8786, 0x4bf0, { 0x95, 0x34, 0xd2, 0x86, 0x4d, 0x53, 0x9, 0xc6 } };interface ITrade_US{/*** 下单* @param pCookie 接收本次调用对应的Cookie值,用于服务器返回时做对应关系判断.* @param enType 订单类型.* @param enSide 订单方向,买或卖.* @param lpszCode 股票代码.* @param nPrice 订单价格. ×ばつ1000,即最小单位是0.001元* @param nQty 订单数量.* @param pnResult 返回错误码, 目前可能的错误码: QueryData_FailFreqLimit, QueryData_FailNetwork* @return true发送成功,false发送失败.*/virtual bool PlaceOrder(UINT32* pCookie, Trade_OrderType_US enType, Trade_OrderSide enSide,LPCWSTR lpszCode, UINT64 nPrice, UINT64 nQty, int* pnResult = NULL) = 0;/*** 撤销订单* @param pCookie 接收本次调用对应的Cookie值,用于服务器返回时做对应关系判断.* @param nOrderID 订单真正的ID.* @param pnResult 返回错误码, 目前可能的错误码: QueryData_FailFreqLimit, QueryData_FailNetwork* @return true发送成功,false发送失败.*/virtual bool CancelOrder(UINT32* pCookie, UINT64 nOrderID, int* pnResult = NULL) = 0;/*** 改单* @param pCookie 接收本次调用对应的Cookie值,用于服务器返回时做对应关系判断.* @param nOrderID 订单真正的ID.* @param nPrice 新的订单价格. ×ばつ1000,即最小单位是0.001元* @param nQty 新的订单数量.* @param pnResult 返回错误码, 目前可能的错误码: QueryData_FailFreqLimit, QueryData_FailNetwork* @return true发送成功,false发送失败.*/virtual bool ChangeOrder(UINT32* pCookie, UINT64 nOrderID, UINT64 nPrice, UINT64 nQty, int* pnResult = NULL) = 0;/*** 通过错误描述Hash得到错误描述* @param nErrHash 错误描述Hash.* @param szErrDesc 错误描述.* @return true获取成功,false获取失败.*/virtual bool GetErrDescV2(INT64 nErrHash, WCHAR szErrDesc[256]) = 0;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////以下为查询运行时交易内存数据,即返回数据与是牛牛客户端显示数据一致,虽不会请求服务器,但服务器与客户端是TCP长连接,服务器在实时推送最新数据/*** 查询订单列表* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryOrderList(UINT32* pCookie) = 0;/*** 查询成交记录列表* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryDealList(UINT32* pCookie) = 0;/*** 查询账户信息* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryAccInfo(UINT32* pCookie) = 0;/*** 查询持仓列表* @param pCookie 接收本次调用对应的Cookie值,用于查询结果回调时做对应关系判断.* @return true查询成功,false查询失败.*/virtual bool QueryPositionList(UINT32* pCookie) = 0;/*** 通过本地订单id得到svr订单id* @param nLocalID 订单本地id.* @return 订单ServerID , 如果还没生成或者查找不到返回0*/virtual INT64 FindOrderSvrID(INT64 nLocalID) = 0;/*** 得到订单状态* @param enEnv 交易环境(实盘交易或仿真交易).* @param nOrderID 订单真正的ID.* @param eStatus 返回订单状态* @return true/false 订单是否存在*/virtual bool GetOrderStatus(UINT64 nOrderID, Trade_OrderStatus& eStatus) = 0;};interface ITradeCallBack_US{/*** 下单请求返回* @param nCookie 请求时的Cookie.* @param enSvrRet 服务器处理结果.* @param nLocalID 客户端产生的订单ID,用于与后续推送订单关联.* @param nErrHash 错误描述Hash.*/virtual void OnPlaceOrder(UINT32 nCookie, Trade_SvrResult enSvrRet, UINT64 nLocalID, INT64 nErrHash) = 0;/*** 订单更新推送* @param orderItem 订单结构体.*/virtual void OnOrderUpdate(const Trade_OrderItem& orderItem) = 0;/*** 设置订单状态请求返回* @param nCookie 请求时的Cookie.* @param enSvrRet 服务器处理结果.* @param nOrderID 订单号.* @param nErrHash 错误描述Hash.*/virtual void OnCancelOrder(UINT32 nCookie, Trade_SvrResult enSvrRet, UINT64 nOrderID, INT64 nErrHash) = 0;/*** 改单请求返回* @param nCookie 请求时的Cookie.* @param enSvrRet 服务器处理结果.* @param nOrderID 订单号.* @param nErrHash 错误描述Hash.*/virtual void OnChangeOrder(UINT32 nCookie, Trade_SvrResult enSvrRet, UINT64 nOrderID, INT64 nErrHash) = 0;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////以下为查询运行时交易内存数据的回调,返回数据与是牛牛客户端显示数据一致,虽不会请求服务器,但服务器与客户端是TCP长连接,服务器在实时推送最新数据/*** 查询订单列表回调* @param nCookie 请求时的Cookie.* @param nCount 订单个数.* @param pArrOrder 订单数组指针.*/virtual void OnQueryOrderList(UINT32 nCookie, INT32 nCount, const Trade_OrderItem* pArrOrder) = 0;/*** 查询交易记录列表回调* @param nCookie 请求时的Cookie.* @param nCount 交易记录个数.* @param pArrDeal 交易记录数组指针.*/virtual void OnQueryDealList(UINT32 nCookie, INT32 nCount, const Trade_DealItem* pArrDeal) = 0;/*** 查询账户信息回调* @param nCookie 请求时的Cookie.* @param accInfo 账户信息结构体.*/virtual void OnQueryAccInfo(UINT32 nCookie, const Trade_AccInfo& accInfo, int nResult) = 0;/*** 查询持仓列表回调* @param nCookie 请求时的Cookie.* @param nCount 持仓个数.* @param pArrPosition 持仓数组指针.*/virtual void OnQueryPositionList(UINT32 nCookie, INT32 nCount, const Trade_PositionItem* pArrPosition) = 0;};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。