test_doc
test_AMA.cpp
浏览该文件的文档.
1 /*
2  * test_AMA.cpp
3  *
4  * Created on: 2013-4-10
5  * Author: fasiondog
6  */
7 
8 
9 #ifdef TEST_ALL_IN_ONE
10  #include <boost/test/unit_test.hpp>
11 #else
12  #define BOOST_TEST_MODULE test_hikyuu_indicator_suite
13  #include <boost/test/unit_test.hpp>
14 #endif
15 
16 #include <hikyuu/StockManager.h>
17 #include <hikyuu/indicator/crt/AMA.h>
18 #include <hikyuu/indicator/crt/PRICELIST.h>
19 
20 using namespace hku;
21 
29 BOOST_AUTO_TEST_CASE( test_AMA ) {
30  Indicator result;
31 
32  PriceList d;
33  d.push_back(6063);
34  d.push_back(6041);
35  d.push_back(6065);
36  d.push_back(6078);
37  d.push_back(6114);
38  d.push_back(6121);
39  d.push_back(6106);
40  d.push_back(6101);
41  d.push_back(6166);
42  d.push_back(6169);
43  d.push_back(6195);
44  d.push_back(6222);
45  d.push_back(6186);
46  d.push_back(6214);
47  d.push_back(6185);
48  d.push_back(6209);
49  d.push_back(6221);
50  d.push_back(6278);
51  d.push_back(6326);
52  d.push_back(6347);
53 
54  Indicator ind = PRICELIST(d);
55  BOOST_CHECK(ind.size() == 20);
56  result = AMA(ind, 10, 2, 30);
57  BOOST_CHECK(result.getParam<int>("n") == 10);
58  BOOST_CHECK(result.getParam<int>("fast_n") == 2);
59  BOOST_CHECK(result.getParam<int>("slow_n") == 30);
60  BOOST_CHECK(result.size() == 20);
61  BOOST_CHECK(result.empty() == false);
62  BOOST_CHECK(result.discard() == 0);
63  BOOST_CHECK(result.getResultNumber() == 2);
64  BOOST_CHECK(result[0] == 6063);
65  BOOST_CHECK(std::fabs(result[9] - 6103.6781) < 0.000001);
66  BOOST_CHECK(std::fabs(result[10] - 6120.760197) < 0.000001);
67  BOOST_CHECK(std::fabs(result[18] - 6216.376893) < 0.000001);
68  BOOST_CHECK(std::fabs(result[19] - 6239.100742) < 0.000001);
69 
70  BOOST_CHECK(result.get(0,1) == 1.0);
71  BOOST_CHECK(std::fabs(result.get(9, 1) - 0.557895) < 0.000001);
72  BOOST_CHECK(std::fabs(result.get(10, 1) - 0.611111) < 0.000001);
73  BOOST_CHECK(std::fabs(result.get(11, 1) - 0.826484) < 0.000001);
74  BOOST_CHECK(std::fabs(result.get(18, 1) - 0.517799) < 0.000001);
75  BOOST_CHECK(std::fabs(result.get(19, 1) - 0.585526) < 0.000001);
76 
78  Indicator ama = AMA(10, 2, 30);
79  BOOST_CHECK(ama.size() == 0);
80  Indicator expect = AMA(ind, 10, 2, 30);
81  result = ama(ind);
82  BOOST_CHECK(result.size() == expect.size());
83  BOOST_CHECK(result.getResultNumber() == expect.getResultNumber());
84  BOOST_CHECK(result.discard() == expect.discard());
85  for (size_t i = 0; i < expect.size(); ++i) {
86  BOOST_CHECK(result[i] == expect[i]);
87  BOOST_CHECK(result.get(i, 1) == expect.get(i, 1));
88  }
89 }
90 
BOOST_AUTO_TEST_CASE(test_AMA)
Definition: test_AMA.cpp:29