446 lines
16 KiB
C++
446 lines
16 KiB
C++
#pragma once
|
||
#include "FTAPI_Define.h"
|
||
|
||
class FTAPIImp;
|
||
namespace Futu {
|
||
class FTSPI_Conn;
|
||
class FTSPI_Qot;
|
||
class FTSPI_Trd;
|
||
class FTAPI_Conn
|
||
{
|
||
public:
|
||
FTAPI_Conn();
|
||
virtual ~FTAPI_Conn();
|
||
|
||
public:
|
||
/**
|
||
* @brief 设置客户端信息
|
||
* @param [in] strClientID 客户端标识
|
||
* @param [in] nClientVer 客户端版本
|
||
*/
|
||
void SetClientInfo(const char* szClientID, Futu::i32_t nClientVer);
|
||
|
||
/**
|
||
* @brief 设置密钥
|
||
* @param [in] strRSAPrivateKey 密钥
|
||
*/
|
||
void SetRSAPrivateKey(const char* szRSAPrivateKey);
|
||
|
||
/**
|
||
* @brief 初始化连接,连接并初始化
|
||
* @param [in] szIPAddr 地址
|
||
* @param [in] nPort 端口
|
||
* @param [in] bEnableEncrypt 启用加密
|
||
* @return bool 是否启动了执行,不代表连接结果,结果通过OnInitConnect回调
|
||
*/
|
||
bool InitConnect(const char* szIPAddr, Futu::u16_t nPort, bool bEnableEncrypt);
|
||
|
||
/**
|
||
* @brief 此连接的连接ID,连接的唯一标识,InitConnect协议返回,没有初始化前为0
|
||
* @return 连接ID
|
||
*/
|
||
Futu::u64_t GetConnectID();
|
||
|
||
/**
|
||
* @brief 关闭连接
|
||
* @return 是否成功
|
||
*/
|
||
bool Close();
|
||
|
||
/**
|
||
* @brief 注册回调
|
||
* @param [in] pSpi 回调,该对象没有反注册前不可销毁
|
||
*/
|
||
void RegisterConnSpi(FTSPI_Conn* pSpi);
|
||
|
||
/**
|
||
* @brief 反注册回调
|
||
*/
|
||
void UnregisterConnSpi();
|
||
};
|
||
|
||
/**
|
||
* @brief 行情接口
|
||
*/
|
||
class FTAPI_Qot : public FTAPI_Conn
|
||
{
|
||
public:
|
||
FTAPI_Qot();
|
||
virtual ~FTAPI_Qot();
|
||
|
||
public:
|
||
/**
|
||
* @brief 注册回调
|
||
* @param [in] pSpi 回调,该对象没有反注册前不可销毁
|
||
*/
|
||
void RegisterQotSpi(FTSPI_Qot* pSpi);
|
||
|
||
/**
|
||
* @brief 反注册回调
|
||
*/
|
||
void UnregisterQotSpi();
|
||
|
||
/**
|
||
* @brief 订阅,反订阅
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_Sub.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t Sub(const Qot_Sub::Request &stReq);
|
||
/**
|
||
* @brief 获取全局信息
|
||
* @param [in] stReq 请求包,具体字段请参考GetGlobalState.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetGlobalState(const GetGlobalState::Request &stReq);
|
||
/**
|
||
* @brief 注册推送,用于当前连接订阅,但是在其他连接获取推送的场景
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_RegQotPush.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t RegQotPush(const Qot_RegQotPush::Request &stReq);
|
||
/**
|
||
* @brief 获取订阅信息
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetSubInfo.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetSubInfo(const Qot_GetSubInfo::Request &stReq);
|
||
/**
|
||
* @brief 获取逐笔,调用该接口前需要先订阅(订阅位:Qot_Common.SubType_Ticker)
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetTicker.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetTicker(const Qot_GetTicker::Request &stReq);
|
||
/**
|
||
* @brief 获取报价,调用该接口前需要先订阅(订阅位:Qot_Common.SubType_Basic)
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetBasicQot.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetBasicQot(const Qot_GetBasicQot::Request &stReq);
|
||
/**
|
||
* @brief 获取摆盘,调用该接口前需要先订阅(订阅位:Qot_Common.SubType_OrderBook)
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetOrderBook.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetOrderBook(const Qot_GetOrderBook::Request &stReq);
|
||
/**
|
||
* @brief 获取K线,调用该接口前需要先订阅(订阅位:Qot_Common.SubType_KL_XXX)
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetKL.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetKL(const Qot_GetKL::Request &stReq);
|
||
/**
|
||
* @brief 获取分时,调用该接口前需要先订阅(订阅位:Qot_Common.SubType_RT)
|
||
* @param [in] stReq 请求包,具体字段请参考GetRT.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetRT(const Qot_GetRT::Request &stReq);
|
||
/**
|
||
* @brief 获取经纪队列,调用该接口前需要先订阅(订阅位:Qot_Common.SubType_Broker)
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetBroker.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetBroker(const Qot_GetBroker::Request &stReq);
|
||
/**
|
||
* @brief 在线请求历史复权信息,不读本地历史数据DB
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_RequestRehab.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t RequestRehab(const Qot_RequestRehab::Request &stReq);
|
||
/**
|
||
* @brief 在线请求历史K线,不读本地历史数据DB
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_RequestHistoryKL.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t RequestHistoryKL(const Qot_RequestHistoryKL::Request &stReq);
|
||
/**
|
||
* @brief 获取历史K线已经用掉的额度
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_RequestHistoryKLQuota.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t RequestHistoryKLQuota(const Qot_RequestHistoryKLQuota::Request &stReq);
|
||
/**
|
||
* @brief 获取交易日
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetTradeDate.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetTradeDate(const Qot_GetTradeDate::Request &stReq);
|
||
/**
|
||
* @brief 获取静态信息
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetStaticInfo.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetStaticInfo(const Qot_GetStaticInfo::Request &stReq);
|
||
/**
|
||
* @brief 获取股票快照
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetSecuritySnapshot.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetSecuritySnapshot(const Qot_GetSecuritySnapshot::Request &stReq);
|
||
/**
|
||
* @brief 获取板块集合下的板块
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetPlateSet.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetPlateSet(const Qot_GetPlateSet::Request &stReq);
|
||
/**
|
||
* @brief 获取板块下的股票
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetPlateSecurity.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetPlateSecurity(const Qot_GetPlateSecurity::Request &stReq);
|
||
/**
|
||
* @brief 获取相关股票
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetReference.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetReference(const Qot_GetReference::Request &stReq);
|
||
/**
|
||
* @brief 获取股票所属的板块
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetOwnerPlate.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetOwnerPlate(const Qot_GetOwnerPlate::Request &stReq);
|
||
/**
|
||
* @brief 获取大股东持股变化列表
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetHoldingChangeList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetHoldingChangeList(const Qot_GetHoldingChangeList::Request &stReq);
|
||
/**
|
||
* @brief 筛选期权
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetOptionChain.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetOptionChain(const Qot_GetOptionChain::Request &stReq);
|
||
/**
|
||
* @brief 筛选窝轮
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetWarrant.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetWarrant(const Qot_GetWarrant::Request &stReq);
|
||
/**
|
||
* @brief 获取资金流向
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetCapitalFlow.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetCapitalFlow(const Qot_GetCapitalFlow::Request &stReq);
|
||
/**
|
||
* @brief 获取资金分布
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetCapitalDistribution.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetCapitalDistribution(const Qot_GetCapitalDistribution::Request &stReq);
|
||
/**
|
||
* @brief 获取自选股分组下的股票
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetUserSecurity.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetUserSecurity(const Qot_GetUserSecurity::Request &stReq);
|
||
/**
|
||
* @brief 修改自选股分组下的股票
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_ModifyUserSecurity.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t ModifyUserSecurity(const Qot_ModifyUserSecurity::Request &stReq);
|
||
/**
|
||
* @brief 条件选股
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_StockFilter.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t StockFilter(const Qot_StockFilter::Request &stReq);
|
||
|
||
/**
|
||
* @brief 获取股票代码变化
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetCodeChange.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetCodeChange(const Qot_GetCodeChange::Request &stReq);
|
||
|
||
/**
|
||
* @brief 新股IPO
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetIpoList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetIpoList(const Qot_GetIpoList::Request &stReq);
|
||
|
||
/**
|
||
* @brief 期货合约资料
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetFutureInfo.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetFutureInfo(const Qot_GetFutureInfo::Request &stReq);
|
||
|
||
/**
|
||
* @brief 获取市场交易日,在线拉取不在本地计算
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_RequestTradeDate.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t RequestTradeDate(const Qot_RequestTradeDate::Request &stReq);
|
||
|
||
/**
|
||
* @brief 设置到价提醒
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_SetPriceReminder.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t SetPriceReminder(const Qot_SetPriceReminder::Request &stReq);
|
||
|
||
/**
|
||
* @brief 获取到价提醒
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetPriceReminder.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetPriceReminder(const Qot_GetPriceReminder::Request &stReq);
|
||
|
||
/**
|
||
* @brief 获取自选股分组列表
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetUserSecurityGroup.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetUserSecurityGroup(const Qot_GetUserSecurityGroup::Request &stReq);
|
||
|
||
/**
|
||
* @brief 获取市场状态
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetMarketState.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetMarketState(const Qot_GetMarketState::Request &stReq);
|
||
|
||
/**
|
||
* @brief 获取期权链到期日
|
||
* @param [in] stReq 请求包,具体字段请参考Qot_GetOptionExpirationDate.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetOptionExpirationDate(const Qot_GetOptionExpirationDate::Request &stReq);
|
||
};
|
||
|
||
/**
|
||
* @brief 交易接口
|
||
*/
|
||
class FTAPI_Trd : public FTAPI_Conn
|
||
{
|
||
public:
|
||
FTAPI_Trd();
|
||
virtual ~FTAPI_Trd();
|
||
|
||
public:
|
||
/**
|
||
* @brief 注册回调
|
||
* @param [in] pSpi 回调,该对象没有反注册前不可销毁
|
||
*/
|
||
void RegisterTrdSpi(FTSPI_Trd* pSpi);
|
||
|
||
/**
|
||
* @brief 反注册回调
|
||
*/
|
||
void UnregisterTrdSpi();
|
||
|
||
/**
|
||
* @brief 获取交易包标识
|
||
* @param [out] 获取到的交易包标识
|
||
* @return bool 是否成功,没有初始化前调用会返回失败
|
||
*/
|
||
bool GetPacketID(Common::PacketID &stPacketID);
|
||
|
||
/**
|
||
* @brief 获取交易帐号列表
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetAccList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetAccList(const Trd_GetAccList::Request &stReq);
|
||
/**
|
||
* @brief 解锁,针对OpenD解锁一次即可
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_UnlockTrade.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t UnlockTrade(const Trd_UnlockTrade::Request &stReq);
|
||
/**
|
||
* @brief 订阅接收推送数据的交易账户
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_SubAccPush.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t SubAccPush(const Trd_SubAccPush::Request &stReq);
|
||
/**
|
||
* @brief 获取账户资金
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetFunds.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetFunds(const Trd_GetFunds::Request &stReq);
|
||
/**
|
||
* @brief 获取账户持仓
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetPositionList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetPositionList(const Trd_GetPositionList::Request &stReq);
|
||
/**
|
||
* @brief 获取最大交易数量
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetMaxTrdQtys.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetMaxTrdQtys(const Trd_GetMaxTrdQtys::Request &stReq);
|
||
/**
|
||
* @brief 获取当日订单列表
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetOrderList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetOrderList(const Trd_GetOrderList::Request &stReq);
|
||
/**
|
||
* @brief 下单
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_PlaceOrder.proto协议,PacketID不需填写,发送时接口会填
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t PlaceOrder(const Trd_PlaceOrder::Request &stReq);
|
||
/**
|
||
* @brief 修改订单
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_ModifyOrder.proto协议,PacketID不需填写,发送时接口会填
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t ModifyOrder(const Trd_ModifyOrder::Request &stReq);
|
||
/**
|
||
* @brief 获取当日成交列表
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetOrderFillList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetOrderFillList(const Trd_GetOrderFillList::Request &stReq);
|
||
/**
|
||
* @brief 获取历史订单列表
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetHistoryOrderList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetHistoryOrderList(const Trd_GetHistoryOrderList::Request &stReq);
|
||
/**
|
||
* @brief 获取历史成交列表
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetHistoryOrderFillList.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetHistoryOrderFillList(const Trd_GetHistoryOrderFillList::Request &stReq);
|
||
/**
|
||
* @brief 获取融资融券数据
|
||
* @param [in] stReq 请求包,具体字段请参考Trd_GetMarginRatio.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetMarginRatio(const Trd_GetMarginRatio::Request &stReq);
|
||
/**
|
||
* @brief 获取订单费用数据
|
||
* @param [in] stReq 请求包,Trd_GetOrderFee.proto协议
|
||
* @return Futu::u32_t 包序列号, 0表示请求发送失败
|
||
*/
|
||
Futu::u32_t GetOrderFee(const Trd_GetOrderFee::Request &stReq);
|
||
};
|
||
|
||
/**
|
||
* @brief 全局工具接口
|
||
*/
|
||
class FTAPI
|
||
{
|
||
public:
|
||
static FTAPI_Qot* CreateQotApi();
|
||
static void ReleaseQotApi(FTAPI_Qot* pQot);
|
||
|
||
static FTAPI_Trd* CreateTrdApi();
|
||
static void ReleaseTrdApi(FTAPI_Trd* pTrd);
|
||
|
||
static void Init();
|
||
static void UnInit();
|
||
};
|
||
|
||
} |