Hikyuu
SelectorBase.h
浏览该文件的文档.
1 /*
2  * SelectorBase.h
3  *
4  * Created on: 2016年2月21日
5  * Author: fasiondog
6  */
7 
8 #ifndef TRADE_SYS_SELECTOR_SELECTORBASE_H_
9 #define TRADE_SYS_SELECTOR_SELECTORBASE_H_
10 
11 #include "../system/System.h"
12 #include "../../KData.h"
13 #include "../../utilities/Parameter.h"
14 
15 #if HKU_SUPPORT_SERIALIZATION
16 #include <boost/serialization/shared_ptr.hpp>
17 #include <boost/serialization/assume_abstract.hpp>
18 #include <boost/serialization/base_object.hpp>
19 #endif
20 
21 namespace hku {
22 
27 class HKU_API SelectorBase: public enable_shared_from_this<SelectorBase> {
29 
30 public:
31  SelectorBase();
32  SelectorBase(const string& name);
33  virtual ~SelectorBase();
34 
35  string name() const;
36  void name(const string& name);
37 
38  void addStock(const Stock& stock, const SystemPtr& protoSys);
39  void addStockList(const StockList& stkList, const SystemPtr& protoSys);
40 
41  SystemList getAllSystemList() const { return m_sys_list; }
42 
43  bool changed(Datetime date);
44 
45  void reset();
46 
47  void clear();
48 
49  typedef shared_ptr<SelectorBase> SelectorPtr;
50  SelectorPtr clone();
51 
52  virtual SystemList getSelectedSystemList(Datetime date) = 0;
53 
55  virtual void _reset() {}
56 
58  virtual SelectorPtr _clone() = 0;
59 
60 protected:
61  string m_name;
62  int m_count;
65 
66 //============================================
67 // 序列化支持
68 //============================================
69 #if HKU_SUPPORT_SERIALIZATION
70 private:
71  friend class boost::serialization::access;
72  template<class Archive>
73  void save(Archive & ar, const unsigned int version) const {
74  string name_str(GBToUTF8(m_name));
75  ar & boost::serialization::make_nvp("name", name_str);
76  ar & BOOST_SERIALIZATION_NVP(m_params);
77  ar & BOOST_SERIALIZATION_NVP(m_count);
78  ar & BOOST_SERIALIZATION_NVP(m_pre_date);
79  ar & BOOST_SERIALIZATION_NVP(m_sys_list);
80  }
81 
82  template<class Archive>
83  void load(Archive & ar, const unsigned int version) {
84  ar & boost::serialization::make_nvp("name", m_name);
85  ar & BOOST_SERIALIZATION_NVP(m_params);
86  ar & BOOST_SERIALIZATION_NVP(m_count);
87  ar & BOOST_SERIALIZATION_NVP(m_pre_date);
88  ar & BOOST_SERIALIZATION_NVP(m_sys_list);
89  }
90 
91  BOOST_SERIALIZATION_SPLIT_MEMBER()
92 #endif /* HKU_SUPPORT_SERIALIZATION */
93 };
94 
95 #if HKU_SUPPORT_SERIALIZATION
96 BOOST_SERIALIZATION_ASSUME_ABSTRACT(SelectorBase)
97 #endif
98 
99 #if HKU_SUPPORT_SERIALIZATION
100 
113 #define SELECTOR_NO_PRIVATE_MEMBER_SERIALIZATION private:\
114  friend class boost::serialization::access; \
115  template<class Archive> \
116  void serialize(Archive & ar, const unsigned int version) { \
117  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(SelectorBase); \
118  }
119 #else
120 #define SELECTOR_NO_PRIVATE_MEMBER_SERIALIZATION
121 #endif
122 
123 
124 #define SELECTOR_IMP(classname) public:\
125  virtual SelectorPtr _clone() {\
126  return SelectorPtr(new classname());\
127  }\
128  virtual SystemList getSelectedSystemList(Datetime date);
129 
130 
135 typedef shared_ptr<SelectorBase> SelectorPtr;
136 typedef shared_ptr<SelectorBase> SEPtr;
137 
138 HKU_API std::ostream & operator<<(std::ostream&, const SelectorBase&);
139 HKU_API std::ostream & operator<<(std::ostream&, const SelectorPtr&);
140 
141 
142 inline string SelectorBase::name() const {
143  return m_name;
144 }
145 
146 inline void SelectorBase::name(const string& name) {
147  m_name = name;
148 }
149 
150 
151 } /* namespace hku */
152 
153 #endif /* TRADE_SYS_SELECTOR_SELECTORBASE_H_ */
Datetime m_pre_date
Definition: SelectorBase.h:63
virtual void _reset()
子类复位接口
Definition: SelectorBase.h:55
shared_ptr< SelectorBase > SelectorPtr
Definition: SelectorBase.h:49
日期类型
Definition: Datetime.h:33
vector< Stock > StockList
Definition: Stock.h:244
#define GBToUTF8(s)
Definition: util.h:55
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
string m_name
Definition: SelectorBase.h:61
#define HKU_API
Definition: DataType.h:12
int m_count
Definition: SelectorBase.h:62
vector< SystemPtr > SystemList
Definition: System.h:306
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
shared_ptr< SelectorBase > SelectorPtr
客户程序都应使用该指针类型
Definition: SelectorBase.h:135
交易对象选择模块
Definition: SelectorBase.h:27
string name() const
Definition: SelectorBase.h:142
shared_ptr< SelectorBase > SEPtr
Definition: SelectorBase.h:136
#define PARAMETER_SUPPORT
Definition: Parameter.h:233
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
shared_ptr< System > SystemPtr
客户程序应使用该指针进行操作
Definition: System.h:304
SystemList getAllSystemList() const
Definition: SelectorBase.h:41
SystemList m_sys_list
Definition: SelectorBase.h:64