14 #include "../environment/EnvironmentBase.h" 15 #include "../condition/ConditionBase.h" 16 #include "../moneymanager/MoneyManagerBase.h" 17 #include "../signal/SignalBase.h" 18 #include "../stoploss/StoplossBase.h" 19 #include "../profitgoal/ProfitGoalBase.h" 20 #include "../slippage/SlippageBase.h" 23 #include "../../serialization/KData_serialization.h" 36 System(
const string& name);
55 void name(
const string& name);
87 return m_sellShortRequest;
91 return m_buyShortRequest;
102 void reset(
bool with_tm,
bool with_ev);
113 SystemPtr clone(
bool with_tm,
bool with_ev);
119 void setTO(
const KData& kdata);
122 void run(
const KQuery& query,
bool reset=
true);
123 void run(
const Stock& stock,
const KQuery& query,
bool reset=
true);
125 void runMoment(
const Datetime& datetime);
126 void runMoment(
const KRecord& record);
129 void clearDelayRequest();
132 bool haveDelayRequest()
const;
137 bool _environmentIsValid(
const Datetime& datetime);
139 bool _conditionIsValid(
const Datetime& datetime);
164 void _buy(
const KRecord& today, Part from);
165 void _buyNow(
const KRecord& today, Part from);
166 void _buyDelay(
const KRecord& today);
167 void _submitBuyRequest(
const KRecord& today, Part from);
169 void _sell(
const KRecord& today, Part from);
170 void _sellNow(
const KRecord& today, Part from);
171 void _sellDelay(
const KRecord& today);
172 void _submitSellRequest(
const KRecord& today, Part from);
174 void _sellShort(
const KRecord& today, Part from);
175 void _sellShortNow(
const KRecord& today, Part from);
176 void _sellShortDelay(
const KRecord& today);
177 void _submitSellShortRequest(
const KRecord& today, Part from);
179 void _buyShort(
const KRecord& today, Part from);
180 void _buyShortNow(
const KRecord& today, Part from);
181 void _buyShortDelay(
const KRecord& today);
182 void _submitBuyShortRequest(
const KRecord& today, Part from);
184 void _processRequest(
const KRecord& today);
186 void _runMoment(
const KRecord& record);
223 #if HKU_SUPPORT_SERIALIZATION 225 friend class boost::serialization::access;
226 template<
class Archive>
227 void save(Archive & ar,
const unsigned int version)
const {
229 ar & boost::serialization::make_nvp(
"m_name", name);
230 ar & BOOST_SERIALIZATION_NVP(m_params);
232 ar & BOOST_SERIALIZATION_NVP(m_tm);
233 ar & BOOST_SERIALIZATION_NVP(m_ev);
234 ar & BOOST_SERIALIZATION_NVP(m_cn);
235 ar & BOOST_SERIALIZATION_NVP(m_mm);
236 ar & BOOST_SERIALIZATION_NVP(m_sg);
237 ar & BOOST_SERIALIZATION_NVP(m_st);
238 ar & BOOST_SERIALIZATION_NVP(m_tp);
239 ar & BOOST_SERIALIZATION_NVP(m_pg);
240 ar & BOOST_SERIALIZATION_NVP(m_sp);
243 ar & BOOST_SERIALIZATION_NVP(m_kdata);
245 ar & BOOST_SERIALIZATION_NVP(m_pre_ev_valid);
246 ar & BOOST_SERIALIZATION_NVP(m_pre_cn_valid);
248 ar & BOOST_SERIALIZATION_NVP(m_buy_days);
249 ar & BOOST_SERIALIZATION_NVP(m_sell_short_days);
250 ar & BOOST_SERIALIZATION_NVP(m_trade_list);
251 ar & BOOST_SERIALIZATION_NVP(m_lastTakeProfit);
252 ar & BOOST_SERIALIZATION_NVP(m_lastShortTakeProfit);
254 ar & BOOST_SERIALIZATION_NVP(m_buyRequest);
255 ar & BOOST_SERIALIZATION_NVP(m_sellRequest);
256 ar & BOOST_SERIALIZATION_NVP(m_sellShortRequest);
257 ar & BOOST_SERIALIZATION_NVP(m_buyShortRequest);
260 template<
class Archive>
261 void load(Archive & ar,
const unsigned int version) {
263 ar & boost::serialization::make_nvp(
"m_name", name);
265 ar & BOOST_SERIALIZATION_NVP(m_params);
267 ar & BOOST_SERIALIZATION_NVP(m_tm);
268 ar & BOOST_SERIALIZATION_NVP(m_ev);
269 ar & BOOST_SERIALIZATION_NVP(m_cn);
270 ar & BOOST_SERIALIZATION_NVP(m_mm);
271 ar & BOOST_SERIALIZATION_NVP(m_sg);
272 ar & BOOST_SERIALIZATION_NVP(m_st);
273 ar & BOOST_SERIALIZATION_NVP(m_tp);
274 ar & BOOST_SERIALIZATION_NVP(m_pg);
275 ar & BOOST_SERIALIZATION_NVP(m_sp);
278 ar & BOOST_SERIALIZATION_NVP(m_kdata);
281 ar & BOOST_SERIALIZATION_NVP(m_pre_ev_valid);
282 ar & BOOST_SERIALIZATION_NVP(m_pre_cn_valid);
284 ar & BOOST_SERIALIZATION_NVP(m_buy_days);
285 ar & BOOST_SERIALIZATION_NVP(m_sell_short_days);
286 ar & BOOST_SERIALIZATION_NVP(m_trade_list);
287 ar & BOOST_SERIALIZATION_NVP(m_lastTakeProfit);
288 ar & BOOST_SERIALIZATION_NVP(m_lastShortTakeProfit);
290 ar & BOOST_SERIALIZATION_NVP(m_buyRequest);
291 ar & BOOST_SERIALIZATION_NVP(m_sellRequest);
292 ar & BOOST_SERIALIZATION_NVP(m_sellShortRequest);
293 ar & BOOST_SERIALIZATION_NVP(m_buyShortRequest);
296 BOOST_SERIALIZATION_SPLIT_MEMBER()
322 return m_ev ? m_ev->isValid(datetime) :
true;
327 return m_cn ? m_cn->isValid(datetime) :
true;
332 return m_mm ? m_mm->getBuyNumber(datetime, m_stock, price, risk, from) : 0;
337 return m_mm ? m_mm->getSellNumber(datetime, m_stock, price, risk, from) : 0;
342 return m_mm ? m_mm->getSellShortNumber(datetime, m_stock, price, risk, from) : 0;
347 return m_mm ? m_mm->getBuyShortNumber(datetime, m_stock, price, risk, from) : 0;
352 return m_sp ? m_sp->getRealBuyPrice(datetime, planPrice) : planPrice;
357 return m_sp ? m_sp->getRealSellPrice(datetime, planPrice) : planPrice;
362 return m_st ? m_st->getPrice(datetime, price) : 0.0;
367 return m_st ? m_st->getShortPrice(datetime, price) : 0.0;
372 return m_tp ? m_tp->getPrice(datetime, 0.0) : 0.0;
377 return m_pg ? m_pg->getGoal(datetime, price) :
Null<price_t>();
382 return m_pg ? m_pg->getShortGoal(datetime, price) : 0.0;
Stock getStock() const
获取关联的Stock,如果没有关联返回Null<Stock>
Definition: KData.h:143
StoplossPtr getTP() const
Definition: System.h:64
bool m_pre_ev_valid
Definition: System.h:203
size_t _getSellNumber(const Datetime &, price_t price, price_t risk, Part from)
Definition: System.h:336
Stock getStock() const
Definition: System.h:78
price_t _getRealBuyPrice(const Datetime &datetime, price_t planPrice)
Definition: System.h:351
void setTP(const StoplossPtr &tp)
Definition: System.h:74
string name() const
获取名称
Definition: System.h:312
price_t _getGoalPrice(const Datetime &datetime, price_t price)
Definition: System.h:376
shared_ptr< ProfitGoalBase > ProfitGoalPtr
客户程序都应使用该指针类型
Definition: ProfitGoalBase.h:162
KData getTO() const
Definition: System.h:57
StoplossPtr getST() const
Definition: System.h:63
price_t m_lastShortTakeProfit
Definition: System.h:210
K线数据记录
Definition: KRecord.h:19
shared_ptr< System > SystemPtr
Definition: System.h:104
MoneyManagerPtr getMM() const
Definition: System.h:59
const TradeRequest & getBuyTradeRequest() const
Definition: System.h:83
K线数据
Definition: KData.h:19
EnvironmentPtr getEV() const
Definition: System.h:60
price_t m_lastTakeProfit
Definition: System.h:209
const TradeRecordList & getTradeRecordList() const
Definition: System.h:81
按索引方式查询K线数据条件
Definition: KQuery.h:19
const TradeRequest & getSellTradeRequest() const
Definition: System.h:84
vector< TradeRecord > TradeRecordList
Definition: TradeRecord.h:142
SignalPtr m_sg
Definition: System.h:193
const TradeRequest & getBuyShortTradeRequest() const
Definition: System.h:90
ProfitGoalPtr m_pg
Definition: System.h:196
price_t _getShortStoplossPrice(const Datetime &datetime, price_t price)
Definition: System.h:366
void setST(const StoplossPtr &st)
Definition: System.h:73
void setSP(const SlippagePtr &sp)
Definition: System.h:76
shared_ptr< EnvironmentBase > EnvironmentPtr
客户程序都应使用该指针类型
Definition: EnvironmentBase.h:160
bool _environmentIsValid(const Datetime &datetime)
Definition: System.h:321
交易记录
Definition: TradeRecord.h:60
const TradeRequest & getSellShortTradeRequest() const
Definition: System.h:86
提供指定给定类型的Null值
Definition: Null.h:22
int m_buy_days
Definition: System.h:206
日期类型
Definition: Datetime.h:33
#define GBToUTF8(s)
Definition: util.h:55
Stock基类,Application中一般使用StockPtr进行操作
Definition: Stock.h:27
SlippagePtr getSP() const
Definition: System.h:66
SignalPtr getSG() const
Definition: System.h:62
size_t _getSellShortNumber(const Datetime &, price_t price, price_t risk, Part from)
Definition: System.h:341
SystemPart
系统关联部件(各自策略)枚举定义,用于修改相关部件参数
Definition: SystemPart.h:19
void load(Archive &ar, hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:34
shared_ptr< SlippageBase > SlippagePtr
客户程序都应使用该指针类型,操作移滑价差算法
Definition: SlippageBase.h:153
TradeManagerPtr getTM() const
Definition: System.h:58
void setTM(const TradeManagerPtr &tm)
Definition: System.h:68
EnvironmentPtr m_ev
Definition: System.h:191
void setCN(const ConditionPtr &cn)
Definition: System.h:71
int m_sell_short_days
Definition: System.h:207
shared_ptr< MoneyManagerBase > MoneyManagerPtr
客户程序都应使用该指针类型
Definition: MoneyManagerBase.h:217
shared_ptr< TradeManager > TradeManagerPtr
客户程序应使用此类型进行实际操作
Definition: TradeManager.h:635
#define HKU_API
Definition: DataType.h:12
TradeRecordList m_trade_list
Definition: System.h:208
vector< SystemPtr > SystemList
Definition: System.h:306
shared_ptr< SignalBase > SignalPtr
客户程序都应使用该指针类型,操作信号指示器
Definition: SignalBase.h:185
void save(Archive &ar, const hku::Block &blk, unsigned int version)
Definition: Block_serialization.h:20
void setStock(const Stock &stk)
Definition: System.h:79
void setSG(const SignalPtr &sg)
Definition: System.h:72
void setEV(const EnvironmentPtr &ev)
Definition: System.h:70
bool _conditionIsValid(const Datetime &datetime)
Definition: System.h:326
shared_ptr< StoplossBase > StoplossPtr
客户程序都应使用该指针类型,操作止损策略实例
Definition: StoplossBase.h:167
TradeRequest m_buyRequest
Definition: System.h:212
TradeRequest m_sellRequest
Definition: System.h:213
HKU_API std::ostream & operator<<(std::ostream &os, const Block &blk)
Definition: Block.cpp:13
ConditionPtr m_cn
Definition: System.h:192
string m_name
Definition: System.h:199
double price_t
Definition: DataType.h:53
KData m_kdata
Definition: System.h:201
TradeManagerPtr m_tm
Definition: System.h:189
void setPG(const ProfitGoalPtr &pg)
Definition: System.h:75
TradeRequest m_buyShortRequest
Definition: System.h:215
size_t _getBuyNumber(const Datetime &, price_t price, price_t risk, Part from)
Definition: System.h:331
size_t _getBuyShortNumber(const Datetime &, price_t price, price_t risk, Part from)
Definition: System.h:346
shared_ptr< System > SYSPtr
Definition: System.h:305
bool m_pre_cn_valid
Definition: System.h:204
SlippagePtr m_sp
Definition: System.h:197
MoneyManagerPtr m_mm
Definition: System.h:190
交易系统基类
Definition: System.h:31
#define PARAMETER_SUPPORT
Definition: Parameter.h:233
StoplossPtr m_st
Definition: System.h:194
void setMM(const MoneyManagerPtr &mm)
Definition: System.h:69
交易请求记录
Definition: TradeRequest.h:20
ProfitGoalPtr getPG() const
Definition: System.h:65
price_t _getStoplossPrice(const Datetime &datetime, price_t price)
Definition: System.h:361
#define UTF8ToGB(s)
Definition: util.h:56
ConditionPtr getCN() const
Definition: System.h:61
price_t _getRealSellPrice(const Datetime &datetime, price_t planPrice)
Definition: System.h:356
Stock m_stock
Definition: System.h:200
StoplossPtr m_tp
Definition: System.h:195
shared_ptr< ConditionBase > ConditionPtr
客户程序都应使用该指针类型
Definition: ConditionBase.h:163
Hikyuu核心命名空间,包含股票数据的管理、指标实现、交易系统框架等
Definition: Block.cpp:11
shared_ptr< System > SystemPtr
客户程序应使用该指针进行操作
Definition: System.h:304
price_t _getShortGoalPrice(const Datetime &, price_t price)
Definition: System.h:381
price_t _getTakeProfitPrice(const Datetime &datetime)
Definition: System.h:371
TradeRequest m_sellShortRequest
Definition: System.h:214
SystemPart Part
Definition: System.h:49