WTSTypes.h

source: wtcpp/folder98/folder01/folder1/file02.md

/*!
 * \file WTSTypes.h
 * \project	WonderTrader
 *
 * \author Wesley
 * \date 2020/03/30
 * 
 * \brief WonderTrader基本数据类型定义文件
 */
#pragma once
#include "WTSMarcos.h"
#include <stdint.h>

NS_WTP_BEGIN

/*
 *	合约分类
 */
//从CTP复制过来的
typedef enum tagContractCategory
{
	CC_Stock,			//股票
	CC_Future,			//期货
	CC_FutOption,		//期货期权,商品期权是这个分类
	CC_Combination,		//组合
	CC_Spot,			//即期
	CC_EFP,				//期转现
	CC_SpotOption,		//现货期权,股指期权是这个分类
	CC_ETFOption,		//个股期权,ETF期权是这个分类

	CC_DC_Spot	= 20,	//数币现货
	CC_DC_Swap,			//数币永续
	CC_DC_Future,		//数币期货
	CC_DC_Margin,		//数币杠杆
	CC_DC_Option		//数币期权
} ContractCategory;

/*
 *	期权类型
 */
typedef enum tagOptionType
{
	OT_None = 0,
	OT_Call = '1',		//看涨期权
	OT_Put	= '2'		//看跌期权
} OptionType;

/*
 *	平仓类型
 */
typedef enum tagCoverMode
{
	CM_OpenCover,		//开平
	CM_CoverToday,		//开平昨平今
	CM_UNFINISHED,		//平未了结的
	CM_None				//不区分开平
} CoverMode;

/*
 *	交易模式
 */
typedef enum tagTradingMode
{
	TM_Both,	//多空都支持
	TM_Long,	//只能做多
	TM_LongT1	//做多T+1
} TradingMode;

/*
*	价格模式
*/
typedef enum tagPriceMode
{
	PM_Both,		//市价限价都支持
	PM_Limit,		//只支持限价
	PM_Market		//只支持市价
} PriceMode;

/*
 *	K线数据类型
 *	开、高、低、收、量、额、日期
 */
typedef enum tagKlineFieldType
{
	KFT_OPEN,
	KFT_HIGH,
	KFT_LOW,
	KFT_CLOSE,
	KFT_DATE,
	KFT_VOLUME,
	KFT_SVOLUME
} WTSKlineFieldType;

/*
 *	K线周期
 */
typedef enum tagKlinePeriod
{
	KP_Tick,
	KP_Minute1,
	KP_Minute5,
	KP_DAY,
	KP_Week,
	KP_Month
} WTSKlinePeriod;

static const char* PERIOD_NAME[] = 
{
	"tick",
	"min1",
	"min5",
	"day",
	"week",
	"month"
};

/*
 *	日志级别
 */
typedef enum tagLogLevel
{
	LL_ALL	= 100,
	LL_DEBUG,
	LL_INFO,
	LL_WARN,
	LL_ERROR,
	LL_FATAL,
	LL_NONE
} WTSLogLevel;

/*
 *	价格类型
 */
typedef enum tagPriceType
{
	WPT_ANYPRICE	= 0,			//市价单
	WPT_LIMITPRICE,					//限价单
	WPT_BESTPRICE,					//最优价
	WPT_LASTPRICE,					//最新价

	//////////////////////////////////////////////////////////////////////////
	//以下对标CTP的价格类型
	WPT_CTP_LASTPLUSONETICKS = 20,	//最新价+1ticks
	WPT_CTP_LASTPLUSTWOTICKS,		//最新价+2ticks
	WPT_CTP_LASTPLUSTHREETICKS,		//最新价+3ticks
	WPT_CTP_ASK1,					//卖一价
	WPT_CTP_ASK1PLUSONETICKS,		//卖一价+1ticks
	WPT_CTP_ASK1PLUSTWOTICKS,		//卖一价+2ticks
	WPT_CTP_ASK1PLUSTHREETICKS,		//卖一价+3ticks
	WPT_CTP_BID1,					//买一价
	WPT_CTP_BID1PLUSONETICKS,		//卖一价+1ticks
	WPT_CTP_BID1PLUSTWOTICKS,		//卖一价+2ticks
	WPT_CTP_BID1PLUSTHREETICKS,		//卖一价+3ticks
	WPT_CTP_FIVELEVELPRICE,			//五档价,中金所市价

	//////////////////////////////////////////////////////////////////////////
	//以下对标DC的价格类型
	WPT_DC_POSTONLY	= 100,			//只做maker单
	WPT_DC_FOK,						//全部成交或立即取消
	WPT_DC_IOC,						//立即成交并取消剩余
	WPT_DC_OPTLIMITIOC				//市价委托立即成交并取消剩余
} WTSPriceType;

/*
 *	时间条件
 */
typedef enum tagTimeCondition
{
	WTC_IOC		= '1',	//立即完成,否则撤销
	WTC_GFS,			//本节有效
	WTC_GFD,			//当日有效
} WTSTimeCondition;

