test_doc  0.1
 全部  文件 函数 变量 宏定义 
test_MA.cpp
浏览该文件的文档.
1 /*
2  * test_MA.cpp
3  *
4  * Created on: 2013-2-12
5  * Author: fasiondog
6  */
7 
8 #ifdef TEST_ALL_IN_ONE
9  #include <boost/test/unit_test.hpp>
10 #else
11  #define BOOST_TEST_MODULE test_hikyuu_indicator_suite
12  #include <boost/test/unit_test.hpp>
13 #endif
14 
15 #include <hikyuu/StockManager.h>
16 #include <hikyuu/indicator/crt/MA.h>
17 #include <hikyuu/indicator/crt/KDATA.h>
18 
19 using namespace hku;
20 
29  StockManager& sm = StockManager::instance();
30  Stock stock = sm.getStock("sh000001");
31  KData kdata;
32  Indicator open, ma;
33 
35  ma = MA(30);
36  BOOST_CHECK(ma.empty() == true);
37  BOOST_CHECK(ma.size() == 0);
38  BOOST_CHECK(ma.discard() == 29);
39 
40  ma = MA(0);
41  BOOST_CHECK(ma.empty() == true);
42  BOOST_CHECK(ma.size() == 0);
43  BOOST_CHECK(ma.discard() == 0);
44 
46  kdata = stock.getKData(KQuery(-10));
47  open = OPEN(kdata);
48  ma = MA(open, 0);
49  BOOST_CHECK(ma.empty() == false);
50  BOOST_CHECK(ma.size() == kdata.size());
51  BOOST_CHECK(ma.discard() == 0);
52  for (size_t i = 0; i < kdata.size(); ++i) {
53  BOOST_CHECK(ma[i] == Null<price_t>());
54  }
55 
57  kdata = stock.getKData(KQuery(-10));
58  open = OPEN(kdata);
59  ma = MA(open, 10);
60  BOOST_CHECK(ma.empty() == false);
61  BOOST_CHECK(ma.size() == kdata.size());
62  BOOST_CHECK(ma.discard() == 9);
63  for (size_t i = 0; i < kdata.size() - 1; ++i) {
64  BOOST_CHECK(ma[i] == Null<price_t>());
65  }
66  BOOST_CHECK(std::fabs(ma[9] - 2383.4041) < 0.00001);
67 
69  kdata = stock.getKData(KQuery(-9));
70  open = OPEN(kdata);
71  ma = MA(open, 10);
72  BOOST_CHECK(ma.empty() == false);
73  BOOST_CHECK(ma.size() == kdata.size());
74  BOOST_CHECK(ma.discard() == 9);
75  for (size_t i = 0; i < kdata.size(); ++i) {
76  BOOST_CHECK(ma[i] == Null<price_t>());
77  }
78 
80  kdata = stock.getKData(KQuery(-11));
81  open = OPEN(kdata);
82  ma = MA(open, 10);
83  BOOST_CHECK(ma.empty() == false);
84  BOOST_CHECK(ma.size() == kdata.size());
85  BOOST_CHECK(ma.discard() == 9);
86  for (size_t i = 0; i < 9; ++i) {
87  BOOST_CHECK(ma[i] == Null<price_t>());
88  }
89  BOOST_CHECK(std::fabs(ma[9] - 2390.8365) < 0.00001);
90  BOOST_CHECK(std::fabs(ma[10] - 2383.4041) < 0.00001);
91 
93  kdata = stock.getKData(KQuery(-11));
94  open = OPEN(kdata);
95  ma = MA(open, 1);
96  BOOST_CHECK(ma.empty() == false);
97  BOOST_CHECK(ma.size() == kdata.size());
98  BOOST_CHECK(ma.discard() == 0);
99  for (size_t i = 0; i < open.size(); ++i) {
100  BOOST_CHECK(std::fabs(ma[i] - open[i]) < 0.0001);
101  }
102 }
103