WTSTradeDef.hpp

source: wtcpp/folder98/folder01/folder2/file06.md

/*!
 * \file WTSTradeDef.hpp
 * \project	WonderTrader
 *
 * \author Wesley
 * \date 2020/03/30
 * 
 * \brief Wt交易数据对象定义,包括委托、订单、成交、持仓、资金、持仓明细等数据
 */
#pragma once
#include "WTSObject.hpp"
#include "WTSTypes.h"
#include "WTSMarcos.h"

#include <time.h>
#include <string>
#include <map>
#include<chrono>

NS_WTP_BEGIN
//////////////////////////////////////////////////////////////////////////
//委托数据结构,用户客户端向服务端发起
class WTSEntrust : public WTSObject
{
protected:
	WTSEntrust()
		: m_iPrice(0)
		, m_strCode("")
		, m_dVolume(0)
		, m_strExchg("")
		, m_uSndTm(0)
		, m_businessType(BT_CASH)
		, m_direction(WDT_LONG)
		, m_priceType(WPT_ANYPRICE)
		, m_timeCond(WTC_GFD)
		, m_offsetType(WOT_OPEN)
		, m_bIsNet(false)
		, m_bIsBuy(true)
	{
	}

	virtual ~WTSEntrust(){}

public:
	static inline WTSEntrust* create(const char* code, double vol, double price, const char* exchg = "", WTSBusinessType bType = BT_CASH)
	{
		WTSEntrust* pRet = new WTSEntrust;
		if(pRet)
		{
			pRet->m_strExchg = exchg;
			pRet->m_strCode = code;
			pRet->m_dVolume = vol;
			pRet->m_iPrice = price;
			pRet->m_businessType = bType;
			return pRet;
		}

		return NULL;
	}

public:
	// 设置属性
	inline void setExchange(const char* exchg){ m_strExchg = exchg; }
	inline void setCode(const char* code){m_strCode = code;}

	inline void setDirection(WTSDirectionType dType){m_direction = dType;}
	inline void setPriceType(WTSPriceType pType){m_priceType = pType;}
	inline void setTimeCondition(WTSTimeCondition tCond){m_timeCond = tCond;}
	inline void setOffsetType(WTSOffsetType oType){m_offsetType = oType;}

	inline WTSDirectionType	getDirection() const{return m_direction;}
	inline WTSPriceType		getPriceType() const{return m_priceType;}
	inline WTSTimeCondition	getTimeCondition() const{return m_timeCond;}
	inline WTSOffsetType	getOffsetType() const{return m_offsetType;}

	inline void setBusinessType(WTSBusinessType bType) { m_businessType = bType; }
	inline WTSBusinessType	getBusinessType() const { return m_businessType; }

	inline void setVolume(double volume){ m_dVolume = volume; }
	inline void setPrice(double price){ m_iPrice = price; }
	// 获取属性
	inline double getVolume() const{ return m_dVolume; }
	inline double getPrice() const{ return m_iPrice; }

	inline const char* getCode() const{return m_strCode.c_str();}
	inline const char* getExchg() const{return m_strExchg.c_str();}

	inline void setEntrustID(const char* eid){m_strEntrustID = eid;}
	inline const char* getEntrustID() const{return m_strEntrustID.c_str();}

	inline void setUserTag(const char* tag){m_strUserTag = tag;}
	inline const char* getUserTag() const{return m_strUserTag.c_str();}

	inline void setSent() { m_uSndTm = std::chrono::duration_cast<std::chrono::nanoseconds>(std::chrono::system_clock::now().time_since_epoch()).count(); }
	inline uint64_t getSendTime() const { return m_uSndTm; }

	inline void setNetDirection(bool isBuy) { m_bIsNet = true; m_bIsBuy = isBuy; }
	inline bool isNet() const { return m_bIsNet; }
	inline bool isBuy() const { return m_bIsBuy; }

protected:
	std::string		m_strExchg;					// 交易所
	std::string		m_strCode;					// 合约代码
	double			m_dVolume;					// 交易量
	double			m_iPrice;					// 委托价

	bool			m_bIsNet;
	bool			m_bIsBuy;

	uint64_t		m_uSndTm;					// 当前时间(纳秒)

	WTSDirectionType	m_direction;			// 交易方向
	WTSPriceType		m_priceType;			// 价格类型
	WTSTimeCondition	m_timeCond;				// 时间条件
	WTSOffsetType		m_offsetType;			// 开平方向
	std::string			m_strEntrustID;

