vnpy/vn.xspeed/xspeedapi/DFITCMdApi.h
2016-02-25 23:45:59 +08:00

202 lines
7.6 KiB
C++
Raw 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.

/**
* 版权所有(C)2012-2016, 大连飞创信息技术有限公司
* 文件名称DFITCMdApi.h
* 文件说明定义XSpeed行情API接口
* 当前版本1.0.14.45
* 作者XSpeed项目组
* 发布日期2015年5月6日
*/
#ifndef DLMDAPI_H_
#define DLMDAPI_H_
#include "DFITCApiStruct.h"
#ifdef WIN32
#ifdef DFITCAPI_EXPORTS
#define MDAPI_API __declspec(dllexport)
#else
#define MDAPI_API __declspec(dllimport)
#endif//DFITCAPI_EXPORTS
#else
#define MDAPI_API
#endif//WIN32
namespace DFITCXSPEEDMDAPI
{
class DFITCMdSpi
{
public:
DFITCMdSpi(){}
/**
* 网络连接正常响应
*/
virtual void OnFrontConnected(){};
/**
* 网络连接不正常响应
*/
virtual void OnFrontDisconnected(int nReason){};
/**
* 登陆请求响应:当用户发出登录请求后,前置机返回响应时此方法会被调用,通知用户登录是否成功。
* @param pRspUserLogin:用户登录信息结构地址。
* @param pRspInfo:若请求失败,返回错误信息地址,该结构含有错误信息。
*/
virtual void OnRspUserLogin(struct DFITCUserLoginInfoRtnField * pRspUserLogin, struct DFITCErrorRtnField * pRspInfo) {};
/**
* 登出请求响应:当用户发出退出请求后,前置机返回响应此方法会被调用,通知用户退出状态。
* @param pRspUsrLogout:返回用户退出信息结构地址。
* @param pRspInfo:若请求失败,返回错误信息地址。
*/
virtual void OnRspUserLogout(struct DFITCUserLogoutInfoRtnField * pRspUsrLogout, struct DFITCErrorRtnField * pRspInfo) {};
/**
* 错误应答
* @param pRspInfo:错误信息地址。
*/
virtual void OnRspError(struct DFITCErrorRtnField *pRspInfo) {};
/**
* 行情订阅应答:当用户发出行情订阅该方法会被调用。
* @param pSpecificInstrument:指向合约响应结构,该结构包含合约的相关信息。
* @param pRspInfo:错误信息,如果发生错误,该结构含有错误信息。
*/
virtual void OnRspSubMarketData(struct DFITCSpecificInstrumentField * pSpecificInstrument, struct DFITCErrorRtnField * pRspInfo) {};
/**
* 取消订阅行情应答:当用户发出退订请求后该方法会被调用。
* @param pSpecificInstrument:指向合约响应结构,该结构包含合约的相关信息。
* @param pRspInfo:错误信息,如果发生错误,该结构含有错误信息。
*/
virtual void OnRspUnSubMarketData(struct DFITCSpecificInstrumentField * pSpecificInstrument, struct DFITCErrorRtnField * pRspInfo) {};
/**
* 订阅询价应答
* @param pSpecificInstrument:指向合约响应结构,该结构包含合约的相关信息。
* @param pRspInfo:错误信息,如果发生错误,该结构含有错误信息。
*/
virtual void OnRspSubForQuoteRsp(struct DFITCSpecificInstrumentField * pSpecificInstrument, struct DFITCErrorRtnField * pRspInfo) {};
/**
* 取消订阅询价应答
* @param pSpecificInstrument:指向合约响应结构,该结构包含合约的相关信息。
* @param pRspInfo:错误信息,如果发生错误,该结构含有错误信息。
*/
virtual void OnRspUnSubForQuoteRsp(struct DFITCSpecificInstrumentField * pSpecificInstrument, struct DFITCErrorRtnField * pRspInfo) {};
/**
* 行情消息应答:如果订阅行情成功且有行情返回时,该方法会被调用。
* @param pMarketDataField:指向行情信息结构的指针,结构体中包含具体的行情信息。
*/
virtual void OnMarketData(struct DFITCDepthMarketDataField * pMarketDataField) {};
/**
* 自定义组合行情消息应答:如果订阅行情成功且有行情返回时,该方法会被调用。
* @param pMarketDataField:指向行情信息结构的指针,结构体中包含具体的行情信息。
*/
virtual void OnCustomMarketData(struct DFITCCustomMarketDataField * pMarketDataField) {};
/**
* 询价通知
* @param pForQuoteField:指向询价信息结构的指针,结构体中包含具体的询价信息。
*/
virtual void OnRtnForQuoteRsp(struct DFITCQuoteSubscribeRtnField * pForQuoteField) {};
/**
* 交易日确认响应:用于接收交易日信息。
* @param pTradingDayRtnData: 返回交易日请求确认响应结构的地址。
*/
virtual void OnRspTradingDay(struct DFITCTradingDayRtnField * pTradingDayRtnData){};
};//end of DFITCMdSpi
class MDAPI_API DFITCMdApi
{
public:
/**
* 创建行情API实例
* @return 创建出的UserApi
*/
static DFITCMdApi * CreateDFITCMdApi();
/**
* 进行一系列初始化工作:注册回调函数接口,连接行情前置。
* @param pszSvrAddr:行情前置网络地址。
* 网络地址的格式为:"protocol://ipaddress:port",如"tcp://127.0.0.1:10915"
* 其中protocol的值为tcp,udp,udpb(广播行情),表示接收行情的方式;如果是udp接收行情数据,udp的端口将由API自行确定
* 如果是udpb广播行情需要与期货公司确认报盘广播行情端口。
* ipaddress表示行情前置的IP,port表示行情前置的端口
* @param pSpi:类DFITCMdSpi对象实例
* @return 0 - 成功; -1 - 失败。
*/
virtual int Init(char * pszSvrAddr, DFITCMdSpi * pSpi) = 0;
/**
* 删除接口对象本身,不再使用本接口对象时,调用该函数删除接口对象。
*/
virtual void Release() = 0;
/**
* 订阅行情:该方法发出订阅某个或者某些合约行情请求。
* @param ppInstrumentID[]:指针数组,每个指针指向一个合约。(*代表订阅所有合约也可订阅某交易所所有合约如DCE
* @param nCount:合约个数
* @return 0 - 请求发送成功; -1 - 请求发送失败。
*/
virtual int SubscribeMarketData(char * ppInstrumentID[], int nCount, int nRequestID) = 0;
/**
* 退订行情:该方法发出退订某个/某些合约行情请求。
* @param ppInstrumentID[]:指针数组,每个指针指向一个合约。(*代表订阅退订所有合约也可退订某交易所所有合约如DCE
* @param nCount:合约个数
* @return 0 - 请求发送成功; -1 - 请求发送失败
*/
virtual int UnSubscribeMarketData(char * ppInstrumentID[], int nCount, int nRequestID) = 0;
/**
* 订阅询价
* @param ppInstrumentID[]:指针数组,每个指针指向一个合约。(*代表订阅所有询价也可订阅某交易所所有询价如DCE
* @param nCount:合约个数
* @return 0 - 请求发送成功; -1 - 请求发送失败
*/
virtual int SubscribeForQuoteRsp(char * ppInstrumentID[], int nCount, int nRequestID) = 0;
/**
* 退订询价
* @param ppInstrumentID[]:指针数组,每个指针指向一个合约。(*代表订阅退订所有询价也可退订某交易所所有询价如DCE
* @param nCount:合约个数
* @return 0 - 请求发送成功; -1 - 请求发送失败
*/
virtual int UnSubscribeForQuoteRsp(char * ppInstrumentID[], int nCount, int nRequestID) = 0;
/**
* 用户发出登陆请求
* @param pReqUserLoginField:指向用户登录请求结构的地址。
* @return 0 - 请求发送成功; -1 - 请求发送失败; -2 - 检测异常。
*/
virtual int ReqUserLogin(struct DFITCUserLoginField * pReqUserLoginField) = 0;
/**
* 用户发出登出请求
* @param pReqUserLogoutField:指向用户登录请出结构的地址。
* @return 0 - 请求发送成功; -1 - 请求发送失败; -2 - 检测异常。
*/
virtual int ReqUserLogout(struct DFITCUserLogoutField * pReqUserLogoutField) = 0;
/**
* 交易日查询请求
* @return 0 - 请求发送成功; -1 - 请求发送失败。
*/
virtual int ReqTradingDay(struct DFITCTradingDayField * pTradingDay) = 0;
protected:
virtual ~DFITCMdApi() = 0;
};//end of MDAPI_API
} //end of namespace
#endif//DLMDAPI_H_