Hikyuu
Indicator.h
浏览该文件的文档.
1 /*
2  * Indicator.h
3  *
4  * Created on: 2012-10-15
5  * Author: fasiondog
6  */
7 
8 #ifndef INDICATOR_H_
9 #define INDICATOR_H_
10 
11 #include "IndicatorImp.h"
12 
13 namespace hku {
14 
15 #define IND_EQ_THRESHOLD 0.000001
16 
17 
39  HKU_API friend std::ostream & operator<<(std::ostream &, const Indicator&);
40 
41 public:
42  Indicator() {}
43  Indicator(const IndicatorImpPtr& imp);
44  Indicator(const Indicator&);
45  virtual ~Indicator();
46 
47  Indicator& operator=(const Indicator&);
48 
50  Indicator operator()(const Indicator& ind);
51 
53  string name() const;
54  void name(const string& name);
55 
57  string long_name() const;
58 
60  size_t discard() const;
61 
63  void setDiscard(size_t discard);
64 
66  size_t getResultNumber() const;
67 
69  bool empty() const;
70 
72  size_t size() const;
73 
78  price_t operator[](size_t pos) const {
79  return m_imp->get(pos, 0);
80  }
81 
88  price_t get(size_t pos, size_t num = 0) const {
89  return m_imp->get(pos, num);
90  }
91 
92  Indicator getResult(size_t num) const {
93  return m_imp->getResult(num);
94  }
95 
96  PriceList getResultAsPriceList(size_t num) const {
97  return m_imp->getResultAsPriceList(num);
98  }
99 
100  template <typename ValueType>
101  void setParam(const string& name, const ValueType& value) {
102  if (m_imp) {
103  m_imp->setParam<ValueType>(name, value);
104  }
105  }
106 
107  template <typename ValueType>
108  ValueType getParam(const string& name) const {
109  if (!m_imp) {
110  throw std::out_of_range("out_of_range in Parameter::get : " + name);
111  }
112  return m_imp->getParam<ValueType>(name);
113  }
114 
115  IndicatorImpPtr getImp() const { return m_imp; }
116 
117 protected:
119 
120 #if HKU_SUPPORT_SERIALIZATION
121 private:
122  friend class boost::serialization::access;
123  template<class Archive>
124  void serialize(Archive & ar, const unsigned int version) {
125  ar & BOOST_SERIALIZATION_NVP(m_imp);
126  }
127 #endif /* HKU_SUPPORT_SERIALIZATION */
128 };
129 
130 
140 
150 
160 
171 
182 
193 
204 
215 
226 
237 
238 } /* namespace hku */
239 #endif /* INDICATOR_H_ */
void setParam(const string &name, const ValueType &value)
Definition: Indicator.h:101
shared_ptr< IndicatorImp > IndicatorImpPtr
Definition: IndicatorImp.h:189
vector< price_t > PriceList
Definition: DataType.h:66
指标类,具体由IndicatorImp实现,实现新指标时应继承IndicatorImp
Definition: Indicator.h:38
Indicator()
Definition: Indicator.h:42
HKU_API Indicator operator/(const Indicator &ind1, const Indicator &ind2)
Indicator实例相除,两者的size必须相等,否在返回空
Definition: Indicator.cpp:266
HKU_API Indicator operator-(const Indicator &ind1, const Indicator &ind2)
Indicator实例相减,两者的size必须相等,否在返回空
Definition: Indicator.cpp:144
bool operator!=(const Datetime &, const Datetime &)
Definition: Datetime.h:205
#define HKU_API
Definition: DataType.h:12
ValueType getParam(const string &name) const
Definition: Indicator.h:108
bool operator>(const Datetime &, const Datetime &)
Definition: Datetime.h:209
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
class HKU_API Indicator
Definition: IndicatorImp.h:27
double price_t
Definition: DataType.h:53
bool operator==(const Datetime &, const Datetime &)
Definition: Datetime.h:201
Indicator getResult(size_t num) const
Definition: Indicator.h:92
IndicatorImpPtr getImp() const
Definition: Indicator.h:115
bool operator<(const Datetime &, const Datetime &)
Definition: Datetime.h:213
IndicatorImpPtr m_imp
Definition: Indicator.h:118
HKU_API Indicator operator*(const Indicator &ind1, const Indicator &ind2)
Indicator实例相乘,两者的size必须相等,否在返回空
Definition: Indicator.cpp:205
bool operator<=(const Datetime &, const Datetime &)
Definition: Datetime.h:221
HKU_API Indicator operator+(const Indicator &ind1, const Indicator &ind2)
Indicator实例相加,两者的size必须相等,否在返回空
Definition: Indicator.cpp:82
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
PriceList getResultAsPriceList(size_t num) const
Definition: Indicator.h:96
bool operator>=(const Datetime &, const Datetime &)
Definition: Datetime.h:217
price_t operator[](size_t pos) const
只获取第一个结果集中相应位置输出,等同于get(pos, 0)
Definition: Indicator.h:78