hikyuu 2.7.0__py3-none-manylinux2014_aarch64.whl → 2.7.5__py3-none-manylinux2014_aarch64.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 +28 -8
- hikyuu/__init__.pyi +26 -14
- hikyuu/analysis/__init__.pyi +7 -1
- hikyuu/analysis/analysis.pyi +8 -2
- hikyuu/core.pyi +9 -3
- hikyuu/cpp/core310.pyi +172 -68
- hikyuu/cpp/core310.so +0 -0
- hikyuu/cpp/core311.pyi +172 -68
- hikyuu/cpp/core311.so +0 -0
- hikyuu/cpp/core312.pyi +172 -68
- hikyuu/cpp/core312.so +0 -0
- hikyuu/cpp/core313.pyi +172 -68
- hikyuu/cpp/core313.so +0 -0
- hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
- hikyuu/cpp/i18n/zh_CN/hikyuu_plugin.mo +0 -0
- hikyuu/cpp/libboost_atomic.so +0 -0
- hikyuu/cpp/libboost_atomic.so.1.90.0 +0 -0
- hikyuu/cpp/{libboost_charconv-mt.so → libboost_charconv.so} +0 -0
- hikyuu/cpp/{libboost_charconv-mt.so.1.88.0 → libboost_charconv.so.1.90.0} +0 -0
- hikyuu/cpp/libboost_chrono.so +0 -0
- hikyuu/cpp/libboost_chrono.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_container.so +0 -0
- hikyuu/cpp/libboost_container.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_date_time.so +0 -0
- hikyuu/cpp/libboost_date_time.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_locale.so +0 -0
- hikyuu/cpp/libboost_locale.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_random.so +0 -0
- hikyuu/cpp/libboost_random.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_serialization.so +0 -0
- hikyuu/cpp/libboost_serialization.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_thread.so +0 -0
- hikyuu/cpp/libboost_thread.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_wserialization.so +0 -0
- hikyuu/cpp/libboost_wserialization.so.1.90.0 +0 -0
- hikyuu/cpp/libhikyuu.so +0 -0
- hikyuu/cpp/libmimalloc.so +0 -0
- hikyuu/cpp/libmimalloc.so.3 +0 -0
- hikyuu/cpp/libmimalloc.so.3.1 +0 -0
- hikyuu/cpp/libsqlite3.so +0 -0
- hikyuu/data/clickhouse_upgrade/0001.sql +2 -0
- hikyuu/data/clickhouse_upgrade/0002.sql +9 -0
- hikyuu/data/common_clickhouse.py +1 -3
- hikyuu/data/common_mysql.py +1 -1
- hikyuu/data/download_block.py +1 -1
- hikyuu/data/em_block_to_mysql.py +16 -4
- hikyuu/data/em_block_to_sqlite.py +16 -4
- hikyuu/data/hku_config_template.py +31 -4
- hikyuu/data/mysql_upgrade/0029.sql +2 -0
- hikyuu/data/mysql_upgrade/0030.sql +3 -0
- hikyuu/data/pytdx_to_clickhouse.py +86 -32
- hikyuu/data/pytdx_to_h5.py +73 -28
- hikyuu/data/pytdx_to_mysql.py +65 -21
- hikyuu/data/pytdx_weight_to_clickhouse.py +2 -0
- hikyuu/data/pytdx_weight_to_mysql.py +2 -0
- hikyuu/data/pytdx_weight_to_sqlite.py +2 -0
- hikyuu/data/sqlite_upgrade/0029.sql +4 -0
- hikyuu/data/sqlite_upgrade/0030.sql +5 -0
- hikyuu/data/tdx_to_clickhouse.py +2 -2
- hikyuu/data/tdx_to_h5.py +11 -11
- hikyuu/data/tdx_to_mysql.py +2 -2
- hikyuu/draw/__init__.pyi +1 -1
- hikyuu/draw/drawplot/__init__.pyi +1 -1
- hikyuu/draw/drawplot/bokeh_draw.pyi +17 -9
- hikyuu/draw/drawplot/echarts_draw.pyi +17 -9
- hikyuu/draw/drawplot/matplotlib_draw.py +23 -9
- hikyuu/draw/drawplot/matplotlib_draw.pyi +17 -9
- hikyuu/examples/notebook/001-overview.ipynb +112 -78
- hikyuu/examples/notebook/004-IndicatorOverview.ipynb +52 -65
- hikyuu/examples/notebook/006-TradeManager.ipynb +402 -291
- hikyuu/examples/notebook/008-Pickle.ipynb +25 -17
- hikyuu/examples/notebook/009-RealData.ipynb +36 -38
- hikyuu/examples/notebook/Demo/Demo2.ipynb +146 -116
- hikyuu/extend.pyi +10 -4
- hikyuu/gui/HikyuuTDX.py +42 -3
- hikyuu/gui/data/MainWindow.py +189 -129
- hikyuu/gui/data/UseTdxImportToH5Thread.py +4 -2
- hikyuu/gui/start_qmt.py +1 -1
- hikyuu/hub.pyi +6 -6
- hikyuu/include/hikyuu/Block.h +9 -9
- hikyuu/include/hikyuu/HistoryFinanceInfo.h +3 -3
- hikyuu/include/hikyuu/KData.h +51 -28
- hikyuu/include/hikyuu/KDataImp.h +12 -7
- hikyuu/include/hikyuu/KDataPrivatedBufferImp.h +13 -7
- hikyuu/include/hikyuu/KDataSharedBufferImp.h +8 -6
- hikyuu/include/hikyuu/KQuery.h +11 -11
- hikyuu/include/hikyuu/KRecord.h +1 -1
- hikyuu/include/hikyuu/MarketInfo.h +10 -10
- hikyuu/include/hikyuu/Stock.h +30 -30
- hikyuu/include/hikyuu/StockManager.h +28 -12
- hikyuu/include/hikyuu/StockTypeInfo.h +9 -9
- hikyuu/include/hikyuu/StockWeight.h +9 -9
- hikyuu/include/hikyuu/StrategyContext.h +4 -4
- hikyuu/include/hikyuu/TimeLineRecord.h +1 -1
- hikyuu/include/hikyuu/TransRecord.h +1 -1
- hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +2 -1
- hikyuu/include/hikyuu/data_driver/BlockInfoDriver.h +6 -0
- hikyuu/include/hikyuu/data_driver/KDataDriver.h +6 -7
- hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +5 -1
- hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +1 -1
- hikyuu/include/hikyuu/global/sysinfo.h +24 -5
- hikyuu/include/hikyuu/indicator/IndParam.h +1 -1
- hikyuu/include/hikyuu/indicator/Indicator.h +56 -27
- hikyuu/include/hikyuu/indicator/Indicator2InImp.h +0 -4
- hikyuu/include/hikyuu/indicator/IndicatorImp.h +147 -74
- hikyuu/include/hikyuu/indicator/crt/CONTEXT.h +11 -1
- hikyuu/include/hikyuu/indicator/crt/IC.h +19 -14
- hikyuu/include/hikyuu/indicator/crt/ICIR.h +4 -7
- hikyuu/include/hikyuu/indicator/imp/IAbs.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IAcos.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IAd.h +0 -2
- hikyuu/include/hikyuu/indicator/imp/IAdvance.h +3 -0
- hikyuu/include/hikyuu/indicator/imp/IAma.h +3 -0
- hikyuu/include/hikyuu/indicator/imp/IAsin.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IAtan.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IAtr.h +2 -3
- hikyuu/include/hikyuu/indicator/imp/IBackset.h +2 -4
- hikyuu/include/hikyuu/indicator/imp/IBlockSetNum.h +3 -0
- hikyuu/include/hikyuu/indicator/imp/ICeil.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IContext.h +0 -3
- hikyuu/include/hikyuu/indicator/imp/ICorr.h +3 -0
- hikyuu/include/hikyuu/indicator/imp/ICos.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ICost.h +0 -2
- hikyuu/include/hikyuu/indicator/imp/ICount.h +2 -1
- hikyuu/include/hikyuu/indicator/imp/ICval.h +1 -4
- hikyuu/include/hikyuu/indicator/imp/ICycle.h +0 -2
- hikyuu/include/hikyuu/indicator/imp/IDecline.h +3 -0
- hikyuu/include/hikyuu/indicator/imp/IDevsq.h +4 -1
- hikyuu/include/hikyuu/indicator/imp/IDiff.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IDma.h +2 -0
- hikyuu/include/hikyuu/indicator/imp/IDropna.h +0 -4
- hikyuu/include/hikyuu/indicator/imp/IEma.h +3 -1
- hikyuu/include/hikyuu/indicator/imp/IEvery.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IExist.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IExp.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IFilter.h +4 -5
- hikyuu/include/hikyuu/indicator/imp/IFinance.h +1 -2
- hikyuu/include/hikyuu/indicator/imp/IFloor.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IHhvbars.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IHighLine.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IHsl.h +0 -2
- hikyuu/include/hikyuu/indicator/imp/IIc.h +3 -6
- hikyuu/include/hikyuu/indicator/imp/IInBlock.h +1 -2
- hikyuu/include/hikyuu/indicator/imp/IIntpart.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IIsInf.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IIsInfa.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IIsLastBar.h +0 -1
- hikyuu/include/hikyuu/indicator/imp/IIsNa.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IJumpDown.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IJumpUp.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IKData.h +1 -2
- hikyuu/include/hikyuu/indicator/imp/ILiuTongPan.h +0 -2
- hikyuu/include/hikyuu/indicator/imp/ILn.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ILog.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ILowLine.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/ILowLineBars.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IMa.h +6 -1
- hikyuu/include/hikyuu/indicator/imp/IMacd.h +2 -0
- hikyuu/include/hikyuu/indicator/imp/INot.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IPow.h +3 -1
- hikyuu/include/hikyuu/indicator/imp/IQuantileTrunc.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IRecover.h +3 -0
- hikyuu/include/hikyuu/indicator/imp/IRef.h +3 -1
- hikyuu/include/hikyuu/indicator/imp/IResult.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IReverse.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IRoc.h +6 -1
- hikyuu/include/hikyuu/indicator/imp/IRocp.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IRocr.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IRocr100.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IRound.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IRoundDown.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IRoundUp.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ISaftyLoss.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ISign.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ISin.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ISlope.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/ISma.h +2 -0
- hikyuu/include/hikyuu/indicator/imp/ISpearman.h +3 -0
- hikyuu/include/hikyuu/indicator/imp/ISqrt.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/IStdev.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IStdp.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/ISum.h +6 -1
- hikyuu/include/hikyuu/indicator/imp/ITan.h +1 -0
- hikyuu/include/hikyuu/indicator/imp/ITime.h +1 -2
- hikyuu/include/hikyuu/indicator/imp/ITimeLine.h +0 -2
- hikyuu/include/hikyuu/indicator/imp/ITr.h +1 -2
- hikyuu/include/hikyuu/indicator/imp/IVar.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IVarp.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IVigor.h +0 -2
- hikyuu/include/hikyuu/indicator/imp/IWma.h +5 -1
- hikyuu/include/hikyuu/indicator/imp/IZongGuBen.h +1 -2
- hikyuu/include/hikyuu/indicator_talib/imp/TaAdosc.h +0 -2
- hikyuu/include/hikyuu/indicator_talib/imp/TaSar.h +0 -2
- hikyuu/include/hikyuu/indicator_talib/imp/TaSarext.h +0 -4
- hikyuu/include/hikyuu/indicator_talib/imp/TaStoch.h +0 -3
- hikyuu/include/hikyuu/indicator_talib/imp/TaStochf.h +0 -2
- hikyuu/include/hikyuu/indicator_talib/imp/TaUltosc.h +0 -2
- hikyuu/include/hikyuu/indicator_talib/imp/ta_defines.h +2 -4
- hikyuu/include/hikyuu/indicator_talib/imp/ta_imp.h +70 -90
- hikyuu/include/hikyuu/plugin/KDataToClickHouseImporter.h +40 -0
- hikyuu/include/hikyuu/plugin/KDataToMySQLImporter.h +40 -0
- hikyuu/include/hikyuu/plugin/checkdata.h +20 -0
- hikyuu/include/hikyuu/plugin/extind.h +3 -0
- hikyuu/include/hikyuu/plugin/hkuextra.h +4 -0
- hikyuu/include/hikyuu/plugin/interface/CheckDataPluginInterface.h +25 -0
- hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +4 -0
- hikyuu/include/hikyuu/plugin/interface/ImportKDataToClickHousePluginInterface.h +44 -0
- hikyuu/include/hikyuu/plugin/interface/ImportKDataToMySQLPluginInterface.h +42 -0
- hikyuu/include/hikyuu/plugin/interface/plugins.h +6 -0
- hikyuu/include/hikyuu/python/convert_any.h +9 -6
- hikyuu/include/hikyuu/python/pybind_utils.h +22 -5
- hikyuu/include/hikyuu/strategy/Strategy.h +1 -1
- hikyuu/include/hikyuu/trade_manage/TradeCostBase.h +5 -3
- hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +9 -3
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +2 -1
- hikyuu/include/hikyuu/trade_sys/allocatefunds/AllocateFundsBase.h +8 -4
- hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +1 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedAmount.h +26 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixAmountFunds.h +18 -0
- hikyuu/include/hikyuu/trade_sys/condition/ConditionBase.h +5 -3
- hikyuu/include/hikyuu/trade_sys/environment/EnvironmentBase.h +6 -3
- hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +5 -3
- hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +23 -20
- hikyuu/include/hikyuu/trade_sys/multifactor/NormalizeBase.h +6 -4
- hikyuu/include/hikyuu/trade_sys/multifactor/ScoresFilterBase.h +5 -3
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_EqualWeight.h +3 -3
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICIRWeight.h +4 -4
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICWeight.h +4 -4
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_Weight.h +4 -4
- hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +16 -13
- hikyuu/include/hikyuu/trade_sys/profitgoal/ProfitGoalBase.h +13 -13
- hikyuu/include/hikyuu/trade_sys/selector/SelectorBase.h +12 -3
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_MultiFactor.h +1 -1
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_MultiFactor2.h +1 -1
- hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector.h +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector2.h +1 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalSelectorBase.h +0 -2
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/PerformanceOptimalSelector.h +0 -4
- hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +5 -3
- hikyuu/include/hikyuu/trade_sys/slippage/SlippageBase.h +5 -3
- hikyuu/include/hikyuu/trade_sys/stoploss/StoplossBase.h +5 -3
- hikyuu/include/hikyuu/trade_sys/system/System.h +6 -4
- hikyuu/include/hikyuu/utilities/Log.h +6 -7
- hikyuu/include/hikyuu/utilities/LruCache.h +299 -0
- hikyuu/include/hikyuu/utilities/Parameter.h +17 -0
- hikyuu/include/hikyuu/utilities/arithmetic.h +2 -2
- hikyuu/include/hikyuu/utilities/config.h +28 -0
- hikyuu/include/hikyuu/utilities/omp_macro.h +25 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginBase.h +17 -2
- hikyuu/include/hikyuu/utilities/plugin/PluginManager.h +46 -22
- hikyuu/include/hikyuu/utilities/thread/GlobalStealThreadPool.h +71 -19
- hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +1 -5
- hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +286 -0
- hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +1 -0
- hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +297 -0
- hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +1 -4
- hikyuu/include/hikyuu/utilities/thread/WorkStealQueue.h +9 -8
- hikyuu/include/hikyuu/utilities/thread/algorithm.h +350 -14
- hikyuu/include/hikyuu/version.h +4 -4
- hikyuu/plugin/libbacktest.so +0 -0
- hikyuu/plugin/libcheckdata.so +0 -0
- hikyuu/plugin/libclickhousedriver.so +0 -0
- hikyuu/plugin/libdataserver.so +0 -0
- hikyuu/plugin/libdataserver_parquet.so +0 -0
- hikyuu/plugin/libdevice.so +0 -0
- hikyuu/plugin/libextind.so +0 -0
- hikyuu/plugin/libhkuextra.so +0 -0
- hikyuu/plugin/libimport2ch.so +0 -0
- hikyuu/plugin/libimport2hdf5.so +0 -0
- hikyuu/plugin/libimport2mysql.so +0 -0
- hikyuu/plugin/libtmreport.so +0 -0
- hikyuu/test/Indicator.py +1 -2
- hikyuu/trade_manage/__init__.pyi +14 -8
- hikyuu/trade_manage/trade.pyi +14 -8
- hikyuu/trade_sys/trade_sys.py +54 -5
- hikyuu/util/__init__.pyi +2 -2
- hikyuu/util/singleton.pyi +1 -1
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.5.dist-info}/METADATA +10 -4
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.5.dist-info}/RECORD +282 -252
- hikyuu/cpp/libboost_chrono-mt.so +0 -0
- hikyuu/cpp/libboost_chrono-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_date_time-mt.so +0 -0
- hikyuu/cpp/libboost_date_time-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_serialization-mt.so +0 -0
- hikyuu/cpp/libboost_serialization-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_system-mt.so +0 -0
- hikyuu/cpp/libboost_system-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_thread-mt.so +0 -0
- hikyuu/cpp/libboost_thread-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_wserialization-mt.so +0 -0
- hikyuu/cpp/libboost_wserialization-mt.so.1.88.0 +0 -0
- hikyuu/data/pytdx_to_taos.py +0 -736
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.5.dist-info}/WHEEL +0 -0
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.5.dist-info}/entry_points.txt +0 -0
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.5.dist-info}/top_level.txt +0 -0
|
@@ -86,11 +86,11 @@ public:
|
|
|
86
86
|
string datadir() const;
|
|
87
87
|
|
|
88
88
|
/** 获取证券数量 */
|
|
89
|
-
size_t size() const;
|
|
89
|
+
size_t size() const noexcept;
|
|
90
90
|
|
|
91
91
|
/** 是否所有数据准备完毕 */
|
|
92
92
|
bool dataReady() const;
|
|
93
|
-
|
|
93
|
+
bool initializing() const;
|
|
94
94
|
/**
|
|
95
95
|
* 根据"市场简称证券代码"获取对应的证券实例
|
|
96
96
|
* @param querystr 格式:“市场简称证券代码”,如"sh000001"
|
|
@@ -164,6 +164,13 @@ public:
|
|
|
164
164
|
*/
|
|
165
165
|
BlockList getBlockList();
|
|
166
166
|
|
|
167
|
+
/**
|
|
168
|
+
* 获取指定指数的板块列表, 如果不存在返回空列表
|
|
169
|
+
* @param index_stk 指数
|
|
170
|
+
* @return 板块列表
|
|
171
|
+
*/
|
|
172
|
+
BlockList getBlockListByIndexStock(const Stock& stk);
|
|
173
|
+
|
|
167
174
|
/**
|
|
168
175
|
* 获取指定证券所属的板块列表
|
|
169
176
|
* @param stk 指定证券
|
|
@@ -245,7 +252,7 @@ public:
|
|
|
245
252
|
/**
|
|
246
253
|
* 获取当前执行线程id,主要用于判断 Strategy 是以独立进程还是线程方式运行
|
|
247
254
|
*/
|
|
248
|
-
std::thread::id thread_id() const {
|
|
255
|
+
std::thread::id thread_id() const noexcept {
|
|
249
256
|
return m_thread_id;
|
|
250
257
|
}
|
|
251
258
|
|
|
@@ -258,7 +265,7 @@ public:
|
|
|
258
265
|
void setPluginPath(const std::string& path);
|
|
259
266
|
|
|
260
267
|
/** 获取当前插件路径 */
|
|
261
|
-
const string& getPluginPath() const {
|
|
268
|
+
const string& getPluginPath() const noexcept {
|
|
262
269
|
return m_plugin_manager.pluginPath();
|
|
263
270
|
}
|
|
264
271
|
|
|
@@ -266,13 +273,17 @@ public:
|
|
|
266
273
|
PluginInterfaceT* getPlugin(const std::string& pluginname) noexcept;
|
|
267
274
|
|
|
268
275
|
/** 设置多语言支持路径(仅在初始化之前有效) */
|
|
269
|
-
void setLanguagePath(const std::string& path);
|
|
276
|
+
void setLanguagePath(const std::string& path) noexcept;
|
|
270
277
|
|
|
271
278
|
/** 取消加载,退出时使用 */
|
|
272
279
|
void cancelLoad() {
|
|
273
280
|
m_cancel_load = true;
|
|
274
281
|
}
|
|
275
282
|
|
|
283
|
+
bool hasCancelLoad() const {
|
|
284
|
+
return m_cancel_load;
|
|
285
|
+
}
|
|
286
|
+
|
|
276
287
|
public:
|
|
277
288
|
typedef StockMapIterator const_iterator;
|
|
278
289
|
const_iterator begin() const {
|
|
@@ -282,6 +293,10 @@ public:
|
|
|
282
293
|
return m_stockDict.end();
|
|
283
294
|
}
|
|
284
295
|
|
|
296
|
+
void clearPlugin() {
|
|
297
|
+
m_plugin_manager.clear();
|
|
298
|
+
}
|
|
299
|
+
|
|
285
300
|
private:
|
|
286
301
|
/* 加载全部数据 */
|
|
287
302
|
void loadData();
|
|
@@ -318,7 +333,7 @@ private:
|
|
|
318
333
|
static StockManager* m_sm;
|
|
319
334
|
std::atomic_bool m_initializing{false};
|
|
320
335
|
std::atomic_bool m_cancel_load{false}; // 取消加载, 用于退出指示
|
|
321
|
-
std::atomic_bool m_data_ready{
|
|
336
|
+
std::atomic_bool m_data_ready{true}; // 用于指示是否所有数据准备完毕, 如果未初始化则为 true
|
|
322
337
|
std::thread::id m_thread_id; // 记录线程id,用于判断Stratege是以独立进程方式还是线程方式运行
|
|
323
338
|
string m_tmpdir;
|
|
324
339
|
string m_datadir;
|
|
@@ -330,14 +345,11 @@ private:
|
|
|
330
345
|
|
|
331
346
|
typedef unordered_map<string, MarketInfo> MarketInfoMap;
|
|
332
347
|
mutable MarketInfoMap m_marketInfoDict;
|
|
333
|
-
std::shared_mutex* m_marketInfoDict_mutex;
|
|
334
348
|
|
|
335
349
|
typedef unordered_map<uint32_t, StockTypeInfo> StockTypeInfoMap;
|
|
336
350
|
mutable StockTypeInfoMap m_stockTypeInfo;
|
|
337
|
-
std::shared_mutex* m_stockTypeInfo_mutex;
|
|
338
351
|
|
|
339
352
|
std::unordered_set<Datetime> m_holidays; // 节假日
|
|
340
|
-
std::shared_mutex* m_holidays_mutex;
|
|
341
353
|
|
|
342
354
|
ZhBond10List m_zh_bond10; // 10年期中国国债收益率数据
|
|
343
355
|
|
|
@@ -357,12 +369,16 @@ private:
|
|
|
357
369
|
std::string m_i18n_path;
|
|
358
370
|
};
|
|
359
371
|
|
|
360
|
-
inline size_t StockManager::size() const {
|
|
372
|
+
inline size_t StockManager::size() const noexcept {
|
|
361
373
|
return m_stockDict.size();
|
|
362
374
|
}
|
|
363
375
|
|
|
364
376
|
inline bool StockManager::dataReady() const {
|
|
365
|
-
return m_data_ready;
|
|
377
|
+
return m_data_ready.load(std::memory_order_acquire);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
inline bool StockManager::initializing() const {
|
|
381
|
+
return m_initializing;
|
|
366
382
|
}
|
|
367
383
|
|
|
368
384
|
inline Stock StockManager::operator[](const string& query) const {
|
|
@@ -419,7 +435,7 @@ inline PluginInterfaceT* StockManager::getPlugin(const std::string& pluginname)
|
|
|
419
435
|
return m_plugin_manager.getPlugin<PluginInterfaceT>(pluginname);
|
|
420
436
|
}
|
|
421
437
|
|
|
422
|
-
inline void StockManager::setLanguagePath(const std::string& path) {
|
|
438
|
+
inline void StockManager::setLanguagePath(const std::string& path) noexcept {
|
|
423
439
|
m_i18n_path = path;
|
|
424
440
|
}
|
|
425
441
|
|
|
@@ -41,46 +41,46 @@ public:
|
|
|
41
41
|
StockTypeInfo(const StockTypeInfo&) = default;
|
|
42
42
|
StockTypeInfo& operator=(const StockTypeInfo&) = default;
|
|
43
43
|
|
|
44
|
-
StockTypeInfo(StockTypeInfo&&);
|
|
44
|
+
StockTypeInfo(StockTypeInfo&&) noexcept;
|
|
45
45
|
StockTypeInfo& operator=(StockTypeInfo&&) noexcept;
|
|
46
46
|
|
|
47
47
|
/** 获取证券类型 */
|
|
48
|
-
uint32_t type() const {
|
|
48
|
+
uint32_t type() const noexcept {
|
|
49
49
|
return m_type;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
/** 获取证券类型描述信息 */
|
|
53
|
-
const string& description() const {
|
|
53
|
+
const string& description() const noexcept {
|
|
54
54
|
return m_description;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
57
|
/** 获取最小跳动量 */
|
|
58
|
-
price_t tick() const {
|
|
58
|
+
price_t tick() const noexcept {
|
|
59
59
|
return m_tick;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
/** 每tick价格 */
|
|
63
|
-
price_t tickValue() const {
|
|
63
|
+
price_t tickValue() const noexcept {
|
|
64
64
|
return m_tickValue;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/** 每单位价格 = tickValue / tick */
|
|
68
|
-
price_t unit() const {
|
|
68
|
+
price_t unit() const noexcept {
|
|
69
69
|
return m_unit;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
/** 获取价格精度 */
|
|
73
|
-
int precision() const {
|
|
73
|
+
int precision() const noexcept {
|
|
74
74
|
return m_precision;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
/** 获取每笔最小交易数量 */
|
|
78
|
-
double minTradeNumber() const {
|
|
78
|
+
double minTradeNumber() const noexcept {
|
|
79
79
|
return m_minTradeNumber;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
/** 获取每笔最大交易数量 */
|
|
83
|
-
double maxTradeNumber() const {
|
|
83
|
+
double maxTradeNumber() const noexcept {
|
|
84
84
|
return m_maxTradeNumber;
|
|
85
85
|
}
|
|
86
86
|
|
|
@@ -29,47 +29,47 @@ public:
|
|
|
29
29
|
price_t freeCount, price_t suogu);
|
|
30
30
|
|
|
31
31
|
/** 权息日期 */
|
|
32
|
-
Datetime datetime() const {
|
|
32
|
+
Datetime datetime() const noexcept {
|
|
33
33
|
return m_datetime;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/** 每10股送X股 */
|
|
37
|
-
price_t countAsGift() const {
|
|
37
|
+
price_t countAsGift() const noexcept {
|
|
38
38
|
return m_countAsGift;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
/** 每10股配X股 */
|
|
42
|
-
price_t countForSell() const {
|
|
42
|
+
price_t countForSell() const noexcept {
|
|
43
43
|
return m_countForSell;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
/** 配股价 */
|
|
47
|
-
price_t priceForSell() const {
|
|
47
|
+
price_t priceForSell() const noexcept {
|
|
48
48
|
return m_priceForSell;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
/** 每10股红利 */
|
|
52
|
-
price_t bonus() const {
|
|
52
|
+
price_t bonus() const noexcept {
|
|
53
53
|
return m_bonus;
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
/** 每10股转增X股 */
|
|
57
|
-
price_t increasement() const {
|
|
57
|
+
price_t increasement() const noexcept {
|
|
58
58
|
return m_increasement;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
/** 总股本(万股) */
|
|
62
|
-
price_t totalCount() const {
|
|
62
|
+
price_t totalCount() const noexcept {
|
|
63
63
|
return m_totalCount;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
/** 流通股(万股) */
|
|
67
|
-
price_t freeCount() const {
|
|
67
|
+
price_t freeCount() const noexcept {
|
|
68
68
|
return m_freeCount;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
/** 扩缩股比例 */
|
|
72
|
-
price_t suogu() const {
|
|
72
|
+
price_t suogu() const noexcept {
|
|
73
73
|
return m_suogu;
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -38,7 +38,7 @@ public:
|
|
|
38
38
|
* @param preloadNum 指定的预加载数量,如:{{"min_max", 100}, {"day_max", 200}}
|
|
39
39
|
*/
|
|
40
40
|
StrategyContext(const vector<string>& stockCodeList, const vector<KQuery::KType>& ktypeList,
|
|
41
|
-
const unordered_map<string,
|
|
41
|
+
const unordered_map<string, int64_t>& preloadNum = {});
|
|
42
42
|
|
|
43
43
|
// 自定义移动构造与赋值会引起 python 中无法正常退出
|
|
44
44
|
// StrategyContext(const StrategyContext&) = default;
|
|
@@ -77,9 +77,9 @@ public:
|
|
|
77
77
|
return m_ktypeList;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
void setPreloadNum(const unordered_map<string,
|
|
80
|
+
void setPreloadNum(const unordered_map<string, int64_t>& preloadNum);
|
|
81
81
|
|
|
82
|
-
const unordered_map<string,
|
|
82
|
+
const unordered_map<string, int64_t>& getPreloadNum() const noexcept {
|
|
83
83
|
return m_preloadNum;
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -108,7 +108,7 @@ private:
|
|
|
108
108
|
vector<string> m_mustLoad{"sh000001", "sh000300"}; // 默认必须加载的 stock
|
|
109
109
|
vector<string> m_stockCodeList;
|
|
110
110
|
vector<KQuery::KType> m_ktypeList;
|
|
111
|
-
unordered_map<string,
|
|
111
|
+
unordered_map<string, int64_t> m_preloadNum;
|
|
112
112
|
};
|
|
113
113
|
|
|
114
114
|
HKU_API std::ostream& operator<<(std::ostream& os, const StrategyContext& context);
|
|
@@ -219,7 +219,8 @@ public:
|
|
|
219
219
|
/**
|
|
220
220
|
* 获取所有历史财务信息, 用于列式存储时数据初始化使用
|
|
221
221
|
*/
|
|
222
|
-
virtual unordered_map<string, vector<HistoryFinanceInfo>> getAllHistoryFinance(
|
|
222
|
+
virtual unordered_map<string, vector<HistoryFinanceInfo>> getAllHistoryFinance(
|
|
223
|
+
const std::atomic_bool& cancel_flag) {
|
|
223
224
|
HKU_ERROR("Not support getAllHistoryFinance()!");
|
|
224
225
|
return unordered_map<string, vector<HistoryFinanceInfo>>();
|
|
225
226
|
}
|
|
@@ -94,11 +94,17 @@ public:
|
|
|
94
94
|
*/
|
|
95
95
|
virtual void remove(const string& category, const string& name) = 0;
|
|
96
96
|
|
|
97
|
+
protected:
|
|
98
|
+
bool isPythonObject() const noexcept {
|
|
99
|
+
return m_is_python_object;
|
|
100
|
+
}
|
|
101
|
+
|
|
97
102
|
private:
|
|
98
103
|
bool checkType();
|
|
99
104
|
|
|
100
105
|
protected:
|
|
101
106
|
string m_name;
|
|
107
|
+
bool m_is_python_object{false};
|
|
102
108
|
};
|
|
103
109
|
|
|
104
110
|
typedef shared_ptr<BlockInfoDriver> BlockInfoDriverPtr;
|
|
@@ -129,21 +129,21 @@ public:
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
virtual std::unordered_map<std::string, KRecordList> getAllKRecordList(
|
|
132
|
-
const KQuery::KType& ktype, const Datetime& start_date,
|
|
133
|
-
const std::atomic<bool>& cancel_flag) {
|
|
132
|
+
const KQuery::KType& ktype, const Datetime& start_date, const std::atomic_bool& cancel_flag) {
|
|
134
133
|
HKU_THROW("Not support getAllKRecordList");
|
|
135
134
|
}
|
|
136
135
|
|
|
137
136
|
protected:
|
|
138
|
-
|
|
139
|
-
return
|
|
137
|
+
bool isPythonObject() const noexcept {
|
|
138
|
+
return m_is_python_object;
|
|
140
139
|
}
|
|
141
140
|
|
|
142
141
|
private:
|
|
143
142
|
bool checkType();
|
|
144
143
|
|
|
145
|
-
|
|
144
|
+
protected:
|
|
146
145
|
string m_name;
|
|
146
|
+
bool m_is_python_object{false};
|
|
147
147
|
};
|
|
148
148
|
|
|
149
149
|
typedef shared_ptr<KDataDriver> KDataDriverPtr;
|
|
@@ -210,8 +210,7 @@ public:
|
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
std::unordered_map<std::string, KRecordList> getAllKRecordList(
|
|
213
|
-
const KQuery::KType& ktype, const Datetime& start_date,
|
|
214
|
-
const std::atomic<bool>& cancel_flag) {
|
|
213
|
+
const KQuery::KType& ktype, const Datetime& start_date, const std::atomic_bool& cancel_flag) {
|
|
215
214
|
return m_driver->getAllKRecordList(ktype, start_date, cancel_flag);
|
|
216
215
|
}
|
|
217
216
|
|
|
@@ -26,6 +26,9 @@ public:
|
|
|
26
26
|
MySQLKDataDriver();
|
|
27
27
|
virtual ~MySQLKDataDriver() override;
|
|
28
28
|
|
|
29
|
+
MySQLKDataDriver(const MySQLKDataDriver&) = delete;
|
|
30
|
+
MySQLKDataDriver& operator=(const MySQLKDataDriver&) = delete;
|
|
31
|
+
|
|
29
32
|
virtual KDataDriverPtr _clone() override {
|
|
30
33
|
return std::make_shared<MySQLKDataDriver>();
|
|
31
34
|
}
|
|
@@ -56,7 +59,8 @@ public:
|
|
|
56
59
|
const KQuery& query) override;
|
|
57
60
|
|
|
58
61
|
private:
|
|
59
|
-
string _getTableName(const string& market, const string& code,
|
|
62
|
+
static string _getTableName(const string& market, const string& code,
|
|
63
|
+
const KQuery::KType& ktype);
|
|
60
64
|
KRecordList _getKRecordList(const string& market, const string& code,
|
|
61
65
|
const KQuery::KType& kType, size_t start_ix, size_t end_ix);
|
|
62
66
|
KRecordList _getKRecordList(const string& market, const string& code,
|
|
@@ -43,7 +43,7 @@ public:
|
|
|
43
43
|
const KQuery& query) override;
|
|
44
44
|
|
|
45
45
|
private:
|
|
46
|
-
string _getTableName(const string& market, const string& code, KQuery::KType ktype);
|
|
46
|
+
static string _getTableName(const string& market, const string& code, KQuery::KType ktype);
|
|
47
47
|
KRecordList _getKRecordList(const string& market, const string& code,
|
|
48
48
|
const KQuery::KType& kType, size_t start_ix, size_t end_ix);
|
|
49
49
|
KRecordList _getKRecordList(const string& market, const string& code,
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
10
|
#include <string>
|
|
11
|
+
#include "hikyuu/utilities/datetime/Datetime.h"
|
|
11
12
|
|
|
12
13
|
#ifndef HKU_API
|
|
13
14
|
#define HKU_API
|
|
@@ -15,6 +16,9 @@
|
|
|
15
16
|
|
|
16
17
|
namespace hku {
|
|
17
18
|
|
|
19
|
+
void sysinfo_init();
|
|
20
|
+
void sysinfo_clean();
|
|
21
|
+
|
|
18
22
|
/**
|
|
19
23
|
* 获取Hikyuu当前版本号
|
|
20
24
|
* @return 版本号
|
|
@@ -34,11 +38,26 @@ std::string HKU_API getVersionWithGit();
|
|
|
34
38
|
*/
|
|
35
39
|
bool HKU_API CanUpgrade();
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
struct HKU_API LatestVersionInfo {
|
|
42
|
+
int version{1003001};
|
|
43
|
+
Datetime release_date;
|
|
44
|
+
std::string remark;
|
|
45
|
+
LatestVersionInfo() = default;
|
|
46
|
+
LatestVersionInfo(const LatestVersionInfo&) = default;
|
|
47
|
+
LatestVersionInfo(LatestVersionInfo&& rhs)
|
|
48
|
+
: version(rhs.version), release_date(rhs.release_date), remark(std::move(rhs.remark)) {}
|
|
49
|
+
LatestVersionInfo& operator=(LatestVersionInfo&& rhs) {
|
|
50
|
+
if (this == &rhs) {
|
|
51
|
+
return *this;
|
|
52
|
+
}
|
|
53
|
+
version = rhs.version;
|
|
54
|
+
release_date = rhs.release_date;
|
|
55
|
+
remark = std::move(rhs.remark);
|
|
56
|
+
return *this;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
LatestVersionInfo HKU_API getLatestVersionInfo();
|
|
42
61
|
|
|
43
62
|
/** 发送反馈信息 */
|
|
44
63
|
void HKU_API sendFeedback();
|
|
@@ -45,13 +45,13 @@ public:
|
|
|
45
45
|
|
|
46
46
|
public:
|
|
47
47
|
Indicator() : m_imp(make_shared<IndicatorImp>()) {}
|
|
48
|
-
Indicator(const IndicatorImpPtr& imp);
|
|
49
|
-
Indicator(const Indicator& ind);
|
|
48
|
+
Indicator(const IndicatorImpPtr& imp) noexcept;
|
|
49
|
+
Indicator(const Indicator& ind) noexcept;
|
|
50
50
|
Indicator(Indicator&& ind) noexcept;
|
|
51
51
|
virtual ~Indicator();
|
|
52
52
|
|
|
53
|
-
Indicator& operator=(const Indicator&);
|
|
54
|
-
Indicator& operator=(Indicator&&);
|
|
53
|
+
Indicator& operator=(const Indicator&) noexcept;
|
|
54
|
+
Indicator& operator=(Indicator&&) noexcept;
|
|
55
55
|
|
|
56
56
|
/** 使用已有参数计算新值,返回全新的Indicator */
|
|
57
57
|
Indicator operator()(const Indicator& ind);
|
|
@@ -63,8 +63,10 @@ public:
|
|
|
63
63
|
Indicator operator()();
|
|
64
64
|
|
|
65
65
|
/** 指标名称 */
|
|
66
|
-
string name() const;
|
|
67
|
-
void name(const string& name);
|
|
66
|
+
string name() const noexcept;
|
|
67
|
+
void name(const string& name) noexcept;
|
|
68
|
+
|
|
69
|
+
IndicatorImp::OPType getOPType() const noexcept;
|
|
68
70
|
|
|
69
71
|
/** 返回形如:Name(param1_val,param2_val,...) */
|
|
70
72
|
string long_name() const;
|
|
@@ -79,23 +81,29 @@ public:
|
|
|
79
81
|
/** 获取上下文 */
|
|
80
82
|
KData getContext() const;
|
|
81
83
|
|
|
84
|
+
/** 在有上下文时,自动将上下文扩展至当前最新数据并计算 */
|
|
85
|
+
void extend();
|
|
86
|
+
|
|
82
87
|
/** 显示指标公式 */
|
|
83
88
|
string formula() const;
|
|
84
89
|
|
|
85
90
|
/** 结果中需抛弃的个数 */
|
|
86
|
-
size_t discard() const;
|
|
91
|
+
size_t discard() const noexcept;
|
|
87
92
|
|
|
88
93
|
/** 设置抛弃的个数,如果小于原有的discard则无效 */
|
|
89
|
-
void setDiscard(size_t discard);
|
|
94
|
+
void setDiscard(size_t discard) noexcept;
|
|
95
|
+
|
|
96
|
+
/** 根据自身数值,更新抛弃的个数, force=true则强制更新, 否则从当前自身的 discard() 开始更新 */
|
|
97
|
+
void updateDiscard(bool force = false) noexcept;
|
|
90
98
|
|
|
91
99
|
/** 返回有几个结果集输出 */
|
|
92
|
-
size_t getResultNumber() const;
|
|
100
|
+
size_t getResultNumber() const noexcept;
|
|
93
101
|
|
|
94
102
|
/** 判断是否为空 **/
|
|
95
|
-
bool empty() const;
|
|
103
|
+
bool empty() const noexcept;
|
|
96
104
|
|
|
97
105
|
/** 获取大小 **/
|
|
98
|
-
size_t size() const;
|
|
106
|
+
size_t size() const noexcept;
|
|
99
107
|
|
|
100
108
|
/** 只获取第一个结果集中相应位置输出,等同于get(pos, 0) */
|
|
101
109
|
value_t operator[](size_t pos) const;
|
|
@@ -130,7 +138,8 @@ public:
|
|
|
130
138
|
size_t getPos(Datetime) const;
|
|
131
139
|
|
|
132
140
|
/**
|
|
133
|
-
*
|
|
141
|
+
* 以指标的方式获取指定的结果集,不保留其公式。
|
|
142
|
+
* 对于不在需要进行运算的指标,可以通过该方法清除已占用的内存。
|
|
134
143
|
* @param num 指定的结果集
|
|
135
144
|
*/
|
|
136
145
|
Indicator getResult(size_t num) const;
|
|
@@ -171,22 +180,21 @@ public:
|
|
|
171
180
|
return m_imp->getParam<ValueType>(name);
|
|
172
181
|
}
|
|
173
182
|
|
|
174
|
-
bool supportIndParam() const;
|
|
175
183
|
bool haveIndParam(const string& name) const;
|
|
176
184
|
void setIndParam(const string& name, const Indicator& ind);
|
|
177
185
|
void setIndParam(const string& name, const IndParam& ind);
|
|
178
186
|
IndParam getIndParam(const string& name) const;
|
|
179
187
|
const IndicatorImpPtr getIndParamImp(const string& name) const;
|
|
180
188
|
|
|
181
|
-
IndicatorImpPtr getImp() const {
|
|
189
|
+
IndicatorImpPtr getImp() const noexcept {
|
|
182
190
|
return m_imp;
|
|
183
191
|
}
|
|
184
192
|
|
|
185
|
-
value_t* data(size_t result_idx = 0) {
|
|
193
|
+
value_t* data(size_t result_idx = 0) noexcept {
|
|
186
194
|
return m_imp ? m_imp->data(result_idx) : nullptr;
|
|
187
195
|
}
|
|
188
196
|
|
|
189
|
-
value_t const* data(size_t result_idx = 0) const {
|
|
197
|
+
value_t const* data(size_t result_idx = 0) const noexcept {
|
|
190
198
|
return m_imp ? m_imp->data(result_idx) : nullptr;
|
|
191
199
|
}
|
|
192
200
|
|
|
@@ -194,10 +202,10 @@ public:
|
|
|
194
202
|
* 判断两个ind的值是否相等
|
|
195
203
|
* @note operator==重载生成新的新的Indicator,此函数用于对两个ind进行值比较
|
|
196
204
|
*/
|
|
197
|
-
bool equal(const Indicator& other) const;
|
|
205
|
+
bool equal(const Indicator& other) const noexcept;
|
|
198
206
|
|
|
199
207
|
/** 判断是否是同一个实例 */
|
|
200
|
-
bool isSame(const Indicator& other) const {
|
|
208
|
+
bool isSame(const Indicator& other) const noexcept {
|
|
201
209
|
return !m_imp && m_imp == other.m_imp;
|
|
202
210
|
}
|
|
203
211
|
|
|
@@ -208,6 +216,8 @@ public:
|
|
|
208
216
|
|
|
209
217
|
string str() const;
|
|
210
218
|
|
|
219
|
+
bool isPythonObject() const noexcept;
|
|
220
|
+
|
|
211
221
|
public:
|
|
212
222
|
class Iterator {
|
|
213
223
|
private:
|
|
@@ -245,6 +255,15 @@ public:
|
|
|
245
255
|
|
|
246
256
|
typedef Iterator iterator;
|
|
247
257
|
|
|
258
|
+
public:
|
|
259
|
+
static void enableIncrementCalculate(bool flag) {
|
|
260
|
+
IndicatorImp::enableIncrementCalculate(flag);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
static bool enableIncrementCalculate() {
|
|
264
|
+
return IndicatorImp::enableIncrementCalculate();
|
|
265
|
+
}
|
|
266
|
+
|
|
248
267
|
protected:
|
|
249
268
|
IndicatorImpPtr m_imp;
|
|
250
269
|
|
|
@@ -261,39 +280,49 @@ private:
|
|
|
261
280
|
/** @ingroup Indicator */
|
|
262
281
|
typedef vector<Indicator> IndicatorList;
|
|
263
282
|
|
|
264
|
-
inline string Indicator::name() const {
|
|
283
|
+
inline string Indicator::name() const noexcept {
|
|
265
284
|
return m_imp ? m_imp->name() : "IndicatorImp";
|
|
266
285
|
}
|
|
267
286
|
|
|
268
|
-
inline void Indicator::name(const string& name) {
|
|
287
|
+
inline void Indicator::name(const string& name) noexcept {
|
|
269
288
|
if (m_imp) {
|
|
270
289
|
m_imp->name(name);
|
|
271
290
|
}
|
|
272
291
|
}
|
|
273
292
|
|
|
293
|
+
inline IndicatorImp::OPType Indicator::getOPType() const noexcept {
|
|
294
|
+
return m_imp ? m_imp->getOPType() : IndicatorImp::INVALID;
|
|
295
|
+
}
|
|
296
|
+
|
|
274
297
|
inline string Indicator::long_name() const {
|
|
275
298
|
return m_imp ? m_imp->long_name() : "IndicatorImp()";
|
|
276
299
|
}
|
|
277
300
|
|
|
278
|
-
inline size_t Indicator::discard() const {
|
|
301
|
+
inline size_t Indicator::discard() const noexcept {
|
|
279
302
|
return m_imp ? m_imp->discard() : 0;
|
|
280
303
|
}
|
|
281
304
|
|
|
282
|
-
inline void Indicator::setDiscard(size_t discard) {
|
|
305
|
+
inline void Indicator::setDiscard(size_t discard) noexcept {
|
|
283
306
|
if (m_imp) {
|
|
284
307
|
m_imp->setDiscard(discard);
|
|
285
308
|
}
|
|
286
309
|
}
|
|
287
310
|
|
|
288
|
-
inline
|
|
311
|
+
inline void Indicator::updateDiscard(bool force) noexcept {
|
|
312
|
+
if (m_imp) {
|
|
313
|
+
m_imp->updateDiscard(force);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
inline size_t Indicator::getResultNumber() const noexcept {
|
|
289
318
|
return m_imp ? m_imp->getResultNumber() : 0;
|
|
290
319
|
}
|
|
291
320
|
|
|
292
|
-
inline bool Indicator::empty() const {
|
|
321
|
+
inline bool Indicator::empty() const noexcept {
|
|
293
322
|
return (!m_imp || m_imp->size() == 0) ? true : false;
|
|
294
323
|
}
|
|
295
324
|
|
|
296
|
-
inline size_t Indicator::size() const {
|
|
325
|
+
inline size_t Indicator::size() const noexcept {
|
|
297
326
|
return m_imp ? m_imp->size() : 0;
|
|
298
327
|
}
|
|
299
328
|
|
|
@@ -369,8 +398,8 @@ inline const IndicatorImpPtr Indicator::getIndParamImp(const string& name) const
|
|
|
369
398
|
return m_imp ? m_imp->getIndParamImp(name) : IndicatorImpPtr();
|
|
370
399
|
}
|
|
371
400
|
|
|
372
|
-
inline bool Indicator::
|
|
373
|
-
return m_imp ? m_imp->
|
|
401
|
+
inline bool Indicator::isPythonObject() const noexcept {
|
|
402
|
+
return m_imp ? m_imp->isPythonObject() : false;
|
|
374
403
|
}
|
|
375
404
|
|
|
376
405
|
//--------------------------------------------------------------
|
|
@@ -22,10 +22,6 @@ public:
|
|
|
22
22
|
|
|
23
23
|
virtual IndicatorImpPtr _clone() override;
|
|
24
24
|
|
|
25
|
-
virtual bool needSelfAlikeCompare() const noexcept override {
|
|
26
|
-
return true;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
25
|
virtual bool selfAlike(const IndicatorImp& other) const noexcept override;
|
|
30
26
|
|
|
31
27
|
virtual void getSelfInnerNodesWithInputConext(vector<IndicatorImpPtr>& nodes) const override;
|