test_doc
test_PG_FixedHoldDays.cpp
浏览该文件的文档.
1 /*
2  * test_ProfitGoal.cpp
3  *
4  * Created on: 2013-3-21
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_trade_sys_suite
12  #include <boost/test/unit_test.hpp>
13 #endif
14 
15 #include <hikyuu/StockManager.h>
16 #include <hikyuu/trade_manage/crt/crtTM.h>
17 #include <hikyuu/trade_sys/profitgoal/crt/PG_FixedHoldDays.h>
18 
19 using namespace hku;
20 
28 BOOST_AUTO_TEST_CASE( test_PG_FixedHoldDays) {
29  StockManager& sm = StockManager::instance();
30  TMPtr tm = crtTM(Datetime(199001010000LL), 100000);
31 
32  Datetime start_date(199911100000LL); //测试起始日期
33  Datetime end_date(200002250000LL); //测试结束日期
34  KQuery query = KQueryByDate(start_date, end_date, KQuery::DAY);
35 
36  Stock stk = sm.getStock("sh600000");
37  KData k = stk.getKData(query);
38 
39  PGPtr pg = PG_FixedHoldDays();
40  pg->setTM(tm);
41  pg->setTO(k);
42 
43  tm->buy(Datetime(199911110000LL), stk, 29.51, 100, 0.0, 0.0, 0.0, PART_SIGNAL);
44 
45  price_t null_price = Null<price_t>();
46 
48  BOOST_CHECK(pg->getParam<int>("days") == 5);
49 
51  pg->setParam<int>("days", 0);
52  BOOST_CHECK(pg->getGoal(Datetime(199911100000LL), 0.0) == 0.0);
53  BOOST_CHECK(pg->getGoal(Datetime(199911110000LL), 0.0) == 0.0);
54  BOOST_CHECK(pg->getGoal(Datetime(199911120000LL), 0.0) == 0.0);
55 
57  pg->setParam<int>("days", 1);
58  BOOST_CHECK(pg->getGoal(Datetime(199911100000LL), 0.0) == null_price);
59  BOOST_CHECK(pg->getGoal(Datetime(199911110000LL), 0.0) == null_price);
60  BOOST_CHECK(pg->getGoal(Datetime(199911120000LL), 0.0) == 0.0);
61  BOOST_CHECK(pg->getGoal(Datetime(199911130000LL), 0.0) == 0.0);
62  BOOST_CHECK(pg->getGoal(Datetime(199911150000LL), 0.0) == 0.0);
63 
65  pg->setParam<int>("days", 2);
66  BOOST_CHECK(pg->getGoal(Datetime(199911100000LL), 0.0) == null_price);
67  BOOST_CHECK(pg->getGoal(Datetime(199911110000LL), 0.0) == null_price);
68  BOOST_CHECK(pg->getGoal(Datetime(199911120000LL), 0.0) == null_price);
69  BOOST_CHECK(pg->getGoal(Datetime(199911130000LL), 0.0) == 0.0);
70  BOOST_CHECK(pg->getGoal(Datetime(199911150000LL), 0.0) == 0.0);
71  BOOST_CHECK(pg->getGoal(Datetime(199911160000LL), 0.0) == 0.0);
72 
74  pg->setParam<int>("days", 3);
75  BOOST_CHECK(pg->getGoal(Datetime(199911100000LL), 0.0) == null_price);
76  BOOST_CHECK(pg->getGoal(Datetime(199911110000LL), 0.0) == null_price);
77  BOOST_CHECK(pg->getGoal(Datetime(199911120000LL), 0.0) == null_price);
78  BOOST_CHECK(pg->getGoal(Datetime(199911130000LL), 0.0) == null_price);
79  BOOST_CHECK(pg->getGoal(Datetime(199911150000LL), 0.0) == null_price);
80  BOOST_CHECK(pg->getGoal(Datetime(199911160000LL), 0.0) == 0.0);
81 
83  pg->setParam<int>("days", 4);
84  BOOST_CHECK(pg->getGoal(Datetime(199911100000LL), 0.0) == null_price);
85  BOOST_CHECK(pg->getGoal(Datetime(199911110000LL), 0.0) == null_price);
86  BOOST_CHECK(pg->getGoal(Datetime(199911120000LL), 0.0) == null_price);
87  BOOST_CHECK(pg->getGoal(Datetime(199911130000LL), 0.0) == null_price);
88  BOOST_CHECK(pg->getGoal(Datetime(199911150000LL), 0.0) == null_price);
89  BOOST_CHECK(pg->getGoal(Datetime(199911160000LL), 0.0) == null_price);
90  BOOST_CHECK(pg->getGoal(Datetime(199911170000LL), 0.0) == 0.0);
91 
93  pg->setParam<int>("days", 8);
94  BOOST_CHECK(pg->getGoal(Datetime(199911100000LL), 0.0) == null_price);
95  BOOST_CHECK(pg->getGoal(Datetime(199911110000LL), 0.0) == null_price);
96  BOOST_CHECK(pg->getGoal(Datetime(199911120000LL), 0.0) == null_price);
97  BOOST_CHECK(pg->getGoal(Datetime(199911130000LL), 0.0) == null_price);
98  BOOST_CHECK(pg->getGoal(Datetime(199911150000LL), 0.0) == null_price);
99  BOOST_CHECK(pg->getGoal(Datetime(199911160000LL), 0.0) == null_price);
100  BOOST_CHECK(pg->getGoal(Datetime(199911170000LL), 0.0) == null_price);
101  BOOST_CHECK(pg->getGoal(Datetime(199911180000LL), 0.0) == null_price);
102  BOOST_CHECK(pg->getGoal(Datetime(199911190000LL), 0.0) == null_price);
103  BOOST_CHECK(pg->getGoal(Datetime(199911200000LL), 0.0) == null_price);
104  BOOST_CHECK(pg->getGoal(Datetime(199911210000LL), 0.0) == null_price);
105  BOOST_CHECK(pg->getGoal(Datetime(199911220000LL), 0.0) == null_price);
106  BOOST_CHECK(pg->getGoal(Datetime(199911230000LL), 0.0) == 0.0);
107 }
108 
BOOST_AUTO_TEST_CASE(test_PG_FixedHoldDays)