Hikyuu
EnvironmentBase.h
浏览该文件的文档.
1 /*
2  * Environment.h
3  *
4  * Created on: 2013-2-28
5  * Author: fasiondog
6  */
7 
8 #ifndef ENVIRONMENT_H_
9 #define ENVIRONMENT_H_
10 
11 #include <set>
12 #include "../../KQuery.h"
13 #include "../../utilities/Parameter.h"
14 #include "../../utilities/util.h"
15 
16 #if HKU_SUPPORT_SERIALIZATION
17 #include <boost/serialization/shared_ptr.hpp>
18 #include <boost/serialization/assume_abstract.hpp>
19 #include <boost/serialization/base_object.hpp>
20 #include <boost/serialization/set.hpp>
21 #include "../../serialization/Datetime_serialization.h"
22 #include "../../serialization/KQuery_serialization.h"
23 #endif
24 
25 namespace hku {
26 
32 class HKU_API EnvironmentBase: public enable_shared_from_this<EnvironmentBase> {
34 
35 public:
37  EnvironmentBase(const string& name);
38  virtual ~EnvironmentBase();
39 
41  string name() const {
42  return m_name;
43  }
44 
46  void name(const string& name) {
47  m_name = name;
48  }
49 
51  void reset();
52 
54  void setQuery(const KQuery& query);
55 
57  KQuery getQuery() const {
58  return m_query;
59  }
60 
61  typedef shared_ptr<EnvironmentBase> EnvironmentPtr;
69  EnvironmentPtr clone();
70 
75  void _addValid(const Datetime& datetime);
76 
82  bool isValid(const Datetime& datetime);
83 
85  virtual void _calculate() = 0;
86 
88  virtual void _reset() {}
89 
91  virtual EnvironmentPtr _clone() = 0;
92 
93 protected:
94  string m_name;
96  std::set<Datetime> m_valid;
97 
98 //============================================
99 // 序列化支持
100 //============================================
101 #if HKU_SUPPORT_SERIALIZATION
102 private:
103  friend class boost::serialization::access;
104  template<class Archive>
105  void save(Archive & ar, const unsigned int version) const {
106  string name(GBToUTF8(m_name));
107  ar & boost::serialization::make_nvp("m_name", name);
108  ar & BOOST_SERIALIZATION_NVP(m_params);
109  //ev可能多个系统共享,保留m_query可能用于查错
110  ar & BOOST_SERIALIZATION_NVP(m_query);
111  ar & BOOST_SERIALIZATION_NVP(m_valid);
112  }
113 
114  template<class Archive>
115  void load(Archive & ar, const unsigned int version) {
116  string name;
117  ar & boost::serialization::make_nvp("m_name", name);
118  m_name = UTF8ToGB(name);
119  ar & BOOST_SERIALIZATION_NVP(m_query);
120  ar & BOOST_SERIALIZATION_NVP(m_valid);
121  }
122 
123  BOOST_SERIALIZATION_SPLIT_MEMBER()
124 #endif /* HKU_SUPPORT_SERIALIZATION */
125 };
126 
127 #if HKU_SUPPORT_SERIALIZATION
128 BOOST_SERIALIZATION_ASSUME_ABSTRACT(EnvironmentBase)
129 #endif
130 
131 #if HKU_SUPPORT_SERIALIZATION
132 
145 #define ENVIRONMENT_NO_PRIVATE_MEMBER_SERIALIZATION private:\
146  friend class boost::serialization::access; \
147  template<class Archive> \
148  void serialize(Archive & ar, const unsigned int version) { \
149  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(EnvironmentBase); \
150  }
151 #else
152 #define ENVIRONMENT_NO_PRIVATE_MEMBER_SERIALIZATION
153 #endif
154 
155 
160 typedef shared_ptr<EnvironmentBase> EnvironmentPtr;
161 typedef shared_ptr<EnvironmentBase> EVPtr;
162 
163 
164 #define ENVIRONMENT_IMP(classname) public:\
165  virtual EnvironmentPtr _clone() {\
166  return EnvironmentPtr(new classname());\
167  }\
168  virtual void _calculate();
169 
170 
175 HKU_API std::ostream& operator <<(std::ostream &os, const EnvironmentPtr&);
176 HKU_API std::ostream& operator <<(std::ostream &os, const EnvironmentBase&);
177 
178 } /* namespace hku */
179 #endif /* ENVIRONMENT_H_ */
shared_ptr< EnvironmentBase > EVPtr
Definition: EnvironmentBase.h:161
KQuery getQuery() const
获取查询条件
Definition: EnvironmentBase.h:57
按索引方式查询K线数据条件
Definition: KQuery.h:19
virtual void _reset()
子类复位接口
Definition: EnvironmentBase.h:88
shared_ptr< EnvironmentBase > EnvironmentPtr
客户程序都应使用该指针类型
Definition: EnvironmentBase.h:160
日期类型
Definition: Datetime.h:33
#define GBToUTF8(s)
Definition: util.h:55
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
string name() const
获取名称
Definition: EnvironmentBase.h:41
#define HKU_API
Definition: DataType.h:12
环境判定策略基类
Definition: EnvironmentBase.h:32
std::set< Datetime > m_valid
Definition: EnvironmentBase.h:96
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
#define PARAMETER_SUPPORT
Definition: Parameter.h:233
string m_name
Definition: EnvironmentBase.h:94
#define UTF8ToGB(s)
Definition: util.h:56
KQuery m_query
Definition: EnvironmentBase.h:95
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
shared_ptr< EnvironmentBase > EnvironmentPtr
Definition: EnvironmentBase.h:61
void name(const string &name)
设置名称
Definition: EnvironmentBase.h:46