vnpy/vn.xtp/xtpapi/xtp_quote_api.h
2016-08-10 23:09:51 +08:00

159 lines
4.3 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.

/////////////////////////////////////////////////////////////////////////
///@author 中泰证券股份有限公司
///@file xtp_quote_api.h
///@brief 定义行情订阅客户端接口
/////////////////////////////////////////////////////////////////////////
#ifndef _XTP_QUOTE_API_H_
#define _XTP_QUOTE_API_H_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "xtp_api_struct.h"
#if defined(ISLIB) && defined(WIN32)
#ifdef LIB_MD_API_EXPORT
#define MD_API_EXPORT __declspec(dllexport)
#else
#define MD_API_EXPORT __declspec(dllimport)
#endif
#else
#define MD_API_EXPORT
#endif
/*!
* \class XTP::API::QuoteSpi
*
* \brief 行情回调类
*
* \author 中泰证券股份有限公司
* \date 十月 2015
*/
namespace XTP {
namespace API {
class QuoteSpi
{
public:
///当客户端与交易后台通信连接断开时,该方法被调用。
///@remark 保留函数,暂未支持
///@param reason 错误原因
virtual void OnDisconnected(int reason) {};
///错误应答
///@param error_info 错误信息
virtual void OnError(XTPRI *error_info) {};
///订阅行情应答
///@param ticker 详细的合约订阅情况
///@param error_info 订阅合约发生错误时的错误信息
///@param is_last 是否此次订阅的最后一个应答
///@remark 每条订阅的合约均对应一条订阅应答
virtual void OnSubMarketData(XTPST *ticker, XTPRI *error_info, bool is_last) {};
///取消订阅行情应答
///@param ticker 详细的合约取消订阅情况
///@param error_info 错误信息
///@param is_last 是否此次取消订阅的最后一个应答
///@remark 每条取消订阅的合约均对应一条取消订阅应答
virtual void OnUnSubMarketData(XTPST *ticker, XTPRI *error_info, bool is_last) {};
///行情通知
///@param market_data 行情数据
virtual void OnMarketData(XTPMD *market_data) {};
///查询可交易合约应答
///@remark 保留函数,此函数暂未支持
virtual void OnQueryAllTickers() {};
};
}
}
/*!
* \class XTP::API::QuoteApi
*
* \brief 行情订阅接口类
*
* \author 中泰证券股份有限公司
* \date 十月 2015
*/
namespace XTP {
namespace API {
class MD_API_EXPORT QuoteApi
{
public:
///创建QuoteApi
///@param save_file_path (保留字段)存贮订阅信息文件的目录,默认为当前目录
///@return 创建出的UserApi
static QuoteApi *CreateQuoteApi(const char *save_file_path = "");
///删除接口对象本身
///@remark 不再使用本接口对象时,调用该函数删除接口对象
virtual void Release() = 0;
///获取当前交易日
///@return 获取到的交易日
///@remark 只有登录成功后,才能得到正确的交易日
virtual const char *GetTradingDay() = 0;
///注册回调接口
///@param spi 派生自回调接口类的实例
virtual void RegisterSpi(QuoteSpi *spi) = 0;
///订阅行情。
///@return 订阅接口调用是否成功“0”表示接口调用成功非“0”表示接口调用出错
///@param ticker 合约ID数组
///@param count 要订阅/退订行情的合约个数
///@param exchage_id 交易所代码
///@remark 可以一次性订阅同一证券交易所的多个合约
virtual int SubscribeMarketData(char *ticker[], int count, XTP_EXCHANGE_TYPE exchage_id) = 0;
///退订行情。
///@return 取消订阅接口调用是否成功“0”表示接口调用成功非“0”表示接口调用出错
///@param ticker 合约ID数组
///@param count 要订阅/退订行情的合约个数
///@param exchage_id 交易所代码
///@remark 可以一次性取消订阅同一证券交易所的多个合约
virtual int UnSubscribeMarketData(char *ticker[], int count, XTP_EXCHANGE_TYPE exchage_id) = 0;
///用户登录请求
///@return 登录是否成功“0”表示登录成功“-1”表示连接服务器出错“-2”表示已存在连接不允许重复登录如果需要重连请先logout“-3”表示输入有错误
///@param ip 服务器地址
///@param port 服务器端口号
///@param user 登陆用户名
///@param password 登陆密码
///@param sock_type “1”代表TCP“2”代表UDP目前暂时只支持TCP
///@remark 此函数为同步阻塞式,不需要异步等待登录成功,当函数返回即可进行后续操作
virtual int Login(const char* ip, int port, const char* user, const char* password, XTP_PROTOCOL_TYPE sock_type) = 0;
///登出请求
///@return 登出是否成功“0”表示登出成功非“0”表示登出出错
///@remark 此函数为同步阻塞式,不需要异步等待登出,当函数返回即可进行后续操作
virtual int Logout() = 0;
///获取当前交易日可交易合约
///@return 查询是否成功“0”表示查询成功非“0”表示查询不成功
///@param exchage_id 交易所代码
///@remark 此函数暂未支持
virtual int QueryAllTickers(XTP_EXCHANGE_TYPE exchage_id) = 0;
protected:
~QuoteApi() {};
};
}
}
#endif