9 #include <boost/test/unit_test.hpp>
11 #define BOOST_TEST_MODULE test_hikyuu_trade_manage_suite
12 #include <boost/test/unit_test.hpp>
15 #include <hikyuu/StockManager.h>
16 #include <hikyuu/trade_manage/crt/crtFixedATC.h>
28 StockManager& sm = StockManager::instance();
30 CostRecord result, expect;
31 TradeCostPtr cost_func = crtFixedATC(0.0018, 5, 0.001, 0.001, 1.0);
34 result = cost_func->getBuyCost(Datetime(200101010000), stock, 10.0, 100);
35 BOOST_CHECK(result == expect);
36 result = cost_func->getSellCost(Datetime(200101010000), stock, 10.0, 1000);
37 BOOST_CHECK(result == expect);
40 stock = sm.getStock(
"sh600004");
41 result = cost_func->getBuyCost(Datetime(200101010000), stock, 10.0, 100);
42 expect.commission = 5.0;
43 expect.stamptax = 0.0;
44 expect.transferfee = 1.0;
46 BOOST_CHECK(result == expect);
49 result = cost_func->getBuyCost(Datetime(200101010000), stock, 10.0, 1000);
50 expect.commission = 18.0;
51 expect.stamptax = 0.0;
52 expect.transferfee = 1.0;
54 BOOST_CHECK(result == expect);
57 result = cost_func->getBuyCost(Datetime(200101010000), stock, 10.0, 2100);
58 expect.commission = 37.80;
59 expect.stamptax = 0.0;
60 expect.transferfee = 2.1;
62 BOOST_CHECK(result == expect);
65 stock = sm.getStock(
"sh600004");
66 result = cost_func->getSellCost(Datetime(200101010000), stock, 10.0, 100);
67 expect.commission = 5.0;
68 expect.stamptax = 1.0;
69 expect.transferfee = 1.0;
71 BOOST_CHECK(result == expect);
74 result = cost_func->getSellCost(Datetime(200101010000), stock, 10.0, 1000);
75 expect.commission = 18.0;
76 expect.stamptax = 10.0;
77 expect.transferfee = 1.0;
79 BOOST_CHECK(result == expect);
82 result = cost_func->getSellCost(Datetime(200101010000), stock, 10.0, 2100);
83 expect.commission = 37.80;
85 expect.transferfee = 2.1;
87 BOOST_CHECK(result == expect);
90 stock = sm.getStock(
"sz000001");
91 result = cost_func->getBuyCost(Datetime(200101010000), stock, 10.0, 100);
92 expect.commission = 5.0;
93 expect.stamptax = 0.0;
94 expect.transferfee = 0.0;
96 BOOST_CHECK(result == expect);
99 result = cost_func->getBuyCost(Datetime(200101010000), stock, 10.0, 1000);
100 expect.commission = 18.0;
101 expect.stamptax = 0.0;
102 expect.transferfee = 0.0;
104 BOOST_CHECK(result == expect);
107 result = cost_func->getBuyCost(Datetime(200101010000), stock, 10.0, 2100);
108 expect.commission = 37.80;
109 expect.stamptax = 0.0;
110 expect.transferfee = 0.0;
112 BOOST_CHECK(result == expect);
115 result = cost_func->getSellCost(Datetime(200101010000), stock, 10.0, 100);
116 expect.commission = 5.0;
117 expect.stamptax = 1.0;
118 expect.transferfee = 0.0;
120 BOOST_CHECK(result == expect);
123 result = cost_func->getSellCost(Datetime(200101010000), stock, 10.0, 1000);
124 expect.commission = 18.0;
125 expect.stamptax = 10.0;
126 expect.transferfee = 0.0;
128 BOOST_CHECK(result == expect);
131 result = cost_func->getSellCost(Datetime(200101010000), stock, 10.0, 2100);
132 expect.commission = 37.80;
133 expect.stamptax = 21;
134 expect.transferfee = 0.0;
136 BOOST_CHECK(result == expect);