	std::string			m_strUserTag;			// 用户标签

	WTSBusinessType		m_businessType;			// 业务类型
};


//////////////////////////////////////////////////////////////////////////
//委托操作: 撤单、改单
class WTSEntrustAction : public WTSObject
{
protected:
	WTSEntrustAction()
		: m_iPrice(0)
		, m_strCode("")
		, m_dVolume(0)
		, m_actionFlag(WAF_CANCEL)
		, m_businessType(BT_CASH)
	{

	}

	virtual ~WTSEntrustAction(){}

public:
	static inline WTSEntrustAction* create(const char* code, const char* exchg = "", double vol = 0, double price = 0, WTSBusinessType bType = BT_CASH)
	{
		WTSEntrustAction* pRet = new WTSEntrustAction;
		if(pRet)
		{
			pRet->m_strExchg = exchg;
			pRet->m_strCode = code;
			pRet->m_dVolume = vol;
			pRet->m_iPrice = price;
			pRet->m_businessType = bType;
			return pRet;
		}

		return NULL;
	}

	static inline WTSEntrustAction* createCancelAction(const char* eid, const char* oid)
	{
		WTSEntrustAction* pRet = new WTSEntrustAction;
		if(pRet)
		{
			pRet->m_strEnturstID = eid;
			pRet->m_strOrderID = oid;
			return pRet;
		}

		return NULL;
	}

public:
	// 设置/获取属性
	inline void setVolume(double volume){ m_dVolume = volume; }
	inline void setPrice(double price){ m_iPrice = price; }

	inline double getVolume() const{ return m_dVolume; }
	inline double getPrice() const{ return m_iPrice; }

	inline const char* getCode() const{return m_strCode.c_str();}

	inline void setExchg(const char* exchg){ m_strExchg = exchg; }
	inline const char* getExchg() const{ return m_strExchg.c_str(); }

	inline void setActionFlag(WTSActionFlag af){m_actionFlag = af;}
	inline WTSActionFlag getActionFlag() const{return m_actionFlag;}

	inline void setEntrustID(const char* eid){m_strEnturstID = eid;}
	inline const char* getEntrustID() const{return m_strEnturstID.c_str();}

	inline void setOrderID(const char* oid){m_strOrderID = oid;}
	inline const char* getOrderID() const{return m_strOrderID.c_str();}

	inline void setBusinessType(WTSBusinessType bType) { m_businessType = bType; }
	inline WTSBusinessType	getBusinessType() const { return m_businessType; }

protected:
	std::string		m_strExchg;			// 交易所
	std::string		m_strCode;			// 合约
	double			m_dVolume;			// 交易量
	double			m_iPrice;			// 价格

	std::string		m_strEnturstID;
	WTSActionFlag	m_actionFlag;		// 订单操作类型

	std::string		m_strOrderID;		// 订单ID

	WTSBusinessType	m_businessType;		// 业务类型
};

//////////////////////////////////////////////////////////////////////////
//订单信息,查看订单状态变化等
class WTSOrderInfo : public WTSEntrust
{
protected:
	WTSOrderInfo()
		:m_orderState(WOS_Submitting)
		,m_orderType(WORT_Normal)
		,m_uInsertDate(0)
		,m_uInsertTime(0)
		,m_dVolTraded(0)
		,m_dVolLeft(0)
		,m_bIsError(false)
	{

	}

	virtual ~WTSOrderInfo(){}

public:
	static inline WTSOrderInfo* create(WTSEntrust* entrust = NULL)
	{
		WTSOrderInfo *pRet = new WTSOrderInfo;

		if(entrust != NULL)
		{
			pRet->m_strExchg = entrust->getExchg();
			pRet->m_iPrice = entrust->getPrice();
			pRet->m_strCode = entrust->getCode();
			pRet->m_dVolume = entrust->getVolume();

			pRet->m_direction = entrust->getDirection();
			pRet->m_offsetType = entrust->getOffsetType();
			pRet->m_timeCond = entrust->getTimeCondition();
			pRet->m_priceType = entrust->getPriceType();
			pRet->m_strEntrustID = entrust->getEntrustID();
			pRet->m_strUserTag = entrust->getUserTag();

			pRet->m_dVolLeft = entrust->getVolume();
			pRet->m_businessType = entrust->getBusinessType();
		}

		return pRet;
	}

