Hikyuu
H5KDataDriver.h
浏览该文件的文档.
1 /*
2  * H5KDataDriver.h
3  *
4  * Created on: 2017年10月11日
5  * Author: fasiondog
6  */
7 
8 #ifndef DATA_DRIVER_KDATA_HDF5_H5KDATADRIVER_H_
9 #define DATA_DRIVER_KDATA_HDF5_H5KDATADRIVER_H_
10 
11 #include "../../KDataDriver.h"
12 #include "H5Record.h"
13 
14 namespace hku {
15 
16 class H5KDataDriver: public KDataDriver {
17 public:
18  H5KDataDriver();
19  virtual ~H5KDataDriver();
20 
21  virtual bool _init();
22  virtual void loadKData(const string& market, const string& code,
23  KQuery::KType kType, size_t start_ix, size_t end_ix,
24  KRecordListPtr out_buffer) ;
25  virtual size_t getCount(const string& market, const string& code,
26  KQuery::KType kType);
27  virtual bool getIndexRangeByDate(const string& market, const string& code,
28  const KQuery& query, size_t& out_start, size_t& out_end);
29  virtual KRecord getKRecord(const string& market, const string& code,
30  size_t pos, KQuery::KType kType);
31  virtual TimeLineList getTimeLineList(const string& market, const string& code,
32  const KQuery& query);
33  virtual TransList getTransList(const string& market, const string& code,
34  const KQuery& query);
35 
36 private:
37  void H5ReadRecords(H5::DataSet&, hsize_t, hsize_t, void *);
38  void H5ReadIndexRecords(H5::DataSet&, hsize_t, hsize_t, void *);
39  void H5ReadTimeLineRecords(H5::DataSet&, hsize_t, hsize_t, void *);
40  void H5ReadTransRecords(H5::DataSet&, hsize_t, hsize_t, void *);
41 
42  bool _getH5FileAndGroup(const string& market,
43  const string& code,
44  KQuery::KType kType,
45  H5FilePtr& out_file,
46  H5::Group& out_group);
47 
48  KRecord _getBaseRecord(const string&, const string&, size_t, KQuery::KType);
49  KRecord _getOtherRecord(const string&, const string&, size_t, KQuery::KType);
50 
51  void _loadBaseData(const string& market, const string& code,
52  KQuery::KType kType, size_t start_ix, size_t end_ix,
53  KRecordListPtr out_buffer);
54  void _loadIndexData(const string& market, const string& code,
55  KQuery::KType kType, size_t start_ix, size_t end_ix,
56  KRecordListPtr out_buffer);
57 
58  bool _getBaseIndexRangeByDate(const string&, const string&, const KQuery&,
59  size_t& out_start, size_t& out_end);
60  bool _getOtherIndexRangeByDate(const string&, const string&, const KQuery&,
61  size_t& out_start, size_t& out_end);
62 
63  TimeLineList _getTimeLine(const string& market, const string& code,
64  hku_int64 start, hku_int64 end);
65  TimeLineList _getTimeLine(const string& market, const string& code,
66  const Datetime& start, const Datetime& end);
67 
68  TransList _getTransList(const string& market, const string& code,
69  hku_int64 start, hku_int64 end);
70  TransList _getTransList(const string& market, const string& code,
71  const Datetime& start, const Datetime& end);
72 
73 
74 private:
75  H5::CompType m_h5DataType;
76  H5::CompType m_h5IndexType;
77  H5::CompType m_h5TimeLineType;
78  H5::CompType m_h5TransType;
79  H5FilePtr m_h5file;
80  map<string, H5FilePtr> m_h5file_map; // key: market+code
81 };
82 
83 } /* namespace hku */
84 
85 #endif /* DATA_DRIVER_KDATA_HDF5_H5KDATADRIVER_H_ */
virtual TransList getTransList(const string &market, const string &code, const KQuery &query)
获取历史分笔数据
Definition: H5KDataDriver.cpp:1041
shared_ptr< H5::H5File > H5FilePtr
Definition: H5Record.h:17
K线数据记录
Definition: KRecord.h:19
virtual KRecord getKRecord(const string &market, const string &code, size_t pos, KQuery::KType kType)
获取指定的K线记录
Definition: H5KDataDriver.cpp:416
按索引方式查询K线数据条件
Definition: KQuery.h:19
virtual bool _init()
子类初始化私有变量接口
Definition: H5KDataDriver.cpp:54
日期类型
Definition: Datetime.h:33
vector< TransRecord > TransList
分时线
Definition: TransRecord.h:44
K线数据驱动基类
Definition: KDataDriver.h:21
vector< TimeLineRecord > TimeLineList
分时线
Definition: TimeLineRecord.h:35
virtual TimeLineList getTimeLineList(const string &market, const string &code, const KQuery &query)
获取分时线
Definition: H5KDataDriver.cpp:815
long long hku_int64
Definition: DataType.h:45
virtual ~H5KDataDriver()
Definition: H5KDataDriver.cpp:50
virtual bool getIndexRangeByDate(const string &market, const string &code, const KQuery &query, size_t &out_start, size_t &out_end)
获取指定日期范围对应的K线记录索引
Definition: H5KDataDriver.cpp:563
virtual void loadKData(const string &market, const string &code, KQuery::KType kType, size_t start_ix, size_t end_ix, KRecordListPtr out_buffer)
将指定类型的K线数据加载至缓存
Definition: H5KDataDriver.cpp:185
string KType
查询K线类型:日线/周线等
Definition: KQuery.h:51
shared_ptr< KRecordList > KRecordListPtr
Definition: KRecord.h:56
H5KDataDriver()
Definition: H5KDataDriver.cpp:24
virtual size_t getCount(const string &market, const string &code, KQuery::KType kType)
获取指定类型的K线数据量
Definition: H5KDataDriver.cpp:390
Definition: H5KDataDriver.h:16
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11