183 lines
6.7 KiB
C++
183 lines
6.7 KiB
C++
#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 };
|
||
}; |