9 #include <boost/test/unit_test.hpp> 11 #define BOOST_TEST_MODULE test_hikyuu_indicator_suite 12 #include <boost/test/unit_test.hpp> 15 #include <hikyuu/StockManager.h> 16 #include <hikyuu/indicator/crt/MA.h> 17 #include <hikyuu/indicator/crt/KDATA.h> 18 #include <hikyuu/indicator/crt/PRICELIST.h> 30 StockManager& sm = StockManager::instance();
31 Stock stock = sm.getStock(
"sh000001");
38 BOOST_CHECK(ma.size() == 0);
39 BOOST_CHECK(ma.empty() ==
true);
42 kdata = stock.getKData(KQuery(-10));
45 BOOST_CHECK(ma.empty() ==
false);
46 BOOST_CHECK(ma.size() == kdata.size());
47 BOOST_CHECK(ma.discard() == 0);
48 for (
size_t i = 0; i < kdata.size(); ++i) {
49 BOOST_CHECK(ma[i] == Null<price_t>());
53 kdata = stock.getKData(KQuery(-10));
56 BOOST_CHECK(ma.empty() ==
false);
57 BOOST_CHECK(ma.size() == kdata.size());
58 BOOST_CHECK(ma.discard() == 0);
59 BOOST_CHECK(std::fabs(ma[0] - 2415.197) < 0.00001);
60 BOOST_CHECK(std::fabs(ma[1] - 2397.1715) < 0.00001);
61 BOOST_CHECK(std::fabs(ma[2] - 2395.890) < 0.00001);
62 BOOST_CHECK(std::fabs(ma[3] - 2392.89075) < 0.00001);
63 BOOST_CHECK(std::fabs(ma[4] - 2394.1114) < 0.00001);
64 BOOST_CHECK(std::fabs(ma[5] - 2396.14767) < 0.00001);
65 BOOST_CHECK(std::fabs(ma[6] - 2395.62443) < 0.00001);
66 BOOST_CHECK(std::fabs(ma[7] - 2393.03375) < 0.00001);
67 BOOST_CHECK(std::fabs(ma[8] - 2389.709) < 0.00001);
68 BOOST_CHECK(std::fabs(ma[9] - 2383.4041) < 0.00001);
71 kdata = stock.getKData(KQuery(-9));
74 BOOST_CHECK(ma.empty() ==
false);
75 BOOST_CHECK(ma.size() == kdata.size());
76 BOOST_CHECK(ma.discard() == 0);
77 BOOST_CHECK(std::fabs(ma[0] - 2379.146) < 0.00001);
78 BOOST_CHECK(std::fabs(ma[1] - 2386.2365) < 0.00001);
79 BOOST_CHECK(std::fabs(ma[2] - 2385.45533) < 0.00001);
80 BOOST_CHECK(std::fabs(ma[3] - 2388.84) < 0.00001);
81 BOOST_CHECK(std::fabs(ma[7] - 2386.523) < 0.00001);
82 BOOST_CHECK(std::fabs(ma[8] - 2379.87156) < 0.00001);
85 kdata = stock.getKData(KQuery(-11));
88 BOOST_CHECK(ma.empty() ==
false);
89 BOOST_CHECK(ma.size() == kdata.size());
90 BOOST_CHECK(ma.discard() == 0);
91 BOOST_CHECK(std::fabs(ma[0] - 2400.984) < 0.00001);
92 BOOST_CHECK(std::fabs(ma[8] - 2393.91711) < 0.00001);
93 BOOST_CHECK(std::fabs(ma[9] - 2390.8365) < 0.00001);
94 BOOST_CHECK(std::fabs(ma[10] - 2383.4041) < 0.00001);
97 kdata = stock.getKData(KQuery(-11));
100 BOOST_CHECK(ma.empty() ==
false);
101 BOOST_CHECK(ma.size() == kdata.size());
102 BOOST_CHECK(ma.discard() == 0);
103 for (
size_t i = 0; i < open.size(); ++i) {
104 BOOST_CHECK(std::fabs(ma[i] - open[i]) < 0.0001);
109 for (
int i = 0; i < 10; ++i) {
113 Indicator d = PRICELIST(data);
114 Indicator ma1 = MA(d, 2);
115 Indicator ma2 = MA(ma1, 2);
116 BOOST_CHECK(ma1.discard() == 0);
117 BOOST_CHECK(ma2.discard() == 0);
118 BOOST_CHECK(ma1[0] == data[0]);
119 BOOST_CHECK(ma1[1] == (data[0]+data[1])/2);
120 BOOST_CHECK(ma1[2] == 1.5);
121 BOOST_CHECK(ma1[3] == 2.5);
122 BOOST_CHECK(ma2[0] == ma1[0]);
123 BOOST_CHECK(ma2[1] == (ma1[0]+ma1[1])/2);
124 BOOST_CHECK(ma2[2] == 1.0);
125 BOOST_CHECK(ma2[3] == 2.0);
131 BOOST_CHECK(ma.size() == 0);
132 BOOST_CHECK(ma1.size() == 10);
133 BOOST_CHECK(ma1.size() == ma2.size());
134 for (
size_t i = 0; i < ma1.size(); ++i) {
135 BOOST_CHECK(ma1[i] == ma2[i]);
BOOST_AUTO_TEST_CASE(test_MA)