Hikyuu
TradeCostBase.h
浏览该文件的文档.
1 /*
2  * TradeCostBase.h
3  *
4  * Created on: 2013-2-13
5  * Author: fasiondog
6  */
7 
8 #ifndef TRADECOSTBASE_H_
9 #define TRADECOSTBASE_H_
10 
11 #include "../Stock.h"
12 #include "../utilities/util.h"
13 #include "../utilities/Parameter.h"
14 #include "CostRecord.h"
15 
16 #if HKU_SUPPORT_SERIALIZATION
17 #include <boost/serialization/shared_ptr.hpp>
18 #include <boost/serialization/assume_abstract.hpp>
19 #include <boost/serialization/base_object.hpp>
20 #endif
21 
22 namespace hku {
23 
30 
31 public:
32  TradeCostBase(const string& name);
33  virtual ~TradeCostBase();
34 
35  typedef shared_ptr<TradeCostBase> TradeCostPtr;
37  TradeCostPtr clone();
38 
40  const string& name() const {
41  return m_name;
42  }
43 
52  virtual CostRecord getBuyCost(const Datetime& datetime,
53  const Stock& stock, price_t price, size_t num) const = 0;
54 
63  virtual CostRecord getSellCost(const Datetime& datetime,
64  const Stock& stock, price_t price, size_t num) const = 0;
65 
71  virtual CostRecord getBorrowCashCost(const Datetime& datetime,
72  price_t cash) const {
73  return CostRecord();
74  }
75 
83  const Datetime& borrow_datetime,
84  const Datetime& return_datetime,
85  price_t cash) const {
86  return CostRecord();
87  }
88 
96  virtual CostRecord getBorrowStockCost(const Datetime& datetime,
97  const Stock& stock, price_t price, size_t num) const {
98  return CostRecord();
99  }
100 
109  virtual CostRecord getReturnStockCost(const Datetime& borrow_datetime,
110  const Datetime& return_datetime,
111  const Stock& stock, price_t price, size_t num) const {
112  return CostRecord();
113  }
114 
115 
117  virtual TradeCostPtr _clone() = 0;
118 
119 private:
120  string m_name;
121 
122 //============================================
123 // 序列化支持
124 //============================================
125 #if HKU_SUPPORT_SERIALIZATION
126 private:
127  friend class boost::serialization::access;
128  template<class Archive>
129  void serialize(Archive & ar, const unsigned int version) {
130  ar & BOOST_SERIALIZATION_NVP(m_name);
131  ar & BOOST_SERIALIZATION_NVP(m_params);
132  }
133 #endif /* HKU_SUPPORT_SERIALIZATION */
134 };
135 
136 #if HKU_SUPPORT_SERIALIZATION
137 BOOST_SERIALIZATION_ASSUME_ABSTRACT(TradeCostBase)
138 #endif
139 
140 #if HKU_SUPPORT_SERIALIZATION
141 
154 #define TRADE_COST_NO_PRIVATE_MEMBER_SERIALIZATION private:\
155  friend class boost::serialization::access; \
156  template<class Archive> \
157  void serialize(Archive & ar, const unsigned int version) { \
158  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(TradeCostBase); \
159  }
160 #else
161 #define TRADE_COST_NO_PRIVATE_MEMBER_SERIALIZATION
162 #endif
163 
164 
169 typedef shared_ptr<TradeCostBase> TradeCostPtr;
170 
171 HKU_API std::ostream & operator<<(std::ostream &, const TradeCostBase&);
172 HKU_API std::ostream & operator<<(std::ostream &, const TradeCostPtr&);
173 
174 } /* namespace hku */
175 #endif /* TRADECOSTBASE_H_ */
virtual CostRecord getBorrowCashCost(const Datetime &datetime, price_t cash) const
计算借入现金花费的成本
Definition: TradeCostBase.h:71
virtual CostRecord getBorrowStockCost(const Datetime &datetime, const Stock &stock, price_t price, size_t num) const
计算融劵借入成本
Definition: TradeCostBase.h:96
virtual CostRecord getReturnStockCost(const Datetime &borrow_datetime, const Datetime &return_datetime, const Stock &stock, price_t price, size_t num) const
计算融劵归还成本
Definition: TradeCostBase.h:109
日期类型
Definition: Datetime.h:33
shared_ptr< TradeCostBase > TradeCostPtr
交易成本算法指针
Definition: TradeCostBase.h:169
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
const string & name() const
获取名称
Definition: TradeCostBase.h:40
shared_ptr< TradeCostBase > TradeCostPtr
Definition: TradeCostBase.h:35
#define HKU_API
Definition: DataType.h:12
virtual CostRecord getReturnCashCost(const Datetime &borrow_datetime, const Datetime &return_datetime, price_t cash) const
计算归还融资成本
Definition: TradeCostBase.h:82
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
double price_t
Definition: DataType.h:53
成本记录
Definition: CostRecord.h:27
#define PARAMETER_SUPPORT
Definition: Parameter.h:233
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
交易成本算法接口基类
Definition: TradeCostBase.h:28