	inline void	setOrderDate(uint32_t uDate){m_uInsertDate = uDate;}
	inline void	setOrderTime(uint64_t uTime){m_uInsertTime = uTime;}
	inline void	setVolTraded(double vol){ m_dVolTraded = vol; }
	inline void	setVolLeft(double vol){ m_dVolLeft = vol; }
	
	inline void	setOrderID(const char* oid){m_strOrderID = oid;/*StrUtil::trim(m_strOrderID);*/}
	inline void	setOrderState(WTSOrderState os){m_orderState = os;}
	inline void	setOrderType(WTSOrderType ot){m_orderType = ot;}

	inline uint32_t getOrderDate() const{return m_uInsertDate;}
	inline uint64_t getOrderTime() const{return m_uInsertTime;}
	inline double getVolTraded() const{ return m_dVolTraded; }
	inline double getVolLeft() const{ return m_dVolLeft; }
    
	inline WTSOrderState		getOrderState() const{return m_orderState;}
	inline WTSOrderType			getOrderType() const{return m_orderType;}
	inline const char*			getOrderID() const{return m_strOrderID.c_str();}

	inline void	setCode(const char* code){m_strCode = code;}
	inline void	setExchg(const char* exchg){ m_strExchg = exchg; }

	inline void	setStateMsg(const char* msg){m_strStateMsg = msg;}
	inline const char* getStateMsg() const{return m_strStateMsg.c_str();}

	inline bool	isAlive() const
	{
		switch(m_orderState)
		{
		case WOS_AllTraded:
		case WOS_Canceled:
			return false;
		default:
			return true;
		}
	}

	inline void	setError(bool bError = true){ m_bIsError = bError; }
	inline bool	isError() const{ return m_bIsError; }

private:
	uint32_t	m_uInsertDate;			// 订单日期
	uint64_t	m_uInsertTime;			// 订单时间
	double		m_dVolTraded;
	double		m_dVolLeft;
	bool		m_bIsError;

	WTSOrderState	m_orderState;		// 订单状态
	WTSOrderType	m_orderType;		// 订单类型
	std::string		m_strOrderID;		// 订单ID
	std::string		m_strStateMsg;		// 状态信息
};

//////////////////////////////////////////////////////////////////////////
class WTSTradeInfo : public WTSObject
{
protected:
	WTSTradeInfo()
		: m_orderType(WORT_Normal)
		, m_tradeType(WTT_Common)
		, m_strExchg("")
		, m_uAmount(0)
		, m_dPrice(0)
		, m_businessType(BT_CASH)
	{}
	virtual ~WTSTradeInfo(){}

public:
	static inline WTSTradeInfo* create(const char* code, const char* exchg = "", WTSBusinessType bType = BT_CASH)
	{
		WTSTradeInfo *pRet = new WTSTradeInfo;
		pRet->m_strExchg = exchg;
		pRet->m_strCode = code;
		pRet->m_businessType = bType;

		return pRet;
	}
	// 设置/获取属性
	inline void setTradeID(const char* tradeid){m_strTradeID = tradeid;/*StrUtil::trim(m_strTradeID);*/}
	inline void setRefOrder(const char* oid){m_strRefOrder = oid;/*StrUtil::trim(m_strRefOrder);*/}
	
	inline void setDirection(WTSDirectionType dType){m_direction = dType;}
	inline void setOffsetType(WTSOffsetType oType){m_offsetType = oType;}
	inline void setOrderType(WTSOrderType ot){m_orderType = ot;}
	inline void setTradeType(WTSTradeType tt){m_tradeType = tt;}

	inline void setVolume(double volume){m_dVolume = volume;}
	inline void setPrice(double price){ m_dPrice = price; }

	inline void setTradeDate(uint32_t uDate){m_uTradeDate = uDate;}
	inline void setTradeTime(uint64_t uTime){m_uTradeTime = uTime;}

	inline void setAmount(double amount){ m_uAmount = amount; }

	inline WTSDirectionType	getDirection() const{return m_direction;}
	inline WTSOffsetType		getOffsetType() const{return m_offsetType;}
	inline WTSOrderType		getOrderType() const{return m_orderType;}
	inline WTSTradeType		getTradeType() const{return m_tradeType;}

	inline double getVolume() const{ return m_dVolume; }
	inline double getPrice() const{ return m_dPrice; }

	inline const char*	getCode() const{return m_strCode.c_str();}
	inline const char*	getExchg() const{ return m_strExchg.c_str(); }
	inline const char*	getTradeID() const{return m_strTradeID.c_str();}
	inline const char*	getRefOrder() const{return m_strRefOrder.c_str();}

