9 #include <boost/test/unit_test.hpp> 11 #define BOOST_TEST_MODULE test_hikyuu_base 12 #include <boost/test/unit_test.hpp> 15 #include <boost/filesystem.hpp> 16 #include <hikyuu/StockManager.h> 17 #include <hikyuu/utilities/util.h> 18 #include <hikyuu/Log.h> 31 StockManager& sm = StockManager::instance();
33 BOOST_CHECK(sm.size() == 4729);
38 StockManager& sm = StockManager::instance();
40 Stock null_stock = Null<Stock>();
43 BOOST_CHECK(sm.getStock(
"z000001") == null_stock);
46 BOOST_CHECK(sm.getStock(
"sh1000001") == null_stock);
49 stock = sm.getStock(
"sh000001");
50 BOOST_CHECK(stock.market() ==
"SH");
51 BOOST_CHECK(stock.code() ==
"000001");
52 BOOST_CHECK(stock.name() == HKU_STR(
"上证指数"));
53 BOOST_CHECK(stock.type() == 2);
54 BOOST_CHECK(stock.valid() ==
true);
55 BOOST_CHECK(stock.startDatetime() == Datetime(199012190000));
56 BOOST_CHECK(stock.lastDatetime() == Null<Datetime>());
57 BOOST_CHECK(stock.tick() == 0.001);
58 BOOST_CHECK(stock.tickValue() == 0.001);
59 BOOST_CHECK(stock.unit() == 1.0);
60 BOOST_CHECK(stock.precision() == 3);
61 BOOST_CHECK(stock.atom() == 1);
62 BOOST_CHECK(stock.minTradeNumber() == 1);
63 BOOST_CHECK(stock.maxTradeNumber() == 1000000);
68 StockManager& sm = StockManager::instance();
71 BOOST_CHECK(Null<MarketInfo>() == sm.getMarketInfo(
"XXX"));
72 BOOST_CHECK(Null<MarketInfo>() == sm.getMarketInfo(
""));
75 MarketInfo marketInfo = sm.getMarketInfo(
"SH");
76 BOOST_CHECK(marketInfo != Null<MarketInfo>());
77 BOOST_CHECK(marketInfo.market() ==
"SH");
78 BOOST_CHECK(marketInfo.code() ==
"000001");
79 BOOST_CHECK(marketInfo.name() == HKU_STR(
"上海证劵交易所"));
80 BOOST_CHECK(marketInfo.description() == HKU_STR(
"上海市场"));
81 BOOST_CHECK(marketInfo.lastDate() == Datetime(201112060000L));
84 marketInfo = sm.getMarketInfo(
"sh");
85 BOOST_CHECK(marketInfo != Null<MarketInfo>());
86 BOOST_CHECK(marketInfo.market() ==
"SH");
90 marketInfo = sm.getMarketInfo(
"Sh");
91 BOOST_CHECK(marketInfo != Null<MarketInfo>());
92 BOOST_CHECK(marketInfo.market() ==
"SH");
97 StockManager& sm = StockManager::instance();
98 StockTypeInfo stockTypeInfo;
101 BOOST_CHECK(sm.getStockTypeInfo(999) == Null<StockTypeInfo>());
104 stockTypeInfo = sm.getStockTypeInfo(0);
105 BOOST_CHECK(stockTypeInfo != Null<StockTypeInfo>());
106 BOOST_CHECK(stockTypeInfo.type() == 0);
107 BOOST_CHECK(stockTypeInfo.description() == HKU_STR(
"Block"));
108 BOOST_CHECK(stockTypeInfo.tick() == 100);
109 BOOST_CHECK(stockTypeInfo.precision() == 2);
110 BOOST_CHECK(stockTypeInfo.minTradeNumber() == 100);
111 BOOST_CHECK(stockTypeInfo.maxTradeNumber() == 1000000);
114 stockTypeInfo = sm.getStockTypeInfo(8);
115 BOOST_CHECK(stockTypeInfo != Null<StockTypeInfo>());
116 BOOST_CHECK(stockTypeInfo.type() == 8);
117 #if !defined(BOOST_MSVC) 119 BOOST_CHECK(stockTypeInfo.description() == HKU_STR(
"创业板"));
121 BOOST_CHECK(stockTypeInfo.tick() == 0.01);
122 BOOST_CHECK(stockTypeInfo.precision() == 2);
123 BOOST_CHECK(stockTypeInfo.minTradeNumber() == 100);
124 BOOST_CHECK(stockTypeInfo.maxTradeNumber() == 1000000);
127 stockTypeInfo = sm.getStockTypeInfo(2);
128 BOOST_CHECK(stockTypeInfo != Null<StockTypeInfo>());
129 BOOST_CHECK(stockTypeInfo.type() == 2);
130 BOOST_CHECK(stockTypeInfo.description() == HKU_STR(
"指数"));
131 BOOST_CHECK(stockTypeInfo.tick() == 0.001);
132 BOOST_CHECK(stockTypeInfo.precision() == 3);
133 BOOST_CHECK(stockTypeInfo.minTradeNumber() == 1);
134 BOOST_CHECK(stockTypeInfo.maxTradeNumber() == 1000000);
139 StockManager& sm = StockManager::instance();
142 MarketList result(sm.getAllMarket());
143 BOOST_CHECK(result.size() == 3);
144 #if defined(BOOST_WINDOWS) 145 BOOST_CHECK(result[0] ==
"TMP");
146 BOOST_CHECK(result[1] ==
"SH");
147 BOOST_CHECK(result[2] ==
"SZ");
149 BOOST_CHECK(result[0] ==
"TMP");
150 BOOST_CHECK(result[1] ==
"SZ");
151 BOOST_CHECK(result[2] ==
"SH");
157 StockManager& sm = StockManager::instance();
159 Block result = sm.getBlock(
"地域板块",
"陕西");
160 BOOST_CHECK(result.size() != 0);
162 BlockList blk_list = sm.getBlockList(
"地域板块");
163 blk_list = sm.getBlockList();
164 BOOST_CHECK(blk_list.size() != 0);
170 StockManager& sm = StockManager::instance();
172 path tmp_dir(sm.tmpdir());
173 tmp_dir = tmp_dir.parent_path();
175 string day_filename(tmp_dir.string() +
"/test_day_data.csv");
176 string min_filename(tmp_dir.string() +
"/test_min_data.csv");
179 Stock stk = sm.addTempCsvStock(
"test", day_filename, min_filename);
180 BOOST_CHECK(stk.isNull() ==
false);
181 BOOST_CHECK(stk.market() ==
"TMP");
182 BOOST_CHECK(stk.code() ==
"TEST");
183 BOOST_CHECK(stk.market_code() ==
"TMPTEST");
184 BOOST_CHECK(stk.getCount(KQuery::DAY) == 100);
185 BOOST_CHECK(stk.getCount(KQuery::MIN) == 24000);
189 record = stk.getKRecord(0);
190 BOOST_CHECK(record.datetime == Datetime(201703070000));
191 BOOST_CHECK((record.openPrice-3233.09) < 0.00001);
192 BOOST_CHECK((record.highPrice-3242.66) < 0.00001);
193 BOOST_CHECK((record.lowPrice-3226.82) < 0.00001);
194 BOOST_CHECK((record.closePrice-3242.41) < 0.00001);
195 BOOST_CHECK((record.transAmount-20993120.6) < 0.00001);
196 BOOST_CHECK((record.transCount-164064235.0) < 0.00001);
199 record = stk.getKRecord(10);
200 BOOST_CHECK(record.datetime == Datetime(201703210000));
201 BOOST_CHECK((record.openPrice-3250.25) < 0.00001);
202 BOOST_CHECK((record.highPrice-3262.22) < 0.00001);
203 BOOST_CHECK((record.lowPrice-3246.70) < 0.00001);
204 BOOST_CHECK((record.closePrice-3261.61) < 0.00001);
205 BOOST_CHECK((record.transAmount-21912127.0) < 0.00001);
206 BOOST_CHECK((record.transCount-162719306.0) < 0.00001);
209 record = stk.getKRecord(99);
210 BOOST_CHECK(record.datetime == Datetime(201707310000));
211 BOOST_CHECK((record.openPrice-3252.75) < 0.00001);
212 BOOST_CHECK((record.highPrice-3276.95) < 0.00001);
213 BOOST_CHECK((record.lowPrice-3251.19) < 0.00001);
214 BOOST_CHECK((record.closePrice-3273.03) < 0.00001);
215 BOOST_CHECK((record.transAmount-25352591.70) < 0.00001);
216 BOOST_CHECK((record.transCount-246039440.0) < 0.00001);
219 stk = sm.getStock(
"tmptest");
220 BOOST_CHECK(stk.isNull() ==
false);
221 BOOST_CHECK(stk.market() ==
"TMP");
222 BOOST_CHECK(stk.code() ==
"TEST");
223 BOOST_CHECK(stk.market_code() ==
"TMPTEST");
224 BOOST_CHECK(stk.getCount(KQuery::DAY) == 100);
225 BOOST_CHECK(stk.getCount(KQuery::MIN) == 24000);
228 record = stk.getKRecord(10);
229 BOOST_CHECK(record.datetime == Datetime(201703210000));
230 BOOST_CHECK((record.openPrice-3250.25) < 0.00001);
231 BOOST_CHECK((record.highPrice-3262.22) < 0.00001);
232 BOOST_CHECK((record.lowPrice-3246.70) < 0.00001);
233 BOOST_CHECK((record.closePrice-3261.61) < 0.00001);
234 BOOST_CHECK((record.transAmount-21912127.0) < 0.00001);
235 BOOST_CHECK((record.transCount-162719306.0) < 0.00001);
238 sm.removeTempCsvStock(
"test");
239 stk = sm.getStock(
"tmptest");
240 BOOST_CHECK(stk.isNull() ==
true);
BOOST_AUTO_TEST_CASE(test_StockManager_size)