Files
QTradeProgram/FTAPI/FTAPIImp.h
2025-08-15 15:57:31 +08:00

183 lines
6.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#pragma once
#include "FTSPI.h"
#include "FTAPI_InnerDefine.h"
#include "Lock.h"
#include "Include_3rd_protobuf.h"
using namespace google;
class FTAPIImp
{
public:
FTAPIImp(FTAPI_Conn *pConnApi);
~FTAPIImp(void);
public:
//设置客户端信息
void SetClientInfo(const char* szClientID, i32_t nClientVer);
//设置接口编程语言,用于统计
void SetProgrammingLanguage(const char* szLanguage);
//设置密钥
void SetRSAPrivateKey(const char* strRSAPrivateKey);
//初始化连接,连接并初始化
bool InitConnect(const char* szIPAddr, u16_t nPort, bool bEnableEncrypt);
//此连接的连接ID连接的唯一标识InitConnect协议返回没有初始化前为0
u64_t GetConnectID();
//关闭连接
bool Close();
//注册回调
void RegisterConnSpi(FTSPI_Conn *pSpi);
//清理回调,回调对象没有反注册前不可销毁
void UnregisterConnSpi();
/////////////////////////////////////////////////////////////////////////////////
//行情接口实现
//注册回调
void RegisterQotSpi(FTSPI_Qot *pSpi);
//清理回调,回调对象没有反注册前不可销毁
void UnregisterQotSpi();
//订阅,反订阅
u32_t Sub(const Qot_Sub::Request &stReq);
//获取全局信息
u32_t GetGlobalState(const GetGlobalState::Request &stReq);
//注册推送
u32_t RegQotPush(const Qot_RegQotPush::Request &stReq);
//获取订阅信息
u32_t GetSubInfo(const Qot_GetSubInfo::Request &stReq);
//获取逐笔
u32_t GetTicker(const Qot_GetTicker::Request &stReq);
//获取报价
u32_t GetBasicQot(const Qot_GetBasicQot::Request &stReq);
//获取摆盘
u32_t GetOrderBook(const Qot_GetOrderBook::Request &stReq);
//获取K线
u32_t GetKL(const Qot_GetKL::Request &stReq);
//获取分时
u32_t GetRT(const Qot_GetRT::Request &stReq);
//获取经纪队列
u32_t GetBroker(const Qot_GetBroker::Request &stReq);
//在线请求历史复权信息不读本地历史数据DB
u32_t RequestRehab(const Qot_RequestRehab::Request &stReq);
//在线请求历史K线不读本地历史数据DB
u32_t RequestHistoryKL(const Qot_RequestHistoryKL::Request &stReq);
//获取历史K线已经用掉的额度
u32_t RequestHistoryKLQuota(const Qot_RequestHistoryKLQuota::Request &stReq);
//获取交易日
u32_t GetTradeDate(const Qot_GetTradeDate::Request &stReq);
//获取静态信息
u32_t GetStaticInfo(const Qot_GetStaticInfo::Request &stReq);
//获取股票快照
u32_t GetSecuritySnapshot(const Qot_GetSecuritySnapshot::Request &stReq);
//获取板块集合下的板块
u32_t GetPlateSet(const Qot_GetPlateSet::Request &stReq);
//获取板块下的股票
u32_t GetPlateSecurity(const Qot_GetPlateSecurity::Request &stReq);
//获取相关股票
u32_t GetReference(const Qot_GetReference::Request &stReq);
//获取股票所属的板块
u32_t GetOwnerPlate(const Qot_GetOwnerPlate::Request &stReq);
//获取大股东持股变化列表
u32_t GetHoldingChangeList(const Qot_GetHoldingChangeList::Request &stReq);
//筛选期权
u32_t GetOptionChain(const Qot_GetOptionChain::Request &stReq);
//筛选窝轮
u32_t GetWarrant(const Qot_GetWarrant::Request &stReq);
//获取资金流向
u32_t GetCapitalFlow(const Qot_GetCapitalFlow::Request &stReq);
//获取资金分布
u32_t GetCapitalDistribution(const Qot_GetCapitalDistribution::Request &stReq);
//获取自选股分组下的股票
u32_t GetUserSecurity(const Qot_GetUserSecurity::Request &stReq);
//修改自选股分组下的股票
u32_t ModifyUserSecurity(const Qot_ModifyUserSecurity::Request &stReq);
//条件选股
u32_t StockFilter(const Qot_StockFilter::Request &stReq);
//股票代码变化
u32_t GetCodeChange(const Qot_GetCodeChange::Request &stReq);
//新股IPO
u32_t GetIpoList(const Qot_GetIpoList::Request &stReq);
//期货合约资料
u32_t GetFutureInfo(const Qot_GetFutureInfo::Request &stReq);
//获取市场交易日,在线拉取不在本地计算
u32_t RequestTradeDate(const Qot_RequestTradeDate::Request &stReq);
//设置到价提醒
u32_t SetPriceReminder(const Qot_SetPriceReminder::Request &stReq);
//获取到价提醒
u32_t GetPriceReminder(const Qot_GetPriceReminder::Request &stReq);
//获取自选股分组列表
u32_t GetUserSecurityGroup(const Qot_GetUserSecurityGroup::Request &stReq);
//获取市场状态
u32_t GetMarketState(const Qot_GetMarketState::Request &stReq);
//获取期权到期日
u32_t GetOptionExpirationDate(const Qot_GetOptionExpirationDate::Request &stReq);
/////////////////////////////////////////////////////////////////////////////////
//交易接口实现
//注册回调
void RegisterTrdSpi(FTSPI_Trd *pSpi);
//清理回调,回调对象没有反注册前不可销毁
void UnregisterTrdSpi();
//获取交易包标识
bool GetPacketID(Common::PacketID &stPacketID);
//获取交易账户列表
u32_t GetAccList(const Trd_GetAccList::Request &stReq);
//解锁
u32_t UnlockTrade(const Trd_UnlockTrade::Request &stReq);
//订阅接收推送数据的交易账户
u32_t SubAccPush(const Trd_SubAccPush::Request &stReq);
//获取账户资金
u32_t GetFunds(const Trd_GetFunds::Request &stReq);
//获取账户持仓
u32_t GetPositionList(const Trd_GetPositionList::Request &stReq);
//获取最大交易数量
u32_t GetMaxTrdQtys(const Trd_GetMaxTrdQtys::Request &stReq);
//获取当日订单列表
u32_t GetOrderList(const Trd_GetOrderList::Request &stReq);
//下单
u32_t PlaceOrder(const Trd_PlaceOrder::Request &stReq);
//修改订单
u32_t ModifyOrder(const Trd_ModifyOrder::Request &stReq);
//获取当日成交列表
u32_t GetOrderFillList(const Trd_GetOrderFillList::Request &stReq);
//获取历史订单列表
u32_t GetHistoryOrderList(const Trd_GetHistoryOrderList::Request &stReq);
//获取历史成交列表
u32_t GetHistoryOrderFillList(const Trd_GetHistoryOrderFillList::Request &stReq);
//获取融资融券数据
u32_t GetMarginRatio(const Trd_GetMarginRatio::Request &stReq);
//获取订单费用
u32_t GetOrderFee(const Trd_GetOrderFee::Request& stReq);
public:
virtual void OnReply(FTAPIChannelPtr pChannel, FTAPI_ReqReplyType enReqReplyType, const FTAPI_ProtoHeader* pProtoHeader, const i8_t* pProtoData, i32_t nDataLen);
virtual void OnPush(FTAPIChannelPtr pChannel, const FTAPI_ProtoHeader* pProtoHeader, const i8_t* pProtoData, i32_t nDataLen);
virtual void OnDisConnect(FTAPIChannelPtr pChannel, i64_t nErrCode);
virtual void OnInitConnect(FTAPIChannelPtr pChannel, i64_t nErrCode, const char* strDesc);
private:
u32_t SendProto(u32_t nProtoID, const protobuf::Message &pbObj);
private:
static CLock m_safe;
FTAPIChannelPtr m_pFTAPIChannel{ nullptr };
FTSPI_Conn* m_pConnSpi{ nullptr };
FTSPI_Qot* m_pQotSpi{ nullptr };
FTSPI_Trd* m_pTrdSpi{ nullptr };
FTAPI_Conn* m_pConnApi{ nullptr };
u32_t m_nTrdSerialNo{ 100 };
};