	inline uint32_t getTradeDate() const{return m_uTradeDate;}
	inline uint64_t getTradeTime() const{return m_uTradeTime;}

	inline double getAmount() const{ return m_uAmount; }

	inline void setUserTag(const char* tag){m_strUserTag = tag;}
	inline const char* getUserTag() const{return m_strUserTag.c_str();}

	inline void setBusinessType(WTSBusinessType bType) { m_businessType = bType; }
	inline WTSBusinessType	getBusinessType() const { return m_businessType; }

	inline void setNetDirection(bool isBuy) { m_bIsNet = true; m_bIsBuy = isBuy; }
	inline bool isNet() const { return m_bIsNet; }
	inline bool isBuy() const { return m_bIsBuy; }

protected:
	std::string	m_strExchg;				//市场
	std::string m_strCode;				//代码
	std::string m_strTradeID;			//成交单号
	std::string	m_strRefOrder;			//本地委托序列号
	std::string	m_strUserTag;			//用户标签

	uint32_t	m_uTradeDate;			// 成交日期
	uint64_t	m_uTradeTime;			// 成交时间
	double		m_dVolume;				// 成交量
	double		m_dPrice;				// 成交价

	bool		m_bIsNet;
	bool		m_bIsBuy;

	WTSDirectionType	m_direction;	// 多空方向
	WTSOffsetType		m_offsetType;	// 开平方向
	WTSOrderType		m_orderType;	// 订单类型
	WTSTradeType		m_tradeType;	// 交易类型

	double	m_uAmount;

	WTSBusinessType	m_businessType;
};

//////////////////////////////////////////////////////////////////////////
//持仓信息
class WTSPositionItem : public WTSObject
{
public:
	static inline WTSPositionItem* create(const char* code, const char* currency, const char* exchg = "", WTSBusinessType bType = BT_CASH)
	{
		WTSPositionItem *pRet = new WTSPositionItem;
		pRet->m_strExchg = exchg;
		pRet->m_strCode = code;
		pRet->m_strCurrency = currency;
		pRet->m_businessType = bType;

		return pRet;
	}

	inline void setDirection(WTSDirectionType dType){m_direction = dType;}
	inline void setPrePosition(double prePos){ m_dPrePosition = prePos; }
	inline void setNewPosition(double newPos){ m_dNewPosition = newPos; }
	inline void setAvailPrePos(double availPos){ m_dAvailPrePos = availPos; }
	inline void setAvailNewPos(double availPos){ m_dAvailNewPos = availPos; }
	inline void setPositionCost(double cost){m_dTotalPosCost = cost;}
	inline void setMargin(double margin){ m_dMargin = margin; }
	inline void setAvgPrice(double avgPrice){ m_dAvgPrice = avgPrice; }
	inline void setDynProfit(double profit){ m_dDynProfit = profit; }

	inline WTSDirectionType getDirection() const{return m_direction;}
	inline double	getPrePosition() const{ return m_dPrePosition; }
	inline double	getNewPosition() const{ return m_dNewPosition; }
	inline double	getAvailPrePos() const{ return m_dAvailPrePos; }
	inline double	getAvailNewPos() const{ return m_dAvailNewPos; }

	inline double	getTotalPosition() const{ return m_dPrePosition + m_dNewPosition; }
	inline double	getAvailPosition() const{ return m_dAvailPrePos + m_dAvailNewPos; }

	inline double	getFrozenPosition() const{ return getTotalPosition() - getAvailPosition(); }
	inline double	getFrozenNewPos() const{ return m_dNewPosition - m_dAvailNewPos; }
	inline double	getFrozenPrePos() const{ return m_dPrePosition - m_dAvailPrePos; }

	inline double		getPositionCost() const{ return m_dTotalPosCost; }
	inline double		getMargin() const{ return m_dMargin; }
	inline double		getAvgPrice() const{ return m_dAvgPrice; }
	inline double		getDynProfit() const{ return m_dDynProfit; }

	inline const char* getCode() const{ return m_strCode.c_str(); }
	inline const char* getCurrency() const{ return m_strCurrency.c_str(); }
	inline const char* getExchg() const{ return m_strExchg.c_str(); }

