test_doc
test_PF_for_delay_and_no_adjust.cpp
浏览该文件的文档.
1 /*
2  * test_SYS_Simple.cpp
3  *
4  * Created on: 2013-4-20
5  * Author: fasiondog
6  */
7 
8 
9 #ifdef TEST_ALL_IN_ONE
10  #include <boost/test/unit_test.hpp>
11 #else
12  #define BOOST_TEST_MODULE test_hikyuu_trade_sys_suite
13  #include <boost/test/unit_test.hpp>
14 #endif
15 
16 #include <hikyuu/StockManager.h>
17 #include <hikyuu/trade_manage/crt/crtTM.h>
18 #include <hikyuu/trade_sys/portfolio/crt/PF_Simple.h>
19 #include <hikyuu/trade_sys/selector/crt/SE_Fixed.h>
20 #include <hikyuu/trade_sys/allocatefunds/crt/AF_EqualWeight.h>
21 
22 #include <hikyuu/trade_sys/system/crt/SYS_Simple.h>
23 #include <hikyuu/trade_sys/signal/crt/SG_CrossGold.h>
24 #include <hikyuu/trade_sys/moneymanager/crt/MM_FixedCount.h>
25 #include <hikyuu/indicator/crt/EMA.h>
26 
27 
28 using namespace hku;
29 
37 BOOST_AUTO_TEST_CASE( test_PF_for_delay_and_no_adjust) {
38  StockManager& sm = StockManager::instance();
39 
40 
41  SYSPtr sys = SYS_Simple();
42  sys->setSG(SG_CrossGold(OP(EMA(12)), OP(EMA(26))));
43  sys->setMM(MM_FixedCount(100));
44  SYSPtr pro_sys = sys->clone(false, false);
45 
46  TMPtr tm = crtTM(Datetime(199001010000L), 500000);
47  SEPtr se = SE_Fixed();
48  AFPtr af = AF_EqualWeight();
49  PFPtr pf = PF_Simple(tm, se, af);
50 
51  KQuery query = KQueryByDate(Datetime(201101010000L), Null<Datetime>(),
52  KQuery::DAY);
53 
54 
55 
57  sys->setTM(tm->clone());
58  sys->run(sm["sz000001"], query);
59  sys->getTM()->tocsv(sm.tmpdir());
60 
61  se->addStock(sm["sz000001"], pro_sys);
62  pf->run(query);
63  tm->name("PF");
64  tm->tocsv(sm.tmpdir());
65 
66  TradeRecordList tr1 = sys->getTM()->getTradeList();
67  TradeRecordList tr2 = tm->getTradeList();
68  BOOST_CHECK(tr1.size() == tr2.size());
69 
70  /*std::cout << tr1.size() << std::endl;
71  for (auto iter = tr1.begin(); iter != tr1.end(); ++iter) {
72  std::cout << *iter << std::endl;
73  }
74 
75  std::cout << "==========================" << std::endl;
76  std::cout << tr2.size() << std::endl;
77  for (auto iter = tr2.begin(); iter != tr2.end(); ++iter) {
78  std::cout << *iter << std::endl;
79  }
80 
81 
82  std::cout << sys->getTM()->currentCash() << std::endl;
83  std::cout << tm->currentCash() << std::endl; */
84 
85 
86 }
87 
BOOST_AUTO_TEST_CASE(test_PF_for_delay_and_no_adjust)