10 #include <boost/test/unit_test.hpp> 12 #define BOOST_TEST_MODULE test_hikyuu_trade_sys_suite 13 #include <boost/test/unit_test.hpp> 16 #include <hikyuu/StockManager.h> 17 #include <hikyuu/trade_manage/crt/crtTM.h> 18 #include <hikyuu/trade_sys/system/crt/SYS_Simple.h> 19 #include <hikyuu/trade_sys/selector/crt/SE_Fixed.h> 20 #include <hikyuu/trade_sys/allocatefunds/crt/AF_EqualWeight.h> 32 StockManager& sm = StockManager::instance();
34 SEPtr se = SE_Fixed();
35 AFPtr af = AF_EqualWeight();
36 TMPtr tm = crtTM(Datetime(200101010000L), 100000);
37 TMPtr subtm = crtTM(Datetime(200101010000L), 0);
38 SYSPtr sys = SYS_Simple(subtm->clone());
43 SystemWeightList sw_list;
46 BOOST_CHECK(!af->getTM());
48 BOOST_CHECK(af->getTM());
51 AFPtr af2 = af->clone();
52 BOOST_CHECK(af2.get() != af.get());
53 BOOST_CHECK(af2->name() == af->name());
54 BOOST_CHECK(af2->getTM() == af->getTM());
57 BOOST_CHECK(se_list.size() == 0);
58 BOOST_CHECK(hold_list.size() == 0);
59 sw_list = af->_allocateWeight(Datetime(201802100000L), se_list);
60 ac_list = af->getAllocatedSystemList(Datetime(201802100000L), se_list, hold_list);
61 BOOST_CHECK(sw_list.size() == 0);
62 BOOST_CHECK(ac_list.size() == 0);
65 af->setParam<
int>(
"max_sys_num", -1);
68 sys->setTM(subtm->clone());
69 se->addStock(sm[
"sh600000"], sys);
70 se_list = se->getSelectedSystemList(Datetime(201802100000L));
71 BOOST_CHECK(se_list.size() == 1);
73 sw_list = af->_allocateWeight(Datetime(201802100000L), se_list);
74 ac_list = af->getAllocatedSystemList(Datetime(201802100000L), se_list, se_list);
75 BOOST_CHECK(sw_list.size() == 1);
76 BOOST_CHECK(sw_list[0].getSYS() == se_list[0]);
77 BOOST_CHECK(ac_list.size() == 0);
78 BOOST_CHECK(tm->currentCash() == 100000);
82 af->setParam<
int>(
"max_sys_num", 0);
85 sys->setTM(subtm->clone());
86 se->addStock(sm[
"sh600000"], sys);
87 se_list = se->getSelectedSystemList(Datetime(201802100000L));
88 BOOST_CHECK(se_list.size() == 1);
90 sw_list = af->_allocateWeight(Datetime(201802100000L), se_list);
91 ac_list = af->getAllocatedSystemList(Datetime(201802100000L), se_list, hold_list);
92 BOOST_CHECK(sw_list.size() == 1);
93 BOOST_CHECK(ac_list.size() == 0);
94 BOOST_CHECK(tm->currentCash() == 100000);
BOOST_AUTO_TEST_CASE(test_AllocateFunds)