#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: void SetClientInfo(const char* szClientID, Futu::i32_t nClientVer); void SetRSAPrivateKey(const char* szRSAPrivateKey); bool InitConnect(const char* szIPAddr, Futu::u16_t nPort, bool bEnableEncrypt); Futu::u64_t GetConnectID(); bool Close(); void RegisterConnSpi(FTSPI_Conn* pSpi); void UnregisterConnSpi(); protected: FTAPIImp *m_pImp{ nullptr }; }; class FTAPI_Qot : public FTAPI_Conn { public: FTAPI_Qot(); virtual ~FTAPI_Qot(); public: void RegisterQotSpi(FTSPI_Qot* pSpi); void UnregisterQotSpi(); Futu::u32_t Sub(const Qot_Sub::Request &stReq); Futu::u32_t GetGlobalState(const GetGlobalState::Request &stReq); Futu::u32_t RegQotPush(const Qot_RegQotPush::Request &stReq); Futu::u32_t GetSubInfo(const Qot_GetSubInfo::Request &stReq); Futu::u32_t GetTicker(const Qot_GetTicker::Request &stReq); Futu::u32_t GetBasicQot(const Qot_GetBasicQot::Request &stReq); Futu::u32_t GetOrderBook(const Qot_GetOrderBook::Request &stReq); Futu::u32_t GetKL(const Qot_GetKL::Request &stReq); Futu::u32_t GetRT(const Qot_GetRT::Request &stReq); Futu::u32_t GetBroker(const Qot_GetBroker::Request &stReq); Futu::u32_t RequestRehab(const Qot_RequestRehab::Request &stReq); Futu::u32_t RequestHistoryKL(const Qot_RequestHistoryKL::Request &stReq); Futu::u32_t RequestHistoryKLQuota(const Qot_RequestHistoryKLQuota::Request &stReq); Futu::u32_t GetTradeDate(const Qot_GetTradeDate::Request &stReq); Futu::u32_t GetStaticInfo(const Qot_GetStaticInfo::Request &stReq); Futu::u32_t GetSecuritySnapshot(const Qot_GetSecuritySnapshot::Request &stReq); Futu::u32_t GetPlateSet(const Qot_GetPlateSet::Request &stReq); Futu::u32_t GetPlateSecurity(const Qot_GetPlateSecurity::Request &stReq); Futu::u32_t GetReference(const Qot_GetReference::Request &stReq); Futu::u32_t GetOwnerPlate(const Qot_GetOwnerPlate::Request &stReq); Futu::u32_t GetHoldingChangeList(const Qot_GetHoldingChangeList::Request &stReq); Futu::u32_t GetOptionChain(const Qot_GetOptionChain::Request &stReq); Futu::u32_t GetWarrant(const Qot_GetWarrant::Request &stReq); Futu::u32_t GetCapitalFlow(const Qot_GetCapitalFlow::Request &stReq); Futu::u32_t GetCapitalDistribution(const Qot_GetCapitalDistribution::Request &stReq); Futu::u32_t GetUserSecurity(const Qot_GetUserSecurity::Request &stReq); Futu::u32_t ModifyUserSecurity(const Qot_ModifyUserSecurity::Request &stReq); Futu::u32_t StockFilter(const Qot_StockFilter::Request &stReq); Futu::u32_t GetCodeChange(const Qot_GetCodeChange::Request &stReq); Futu::u32_t GetIpoList(const Qot_GetIpoList::Request &stReq); Futu::u32_t GetFutureInfo(const Qot_GetFutureInfo::Request &stReq); Futu::u32_t RequestTradeDate(const Qot_RequestTradeDate::Request &stReq); Futu::u32_t SetPriceReminder(const Qot_SetPriceReminder::Request &stReq); Futu::u32_t GetPriceReminder(const Qot_GetPriceReminder::Request &stReq); Futu::u32_t GetUserSecurityGroup(const Qot_GetUserSecurityGroup::Request &stReq); Futu::u32_t GetMarketState(const Qot_GetMarketState::Request &stReq); Futu::u32_t GetOptionExpirationDate(const Qot_GetOptionExpirationDate::Request &stReq); }; class FTAPI_Trd : public FTAPI_Conn { public: FTAPI_Trd(); virtual ~FTAPI_Trd(); public: void RegisterTrdSpi(FTSPI_Trd* pSpi); void UnregisterTrdSpi(); bool GetPacketID(Common::PacketID &stPacketID); Futu::u32_t GetAccList(const Trd_GetAccList::Request &stReq); Futu::u32_t UnlockTrade(const Trd_UnlockTrade::Request &stReq); Futu::u32_t SubAccPush(const Trd_SubAccPush::Request &stReq); Futu::u32_t GetFunds(const Trd_GetFunds::Request &stReq); Futu::u32_t GetPositionList(const Trd_GetPositionList::Request &stReq); Futu::u32_t GetMaxTrdQtys(const Trd_GetMaxTrdQtys::Request &stReq); Futu::u32_t GetOrderList(const Trd_GetOrderList::Request &stReq); Futu::u32_t PlaceOrder(const Trd_PlaceOrder::Request &stReq); Futu::u32_t ModifyOrder(const Trd_ModifyOrder::Request &stReq); Futu::u32_t GetOrderFillList(const Trd_GetOrderFillList::Request &stReq); Futu::u32_t GetHistoryOrderList(const Trd_GetHistoryOrderList::Request &stReq); Futu::u32_t GetHistoryOrderFillList(const Trd_GetHistoryOrderFillList::Request &stReq); Futu::u32_t GetMarginRatio(const Trd_GetMarginRatio::Request &stReq); Futu::u32_t GetOrderFee(const Trd_GetOrderFee::Request& stReq); }; 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(); }; }