Files
QTradeProgram/include/FTAPI.h

446 lines
16 KiB
C
Raw Normal View History

2025-08-15 15:57:31 +08:00
#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 IDInitConnect协议返回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();
};
}