	inline void setBusinessType(WTSBusinessType bType) { m_businessType = bType; }
	inline WTSBusinessType	getBusinessType() const { return m_businessType; }

protected:
	WTSPositionItem()
		: m_direction(WDT_LONG)
		, m_dPrePosition(0)
		, m_dNewPosition(0)
		, m_dAvailPrePos(0)
		, m_dAvailNewPos(0)
		, m_dMargin(0)
		, m_dAvgPrice(0)
		, m_dDynProfit(0)
		, m_dTotalPosCost(0)
		, m_strCurrency("CNY")
		, m_businessType(BT_CASH)
	{}
	virtual ~WTSPositionItem(){}

	std::string		m_strExchg;			// 交易所
	std::string		m_strCode;			// 合约代码
	std::string		m_strCurrency;		// 货币

	WTSDirectionType	m_direction;	//多空方向
	double		m_dPrePosition;			//昨仓
	double		m_dNewPosition;			//今仓
	double		m_dAvailPrePos;			//可平昨仓
	double		m_dAvailNewPos;			//可平今仓
	double		m_dTotalPosCost;		//持仓总成本
	double		m_dMargin;				//占用保证金
	double		m_dAvgPrice;			//持仓均价
	double		m_dDynProfit;			//浮动盈亏

	WTSBusinessType	m_businessType;
};


//////////////////////////////////////////////////////////////////////////
//持仓明细
class WTSPositionDetail : public WTSObject
{
public:
	static inline WTSPositionDetail* create(const char* code = "", const char* exchg = "", WTSBusinessType bType = BT_CASH)
	{
		WTSPositionDetail* pRet = new WTSPositionDetail();
		pRet->m_strCode = code;
		pRet->m_strExchg = exchg;

		return pRet;
	}

	inline void setCode(const char* code){m_strCode = code;}
	inline void setTradeID(const char* tid){m_strTradeID = tid;}
	inline void setUserTag(const char* tag){m_strUserTag = tag;}

	inline void setDirection(WTSDirectionType dType){m_direction = dType;}

	inline void setOpenDate(uint32_t uDate){m_uOpenDate = uDate;}
	inline void setOpenTime(uint64_t uTime){m_uOpenTime = uTime;}

	inline void setVolume(double vol){ m_dVolume = vol; }
	inline void setOpenPrice(double openpx){ m_dOpenPrice = openpx; }
	inline void setMargin(double margin){ m_dMargin = margin; }
	inline void setCloseVol(double closevol){ m_dCloseVol = closevol; }
	inline void setCloseAmount(double closeamount){ m_dCloseAmount = closeamount; }
	inline void setCloseProfitByDate(double profitbydate){ m_dCloseProfitByDate = profitbydate; }
	inline void setCloseProfitByTrade(double profitbytrade){ m_dCloseProfitByTrade = profitbytrade; }
	inline void setPreSettlePx(double preSettlePx){ m_dPreSettlePx = preSettlePx; }

	inline const char* getCode() const{return m_strCode.c_str();}
	inline const char* getTradeID() const{return m_strTradeID.c_str();}
	inline const char* getUserTag() const{return m_strUserTag.c_str();}

	inline const char* getExchg() const{return m_strExchg.c_str();}

	inline WTSDirectionType getDirection() const{return m_direction;}

	inline uint32_t getOpenDate() const{return m_uOpenDate;}
	inline uint64_t getOpenTime() const{return m_uOpenTime;}

	inline double		getOpenPrice() const{ return m_dOpenPrice; }
	inline double		getVolume() const{ return m_dVolume; }
	inline double		getMargin() const{ return m_dMargin; }
	inline double		getCloseVol() const{ return m_dCloseVol; }
	inline double		getCloseAmount() const{ return m_dCloseAmount; }
	inline double		getCloseProfitByDate() const{ return m_dCloseProfitByDate; }
	inline double		getCloseProfitByTrade() const{ return m_dCloseProfitByTrade; }

	inline void setBusinessType(WTSBusinessType bType) { m_businessType = bType; }
	inline WTSBusinessType	getBusinessType() const { return m_businessType; }


protected:
	WTSPositionDetail()
		: m_direction(WDT_LONG)
		, m_uOpenDate(0)
		, m_uOpenTime(0)
		, m_dVolume(0)
		, m_dOpenPrice(0)
		, m_dMargin(0)
		, m_dCloseVol(0)
		, m_dCloseAmount(0)
		, m_dCloseProfitByDate(0)
		, m_dCloseProfitByTrade(0)
		, m_dPreSettlePx(0)
		, m_businessType(BT_CASH)
	{}
	virtual ~WTSPositionDetail(){}

	std::string	m_strExchg;					// 交易所
	std::string	m_strCode;					// 合约
	std::string	m_strTradeID;				// 成交单号
	std::string m_strUserTag;				// 用户标签

