Hikyuu
KData.h
浏览该文件的文档.
1 /*
2  * KData.h
3  *
4  * Created on: 2012-9-25
5  * Author: fasiondog
6  */
7 
8 #ifndef KDATA_H_
9 #define KDATA_H_
10 
11 #include "KDataImp.h"
12 
13 namespace hku {
14 
19 class HKU_API KData {
20 public:
21  KData(){}
22  KData(const KData&);
23  KData(const Stock& stock, const KQuery& query);
24  virtual ~KData() { }
25 
26  KData& operator=(const KData&);
27 
28  size_t size() const;
29  bool empty() const;
30 
31  DatetimeList getDatetimeList() const;
32 
34  KRecord getKRecord(size_t pos) const;
35 
37  KRecord getKRecordByDate(const Datetime& datetime) const;
38 
40  KRecord operator[](size_t pos) const { return getKRecord(pos); }
41 
43  KRecord operator[](const Datetime& datetime) const {
44  return getKRecordByDate(datetime);
45  }
46 
48  size_t getPos(const Datetime& datetime) const;
49 
51  KQuery getQuery() const;
52 
54  Stock getStock() const;
55 
57  size_t startPos() const;
58 
60  size_t lastPos() const;
61 
63  size_t endPos() const;
64 
66  void tocsv(const string& filename);
67 
68  string toString() const;
69 
70 private:
71  KDataImpPtr m_imp;
72 };
73 
86 HKU_API std::ostream& operator <<(std::ostream &os, const KData& kdata);
87 
88 
89 inline KData::KData(const KData& x) {
90  m_imp = x.m_imp;
91 }
92 
93 
94 inline KData& KData::operator=(const KData& x) {
95  if(this == &x)
96  return *this;
97 
98  if (m_imp != x.m_imp)
99  m_imp = x.m_imp;
100 
101  return *this;
102 }
103 
104 
106  if (empty()) {
107  return DatetimeList();
108  }
109  return getStock().getDatetimeList(startPos(), lastPos() + 1,
110  getQuery().kType());
111 }
112 
113 
114 inline KRecord KData::getKRecord(size_t pos) const {
115  return m_imp->getKRecord(pos); //如果为空,将抛出异常
116 }
117 
118 
119 inline KRecord KData::getKRecordByDate(const Datetime& datetime) const {
120  size_t pos = getPos(datetime);
121  return pos != Null<size_t>() ? getKRecord(pos) : Null<KRecord>();
122 }
123 
124 
125 inline size_t KData::getPos(const Datetime& datetime) const {
126  return m_imp ? m_imp->getPos(datetime) : Null<size_t>();
127 }
128 
129 inline size_t KData::size() const {
130  return m_imp ? m_imp->size() : 0;
131 }
132 
133 inline bool KData::empty() const {
134  return m_imp ? m_imp->empty() : true;
135 }
136 
137 
138 inline KQuery KData::getQuery() const {
139  return m_imp ? m_imp->getQuery() : Null<KQuery>();
140 }
141 
142 
143 inline Stock KData::getStock() const {
144  return m_imp ? m_imp->getStock() : Null<Stock>();
145 }
146 
147 
148 inline size_t KData::startPos() const {
149  return m_imp ? m_imp->startPos() : 0;
150 }
151 
152 
153 inline size_t KData::endPos() const {
154  return m_imp ? m_imp->endPos() : 0;
155 }
156 
157 
158 inline size_t KData::lastPos() const {
159  return m_imp ? m_imp->lastPos() : 0;
160 }
161 
162 } /* namespace hku */
163 #endif /* KDATA_H_ */
Stock getStock() const
获取关联的Stock,如果没有关联返回Null<Stock>
Definition: KData.h:143
size_t lastPos() const
获取在原始K线记录中对应的最后一条记录的位置,如果为空返回0,其他等于endPos - 1
Definition: KData.h:158
size_t size() const
Definition: KData.h:129
DatetimeList getDatetimeList(size_t start, size_t end, KQuery::KType) const
获取日期列表
Definition: Stock.cpp:621
提供size_t的Null值
Definition: Null.h:88
KRecord getKRecordByDate(const Datetime &datetime) const
按日期查询KRecord
Definition: KData.h:119
K线数据记录
Definition: KRecord.h:19
DatetimeList getDatetimeList() const
Definition: KData.h:105
K线数据
Definition: KData.h:19
按索引方式查询K线数据条件
Definition: KQuery.h:19
shared_ptr< KDataImp > KDataImpPtr
Definition: KDataImp.h:46
KQuery getQuery() const
获取关联的KQuery
Definition: KData.h:138
bool empty() const
Definition: KData.h:133
提供指定给定类型的Null值
Definition: Null.h:22
日期类型
Definition: Datetime.h:33
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
Stock getStock(const string &querystr)
获取Stock,目的是封装StockManager,客户端不直接使用StockManager对象
Definition: hikyuu.cpp:66
#define HKU_API
Definition: DataType.h:12
提供KQuery的Null值
Definition: KQuery.h:239
size_t endPos() const
获取在原始K线记录中对应范围的下一条记录的位置,如果为空返回0,其他等于lastPos + 1
Definition: KData.h:153
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
KData()
Definition: KData.h:21
std::vector< Datetime > DatetimeList
日期列表
Definition: Datetime.h:177
virtual ~KData()
Definition: KData.h:24
KRecord operator[](const Datetime &datetime) const
同getKRecordByDate
Definition: KData.h:43
size_t getPos(const Datetime &datetime) const
按日期查询对应的索引位置
Definition: KData.h:125
KRecord getKRecord(size_t pos) const
获取指定位置的KRecord,未作越界检查
Definition: KData.h:114
size_t startPos() const
获取在原始K线记录中对应的起始位置,如果为空返回0
Definition: KData.h:148
class HKU_API KData
Definition: Stock.h:21
KData & operator=(const KData &)
Definition: KData.h:94
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
KRecord operator[](size_t pos) const
同getKRecord
Definition: KData.h:40