Hikyuu
StockManager.h
浏览该文件的文档.
1 /*
2  * StockManager.h
3  *
4  * Created on: 2011-11-9
5  * Author: fasiondog
6  */
7 
8 #ifndef STOCKMANAGER_H_
9 #define STOCKMANAGER_H_
10 
12 
13 #include "utilities/Parameter.h"
15 #include "Block.h"
16 #include "MarketInfo.h"
17 #include "StockTypeInfo.h"
18 
19 namespace hku {
20 
21 typedef vector<string> MarketList;
22 
25 
31 public:
33  static StockManager& instance();
34  virtual ~StockManager();
35 
44  void init(const Parameter& baseInfoParam,
45  const Parameter& blockParam,
46  const Parameter& kdataParam,
47  const Parameter& preloadParam = default_preload_param(),
48  const Parameter& hikyuuParam = default_other_param());
49 
50  Parameter getBaseInfoDriverParameter() const;
51  Parameter getBlockDriverParameter() const;
52  Parameter getKDataDriverParameter() const;
53  Parameter getPreloadParameter() const;
54  Parameter getHikyuuParameter() const;
55 
56  void setKDataDriver(const KDataDriverPtr&);
57 
62  string tmpdir() const;
63 
65  size_t size() const;
66 
72  Stock getStock(const string&) const;
73 
75  Stock operator[](const string&) const;
76 
82  MarketInfo getMarketInfo(const string& market) const;
83 
89  StockTypeInfo getStockTypeInfo(hku_uint32 type) const;
90 
92  MarketList getAllMarket() const;
93 
100  Block getBlock(const string& category, const string& name);
101 
107  BlockList getBlockList(const string&);
108 
113  BlockList getBlockList();
114 
115  //目前支持"SH"
116  DatetimeList getTradingCalendar(const KQuery& query,
117  const string& market = "SH");
118 
124  bool addStock(const Stock& stock);
125 
131  bool addMarketInfo(const MarketInfo& marketInfo);
132 
138  bool addStockTypeInfo(const StockTypeInfo& stkTypeInfo);
139 
153  Stock addTempCsvStock(const string& code,
154  const string& day_filename,
155  const string& min_filename,
156  price_t tick = 0.01,
157  price_t tickValue = 0.01,
158  int precision = 2,
159  size_t minTradeNumber = 1,
160  size_t maxTradeNumber = 1000000);
161 
166  void removeTempCsvStock(const string& code);
167 
168 public:
170  const_iterator begin() const { return m_stockDict.begin(); }
171  const_iterator end() const { return m_stockDict.end(); }
172 
173 private:
174  StockManager() { }
175 
176 private:
177  static shared_ptr<StockManager> m_sm;
178  string m_tmpdir;
179  BlockInfoDriverPtr m_blockDriver;
180 
181  StockMapIterator::stock_map_t m_stockDict; // SH000001 -> stock
182 
183  typedef unordered_map<string, MarketInfo> MarketInfoMap;
184  MarketInfoMap m_marketInfoDict;
185 
186  typedef unordered_map<hku_uint32, StockTypeInfo> StockTypeInfoMap;
187  StockTypeInfoMap m_stockTypeInfo;
188 
189  Parameter m_baseInfoDriverParam;
190  Parameter m_blockDriverParam;
191  Parameter m_kdataDriverParam;
192  Parameter m_preloadParam;
193  Parameter m_hikyuuParam;
194 };
195 
196 
197 inline size_t StockManager::size() const {
198  return m_stockDict.size();
199 }
200 
201 
202 inline Stock StockManager::operator[](const string& query) const {
203  return getStock(query);
204 }
205 
207  return m_baseInfoDriverParam;
208 }
209 
211  return m_blockDriverParam;
212 }
213 
215  return m_kdataDriverParam;
216 }
217 
219  return m_preloadParam;
220 }
221 
223  return m_hikyuuParam;
224 }
225 
226 } /* namespace */
227 
228 #endif /* STOCKMANAGER_H_ */
Parameter getKDataDriverParameter() const
Definition: StockManager.h:214
unsigned hku_uint32
Definition: DataType.h:48
Parameter getBaseInfoDriverParameter() const
Definition: StockManager.h:206
供需要命名参数设定的类使用
Definition: Parameter.h:101
size_t size() const
获取证券数量
Definition: StockManager.h:197
vector< string > MarketList
Definition: StockManager.h:21
shared_ptr< KDataDriver > KDataDriverPtr
Definition: KDataDriver.h:116
按索引方式查询K线数据条件
Definition: KQuery.h:19
Parameter default_other_param()
Definition: StockManager.cpp:58
证券类型信息
Definition: StockTypeInfo.h:32
vector< Block > BlockList
Definition: Block.h:126
Parameter getPreloadParameter() const
Definition: StockManager.h:218
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
Stock getStock(const string &querystr)
获取Stock,目的是封装StockManager,客户端不直接使用StockManager对象
Definition: hikyuu.cpp:66
市场信息记录
Definition: MarketInfo.h:19
Definition: StockMapIterator.h:16
const_iterator end() const
Definition: StockManager.h:171
#define HKU_API
Definition: DataType.h:12
unordered_map< string, Stock > stock_map_t
Definition: StockMapIterator.h:18
StockMapIterator const_iterator
Definition: StockManager.h:169
double price_t
Definition: DataType.h:53
std::vector< Datetime > DatetimeList
日期列表
Definition: Datetime.h:177
Parameter getBlockDriverParameter() const
Definition: StockManager.h:210
Stock operator[](const string &) const
同 getStock
Definition: StockManager.h:202
shared_ptr< BlockInfoDriver > BlockInfoDriverPtr
Definition: BlockInfoDriver.h:65
const_iterator begin() const
Definition: StockManager.h:170
Parameter default_preload_param()
Definition: StockManager.cpp:42
class HKU_API StockManager
Definition: Stock.h:18
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
板块类,可视为证券的容器
Definition: Block.h:19
证券信息统一管理类
Definition: StockManager.h:30
Parameter getHikyuuParameter() const
Definition: StockManager.h:222