Hikyuu
TradeRecord.h
浏览该文件的文档.
1 /*
2  * TradeRecord.h
3  *
4  * Created on: 2013-2-21
5  * Author: fasiondog
6  */
7 
8 #ifndef TRADERECORD_H_
9 #define TRADERECORD_H_
10 
11 #include "../StockManager.h"
12 #include "../trade_sys/system/SystemPart.h"
13 #include "CostRecord.h"
14 
15 #include "../serialization/Datetime_serialization.h"
16 #include "../serialization/Stock_serialization.h"
17 
18 namespace hku {
19 
24 enum BUSINESS {
41 };
42 
43 
49 
53 BUSINESS HKU_API getBusinessEnum(const string&);
54 
55 
61 public:
62  TradeRecord();
63  TradeRecord(const Stock& stock,
64  const Datetime& datetime,
65  BUSINESS business,
66  price_t planPrice,
67  price_t realPrice,
68  price_t goalPrice,
69  size_t number,
70  const CostRecord& cost,
71  price_t stoploss,
72  price_t cash,
73  SystemPart from);
74 
76  string toString() const;
77 
84  size_t number;
89 
90 #if HKU_SUPPORT_SERIALIZATION
91 private:
92  friend class boost::serialization::access;
93  template<class Archive>
94  void save(Archive & ar, const unsigned int version) const {
95  namespace bs = boost::serialization;
96  ar & BOOST_SERIALIZATION_NVP(stock);
97  hku::hku_uint64 date_number = datetime.number();
98  ar & bs::make_nvp("datetime", date_number);
99  string business_name = getBusinessName(business);
100  ar & bs::make_nvp<string>("business", business_name);
101  ar & BOOST_SERIALIZATION_NVP(planPrice);
102  ar & BOOST_SERIALIZATION_NVP(realPrice);
103  ar & BOOST_SERIALIZATION_NVP(goalPrice);
104  ar & BOOST_SERIALIZATION_NVP(number);
105  ar & BOOST_SERIALIZATION_NVP(cost);
106  ar & BOOST_SERIALIZATION_NVP(stoploss);
107  ar & BOOST_SERIALIZATION_NVP(cash);
108  string part_name(getSystemPartName(from));
109  ar & bs::make_nvp<string>("from", part_name);
110  }
111 
112  template<class Archive>
113  void load(Archive & ar, const unsigned int version) {
114  namespace bs = boost::serialization;
115  ar & BOOST_SERIALIZATION_NVP(stock);
116  hku::hku_uint64 date_number;
117  ar & bs::make_nvp("datetime", date_number);
118  datetime = Datetime(date_number);
119  string business_name;
120  ar & bs::make_nvp<string>("business", business_name);
121  business = getBusinessEnum(business_name);
122  ar & BOOST_SERIALIZATION_NVP(planPrice);
123  ar & BOOST_SERIALIZATION_NVP(realPrice);
124  ar & BOOST_SERIALIZATION_NVP(goalPrice);
125  ar & BOOST_SERIALIZATION_NVP(number);
126  ar & BOOST_SERIALIZATION_NVP(cost);
127  ar & BOOST_SERIALIZATION_NVP(stoploss);
128  ar & BOOST_SERIALIZATION_NVP(cash);
129  string part_name;
130  ar & bs::make_nvp<string>("from", part_name);
131  from = getSystemPartEnum(part_name);
132  }
133 
134  BOOST_SERIALIZATION_SPLIT_MEMBER()
135 #endif
136 };
137 
138 
142 typedef vector<TradeRecord> TradeRecordList;
143 
144 
149 HKU_API std::ostream & operator<<(std::ostream &, const TradeRecord&);
150 
151 bool HKU_API operator==(const TradeRecord& d1, const TradeRecord& d2);
152 
153 } /* namespace hku */
154 #endif /* TRADERECORD_H_ */
借入资金
Definition: TradeRecord.h:34
卖空
Definition: TradeRecord.h:38
BUSINESS HKU_API getBusinessEnum(const string &arg)
根据字符串获取相应的BUSINESS枚举值
Definition: TradeRecord.cpp:52
unsigned long long number() const
返回如YYYYMMDDhhmmss格式的数字,方便比较操作, Null<Datetime>()对应的 number 为 Null<unsigned long lo...
Definition: Datetime.cpp:71
CostRecord cost
交易成本
Definition: TradeRecord.h:85
SystemPart from
辅助记录交易系统部件,区别是哪个部件发出的指示,Null<int>()表示无效
Definition: TradeRecord.h:88
分红
Definition: TradeRecord.h:29
vector< TradeRecord > TradeRecordList
Definition: TradeRecord.h:142
卖出
Definition: TradeRecord.h:27
交易记录
Definition: TradeRecord.h:60
借入股票资产
Definition: TradeRecord.h:36
日期类型
Definition: Datetime.h:33
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
归还资金
Definition: TradeRecord.h:35
SystemPart
系统关联部件(各自策略)枚举定义,用于修改相关部件参数
Definition: SystemPart.h:19
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
Definition: Block_serialization.h:18
送股
Definition: TradeRecord.h:28
存入现金
Definition: TradeRecord.h:30
#define HKU_API
Definition: DataType.h:12
price_t goalPrice
目标价位,如果为0表示未限定目标
Definition: TradeRecord.h:83
void save(Archive &ar, const hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:20
取出现金
Definition: TradeRecord.h:31
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
SystemPart HKU_API getSystemPartEnum(const string &arg)
通过字符串名称获取SystemPart枚举值
Definition: SystemPart.cpp:39
price_t planPrice
计划交易价格
Definition: TradeRecord.h:81
double price_t
Definition: DataType.h:53
无效类型
Definition: TradeRecord.h:40
bool operator==(const Datetime &, const Datetime &)
Definition: Datetime.h:201
成本记录
Definition: CostRecord.h:27
price_t realPrice
实际交易价格
Definition: TradeRecord.h:82
建立初始账户
Definition: TradeRecord.h:25
买入
Definition: TradeRecord.h:26
string HKU_API getBusinessName(BUSINESS business)
获取业务名称,用于打印输出
Definition: TradeRecord.cpp:14
存入股票资产
Definition: TradeRecord.h:32
price_t cash
现金余额
Definition: TradeRecord.h:87
卖空后回补
Definition: TradeRecord.h:39
string HKU_API getSystemPartName(int part)
获取SystemPart枚举值的字符串名称
Definition: SystemPart.cpp:13
Datetime datetime
交易日期
Definition: TradeRecord.h:79
Stock stock
交易对象
Definition: TradeRecord.h:78
取出股票资产
Definition: TradeRecord.h:33
unsigned long long hku_uint64
Definition: DataType.h:46
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
归还股票资产
Definition: TradeRecord.h:37
size_t number
成交数量
Definition: TradeRecord.h:84
BUSINESS business
业务类型
Definition: TradeRecord.h:80
price_t stoploss
止损价
Definition: TradeRecord.h:86
BUSINESS
业务类型
Definition: TradeRecord.h:24