Hikyuu
BorrowRecord.h
浏览该文件的文档.
1 /*
2  * BorrowRecord.h
3  *
4  * Created on: 2013-5-2
5  * Author: fasiondog
6  */
7 
8 #ifndef BORROWRECORD_H_
9 #define BORROWRECORD_H_
10 
11 #include "../DataType.h"
12 #include "../serialization/Stock_serialization.h"
13 #include "../serialization/Datetime_serialization.h"
14 
15 #if HKU_SUPPORT_SERIALIZATION
16 #include <boost/serialization/list.hpp>
17 #endif
18 
19 namespace hku {
20 
26 public:
27  BorrowRecord();
28  BorrowRecord(const Stock&, size_t number, price_t value);
29 
31  size_t number; //借入总数量
32  price_t value; //借入总价值
33 
34  struct Data {
35  Data(): datetime(Null<Datetime>()), price(0.0), number(0) {}
36  Data(const Datetime& datetime, price_t price, size_t number)
37  :datetime(datetime), price(price), number(number) {}
38 
39  Datetime datetime; //借入时间
40  price_t price; //借入时的单价
41  size_t number; //借入数量
42 
43  #if HKU_SUPPORT_SERIALIZATION
44  private:
45  friend class boost::serialization::access;
46  template<class Archive>
47  void save(Archive & ar, const unsigned int version) const {
48  hku_uint64 datetime_num = datetime.number();
49  ar & boost::serialization::make_nvp("datetime", datetime_num);
50  ar & BOOST_SERIALIZATION_NVP(number);
51  ar & BOOST_SERIALIZATION_NVP(price);
52  }
53 
54  template<class Archive>
55  void load(Archive & ar, const unsigned int version) {
56  hku_uint64 datetime_num;
57  ar & boost::serialization::make_nvp("datetime", datetime_num);
58  datetime = Datetime(datetime_num);
59  ar & BOOST_SERIALIZATION_NVP(number);
60  ar & BOOST_SERIALIZATION_NVP(price);
61  }
62 
63  BOOST_SERIALIZATION_SPLIT_MEMBER()
64  #endif
65  };
66 
67  list<Data> record_list; //当前的借入记录
68 
69 //序列化支持
70 #if HKU_SUPPORT_SERIALIZATION
71 private:
72  friend class boost::serialization::access;
73  template<class Archive>
74  void serialize(Archive & ar, const unsigned int version) {
75  ar & BOOST_SERIALIZATION_NVP(stock);
76  ar & BOOST_SERIALIZATION_NVP(number);
77  ar & BOOST_SERIALIZATION_NVP(value);
78  ar & BOOST_SERIALIZATION_NVP(record_list);
79  }
80 #endif
81 };
82 
83 typedef vector<BorrowRecord> BorrowRecordList;
84 
85 HKU_API std::ostream & operator<<(std::ostream &, const BorrowRecord&);
86 
87 } /* namespace hku */
88 #endif /* BORROWRECORD_H_ */
Stock stock
Definition: BorrowRecord.h:30
unsigned long long number() const
返回如YYYYMMDDhhmmss格式的数字,方便比较操作, Null<Datetime>()对应的 number 为 Null<unsigned long lo...
Definition: Datetime.cpp:71
Definition: BorrowRecord.h:34
size_t number
Definition: BorrowRecord.h:41
price_t value
Definition: BorrowRecord.h:32
Datetime datetime
Definition: BorrowRecord.h:39
list< Data > record_list
Definition: BorrowRecord.h:67
记录当前借入的股票信息
Definition: BorrowRecord.h:25
size_t number
Definition: BorrowRecord.h:31
提供指定给定类型的Null值
Definition: Null.h:22
日期类型
Definition: Datetime.h:33
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
#define HKU_API
Definition: DataType.h:12
Data(const Datetime &datetime, price_t price, size_t number)
Definition: BorrowRecord.h:36
void save(Archive &ar, const hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:20
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
double price_t
Definition: DataType.h:53
Data()
Definition: BorrowRecord.h:35
price_t price
Definition: BorrowRecord.h:40
unsigned long long hku_uint64
Definition: DataType.h:46
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
vector< BorrowRecord > BorrowRecordList
Definition: BorrowRecord.h:83