9 #include <boost/test/unit_test.hpp> 11 #define BOOST_TEST_MODULE test_hikyuu_trade_sys_suite 12 #include <boost/test/unit_test.hpp> 15 #include <hikyuu/StockManager.h> 16 #include <hikyuu/trade_manage/crt/crtTM.h> 17 #include <hikyuu/trade_sys/profitgoal/crt/PG_FixedHoldDays.h> 29 StockManager& sm = StockManager::instance();
30 TMPtr tm = crtTM(Datetime(199001010000LL), 100000);
32 Datetime start_date(199911100000LL);
33 Datetime end_date(200002250000LL);
34 KQuery query = KQueryByDate(start_date, end_date, KQuery::DAY);
36 Stock stk = sm.getStock(
"sh600000");
37 KData k = stk.getKData(query);
39 PGPtr pg = PG_FixedHoldDays();
43 tm->buy(Datetime(199911110000LL), stk, 29.51, 100, 0.0, 0.0, 0.0, PART_SIGNAL);
45 price_t null_price = Null<price_t>();
48 BOOST_CHECK(pg->getParam<
int>(
"days") == 5);
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);
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);
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);
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);
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);
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);
BOOST_AUTO_TEST_CASE(test_PG_FixedHoldDays)