	WTSDirectionType	m_direction;		//多空方向
	uint32_t	m_uOpenDate;
	uint64_t	m_uOpenTime;
	double		m_dVolume;
	double		m_dOpenPrice;
	double		m_dMargin;
	double		m_dCloseVol;
	double		m_dCloseAmount;
	double		m_dCloseProfitByDate;
	double		m_dCloseProfitByTrade;
	double		m_dPreSettlePx;

	WTSBusinessType	m_businessType;			// 业务类型
};


//////////////////////////////////////////////////////////////////////////
//投资者信息
class WTSInvestorInfo : public WTSObject
{
protected:
	WTSInvestorInfo():m_uState(0){}
	~WTSInvestorInfo(){}

public:
	static inline WTSInvestorInfo* create(){return new WTSInvestorInfo;}

	inline void	setDescription(const char* desc){m_strDescription = desc;}
	inline void	setUsername(const char* username){m_strUserName = username;}
	inline void	setState(uint32_t uState){m_uState = uState;}
	inline void	setExtInfo(const char* key, const char* val){ m_mapExts[key] = val; }

	inline const char* getUsername() const{return m_strUserName.c_str();}
	inline const char* getDescription() const{return m_strDescription.c_str();}
	inline uint32_t	getState() const{return m_uState;}

	inline const char* getExtInfo(const char* key)
	{
		auto it = m_mapExts.find(key);
		if (it == m_mapExts.end())
			return "";

		return it->second.c_str();
	}

private:
	std::string	m_strDescription;		// 描述
	std::string	m_strUserName;			// 用户名称
	uint32_t	m_uState;
	std::map<std::string, std::string>	m_mapExts;
};

//////////////////////////////////////////////////////////////////////////
//账户信息
class WTSAccountInfo : public WTSObject
{
protected:
	WTSAccountInfo():m_strCurrency("CNY"){}
	virtual ~WTSAccountInfo(){}

public:
	static inline WTSAccountInfo* create(){return new WTSAccountInfo;}

	inline void	setDescription(const char* desc){m_strDescription = desc;}
	inline void	setCurrency(const char* currency){ m_strCurrency = currency; }

	inline void	setBalance(double balance){m_uBalance = balance;}
	inline void	setPreBalance(double prebalance){m_uPreBalance = prebalance;}
	inline void	setMargin(double margin){m_uMargin = margin;}
	inline void	setFrozenMargin(double frozenmargin){m_uFrozenMargin = frozenmargin;}
	inline void	setCloseProfit(double closeprofit){m_iCloseProfit = closeprofit;}
	inline void	setDynProfit(double dynprofit){m_iDynProfit = dynprofit;}
	inline void	setDeposit(double deposit){m_uDeposit = deposit;}
	inline void	setWithdraw(double withdraw){m_uWithdraw = withdraw;}
	inline void	setCommission(double commission){m_uCommission = commission;}
	inline void	setFrozenCommission(double frozencommission){m_uFrozenCommission = frozencommission;}
	inline void	setAvailable(double available){m_uAvailable = available;}

	inline double	getBalance() const{return m_uBalance;}
	inline double	getPreBalance() const{return m_uPreBalance;}
	inline double	getMargin() const{return m_uMargin;}
	inline double	getFrozenMargin() const{return m_uFrozenMargin;}
	inline double	getCloseProfit() const{return m_iCloseProfit;}
	inline double	getDynProfit() const{return m_iDynProfit;}
	inline double	getDeposit() const{return m_uDeposit;}
	inline double	getWithdraw() const{return m_uWithdraw;}
	inline double	getCommission() const{return m_uCommission;}
	inline double	getFrozenCommission() const{return m_uFrozenCommission;}
	inline double	getAvailable() const{return m_uAvailable;}

	inline const char* getDescription() const{return m_strDescription.c_str();}
	inline const char* getCurrency() const{ return m_strCurrency.c_str(); }

protected:
	std::string	m_strDescription;
	std::string m_strCurrency;

	double		m_uBalance;				// 余额
	double		m_uPreBalance;			
	double		m_uMargin;				// 利润
	double		m_uCommission;			// 保证金
	double		m_uFrozenMargin;		// 冻结利润
	double		m_uFrozenCommission;	// 冻结保证金
	double		m_iCloseProfit;
	double		m_iDynProfit;
	double		m_uDeposit;
	double		m_uWithdraw;
	double		m_uAvailable;
};


NS_WTP_END