/*
 *	开平方向
 */
typedef enum tagOffsetType
{
	WOT_OPEN			= '0',	//开仓
	WOT_CLOSE,					//平仓,上期为平昨
	WOT_FORCECLOSE,				//强平
	WOT_CLOSETODAY,				//平今
	WOT_CLOSEYESTERDAY,			//平昨
} WTSOffsetType;

/*
 *	多空方向
 */
typedef enum tagDirectionType
{
	WDT_LONG			= '0',	//做多
	WDT_SHORT,					//做空
	WDT_NET						//净
} WTSDirectionType;

/*
 *	业务类型
 */
typedef enum tagBusinessType
{
	BT_CASH		= '0',	//普通买卖,
	BT_ETF		= '1',	//ETF申赎
	BT_EXECUTE	= '2',	//期权行权
	BT_QUOTE	= '3',	//期权报价
	BT_FORQUOTE = '4',	//期权询价
	BT_FREEZE	= '5',	//期权对锁
	BT_CREDIT	= '6',	//融资融券
	BT_UNKNOWN			//未知业务类型
} WTSBusinessType;

/*
 *	订单操作类型
 */
typedef enum tagActionFlag
{
	WAF_CANCEL			= '0',	//撤销
	WAF_MODIFY			= '3',	//修改
} WTSActionFlag;

/*
 *	订单状态
 */
typedef enum tagOrderState
{
	WOS_AllTraded				= '0',	//全部成交
	WOS_PartTraded_Queuing,				//部分成交,仍在队列中
	WOS_PartTraded_NotQueuing,			//部分成交,未在队列
	WOS_NotTraded_Queuing,				//未成交
	WOS_NotTraded_NotQueuing,			//未成交,未在队列
	WOS_Canceled,						//已撤销
	WOS_Submitting				= 'a',	//正在提交
	WOS_Nottouched,						//未触发
} WTSOrderState;

/*
 *	订单类型
 */
typedef enum tagOrderType
{
	WORT_Normal			= 0,		//正常订单
	WORT_Exception,					//异常订单
	WORT_System,					//系统订单
	WORT_Hedge						//对冲订单
} WTSOrderType;

/*
 *	成交类型
 */
typedef enum tagTrageType
{
	WTT_Common				= '0',	//普通
	WTT_OptionExecution		= '1',	//期权执行
	WTT_OTC					= '2',	//OTC成交
	WTT_EFPDerived			= '3',	//期转现衍生成交
	WTT_CombinationDerived	= '4'	//组合衍生成交
} WTSTradeType;


/*
 *	错误代码
 */
typedef enum tagErrorCode
{
	WEC_NONE			=	0,		//没有错误
	WEC_ORDERINSERT,				//下单错误
	WEC_ORDERCANCEL,				//撤单错误
	WEC_EXECINSERT,					//行权指令错误
	WEC_EXECCANCEL,					//行权撤销错误
	WEC_UNKNOWN			=	9999	//未知错误
} WTSErroCode;

/*
 *	比较字段
 */
typedef enum tagCompareField
{
	WCF_NEWPRICE			=	0,	//最新价
	WCF_BIDPRICE,					//买一价
	WCF_ASKPRICE,					//卖一价
	WCF_PRICEDIFF,					//价差,止盈止损专用
	WCF_NONE				=	9	//不比较
} WTSCompareField;

/*
 *	比较类型
 */
typedef enum tagCompareType
{
	WCT_Equal			= 0,		//等于
	WCT_Larger,						//大于
	WCT_Smaller,					//小于
	WCT_LargerOrEqual,				//大于等于
	WCT_SmallerOrEqual				//小于等于
}WTSCompareType;

/*
 *	行情解析器事件
 */
typedef enum tagParserEvent
{
	WPE_Connect			= 0,		//连接事件
	WPE_Close,						//关闭事件
	WPE_Login,						//登录
	WPE_Logout						//注销
}WTSParserEvent;

/*
 *	交易模块事件
 */
typedef enum tagTraderEvent
{
	WTE_Connect			= 0,		//连接事件
	WTE_Close,						//关闭事件
	WTE_Login,						//登录
	WTE_Logout						//注销
}WTSTraderEvent;

/*
 *	买卖方向类型
 */
typedef uint32_t WTSBSDirectType;
#define BDT_Buy		'B'	//买入	
#define BDT_Sell	'S'	//卖出
#define BDT_Unknown ' '	//未知
#define BDT_Borrow	'G'	//借入
#define BDT_Lend	'F'	//借出

/*
 *	成交类型
 */
typedef uint32_t WTSTransType;
#define TT_Unknown	'U'	//未知类型
#define TT_Match	'M'	//撮合成交
#define TT_Cancel	'C'	//撤单

/*
 *	委托明细类型
 */
typedef uint32_t WTSOrdDetailType;
#define ODT_Unknown		0	//未知类型
#define ODT_BestPrice	'U'	//本方最优
#define ODT_AnyPrice	'1'	//市价
#define ODT_LimitPrice	'2'	//限价

NS_WTP_END