test_doc
test_MoneyManager.cpp
浏览该文件的文档.
1 /*
2  * test_MoneyManager.cpp
3  *
4  * Created on: 2013-3-11
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/moneymanager/MoneyManagerBase.h>
18 
19 using namespace hku;
20 
21 class MoneyManagerTest: public MoneyManagerBase {
22 public:
23  MoneyManagerTest() : MoneyManagerBase("MoneyManagerTest") { m_x = 0; }
24  virtual ~MoneyManagerTest() {}
25 
26  TradeManagerPtr getTM() const { return m_tm; }
27  int getX() const { return m_x; }
28  void setX(int x) { m_x = x; }
29 
30  virtual size_t _getBuyNumber(const Datetime& datetime, const Stock& stock,
31  price_t price, price_t risk, SystemPart from) {
32  return 0;
33  }
34 
35  virtual void _reset() {
36  m_x = 0;
37  }
38 
39  virtual MoneyManagerPtr _clone() {
41  p->m_x = m_x;
42  return MoneyManagerPtr(p);
43  }
44 
45 private:
46  int m_x;
47 
48 };
49 
50 
58 BOOST_AUTO_TEST_CASE( test_MoneyManager ) {
59  StockManager& sm = StockManager::instance();
60  Stock stock = sm["sh000001"];
61  TradeManagerPtr tm = crtTM();
62 
64  MoneyManagerPtr p(new MoneyManagerTest);
65  MoneyManagerTest *p_src = (MoneyManagerTest *)p.get();
66  BOOST_CHECK(p->name() == "MoneyManagerTest");
67  BOOST_CHECK(p_src->getTM() == TradeManagerPtr());
68  p->setTM(tm);
69  BOOST_CHECK(p_src->getTM() == tm);
70  BOOST_CHECK(p->getBuyNumber(Datetime(200001010000), stock, 10.0, 10.0, PART_SIGNAL) == 0);
71  BOOST_CHECK(p->getSellNumber(Datetime(200001010000), stock, 10.0, 10.0, PART_SIGNAL) == Null<size_t>());
72  BOOST_CHECK(p_src->getX() == 0);
73  p_src->setX(10);
74  BOOST_CHECK(p_src->getX() == 10);
75  p->reset();
76  BOOST_CHECK(p_src->getX() == 0);
77 
79  p_src->setX(10);
80  MoneyManagerPtr p_clone = p->clone();
81  BOOST_CHECK(p != p_clone);
82  p_src = (MoneyManagerTest *)p_clone.get();
83  BOOST_CHECK(p->name() == "MoneyManagerTest");
84  //BOOST_CHECK(p_src->getTM() == tm);
85  BOOST_CHECK(p_src->getX() == 10);
86 }
87 
virtual void _reset()
TradeManagerPtr getTM() const
virtual size_t _getBuyNumber(const Datetime &datetime, const Stock &stock, price_t price, price_t risk, SystemPart from)
virtual MoneyManagerPtr _clone()
BOOST_AUTO_TEST_CASE(test_MoneyManager)