ITraderApi.h
source: wtcpp/folder98/folder01/folder3/folder3/file02.md
/*!
* \file ITraderApi.h
* \project WonderTrader
*
* \author Wesley
* \date 2020/03/30
*
* \brief 交易通道对接接口定义文件
*/
#pragma once
#include <set>
#include <map>
#include <stdint.h>
#include <functional>
#include "WTSTypes.h"
NS_WTP_BEGIN
class WTSVariant;
class WTSEntrust;
class WTSOrderInfo;
class WTSTradeInfo;
class WTSEntrustAction;
class WTSAccountInfo;
class WTSInvestorInfo;
class WTSPositionItem;
class WTSPositionDetail;
class WTSContractInfo;
class WTSError;
class WTSTickData;
class WTSNotify;
class WTSArray;
class IBaseDataMgr;
typedef std::function<void()> CommonExecuter;
#pragma region "Stock Trading API definations"
/*
* 股票交易接口回调
* Added By Wesley @ 2020/05/06
*/
class IStkTraderSpi
{
};
/*
* 股票交易接口
* Added By Wesley @ 2020/05/06
* 预留起来以后使用,先把接口的相互框架搭建起来
* 主要提供融资融券等股票特有接口
*/
class IStkTraderApi
{
};
#pragma endregion
#pragma region "Option Trading API definations"
/*
* 期权交易接口回调
* Added By Wesley @ 2020/05/06
*/
class IOptTraderSpi
{
public:
virtual void onRspEntrustOpt(WTSEntrust* entrust, WTSError *err) {}
virtual void onRspOrdersOpt(const WTSArray* ayOrders) {}
virtual void onPushOrderOpt(WTSOrderInfo* orderInfo) {}
};
/*
* 期权交易接口
* Added By Wesley @ 2020/05/06
* 预留起来以后使用,先把接口的相互框架搭建起来
* 主要提供报价、行权等期权特有接口
*/
class IOptTraderApi
{
public:
/*
* 下单接口
* entrust 下单的具体数据结构
*/
virtual int orderInsertOpt(WTSEntrust* eutrust) { return -1; }
/*
* 订单操作接口
* action 操作的具体数据结构
*/
virtual int orderActionOpt(WTSEntrustAction* action) { return -1; }
/*
* 查询期权订单
*/
virtual int queryOrdersOpt(WTSBusinessType bType) { return -1; }
};
#pragma endregion
//委托回调接口
class ITraderSpi
{
public:
// 基础数据处理指针
virtual IBaseDataMgr* getBaseDataMgr() = 0;
virtual void handleTraderLog(WTSLogLevel ll, const char* message){}
// 股票和期权交易回调接口指针
virtual IStkTraderSpi* getStkSpi(){ return NULL; }
virtual IOptTraderSpi* getOptSpi(){ return NULL; }
public:
virtual void handleEvent(WTSTraderEvent e, int32_t ec) = 0;
virtual void onLoginResult(bool bSucc, const char* msg, uint32_t tradingdate) = 0;
virtual void onLogout(){}
virtual void onRspEntrust(WTSEntrust* entrust, WTSError *err){}
virtual void onRspAccount(WTSArray* ayAccounts) {}
virtual void onRspPosition(const WTSArray* ayPositions){}
virtual void onRspOrders(const WTSArray* ayOrders){}
virtual void onRspTrades(const WTSArray* ayTrades){}
virtual void onRspSettlementInfo(uint32_t uDate, const char* content){}
virtual void onPushOrder(WTSOrderInfo* orderInfo){}
virtual void onPushTrade(WTSTradeInfo* tradeRecord){}
virtual void onTraderError(WTSError* err){}
};
//下单接口管理接口
class ITraderApi
{
public:
virtual ~ITraderApi(){}
virtual IStkTraderApi* getStkTrader() { return NULL; }
virtual IOptTraderApi* getOptTrader() { return NULL; }
public:
/*
* 初始化解析管理器
*/
virtual bool init(WTSVariant *params) = 0;
/*
* 释放解析管理器
*/
virtual void release() = 0;
/*
* 注册回调接口
*/
virtual void registerSpi(ITraderSpi *listener) = 0;
//////////////////////////////////////////////////////////////////////////
//业务逻辑接口
/*
* 连接服务器
*/
virtual void connect() = 0;
/*
* 断开连接
*/
virtual void disconnect() = 0;
virtual bool isConnected() = 0;
/*
* 生成委托单号
*/
virtual bool makeEntrustID(char* buffer, int length){ return false; }
/*
* 登录接口
*/
virtual int login(const char* user, const char* pass, const char* productInfo) = 0;
/*
* 注销接口
*/
virtual int logout() = 0;
/*
* 下单接口
* entrust 下单的具体数据结构
*/
virtual int orderInsert(WTSEntrust* eutrust) = 0;
/*
* 订单操作接口
* action 操作的具体数据结构
*/
virtual int orderAction(WTSEntrustAction* action) = 0;
/*
* 查询账户信息
*/
virtual int queryAccount() = 0;
/*
* 查询持仓信息
*/
virtual int queryPositions() = 0;
/*
* 查询所有订单
*/
virtual int queryOrders() = 0;
/*
* 查询成交明细
*/
virtual int queryTrades() = 0;
/*
* 查询结算单
*/
virtual int querySettlement(uint32_t uDate){ return 0; }
};
NS_WTP_END
//获取IDataMgr的函数指针类型
typedef wtp::ITraderApi* (*FuncCreateTrader)();
typedef void(*FuncDeleteTrader)(wtp::ITraderApi* &trader);