Hikyuu
Portfolio.h
浏览该文件的文档.
1 /*
2  * Portfolio.h
3  *
4  * Created on: 2016年2月21日
5  * Author: fasiondog
6  */
7 
8 #ifndef TRADE_SYS_PORTFOLIO_PORTFOLIO_H_
9 #define TRADE_SYS_PORTFOLIO_PORTFOLIO_H_
10 
11 #include "../allocatefunds/AllocateFundsBase.h"
12 #include "../selector/SelectorBase.h"
13 
14 #if HKU_SUPPORT_SERIALIZATION
15 #include <boost/serialization/shared_ptr.hpp>
16 #include <boost/serialization/assume_abstract.hpp>
17 #include <boost/serialization/base_object.hpp>
18 #endif
19 
20 namespace hku {
21 
22 /*
23  * 资产组合
24  * @ingroup Portfolio
25  */
28 
29 public:
30  Portfolio();
31  Portfolio(const string& name);
32  Portfolio(const TradeManagerPtr& tm,
33  const SelectorPtr& st,
34  const AFPtr& af);
35  virtual ~Portfolio();
36 
37  string name() const { return m_name; }
38  void name(const string& name) { m_name = name; }
39 
40  void run(const KQuery& query);
41 
42  TMPtr getTM() { return m_tm; }
43  SEPtr getSE() { return m_se; }
44  AFPtr getAF() { return m_af; }
45 
46  void setTM(const TMPtr& tm) { m_tm = tm; }
47  void setSE(const SEPtr& se) { m_se = se; }
48  void setAF(const AFPtr& af) { m_af = af; }
49 
50  void reset();
51 
52  typedef shared_ptr<Portfolio> PortfolioPtr;
53  PortfolioPtr clone();
54 
55 private:
56  bool readyForRun();
57 
58  void rebuildOnlyTotalTM();
59 
60 protected:
61  string m_name;
65 
66  //以下为临时变量
67  TMPtr m_tm_shadow; //影子账户,用于内部协调分配资金
68 
69 //============================================
70 // 序列化支持
71 //============================================
72 #if HKU_SUPPORT_SERIALIZATION
73 private:
74  friend class boost::serialization::access;
75  template<class Archive>
76  void save(Archive & ar, const unsigned int version) const {
77  string name_str(GBToUTF8(m_name));
78  ar & boost::serialization::make_nvp("name", name_str);
79  ar & BOOST_SERIALIZATION_NVP(m_params);
80  ar & BOOST_SERIALIZATION_NVP(m_se);
81  ar & BOOST_SERIALIZATION_NVP(m_af);
82  ar & BOOST_SERIALIZATION_NVP(m_tm);
83  }
84 
85  template<class Archive>
86  void load(Archive & ar, const unsigned int version) {
87  string name;
88  ar & boost::serialization::make_nvp("name", name);
89  m_name = UTF8ToGB(name);
90  ar & BOOST_SERIALIZATION_NVP(m_params);
91  ar & BOOST_SERIALIZATION_NVP(m_se);
92  ar & BOOST_SERIALIZATION_NVP(m_af);
93  ar & BOOST_SERIALIZATION_NVP(m_tm);
94  }
95 
96  BOOST_SERIALIZATION_SPLIT_MEMBER()
97 #endif /* HKU_SUPPORT_SERIALIZATION */
98 };
99 
100 
105 typedef shared_ptr<Portfolio> PortfolioPtr;
106 typedef shared_ptr<Portfolio> PFPtr;
107 
108 HKU_API std::ostream & operator<<(std::ostream&, const Portfolio&);
109 HKU_API std::ostream & operator<<(std::ostream&, const PortfolioPtr&);
110 
111 } /* namespace hku */
112 
113 #endif /* TRADE_SYS_PORTFOLIO_PORTFOLIO_H_ */
void setTM(const TMPtr &tm)
Definition: Portfolio.h:46
TMPtr getTM()
Definition: Portfolio.h:42
SEPtr m_se
Definition: Portfolio.h:63
void setAF(const AFPtr &af)
Definition: Portfolio.h:48
shared_ptr< Portfolio > PortfolioPtr
Definition: Portfolio.h:52
void name(const string &name)
Definition: Portfolio.h:38
按索引方式查询K线数据条件
Definition: KQuery.h:19
#define GBToUTF8(s)
Definition: util.h:55
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
TMPtr m_tm_shadow
Definition: Portfolio.h:67
shared_ptr< TradeManager > TradeManagerPtr
客户程序应使用此类型进行实际操作
Definition: TradeManager.h:635
Definition: Portfolio.h:26
#define HKU_API
Definition: DataType.h:12
AFPtr m_af
Definition: Portfolio.h:64
void save(Archive &ar, const hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:20
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
shared_ptr< SelectorBase > SelectorPtr
客户程序都应使用该指针类型
Definition: SelectorBase.h:135
SEPtr getSE()
Definition: Portfolio.h:43
string m_name
Definition: Portfolio.h:61
shared_ptr< Portfolio > PFPtr
Definition: Portfolio.h:106
string name() const
Definition: Portfolio.h:37
shared_ptr< SelectorBase > SEPtr
Definition: SelectorBase.h:136
#define PARAMETER_SUPPORT
Definition: Parameter.h:233
AFPtr getAF()
Definition: Portfolio.h:44
void setSE(const SEPtr &se)
Definition: Portfolio.h:47
TMPtr m_tm
Definition: Portfolio.h:62
#define UTF8ToGB(s)
Definition: util.h:56
shared_ptr< TradeManager > TMPtr
Definition: TradeManager.h:636
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
shared_ptr< Portfolio > PortfolioPtr
客户程序都应使用该指针类型
Definition: Portfolio.h:105
shared_ptr< AllocateFundsBase > AFPtr
Definition: AllocateFundsBase.h:181