10 #include <boost/test/unit_test.hpp> 12 #define BOOST_TEST_MODULE test_hikyuu_indicator_suite 13 #include <boost/test/unit_test.hpp> 16 #include <hikyuu/indicator/crt/MACD.h> 17 #include <hikyuu/indicator/crt/PRICELIST.h> 18 #include <hikyuu/indicator/crt/EMA.h> 31 for (
size_t i = 0; i < 20; ++i) {
35 Indicator ind = PRICELIST(d);
36 Indicator macd, bar, diff, dea;
37 Indicator ema1, ema2, fast, slow, bmacd;
40 macd = MACD(Indicator(), 12, 26, 9);
41 BOOST_CHECK(macd.size() == 0);
42 BOOST_CHECK(macd.empty() ==
true);
45 macd = MACD(ind, 1, 1, 1);
46 BOOST_CHECK(macd.getResultNumber() == 3);
47 bar = macd.getResult(0);
48 diff = macd.getResult(1);
49 dea = macd.getResult(2);
50 BOOST_CHECK(bar.size() == 20);
51 BOOST_CHECK(diff.size() == 20);
52 BOOST_CHECK(dea.size() == 20);
54 BOOST_CHECK(diff[0] == 0);
55 BOOST_CHECK(diff[1] == 0);
56 BOOST_CHECK(diff[19] == 0);
58 BOOST_CHECK(dea[0] == 0);
59 BOOST_CHECK(dea[1] == 0);
60 BOOST_CHECK(dea[19] == 0);
62 BOOST_CHECK(bar[0] == 0);
63 BOOST_CHECK(bar[1] == 0);
64 BOOST_CHECK(bar[19] == 0);
67 macd = MACD(ind, 1, 2, 3);
68 BOOST_CHECK(macd.size() == 20);
69 BOOST_CHECK(macd.discard() == 0);
70 bar = macd.getResult(0);
71 diff = macd.getResult(1);
72 dea = macd.getResult(2);
78 BOOST_CHECK(bar.size() == 20);
79 BOOST_CHECK(diff.size() == 20);
80 BOOST_CHECK(dea.size() == 20);
82 BOOST_CHECK(diff[0] == fast[0]);
83 BOOST_CHECK(diff[1] == fast[1]);
84 BOOST_CHECK(diff[19] == fast[19]);
86 BOOST_CHECK(dea[0] == slow[0]);
87 BOOST_CHECK(std::fabs(dea[1] - slow[1]) < 0.0001);
88 BOOST_CHECK(dea[19] == slow[19]);
90 BOOST_CHECK(bar[0] == bmacd[0]);
91 BOOST_CHECK(bar[1] == bmacd[1]);
92 BOOST_CHECK(bar[19] == bmacd[19]);
95 macd = MACD(ind, 3, 2, 1);
96 BOOST_CHECK(macd.size() == 20);
97 BOOST_CHECK(macd.discard() == 0);
98 bar = macd.getResult(0);
99 diff = macd.getResult(1);
100 dea = macd.getResult(2);
106 BOOST_CHECK(bar.size() == 20);
107 BOOST_CHECK(diff.size() == 20);
108 BOOST_CHECK(dea.size() == 20);
110 BOOST_CHECK(diff[0] == fast[0]);
111 BOOST_CHECK(diff[1] == fast[1]);
112 BOOST_CHECK(diff[19] == fast[19]);
114 BOOST_CHECK(dea[0] == slow[0]);
115 BOOST_CHECK(dea[1] == slow[1]);
116 BOOST_CHECK(dea[19] == slow[19]);
118 BOOST_CHECK(bar[0] == bmacd[0]);
119 BOOST_CHECK(bar[1] == bmacd[1]);
120 BOOST_CHECK(bar[19] == bmacd[19]);
123 macd = MACD(ind, 3, 5, 2);
124 BOOST_CHECK(macd.size() == 20);
125 BOOST_CHECK(macd.discard() == 0);
126 bar = macd.getResult(0);
127 diff = macd.getResult(1);
128 dea = macd.getResult(2);
134 BOOST_CHECK(bar.size() == 20);
135 BOOST_CHECK(diff.size() == 20);
136 BOOST_CHECK(dea.size() == 20);
138 BOOST_CHECK(diff[0] == fast[0]);
139 BOOST_CHECK(diff[1] == fast[1]);
140 BOOST_CHECK(diff[19] == fast[19]);
142 BOOST_CHECK(dea[0] == slow[0]);
143 BOOST_CHECK(dea[1] == slow[1]);
144 BOOST_CHECK(dea[19] == slow[19]);
146 BOOST_CHECK(bar[0] == bmacd[0]);
147 BOOST_CHECK(bar[1] == bmacd[1]);
148 BOOST_CHECK(bar[19] == bmacd[19]);
151 Indicator expect = MACD(ind, 3, 5, 2);
152 Indicator tmp = MACD(3, 5, 2);
153 Indicator result = tmp(ind);
154 BOOST_CHECK(result.size() == expect.size());
155 for (
size_t i = 0; i < expect.size(); ++i) {
156 BOOST_CHECK(result.get(i, 0) == expect.get(i, 0));
157 BOOST_CHECK(result.get(i, 1) == expect.get(i, 1));
158 BOOST_CHECK(result.get(i, 2) == expect.get(i, 2));
BOOST_AUTO_TEST_CASE(test_MACD)