hikyuu 2.3.0__py3-none-win_amd64.whl → 2.5.0__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hikyuu/__init__.py +438 -6
- hikyuu/__init__.pyi +791 -0
- hikyuu/analysis/__init__.pyi +487 -0
- hikyuu/analysis/analysis.pyi +517 -0
- hikyuu/core.pyi +482 -0
- hikyuu/cpp/__init__.pyi +3 -0
- hikyuu/cpp/boost_date_time-mt.dll +0 -0
- hikyuu/cpp/boost_serialization-mt.dll +0 -0
- hikyuu/cpp/boost_wserialization-mt.dll +0 -0
- hikyuu/cpp/core310.pyd +0 -0
- hikyuu/cpp/core311.pyd +0 -0
- hikyuu/cpp/core312.pyd +0 -0
- hikyuu/cpp/core312.pyi +12867 -0
- hikyuu/cpp/core313.pyd +0 -0
- hikyuu/cpp/core38.pyd +0 -0
- hikyuu/cpp/core39.pyd +0 -0
- hikyuu/cpp/hikyuu.dll +0 -0
- hikyuu/cpp/hikyuu.lib +0 -0
- hikyuu/cpp/sqlite3.dll +0 -0
- hikyuu/data/common_mysql.py +24 -7
- hikyuu/data/common_pytdx.py +17 -1
- hikyuu/data/em_block_to_mysql.py +3 -2
- hikyuu/data/em_block_to_sqlite.py +8 -3
- hikyuu/data/mysql_upgrade/0025.sql +61 -0
- hikyuu/data/mysql_upgrade/0026.sql +9 -0
- hikyuu/data/sqlite_upgrade/0025.sql +63 -0
- hikyuu/data/sqlite_upgrade/0026.sql +10 -0
- hikyuu/draw/__init__.pyi +35 -0
- hikyuu/draw/drawplot/__init__.py +3 -0
- hikyuu/draw/drawplot/__init__.pyi +134 -0
- hikyuu/draw/drawplot/bokeh_draw.pyi +796 -0
- hikyuu/draw/drawplot/common.pyi +10 -0
- hikyuu/draw/drawplot/echarts_draw.py +219 -24
- hikyuu/draw/drawplot/echarts_draw.pyi +682 -0
- hikyuu/draw/drawplot/matplotlib_draw.py +18 -3
- hikyuu/draw/drawplot/matplotlib_draw.pyi +1101 -0
- hikyuu/draw/elder.pyi +44 -0
- hikyuu/draw/kaufman.pyi +38 -0
- hikyuu/draw/volume.pyi +31 -0
- hikyuu/examples/notebook/Demo/Demo2.ipynb +1 -1
- hikyuu/extend.py +9 -3
- hikyuu/extend.pyi +636 -0
- hikyuu/fetcher/stock/zh_block_em.py +118 -51
- hikyuu/gui/data/EscapetimeThread.py +4 -4
- hikyuu/gui/data/ImportBlockInfoTask.py +3 -2
- hikyuu/gui/data/ImportHistoryFinanceTask.py +2 -0
- hikyuu/gui/data/MainWindow.py +48 -42
- hikyuu/gui/importdata.py +13 -26
- hikyuu/hub.py +2 -4
- hikyuu/hub.pyi +254 -0
- hikyuu/include/hikyuu/DataType.h +5 -0
- hikyuu/include/hikyuu/Stock.h +7 -0
- hikyuu/include/hikyuu/indicator/Indicator.h +8 -1
- hikyuu/include/hikyuu/indicator/Indicator2InImp.h +65 -0
- hikyuu/include/hikyuu/indicator/IndicatorImp.h +4 -3
- hikyuu/include/hikyuu/indicator/build_in.h +12 -0
- hikyuu/include/hikyuu/indicator/crt/ADVANCE.h +3 -1
- hikyuu/include/hikyuu/indicator/crt/CONTEXT.h +2 -2
- hikyuu/include/hikyuu/indicator/crt/CORR.h +4 -2
- hikyuu/include/hikyuu/indicator/crt/COST.h +3 -0
- hikyuu/include/hikyuu/indicator/crt/CYCLE.h +24 -0
- hikyuu/include/hikyuu/indicator/crt/DECLINE.h +3 -1
- hikyuu/include/hikyuu/indicator/crt/DISCARD.h +27 -0
- hikyuu/include/hikyuu/indicator/crt/DMA.h +2 -1
- hikyuu/include/hikyuu/indicator/crt/HSL.h +1 -13
- hikyuu/include/hikyuu/indicator/crt/INBLOCK.h +31 -0
- hikyuu/include/hikyuu/indicator/crt/INDEX.h +60 -0
- hikyuu/include/hikyuu/indicator/crt/INSUM.h +5 -2
- hikyuu/include/hikyuu/indicator/crt/ISINF.h +28 -0
- hikyuu/include/hikyuu/indicator/crt/ISINFA.h +28 -0
- hikyuu/include/hikyuu/indicator/crt/ISNA.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/JUMPDOWN.h +24 -0
- hikyuu/include/hikyuu/indicator/crt/JUMPUP.h +24 -0
- hikyuu/include/hikyuu/indicator/crt/LASTVALUE.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/LIUTONGPAN.h +1 -0
- hikyuu/include/hikyuu/indicator/crt/REPLACE.h +29 -0
- hikyuu/include/hikyuu/indicator/crt/SPEARMAN.h +3 -2
- hikyuu/include/hikyuu/indicator/crt/WINNER.h +38 -0
- hikyuu/include/hikyuu/indicator/imp/IContext.h +1 -1
- hikyuu/include/hikyuu/indicator/imp/ICorr.h +7 -22
- hikyuu/include/hikyuu/indicator/imp/ICost.h +31 -0
- hikyuu/include/hikyuu/indicator/imp/ICycle.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IDiscard.h +28 -0
- hikyuu/include/hikyuu/indicator/imp/IDma.h +7 -24
- hikyuu/include/hikyuu/indicator/imp/IHsl.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IInBlock.h +30 -0
- hikyuu/include/hikyuu/indicator/imp/IIndex.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IIsInf.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IIsInfa.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IIsNa.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IJumpDown.h +24 -0
- hikyuu/include/hikyuu/indicator/imp/IJumpUp.h +24 -0
- hikyuu/include/hikyuu/indicator/imp/ILastValue.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/IReplace.h +26 -0
- hikyuu/include/hikyuu/indicator/imp/ISpearman.h +6 -21
- hikyuu/include/hikyuu/indicator/imp/IWinner.h +26 -0
- hikyuu/include/hikyuu/indicator_talib/imp/TaMavp.h +6 -20
- hikyuu/include/hikyuu/indicator_talib/imp/ta_defines.h +14 -65
- hikyuu/include/hikyuu/indicator_talib/imp/ta_imp.h +54 -90
- hikyuu/include/hikyuu/indicator_talib/ta_crt.h +11 -9
- hikyuu/include/hikyuu/strategy/RunPortfolioInStrategy.h +3 -4
- hikyuu/include/hikyuu/strategy/Strategy.h +4 -5
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +5 -1
- hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +1 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedWeightList.h +22 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixedWeightListAllocateFunds.h +25 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +17 -4
- hikyuu/include/hikyuu/trade_sys/moneymanager/build_in.h +2 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCapital.h +6 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCapitalFunds.h +26 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedCountTps.h +27 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedRisk.h +6 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_FixedUnits.h +6 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/crt/MM_WilliamsFixedRisk.h +7 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCapitalFundsMM.h +28 -0
- hikyuu/include/hikyuu/trade_sys/moneymanager/imp/FixedCountTpsMM.h +44 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/build_in.h +1 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_Weight.h +30 -0
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/WeightMultiFactor.h +41 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +38 -37
- hikyuu/include/hikyuu/trade_sys/portfolio/build_in.h +1 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/crt/PF_Simple.h +25 -1
- hikyuu/include/hikyuu/trade_sys/portfolio/crt/PF_WithoutAF.h +50 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/imp/SimplePortfolio.h +53 -0
- hikyuu/include/hikyuu/trade_sys/portfolio/imp/WithoutAFPortfolio.h +57 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector.h +7 -0
- hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +51 -5
- hikyuu/include/hikyuu/trade_sys/signal/build_in.h +2 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Bool.h +2 -1
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_Logic.h +37 -0
- hikyuu/include/hikyuu/trade_sys/signal/crt/SG_OneSide.h +28 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/OneSideSignal.h +46 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/AddSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/AddValueSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/DivSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/DivValueSignal.h +22 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/MulSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/MulValueSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/OperatorSignal.h +68 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/OperatorValueSignal.h +67 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/SubSignal.h +19 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/SubValueSignal.h +22 -0
- hikyuu/include/hikyuu/trade_sys/signal/imp/logic/__init__.py +1 -0
- hikyuu/include/hikyuu/trade_sys/stoploss/crt/ST_Indicator.h +1 -1
- hikyuu/include/hikyuu/trade_sys/stoploss/imp/IndicatorStoploss.h +3 -4
- hikyuu/include/hikyuu/utilities/FilterNode.h +2 -2
- hikyuu/include/hikyuu/utilities/Log.h +42 -15
- hikyuu/include/hikyuu/utilities/datetime/Datetime.h +1 -1
- hikyuu/include/hikyuu/utilities/datetime/TimeDelta.h +2 -2
- hikyuu/include/hikyuu/utilities/db_connect/DBCondition.h +4 -0
- hikyuu/include/hikyuu/utilities/db_connect/SQLResultSet.h +2 -2
- hikyuu/include/hikyuu/utilities/db_connect/mysql/MySQLConnect.h +5 -1
- hikyuu/include/hikyuu/utilities/node/NodeServer.h +4 -4
- hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +2 -2
- hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +2 -2
- hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +5 -5
- hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +2 -2
- hikyuu/include/hikyuu/utilities/thread/algorithm.h +16 -10
- hikyuu/include/hikyuu/version.h +4 -4
- hikyuu/indicator/indicator.py +1 -0
- hikyuu/interactive.py +3 -266
- hikyuu/trade_manage/__init__.pyi +584 -0
- hikyuu/trade_manage/broker.pyi +54 -0
- hikyuu/trade_manage/broker_easytrader.pyi +21 -0
- hikyuu/trade_manage/broker_mail.pyi +55 -0
- hikyuu/trade_manage/trade.pyi +590 -0
- hikyuu/util/__init__.pyi +55 -0
- hikyuu/util/check.pyi +59 -0
- hikyuu/util/mylog.pyi +70 -0
- hikyuu/util/notebook.pyi +23 -0
- hikyuu/util/singleton.pyi +18 -0
- hikyuu/util/slice.pyi +8 -0
- {hikyuu-2.3.0.dist-info → hikyuu-2.5.0.dist-info}/METADATA +3 -2
- {hikyuu-2.3.0.dist-info → hikyuu-2.5.0.dist-info}/RECORD +178 -95
- {hikyuu-2.3.0.dist-info → hikyuu-2.5.0.dist-info}/top_level.txt +1 -0
- hikyuu/deprecated.py +0 -651
- {hikyuu-2.3.0.dist-info → hikyuu-2.5.0.dist-info}/LICENSE +0 -0
- {hikyuu-2.3.0.dist-info → hikyuu-2.5.0.dist-info}/WHEEL +0 -0
- {hikyuu-2.3.0.dist-info → hikyuu-2.5.0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-18
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef TRADE_SYS_PORTFOLIO_WITHOUTAF_H_
|
|
10
|
+
#define TRADE_SYS_PORTFOLIO_WITHOUTAF_H_
|
|
11
|
+
|
|
12
|
+
#include "hikyuu/trade_sys/portfolio/Portfolio.h"
|
|
13
|
+
|
|
14
|
+
namespace hku {
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
* 无资金分配算法的资产组合
|
|
18
|
+
* @ingroup WithoutAFPortfolio
|
|
19
|
+
*/
|
|
20
|
+
class HKU_API WithoutAFPortfolio : public Portfolio {
|
|
21
|
+
PORTFOLIO_IMP(WithoutAFPortfolio)
|
|
22
|
+
|
|
23
|
+
public:
|
|
24
|
+
WithoutAFPortfolio();
|
|
25
|
+
WithoutAFPortfolio(const TradeManagerPtr& tm, const SelectorPtr& se);
|
|
26
|
+
virtual ~WithoutAFPortfolio();
|
|
27
|
+
|
|
28
|
+
private:
|
|
29
|
+
void initParam();
|
|
30
|
+
void _runMomentWithoutAFNotForceSell(const Datetime& date, const Datetime& nextCycle,
|
|
31
|
+
bool adjust);
|
|
32
|
+
void _runMomentWithoutAFForceSell(const Datetime& date, const Datetime& nextCycle, bool adjust);
|
|
33
|
+
|
|
34
|
+
private:
|
|
35
|
+
SystemList m_force_sell_sys_list; // 强制卖出的系统列表
|
|
36
|
+
list<SYSPtr> m_running_sys_list; // 当前运行中的系统列表,需要依次执行
|
|
37
|
+
SystemList m_selected_list; // 本轮周期内选中的系统列表
|
|
38
|
+
|
|
39
|
+
// 记录指派给SE的系统到内部实际系统映射
|
|
40
|
+
unordered_map<SYSPtr, SYSPtr> m_se_sys_to_pf_sys_dict;
|
|
41
|
+
|
|
42
|
+
//============================================
|
|
43
|
+
// 序列化支持
|
|
44
|
+
//============================================
|
|
45
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
46
|
+
private:
|
|
47
|
+
friend class boost::serialization::access;
|
|
48
|
+
template <class Archive>
|
|
49
|
+
void serialize(Archive& ar, const unsigned int version) {
|
|
50
|
+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(Portfolio);
|
|
51
|
+
}
|
|
52
|
+
#endif /* HKU_SUPPORT_SERIALIZATION */
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
} /* namespace hku */
|
|
56
|
+
|
|
57
|
+
#endif /* TRADE_SYS_PORTFOLIO_WITHOUTAF_H_ */
|
|
@@ -30,6 +30,13 @@ public:
|
|
|
30
30
|
m_inds = inds;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
private:
|
|
34
|
+
ScoreRecordList filterOnlyShouldBuy(Datetime date, const ScoreRecordList& scores, size_t topn);
|
|
35
|
+
ScoreRecordList filterTopN(Datetime date, const ScoreRecordList& raw_scores, size_t topn,
|
|
36
|
+
bool only_should_buy);
|
|
37
|
+
ScoreRecordList filterTopNReverse(Datetime date, const ScoreRecordList& raw_scores, size_t topn,
|
|
38
|
+
bool only_should_buy, bool ignore_null);
|
|
39
|
+
|
|
33
40
|
private:
|
|
34
41
|
IndicatorList m_inds;
|
|
35
42
|
MFPtr m_mf;
|
|
@@ -44,6 +44,22 @@ public:
|
|
|
44
44
|
*/
|
|
45
45
|
bool shouldSell(const Datetime& datetime) const;
|
|
46
46
|
|
|
47
|
+
/**
|
|
48
|
+
* 获取指定时刻的买入信号数值,返回值小于等于0时,表示无买入信号
|
|
49
|
+
* @param datetime
|
|
50
|
+
* @return double
|
|
51
|
+
*/
|
|
52
|
+
double getBuyValue(const Datetime& datetime) const;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 获取指定时刻的买出信号数值,返回值大于等于0时,表示无卖出信号
|
|
56
|
+
* @param datetime
|
|
57
|
+
* @return double
|
|
58
|
+
*/
|
|
59
|
+
double getSellValue(const Datetime& datetime) const;
|
|
60
|
+
|
|
61
|
+
double getValue(const Datetime& datetime) const;
|
|
62
|
+
|
|
47
63
|
/**
|
|
48
64
|
* 下一时刻是否可以买入,相当于最后时刻是否指示买入
|
|
49
65
|
*/
|
|
@@ -60,17 +76,21 @@ public:
|
|
|
60
76
|
/** 获取所有卖出指示日期列表 */
|
|
61
77
|
DatetimeList getSellSignal() const;
|
|
62
78
|
|
|
79
|
+
void _addSignal(const Datetime& datetime, double value);
|
|
80
|
+
|
|
63
81
|
/**
|
|
64
82
|
* 加入买入信号,在_calculate中调用
|
|
65
83
|
* @param datetime 发生买入信号的日期
|
|
84
|
+
* @param value 信号值,默认为1.0, 必须大于0,否则抛出异常
|
|
66
85
|
*/
|
|
67
|
-
void _addBuySignal(const Datetime& datetime);
|
|
86
|
+
void _addBuySignal(const Datetime& datetime, double value = 1.0);
|
|
68
87
|
|
|
69
88
|
/**
|
|
70
89
|
* 加入卖出信号,在_calculate中调用
|
|
71
90
|
* @param datetime
|
|
91
|
+
* @param value 信号值,默认为-1.0,必须小于0,否则抛出异常
|
|
72
92
|
*/
|
|
73
|
-
void _addSellSignal(const Datetime& datetime);
|
|
93
|
+
void _addSellSignal(const Datetime& datetime, double value = -1.0);
|
|
74
94
|
|
|
75
95
|
/**
|
|
76
96
|
* 指定交易对象,指K线数据
|
|
@@ -87,6 +107,9 @@ public:
|
|
|
87
107
|
void startCycle(const Datetime& start, const Datetime& end);
|
|
88
108
|
const Datetime& getCycleStart() const;
|
|
89
109
|
const Datetime& getCycleEnd() const;
|
|
110
|
+
bool ignoreCycle() const {
|
|
111
|
+
return m_ignore_cycle;
|
|
112
|
+
}
|
|
90
113
|
|
|
91
114
|
/** 复位操作 */
|
|
92
115
|
void reset();
|
|
@@ -116,17 +139,20 @@ private:
|
|
|
116
139
|
protected:
|
|
117
140
|
string m_name;
|
|
118
141
|
KData m_kdata;
|
|
142
|
+
bool m_calculated{false}; // 仅针对 setTO 时的计算
|
|
143
|
+
|
|
119
144
|
/* 多头持仓 */
|
|
120
145
|
bool m_hold_long;
|
|
121
146
|
/* 空头持仓 */
|
|
122
147
|
bool m_hold_short;
|
|
123
148
|
|
|
124
|
-
// 用
|
|
125
|
-
std::
|
|
126
|
-
std::
|
|
149
|
+
// 用 map 保存,以便获取是能保持顺序
|
|
150
|
+
std::map<Datetime, double> m_buySig;
|
|
151
|
+
std::map<Datetime, double> m_sellSig;
|
|
127
152
|
|
|
128
153
|
Datetime m_cycle_start;
|
|
129
154
|
Datetime m_cycle_end;
|
|
155
|
+
bool m_ignore_cycle{false}; // 特殊用途,用于 OperatorSignal
|
|
130
156
|
|
|
131
157
|
//============================================
|
|
132
158
|
// 序列化支持
|
|
@@ -142,8 +168,10 @@ private:
|
|
|
142
168
|
ar& BOOST_SERIALIZATION_NVP(m_hold_short);
|
|
143
169
|
ar& BOOST_SERIALIZATION_NVP(m_buySig);
|
|
144
170
|
ar& BOOST_SERIALIZATION_NVP(m_sellSig);
|
|
171
|
+
ar& BOOST_SERIALIZATION_NVP(m_ignore_cycle);
|
|
145
172
|
// m_kdata都是系统运行时临时设置,不需要序列化
|
|
146
173
|
// ar & BOOST_SERIALIZATION_NVP(m_kdata);
|
|
174
|
+
// ar & BOOST_SERIALIZATION_NVP(m_calculated);
|
|
147
175
|
}
|
|
148
176
|
|
|
149
177
|
template <class Archive>
|
|
@@ -154,8 +182,10 @@ private:
|
|
|
154
182
|
ar& BOOST_SERIALIZATION_NVP(m_hold_short);
|
|
155
183
|
ar& BOOST_SERIALIZATION_NVP(m_buySig);
|
|
156
184
|
ar& BOOST_SERIALIZATION_NVP(m_sellSig);
|
|
185
|
+
ar& BOOST_SERIALIZATION_NVP(m_ignore_cycle);
|
|
157
186
|
// m_kdata都是系统运行时临时设置,不需要序列化
|
|
158
187
|
// ar & BOOST_SERIALIZATION_NVP(m_kdata);
|
|
188
|
+
// ar & BOOST_SERIALIZATION_NVP(m_calculated);
|
|
159
189
|
}
|
|
160
190
|
|
|
161
191
|
BOOST_SERIALIZATION_SPLIT_MEMBER()
|
|
@@ -236,6 +266,22 @@ inline const Datetime& SignalBase::getCycleEnd() const {
|
|
|
236
266
|
return m_cycle_end;
|
|
237
267
|
}
|
|
238
268
|
|
|
269
|
+
inline double SignalBase::getValue(const Datetime& datetime) const {
|
|
270
|
+
return getBuyValue(datetime) + getSellValue(datetime);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
inline void SignalBase::_addBuySignal(const Datetime& datetime, double value) {
|
|
274
|
+
HKU_IF_RETURN(std::isnan(value), void());
|
|
275
|
+
HKU_CHECK(value > 0.0, "buy value muse be > 0", value);
|
|
276
|
+
_addSignal(datetime, value);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
inline void SignalBase::_addSellSignal(const Datetime& datetime, double value) {
|
|
280
|
+
HKU_IF_RETURN(std::isnan(value), void());
|
|
281
|
+
HKU_CHECK(value < 0.0, "sell value muse be > 0", value);
|
|
282
|
+
_addSignal(datetime, value);
|
|
283
|
+
}
|
|
284
|
+
|
|
239
285
|
} /* namespace hku */
|
|
240
286
|
|
|
241
287
|
#if FMT_VERSION >= 90000
|
|
@@ -18,10 +18,11 @@ namespace hku {
|
|
|
18
18
|
* 布尔信号指示器
|
|
19
19
|
* @param buy 买入指示(结果Indicator中相应位置>0则代表买入)
|
|
20
20
|
* @param sell 卖出指示(结果Indicator中相应位置>0则代表卖出)
|
|
21
|
+
* @param alternate 买入与卖出信号是否交替出现,默认为true
|
|
21
22
|
* @return 信号指示器
|
|
22
23
|
* @ingroup Signal
|
|
23
24
|
*/
|
|
24
|
-
SignalPtr HKU_API SG_Bool(const Indicator& buy, const Indicator& sell);
|
|
25
|
+
SignalPtr HKU_API SG_Bool(const Indicator& buy, const Indicator& sell, bool alternate = true);
|
|
25
26
|
|
|
26
27
|
} /* namespace hku */
|
|
27
28
|
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "../SignalBase.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
HKU_API SignalPtr operator+(const SignalPtr& sg1, const SignalPtr& sg2);
|
|
15
|
+
HKU_API SignalPtr operator-(const SignalPtr& sg1, const SignalPtr& sg2);
|
|
16
|
+
HKU_API SignalPtr operator*(const SignalPtr& sg1, const SignalPtr& sg2);
|
|
17
|
+
HKU_API SignalPtr operator/(const SignalPtr& sg1, const SignalPtr& sg2);
|
|
18
|
+
|
|
19
|
+
HKU_API SignalPtr operator+(const SignalPtr& sg, double value);
|
|
20
|
+
HKU_API SignalPtr operator-(const SignalPtr& sg, double value);
|
|
21
|
+
HKU_API SignalPtr operator*(const SignalPtr& sg, double value);
|
|
22
|
+
HKU_API SignalPtr operator/(const SignalPtr& sg, double value);
|
|
23
|
+
|
|
24
|
+
HKU_API SignalPtr operator+(double value, const SignalPtr& sg);
|
|
25
|
+
HKU_API SignalPtr operator-(double value, const SignalPtr& sg);
|
|
26
|
+
HKU_API SignalPtr operator*(double value, const SignalPtr& sg);
|
|
27
|
+
HKU_API SignalPtr operator/(double value, const SignalPtr& sg);
|
|
28
|
+
|
|
29
|
+
inline SignalPtr operator&(const SignalPtr& sg1, const SignalPtr& sg2) {
|
|
30
|
+
return sg1 * sg2;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
inline SignalPtr operator|(const SignalPtr& sg1, const SignalPtr& sg2) {
|
|
34
|
+
return sg1 + sg2;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
} // namespace hku
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-13
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef TRADE_SYS_SIGNAL_CRT_SG_ONESIDE_H_
|
|
10
|
+
#define TRADE_SYS_SIGNAL_CRT_SG_ONESIDE_H_
|
|
11
|
+
|
|
12
|
+
#include "../../../indicator/Indicator.h"
|
|
13
|
+
#include "../SignalBase.h"
|
|
14
|
+
|
|
15
|
+
namespace hku {
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 根据输入指标构建单边信号(单纯的只包含买入或卖出信号),如果指标值大于0,则加入信号
|
|
19
|
+
* @param ind 指示指标
|
|
20
|
+
* @param is_buy 加入的是买入信号还是卖出信号
|
|
21
|
+
* @return 信号指示器
|
|
22
|
+
* @ingroup Signal
|
|
23
|
+
*/
|
|
24
|
+
SignalPtr HKU_API SG_OneSide(const Indicator& ind, bool is_buy);
|
|
25
|
+
|
|
26
|
+
} /* namespace hku */
|
|
27
|
+
|
|
28
|
+
#endif /* TRADE_SYS_SIGNAL_CRT_SG_ONESIDE_H_ */
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-13
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
#ifndef TRADE_SYS_SIGNAL_IMP_ONESIDESIGNAL_H_
|
|
10
|
+
#define TRADE_SYS_SIGNAL_IMP_ONESIDESIGNAL_H_
|
|
11
|
+
|
|
12
|
+
#include "../../../indicator/Indicator.h"
|
|
13
|
+
#include "../SignalBase.h"
|
|
14
|
+
|
|
15
|
+
namespace hku {
|
|
16
|
+
|
|
17
|
+
// 根据输入指标构建单边信号(单纯的只包含买入或卖出信号),如果指标值大于0,则加入信号
|
|
18
|
+
class OneSideSignal : public SignalBase {
|
|
19
|
+
public:
|
|
20
|
+
OneSideSignal();
|
|
21
|
+
OneSideSignal(const Indicator& ind, bool is_buy);
|
|
22
|
+
virtual ~OneSideSignal();
|
|
23
|
+
|
|
24
|
+
virtual SignalPtr _clone() override;
|
|
25
|
+
virtual void _calculate(const KData& kdata) override;
|
|
26
|
+
virtual void _checkParam(const string& name) const override;
|
|
27
|
+
|
|
28
|
+
private:
|
|
29
|
+
Indicator m_ind;
|
|
30
|
+
|
|
31
|
+
//============================================
|
|
32
|
+
// 序列化支持
|
|
33
|
+
//============================================
|
|
34
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
35
|
+
friend class boost::serialization::access;
|
|
36
|
+
template <class Archive>
|
|
37
|
+
void serialize(Archive& ar, const unsigned int version) {
|
|
38
|
+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(SignalBase);
|
|
39
|
+
ar& BOOST_SERIALIZATION_NVP(m_ind);
|
|
40
|
+
}
|
|
41
|
+
#endif
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
} /* namespace hku */
|
|
45
|
+
|
|
46
|
+
#endif /* TRADE_SYS_SIGNAL_IMP_ONESIDESIGNAL_H_ */
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class AddSignal : public OperatorSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(AddSignal, "SG_Add")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorValueSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class AddValueSignal : public OperatorValueSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(AddValueSignal, "SG_AddValue")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class DivSignal : public OperatorSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(DivSignal, "SG_Div")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorValueSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class DivValueSignal : public OperatorValueSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(DivValueSignal, "SG_DivValue")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
|
|
18
|
+
public:
|
|
19
|
+
DivValueSignal(double value, const SignalPtr& sg);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class MulSignal : public OperatorSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(MulSignal, "SG_Mul")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorValueSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class MulValueSignal : public OperatorValueSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(MulValueSignal, "SG_MulValue")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "hikyuu/trade_sys/signal/SignalBase.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class OperatorSignal : public SignalBase {
|
|
15
|
+
public:
|
|
16
|
+
OperatorSignal();
|
|
17
|
+
explicit OperatorSignal(const string& name);
|
|
18
|
+
OperatorSignal(const string& name, const SignalPtr& sg1, const SignalPtr& sg2);
|
|
19
|
+
virtual ~OperatorSignal();
|
|
20
|
+
|
|
21
|
+
virtual void _reset() override;
|
|
22
|
+
virtual SignalPtr _clone() override;
|
|
23
|
+
virtual void _calculate(const KData& kdata) override {}
|
|
24
|
+
|
|
25
|
+
protected:
|
|
26
|
+
void sub_sg_calculate(SignalPtr& sg, const KData& kdata);
|
|
27
|
+
|
|
28
|
+
protected:
|
|
29
|
+
SignalPtr m_sg1;
|
|
30
|
+
SignalPtr m_sg2;
|
|
31
|
+
|
|
32
|
+
//============================================
|
|
33
|
+
// 序列化支持
|
|
34
|
+
//============================================
|
|
35
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
36
|
+
friend class boost::serialization::access;
|
|
37
|
+
template <class Archive>
|
|
38
|
+
void serialize(Archive& ar, const unsigned int version) {
|
|
39
|
+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(SignalBase);
|
|
40
|
+
ar& BOOST_SERIALIZATION_NVP(m_sg1);
|
|
41
|
+
ar& BOOST_SERIALIZATION_NVP(m_sg2);
|
|
42
|
+
}
|
|
43
|
+
#endif
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
#define OPERATOR_SIGNAL_IMP(classname, name) \
|
|
47
|
+
public: \
|
|
48
|
+
classname() : OperatorSignal(name) {} \
|
|
49
|
+
classname(const SignalPtr& sg1, const SignalPtr& sg2) : OperatorSignal(name, sg1, sg2) {} \
|
|
50
|
+
virtual ~classname() {} \
|
|
51
|
+
virtual SignalPtr _clone() override { \
|
|
52
|
+
return make_shared<classname>(m_sg1, m_sg2); \
|
|
53
|
+
} \
|
|
54
|
+
virtual void _calculate(const KData&) override;
|
|
55
|
+
|
|
56
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
57
|
+
#define OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION \
|
|
58
|
+
private: \
|
|
59
|
+
friend class boost::serialization::access; \
|
|
60
|
+
template <class Archive> \
|
|
61
|
+
void serialize(Archive& ar, const unsigned int version) { \
|
|
62
|
+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(OperatorSignal); \
|
|
63
|
+
}
|
|
64
|
+
#else
|
|
65
|
+
#define OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
66
|
+
#endif
|
|
67
|
+
|
|
68
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "hikyuu/trade_sys/signal/SignalBase.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class OperatorValueSignal : public SignalBase {
|
|
15
|
+
public:
|
|
16
|
+
OperatorValueSignal();
|
|
17
|
+
explicit OperatorValueSignal(const string& name);
|
|
18
|
+
OperatorValueSignal(const string& name, const SignalPtr& sg, double value, int mode = 0);
|
|
19
|
+
virtual ~OperatorValueSignal();
|
|
20
|
+
|
|
21
|
+
virtual void _reset() override;
|
|
22
|
+
virtual SignalPtr _clone() override;
|
|
23
|
+
virtual void _calculate(const KData& kdata) override {}
|
|
24
|
+
|
|
25
|
+
protected:
|
|
26
|
+
double m_value{0.0};
|
|
27
|
+
SignalPtr m_sg;
|
|
28
|
+
int m_mode{0}; // 仅对-、/有效,0:(sg, value), 1: (value, sg)
|
|
29
|
+
|
|
30
|
+
//============================================
|
|
31
|
+
// 序列化支持
|
|
32
|
+
//============================================
|
|
33
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
34
|
+
friend class boost::serialization::access;
|
|
35
|
+
template <class Archive>
|
|
36
|
+
void serialize(Archive& ar, const unsigned int version) {
|
|
37
|
+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(SignalBase);
|
|
38
|
+
ar& BOOST_SERIALIZATION_NVP(m_sg);
|
|
39
|
+
ar& BOOST_SERIALIZATION_NVP(m_value);
|
|
40
|
+
ar& BOOST_SERIALIZATION_NVP(m_mode);
|
|
41
|
+
}
|
|
42
|
+
#endif
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
#define OPERATOR_SIGNAL_IMP(classname, name) \
|
|
46
|
+
public: \
|
|
47
|
+
classname() : OperatorValueSignal(name) {} \
|
|
48
|
+
classname(const SignalPtr& sg, double value) : OperatorValueSignal(name, sg, value) {} \
|
|
49
|
+
virtual ~classname() {} \
|
|
50
|
+
virtual SignalPtr _clone() override { \
|
|
51
|
+
return make_shared<classname>(m_sg, m_value); \
|
|
52
|
+
} \
|
|
53
|
+
virtual void _calculate(const KData&) override;
|
|
54
|
+
|
|
55
|
+
#if HKU_SUPPORT_SERIALIZATION
|
|
56
|
+
#define OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION \
|
|
57
|
+
private: \
|
|
58
|
+
friend class boost::serialization::access; \
|
|
59
|
+
template <class Archive> \
|
|
60
|
+
void serialize(Archive& ar, const unsigned int version) { \
|
|
61
|
+
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(OperatorValueSignal); \
|
|
62
|
+
}
|
|
63
|
+
#else
|
|
64
|
+
#define OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
65
|
+
#endif
|
|
66
|
+
|
|
67
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class SubSignal : public OperatorSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(SubSignal, "SG_Sub")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
} /* namespace hku */
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2025 hikyuu.org
|
|
3
|
+
*
|
|
4
|
+
* Created on: 2025-02-08
|
|
5
|
+
* Author: fasiondog
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include "OperatorValueSignal.h"
|
|
11
|
+
|
|
12
|
+
namespace hku {
|
|
13
|
+
|
|
14
|
+
class SubValueSignal : public OperatorValueSignal {
|
|
15
|
+
OPERATOR_SIGNAL_IMP(SubValueSignal, "SG_AddValue")
|
|
16
|
+
OPERATOR_SIGNAL_NO_PRIVATE_MEMBER_SERIALIZATION
|
|
17
|
+
|
|
18
|
+
public:
|
|
19
|
+
SubValueSignal(double value, const SignalPtr& sg);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
} /* namespace hku */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -17,17 +17,16 @@ namespace hku {
|
|
|
17
17
|
class IndicatorStoploss : public StoplossBase {
|
|
18
18
|
public:
|
|
19
19
|
IndicatorStoploss(); // 仅用于序列化默认构造函数
|
|
20
|
-
IndicatorStoploss(const Indicator&
|
|
20
|
+
explicit IndicatorStoploss(const Indicator& ind);
|
|
21
21
|
virtual ~IndicatorStoploss();
|
|
22
22
|
|
|
23
|
-
virtual void _checkParam(const string& name) const override;
|
|
24
23
|
virtual price_t getPrice(const Datetime& datetime, price_t price) override;
|
|
25
24
|
virtual void _reset() override;
|
|
26
25
|
virtual StoplossPtr _clone() override;
|
|
27
26
|
virtual void _calculate() override;
|
|
28
27
|
|
|
29
28
|
private:
|
|
30
|
-
Indicator
|
|
29
|
+
Indicator m_ind;
|
|
31
30
|
map<Datetime, price_t> m_result;
|
|
32
31
|
|
|
33
32
|
//========================================
|
|
@@ -39,7 +38,7 @@ private:
|
|
|
39
38
|
template <class Archive>
|
|
40
39
|
void serialize(Archive& ar, const unsigned int version) {
|
|
41
40
|
ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(StoplossBase);
|
|
42
|
-
ar& BOOST_SERIALIZATION_NVP(
|
|
41
|
+
ar& BOOST_SERIALIZATION_NVP(m_ind);
|
|
43
42
|
// m_result 每次系统运行时都要重新计算,不保存
|
|
44
43
|
// ar & BOOST_SERIALIZATION_NVP(m_result);
|
|
45
44
|
}
|