hikyuu 2.7.2__py3-none-win_amd64.whl → 2.7.5__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.
Files changed (232) hide show
  1. hikyuu/__init__.py +21 -7
  2. hikyuu/__init__.pyi +16 -14
  3. hikyuu/analysis/__init__.pyi +2 -0
  4. hikyuu/analysis/analysis.pyi +3 -1
  5. hikyuu/core.pyi +4 -2
  6. hikyuu/cpp/boost_date_time-mt.dll +0 -0
  7. hikyuu/cpp/boost_serialization-mt.dll +0 -0
  8. hikyuu/cpp/boost_wserialization-mt.dll +0 -0
  9. hikyuu/cpp/core310.pyd +0 -0
  10. hikyuu/cpp/core310.pyi +123 -62
  11. hikyuu/cpp/core311.pyd +0 -0
  12. hikyuu/cpp/core311.pyi +123 -62
  13. hikyuu/cpp/core312.pyd +0 -0
  14. hikyuu/cpp/core312.pyi +123 -62
  15. hikyuu/cpp/core313.pyd +0 -0
  16. hikyuu/cpp/core313.pyi +123 -62
  17. hikyuu/cpp/hikyuu.dll +0 -0
  18. hikyuu/cpp/hikyuu.lib +0 -0
  19. hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
  20. hikyuu/cpp/mimalloc-redirect.dll +0 -0
  21. hikyuu/cpp/mimalloc.dll +0 -0
  22. hikyuu/data/clickhouse_upgrade/0002.sql +9 -0
  23. hikyuu/data/common_mysql.py +1 -1
  24. hikyuu/data/em_block_to_mysql.py +16 -4
  25. hikyuu/data/em_block_to_sqlite.py +16 -4
  26. hikyuu/data/hku_config_template.py +21 -3
  27. hikyuu/data/mysql_upgrade/0030.sql +3 -0
  28. hikyuu/data/pytdx_to_h5.py +2 -2
  29. hikyuu/data/pytdx_to_mysql.py +5 -5
  30. hikyuu/data/sqlite_upgrade/0030.sql +5 -0
  31. hikyuu/data/tdx_to_clickhouse.py +2 -2
  32. hikyuu/data/tdx_to_h5.py +11 -11
  33. hikyuu/data/tdx_to_mysql.py +2 -2
  34. hikyuu/draw/__init__.pyi +1 -1
  35. hikyuu/draw/drawplot/bokeh_draw.pyi +8 -6
  36. hikyuu/draw/drawplot/echarts_draw.pyi +8 -6
  37. hikyuu/draw/drawplot/matplotlib_draw.py +19 -11
  38. hikyuu/draw/drawplot/matplotlib_draw.pyi +8 -6
  39. hikyuu/examples/notebook/001-overview.ipynb +112 -78
  40. hikyuu/examples/notebook/004-IndicatorOverview.ipynb +52 -65
  41. hikyuu/examples/notebook/006-TradeManager.ipynb +402 -291
  42. hikyuu/examples/notebook/008-Pickle.ipynb +25 -17
  43. hikyuu/examples/notebook/009-RealData.ipynb +36 -38
  44. hikyuu/examples/notebook/Demo/Demo2.ipynb +146 -116
  45. hikyuu/extend.pyi +5 -3
  46. hikyuu/gui/HikyuuTDX.py +20 -0
  47. hikyuu/gui/data/MainWindow.py +169 -133
  48. hikyuu/gui/data/UseTdxImportToH5Thread.py +4 -2
  49. hikyuu/gui/start_qmt.py +1 -1
  50. hikyuu/hub.pyi +6 -6
  51. hikyuu/include/hikyuu/Block.h +9 -9
  52. hikyuu/include/hikyuu/HistoryFinanceInfo.h +3 -3
  53. hikyuu/include/hikyuu/KData.h +51 -28
  54. hikyuu/include/hikyuu/KDataImp.h +12 -7
  55. hikyuu/include/hikyuu/KDataPrivatedBufferImp.h +13 -7
  56. hikyuu/include/hikyuu/KDataSharedBufferImp.h +8 -6
  57. hikyuu/include/hikyuu/KQuery.h +11 -11
  58. hikyuu/include/hikyuu/KRecord.h +1 -1
  59. hikyuu/include/hikyuu/MarketInfo.h +10 -10
  60. hikyuu/include/hikyuu/Stock.h +30 -30
  61. hikyuu/include/hikyuu/StockManager.h +24 -12
  62. hikyuu/include/hikyuu/StockTypeInfo.h +9 -9
  63. hikyuu/include/hikyuu/StockWeight.h +9 -9
  64. hikyuu/include/hikyuu/TimeLineRecord.h +1 -1
  65. hikyuu/include/hikyuu/TransRecord.h +1 -1
  66. hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +2 -1
  67. hikyuu/include/hikyuu/data_driver/BlockInfoDriver.h +6 -0
  68. hikyuu/include/hikyuu/data_driver/KDataDriver.h +6 -7
  69. hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +5 -1
  70. hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +1 -1
  71. hikyuu/include/hikyuu/global/sysinfo.h +1 -1
  72. hikyuu/include/hikyuu/indicator/IndParam.h +1 -1
  73. hikyuu/include/hikyuu/indicator/Indicator.h +56 -27
  74. hikyuu/include/hikyuu/indicator/Indicator2InImp.h +0 -4
  75. hikyuu/include/hikyuu/indicator/IndicatorImp.h +146 -73
  76. hikyuu/include/hikyuu/indicator/crt/CONTEXT.h +11 -1
  77. hikyuu/include/hikyuu/indicator/crt/IC.h +19 -14
  78. hikyuu/include/hikyuu/indicator/crt/ICIR.h +4 -7
  79. hikyuu/include/hikyuu/indicator/imp/IAbs.h +1 -0
  80. hikyuu/include/hikyuu/indicator/imp/IAcos.h +1 -0
  81. hikyuu/include/hikyuu/indicator/imp/IAd.h +0 -2
  82. hikyuu/include/hikyuu/indicator/imp/IAdvance.h +3 -0
  83. hikyuu/include/hikyuu/indicator/imp/IAma.h +3 -0
  84. hikyuu/include/hikyuu/indicator/imp/IAsin.h +1 -0
  85. hikyuu/include/hikyuu/indicator/imp/IAtan.h +1 -0
  86. hikyuu/include/hikyuu/indicator/imp/IAtr.h +2 -3
  87. hikyuu/include/hikyuu/indicator/imp/IBackset.h +2 -4
  88. hikyuu/include/hikyuu/indicator/imp/IBlockSetNum.h +3 -0
  89. hikyuu/include/hikyuu/indicator/imp/ICeil.h +1 -0
  90. hikyuu/include/hikyuu/indicator/imp/IContext.h +0 -3
  91. hikyuu/include/hikyuu/indicator/imp/ICorr.h +3 -0
  92. hikyuu/include/hikyuu/indicator/imp/ICos.h +1 -0
  93. hikyuu/include/hikyuu/indicator/imp/ICost.h +0 -2
  94. hikyuu/include/hikyuu/indicator/imp/ICount.h +2 -1
  95. hikyuu/include/hikyuu/indicator/imp/ICval.h +1 -4
  96. hikyuu/include/hikyuu/indicator/imp/ICycle.h +0 -2
  97. hikyuu/include/hikyuu/indicator/imp/IDecline.h +3 -0
  98. hikyuu/include/hikyuu/indicator/imp/IDevsq.h +4 -1
  99. hikyuu/include/hikyuu/indicator/imp/IDiff.h +1 -0
  100. hikyuu/include/hikyuu/indicator/imp/IDma.h +2 -0
  101. hikyuu/include/hikyuu/indicator/imp/IDropna.h +0 -4
  102. hikyuu/include/hikyuu/indicator/imp/IEma.h +3 -1
  103. hikyuu/include/hikyuu/indicator/imp/IEvery.h +5 -1
  104. hikyuu/include/hikyuu/indicator/imp/IExist.h +5 -1
  105. hikyuu/include/hikyuu/indicator/imp/IExp.h +1 -0
  106. hikyuu/include/hikyuu/indicator/imp/IFilter.h +4 -5
  107. hikyuu/include/hikyuu/indicator/imp/IFinance.h +1 -2
  108. hikyuu/include/hikyuu/indicator/imp/IFloor.h +1 -0
  109. hikyuu/include/hikyuu/indicator/imp/IHhvbars.h +5 -1
  110. hikyuu/include/hikyuu/indicator/imp/IHighLine.h +5 -1
  111. hikyuu/include/hikyuu/indicator/imp/IHsl.h +0 -2
  112. hikyuu/include/hikyuu/indicator/imp/IIc.h +3 -6
  113. hikyuu/include/hikyuu/indicator/imp/IInBlock.h +1 -2
  114. hikyuu/include/hikyuu/indicator/imp/IIntpart.h +1 -0
  115. hikyuu/include/hikyuu/indicator/imp/IIsInf.h +1 -0
  116. hikyuu/include/hikyuu/indicator/imp/IIsInfa.h +1 -0
  117. hikyuu/include/hikyuu/indicator/imp/IIsLastBar.h +0 -1
  118. hikyuu/include/hikyuu/indicator/imp/IIsNa.h +1 -0
  119. hikyuu/include/hikyuu/indicator/imp/IJumpDown.h +1 -0
  120. hikyuu/include/hikyuu/indicator/imp/IJumpUp.h +1 -0
  121. hikyuu/include/hikyuu/indicator/imp/IKData.h +1 -2
  122. hikyuu/include/hikyuu/indicator/imp/ILiuTongPan.h +0 -2
  123. hikyuu/include/hikyuu/indicator/imp/ILn.h +1 -0
  124. hikyuu/include/hikyuu/indicator/imp/ILog.h +1 -0
  125. hikyuu/include/hikyuu/indicator/imp/ILowLine.h +5 -1
  126. hikyuu/include/hikyuu/indicator/imp/ILowLineBars.h +5 -1
  127. hikyuu/include/hikyuu/indicator/imp/IMa.h +6 -1
  128. hikyuu/include/hikyuu/indicator/imp/IMacd.h +2 -0
  129. hikyuu/include/hikyuu/indicator/imp/INot.h +1 -0
  130. hikyuu/include/hikyuu/indicator/imp/IPow.h +3 -1
  131. hikyuu/include/hikyuu/indicator/imp/IQuantileTrunc.h +1 -0
  132. hikyuu/include/hikyuu/indicator/imp/IRecover.h +3 -0
  133. hikyuu/include/hikyuu/indicator/imp/IRef.h +3 -1
  134. hikyuu/include/hikyuu/indicator/imp/IResult.h +1 -0
  135. hikyuu/include/hikyuu/indicator/imp/IReverse.h +1 -0
  136. hikyuu/include/hikyuu/indicator/imp/IRoc.h +6 -1
  137. hikyuu/include/hikyuu/indicator/imp/IRocp.h +5 -1
  138. hikyuu/include/hikyuu/indicator/imp/IRocr.h +5 -1
  139. hikyuu/include/hikyuu/indicator/imp/IRocr100.h +5 -1
  140. hikyuu/include/hikyuu/indicator/imp/IRound.h +1 -0
  141. hikyuu/include/hikyuu/indicator/imp/IRoundDown.h +1 -0
  142. hikyuu/include/hikyuu/indicator/imp/IRoundUp.h +1 -0
  143. hikyuu/include/hikyuu/indicator/imp/ISaftyLoss.h +1 -0
  144. hikyuu/include/hikyuu/indicator/imp/ISign.h +1 -0
  145. hikyuu/include/hikyuu/indicator/imp/ISin.h +1 -0
  146. hikyuu/include/hikyuu/indicator/imp/ISlope.h +5 -1
  147. hikyuu/include/hikyuu/indicator/imp/ISma.h +2 -0
  148. hikyuu/include/hikyuu/indicator/imp/ISpearman.h +3 -0
  149. hikyuu/include/hikyuu/indicator/imp/ISqrt.h +1 -0
  150. hikyuu/include/hikyuu/indicator/imp/IStdev.h +5 -1
  151. hikyuu/include/hikyuu/indicator/imp/IStdp.h +5 -1
  152. hikyuu/include/hikyuu/indicator/imp/ISum.h +6 -1
  153. hikyuu/include/hikyuu/indicator/imp/ITan.h +1 -0
  154. hikyuu/include/hikyuu/indicator/imp/ITime.h +1 -2
  155. hikyuu/include/hikyuu/indicator/imp/ITimeLine.h +0 -2
  156. hikyuu/include/hikyuu/indicator/imp/ITr.h +1 -2
  157. hikyuu/include/hikyuu/indicator/imp/IVar.h +5 -1
  158. hikyuu/include/hikyuu/indicator/imp/IVarp.h +5 -1
  159. hikyuu/include/hikyuu/indicator/imp/IVigor.h +0 -2
  160. hikyuu/include/hikyuu/indicator/imp/IWma.h +5 -1
  161. hikyuu/include/hikyuu/indicator/imp/IZongGuBen.h +1 -2
  162. hikyuu/include/hikyuu/indicator_talib/imp/TaAdosc.h +0 -2
  163. hikyuu/include/hikyuu/indicator_talib/imp/TaSar.h +0 -2
  164. hikyuu/include/hikyuu/indicator_talib/imp/TaSarext.h +0 -4
  165. hikyuu/include/hikyuu/indicator_talib/imp/TaStoch.h +0 -3
  166. hikyuu/include/hikyuu/indicator_talib/imp/TaStochf.h +0 -2
  167. hikyuu/include/hikyuu/indicator_talib/imp/TaUltosc.h +0 -2
  168. hikyuu/include/hikyuu/indicator_talib/imp/ta_defines.h +2 -4
  169. hikyuu/include/hikyuu/indicator_talib/imp/ta_imp.h +70 -90
  170. hikyuu/include/hikyuu/plugin/extind.h +3 -0
  171. hikyuu/include/hikyuu/plugin/hkuextra.h +2 -0
  172. hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +2 -0
  173. hikyuu/include/hikyuu/python/pybind_utils.h +22 -5
  174. hikyuu/include/hikyuu/trade_manage/TradeCostBase.h +5 -3
  175. hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +9 -3
  176. hikyuu/include/hikyuu/trade_sys/allocatefunds/AllocateFundsBase.h +8 -4
  177. hikyuu/include/hikyuu/trade_sys/condition/ConditionBase.h +5 -3
  178. hikyuu/include/hikyuu/trade_sys/environment/EnvironmentBase.h +6 -3
  179. hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +5 -3
  180. hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +23 -20
  181. hikyuu/include/hikyuu/trade_sys/multifactor/NormalizeBase.h +6 -4
  182. hikyuu/include/hikyuu/trade_sys/multifactor/ScoresFilterBase.h +5 -3
  183. hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_EqualWeight.h +3 -3
  184. hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICIRWeight.h +4 -4
  185. hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICWeight.h +4 -4
  186. hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_Weight.h +4 -4
  187. hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +16 -13
  188. hikyuu/include/hikyuu/trade_sys/profitgoal/ProfitGoalBase.h +4 -3
  189. hikyuu/include/hikyuu/trade_sys/selector/SelectorBase.h +12 -3
  190. hikyuu/include/hikyuu/trade_sys/selector/crt/SE_MultiFactor.h +1 -1
  191. hikyuu/include/hikyuu/trade_sys/selector/crt/SE_MultiFactor2.h +1 -1
  192. hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector.h +1 -0
  193. hikyuu/include/hikyuu/trade_sys/selector/imp/MultiFactorSelector2.h +1 -0
  194. hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalSelectorBase.h +0 -2
  195. hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/PerformanceOptimalSelector.h +0 -4
  196. hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +5 -3
  197. hikyuu/include/hikyuu/trade_sys/slippage/SlippageBase.h +5 -3
  198. hikyuu/include/hikyuu/trade_sys/stoploss/StoplossBase.h +5 -3
  199. hikyuu/include/hikyuu/trade_sys/system/System.h +6 -4
  200. hikyuu/include/hikyuu/utilities/LruCache.h +299 -0
  201. hikyuu/include/hikyuu/utilities/arithmetic.h +2 -2
  202. hikyuu/include/hikyuu/utilities/omp_macro.h +25 -0
  203. hikyuu/include/hikyuu/utilities/plugin/PluginManager.h +5 -0
  204. hikyuu/include/hikyuu/utilities/thread/GlobalStealThreadPool.h +72 -19
  205. hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +0 -4
  206. hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +1 -0
  207. hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +1 -0
  208. hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +1 -0
  209. hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +1 -4
  210. hikyuu/include/hikyuu/utilities/thread/algorithm.h +286 -0
  211. hikyuu/include/hikyuu/version.h +4 -4
  212. hikyuu/plugin/backtest.dll +0 -0
  213. hikyuu/plugin/checkdata.dll +0 -0
  214. hikyuu/plugin/clickhousedriver.dll +0 -0
  215. hikyuu/plugin/dataserver.dll +0 -0
  216. hikyuu/plugin/dataserver_parquet.dll +0 -0
  217. hikyuu/plugin/device.dll +0 -0
  218. hikyuu/plugin/extind.dll +0 -0
  219. hikyuu/plugin/hkuextra.dll +0 -0
  220. hikyuu/plugin/import2ch.dll +0 -0
  221. hikyuu/plugin/import2hdf5.dll +0 -0
  222. hikyuu/plugin/import2mysql.dll +0 -0
  223. hikyuu/plugin/tmreport.dll +0 -0
  224. hikyuu/test/Indicator.py +1 -2
  225. hikyuu/trade_manage/__init__.pyi +7 -5
  226. hikyuu/trade_manage/trade.pyi +7 -5
  227. hikyuu/util/singleton.pyi +1 -1
  228. {hikyuu-2.7.2.dist-info → hikyuu-2.7.5.dist-info}/METADATA +2 -13
  229. {hikyuu-2.7.2.dist-info → hikyuu-2.7.5.dist-info}/RECORD +232 -225
  230. {hikyuu-2.7.2.dist-info → hikyuu-2.7.5.dist-info}/WHEEL +1 -1
  231. {hikyuu-2.7.2.dist-info → hikyuu-2.7.5.dist-info}/entry_points.txt +0 -0
  232. {hikyuu-2.7.2.dist-info → hikyuu-2.7.5.dist-info}/top_level.txt +0 -0
@@ -8,8 +8,6 @@
8
8
  */
9
9
 
10
10
  #pragma once
11
- #ifndef HIKYUU_UTILITIES_THREAD_THREADPOOL_H
12
- #define HIKYUU_UTILITIES_THREAD_THREADPOOL_H
13
11
 
14
12
  #include <cstdio>
15
13
  #include <future>
@@ -67,6 +65,7 @@ public:
67
65
  if (!m_done) {
68
66
  join();
69
67
  }
68
+ m_threads.clear();
70
69
  }
71
70
 
72
71
  /** 获取工作线程数 */
@@ -199,5 +198,3 @@ private:
199
198
  #ifdef __GNUC__
200
199
  #pragma GCC diagnostic pop
201
200
  #endif
202
-
203
- #endif /* HIKYUU_UTILITIES_THREAD_THREADPOOL_H */
@@ -10,15 +10,27 @@
10
10
  #include <future>
11
11
  #include <functional>
12
12
  #include <vector>
13
+ #include <limits>
13
14
  #include "ThreadPool.h"
14
15
  #include "MQThreadPool.h"
15
16
  #include "StealThreadPool.h"
16
17
  #include "MQStealThreadPool.h"
18
+ #include "GlobalMQThreadPool.h"
19
+ #include "GlobalStealThreadPool.h"
20
+ #include "GlobalMQStealThreadPool.h"
21
+ #include "GlobalThreadPool.h"
22
+
23
+ #ifndef HKU_UTILS_API
24
+ #define HKU_UTILS_API
25
+ #endif
17
26
 
18
27
  //----------------------------------------------------------------
19
28
  // Note: 除 ThreadPool/MQThreadPool 外,其他线程池由于使用
20
29
  // 了 thread_local,本质为全局变量,只适合全局单例的方式使用,
21
30
  // 否则会出现不同线程池示例互相影响导致出错。
31
+ // 每次会创建独立的线程池计算。
32
+ // 如果都是纯计算(IO较少),
33
+ // 建议创建全局线程池,并使用全局线程池进行计算。
22
34
  //----------------------------------------------------------------
23
35
 
24
36
  namespace hku {
@@ -163,4 +175,278 @@ auto parallel_for_index_single(size_t start, size_t end, FunctionType f, size_t
163
175
  return ret;
164
176
  }
165
177
 
178
+ //----------------------------------------------------------------
179
+ // 创建全局任务偷取线程池,主要目的用于计算密集或少量混合IO的并行,不适合纯IO的并行
180
+ // 前面 parallel_for 系列每次都会创建独立线程池。
181
+ // note: 程序内全局,初始化一次即可,重复初始化被忽略
182
+ //----------------------------------------------------------------
183
+ void HKU_UTILS_API init_global_task_group(size_t work_num = 0);
184
+
185
+ void HKU_UTILS_API release_global_task_group();
186
+
187
+ HKU_UTILS_API GlobalStealThreadPool* get_global_task_group();
188
+
189
+ size_t HKU_UTILS_API get_global_task_group_work_num();
190
+
191
+ template <typename FutureContainer>
192
+ void wait_for_all_non_blocking(GlobalStealThreadPool& pool, FutureContainer& futures) {
193
+ bool all_ready = false;
194
+ auto init_delay = std::chrono::microseconds(1);
195
+ auto delay = init_delay;
196
+ const auto max_delay = std::chrono::microseconds(50000);
197
+
198
+ while (!all_ready && !pool.done()) {
199
+ all_ready = true;
200
+ for (auto& future : futures) {
201
+ if (future.wait_for(std::chrono::nanoseconds(0)) != std::future_status::ready) {
202
+ all_ready = false;
203
+ break;
204
+ }
205
+ }
206
+
207
+ // 如果不是所有任务都完成,尝试执行本地任务
208
+ if (!all_ready) {
209
+ if (!pool.run_available_task_once()) {
210
+ delay = init_delay;
211
+ } else if (pool.done()) {
212
+ break;
213
+ } else {
214
+ std::this_thread::sleep_for(delay);
215
+ if (delay < max_delay) {
216
+ delay = std::min(delay * 2, max_delay);
217
+ }
218
+ }
219
+ }
220
+ }
221
+ }
222
+
223
+ // 辅助类,用于确保线程执行状态的正确管理
224
+ #ifdef _MSC_VER
225
+ class ExecutionGuard {
226
+ #else
227
+ class HKU_UTILS_API ExecutionGuard {
228
+ #endif
229
+
230
+ public:
231
+ explicit ExecutionGuard(bool initial_value = true) : p_flag(&in_parallel_execution) {
232
+ *p_flag = initial_value;
233
+ }
234
+
235
+ ~ExecutionGuard() {
236
+ if (p_flag) {
237
+ *p_flag = false;
238
+ }
239
+ }
240
+
241
+ ExecutionGuard(const ExecutionGuard&) = delete;
242
+ ExecutionGuard& operator=(const ExecutionGuard&) = delete;
243
+
244
+ ExecutionGuard(ExecutionGuard&& other) : p_flag(other.p_flag) {
245
+ other.p_flag = nullptr;
246
+ }
247
+
248
+ static bool is_executing() {
249
+ return in_parallel_execution;
250
+ }
251
+
252
+ private:
253
+ #if CPP_STANDARD >= CPP_STANDARD_17 && !defined(__clang__)
254
+ inline static thread_local bool in_parallel_execution{false};
255
+ #else
256
+ static thread_local bool in_parallel_execution;
257
+ #endif
258
+ bool* p_flag;
259
+ };
260
+
261
+ template <typename FunctionType>
262
+ auto global_parallel_for_index_void(size_t start, size_t end, FunctionType f, size_t threshold = 2,
263
+ bool enable_nested = true) {
264
+ auto* tg = get_global_task_group();
265
+ HKU_CHECK(tg, "Global task group is not initialized!");
266
+ HKU_IF_RETURN(start >= end, void());
267
+
268
+ // 检查当前线程是否已经在执行某个任务,如果是则降级为串行执行
269
+ if ((end - start) < threshold || (!enable_nested && ExecutionGuard::is_executing())) {
270
+ for (size_t i = start; i < end; i++) {
271
+ f(i);
272
+ }
273
+ return;
274
+ }
275
+
276
+ ExecutionGuard guard;
277
+
278
+ auto ranges = parallelIndexRange(start, end, tg->worker_num());
279
+ if (ranges.empty()) {
280
+ return;
281
+ }
282
+
283
+ std::vector<std::future<void>> tasks;
284
+ tasks.reserve(ranges.size());
285
+ for (size_t i = 0, total = ranges.size(); i < total; i++) {
286
+ tasks.emplace_back(tg->submit([enable_nested, func = f, range = ranges[i]]() {
287
+ if (!enable_nested && ExecutionGuard::is_executing()) {
288
+ for (size_t ix = range.first; ix < range.second; ix++) {
289
+ func(ix);
290
+ }
291
+ } else {
292
+ ExecutionGuard guard_inner;
293
+ for (size_t ix = range.first; ix < range.second; ix++) {
294
+ func(ix);
295
+ }
296
+ }
297
+ }));
298
+ }
299
+
300
+ wait_for_all_non_blocking(*tg, tasks);
301
+
302
+ for (auto& task : tasks) {
303
+ task.get();
304
+ }
305
+
306
+ return;
307
+ }
308
+
309
+ template <typename FunctionType>
310
+ auto global_parallel_for_index(size_t start, size_t end, FunctionType f, size_t threshold = 2,
311
+ bool enable_nested = true) {
312
+ auto* tg = get_global_task_group();
313
+ HKU_CHECK(tg, "Global task group is not initialized!");
314
+
315
+ std::vector<typename std::invoke_result<FunctionType, size_t>::type> ret;
316
+ HKU_IF_RETURN(start >= end, ret);
317
+
318
+ ret.reserve(end - start);
319
+
320
+ // 检查当前线程是否已经在执行某个任务,如果是则降级为串行执行
321
+ if ((end - start) < threshold || (!enable_nested && ExecutionGuard::is_executing())) {
322
+ for (size_t i = start; i < end; i++) {
323
+ ret.emplace_back(f(i));
324
+ }
325
+ return ret;
326
+ }
327
+
328
+ ExecutionGuard guard;
329
+
330
+ auto ranges = parallelIndexRange(start, end, tg->worker_num());
331
+ if (ranges.empty()) {
332
+ return ret;
333
+ }
334
+
335
+ std::vector<std::future<std::vector<typename std::invoke_result<FunctionType, size_t>::type>>>
336
+ tasks;
337
+ tasks.reserve(ranges.size());
338
+ for (size_t i = 0, total = ranges.size(); i < total; i++) {
339
+ tasks.emplace_back(tg->submit([enable_nested, func = f, range = ranges[i]]() {
340
+ std::vector<typename std::invoke_result<FunctionType, size_t>::type> one_ret;
341
+ one_ret.reserve(range.second - range.first);
342
+ if (!enable_nested && ExecutionGuard::is_executing()) {
343
+ for (size_t ix = range.first; ix < range.second; ix++) {
344
+ one_ret.emplace_back(func(ix));
345
+ }
346
+ return one_ret;
347
+ } else {
348
+ ExecutionGuard guard_inner;
349
+ for (size_t ix = range.first; ix < range.second; ix++) {
350
+ one_ret.emplace_back(func(ix));
351
+ }
352
+ return one_ret;
353
+ }
354
+ }));
355
+ }
356
+
357
+ wait_for_all_non_blocking(*tg, tasks);
358
+
359
+ for (auto& task : tasks) {
360
+ auto one = task.get();
361
+ for (auto&& value : one) {
362
+ ret.emplace_back(std::move(value));
363
+ }
364
+ }
365
+
366
+ return ret;
367
+ }
368
+
369
+ template <typename FunctionType>
370
+ void global_parallel_for_index_void_single(size_t start, size_t end, FunctionType f,
371
+ size_t threshold = 1, bool enable_nested = true) {
372
+ auto* tg = get_global_task_group();
373
+ HKU_CHECK(tg, "Global task group is not initialized!");
374
+ HKU_IF_RETURN(start >= end, void());
375
+
376
+ // 检查当前线程是否已经在执行某个任务,如果是则降级为串行执行
377
+ if ((end - start) < threshold || (!enable_nested && ExecutionGuard::is_executing())) {
378
+ for (size_t i = start; i < end; i++) {
379
+ f(i);
380
+ }
381
+ return;
382
+ }
383
+
384
+ ExecutionGuard guard;
385
+
386
+ std::vector<std::future<void>> tasks;
387
+ tasks.reserve(end - start);
388
+ for (size_t i = start; i < end; i++) {
389
+ tasks.push_back(tg->submit([enable_nested, func = f, i]() {
390
+ if (!enable_nested && ExecutionGuard::is_executing()) {
391
+ func(i);
392
+ } else {
393
+ ExecutionGuard guard_inner;
394
+ func(i);
395
+ }
396
+ }));
397
+ }
398
+
399
+ wait_for_all_non_blocking(*tg, tasks);
400
+
401
+ for (auto& task : tasks) {
402
+ task.get();
403
+ }
404
+ return;
405
+ }
406
+
407
+ template <typename FunctionType>
408
+ auto global_parallel_for_index_single(size_t start, size_t end, FunctionType f,
409
+ size_t threshold = 1, bool enable_nested = true) {
410
+ auto* tg = get_global_task_group();
411
+ HKU_CHECK(tg, "Global task group is not initialized!");
412
+
413
+ std::vector<typename std::invoke_result<FunctionType, size_t>::type> ret;
414
+ HKU_IF_RETURN(start >= end, ret);
415
+
416
+ ret.reserve(end - start);
417
+
418
+ // 检查当前线程是否已经在执行某个任务,如果是则降级为串行执行
419
+ if ((end - start) < threshold || (!enable_nested && ExecutionGuard::is_executing())) {
420
+ for (size_t i = start; i < end; i++) {
421
+ ret.push_back(f(i));
422
+ }
423
+ return ret;
424
+ }
425
+
426
+ ExecutionGuard guard;
427
+
428
+ std::vector<std::future<typename std::invoke_result<FunctionType, size_t>::type>> tasks;
429
+ tasks.reserve(end - start);
430
+ for (size_t i = start; i < end; i++) {
431
+ tasks.emplace_back(tg->submit([func = f, i, enable_nested]() ->
432
+ typename std::invoke_result<FunctionType, size_t>::type {
433
+ // 在任务内部也要检查嵌套
434
+ if (!enable_nested && ExecutionGuard::is_executing()) {
435
+ return func(i);
436
+ } else {
437
+ ExecutionGuard guard_inner;
438
+ return func(i);
439
+ }
440
+ }));
441
+ }
442
+
443
+ wait_for_all_non_blocking(*tg, tasks);
444
+
445
+ for (auto& task : tasks) {
446
+ ret.push_back(std::move(task.get()));
447
+ }
448
+
449
+ return ret;
450
+ }
451
+
166
452
  } // namespace hku
@@ -12,13 +12,13 @@
12
12
  #define HKU_VERSION_H
13
13
 
14
14
  // clang-format off
15
- #define HKU_VERSION "2.7.2"
15
+ #define HKU_VERSION "2.7.5"
16
16
  #define HKU_VERSION_MAJOR 2
17
17
  #define HKU_VERSION_MINOR 7
18
- #define HKU_VERSION_ALTER 2
19
- #define HKU_VERSION_BUILD 202512242101
18
+ #define HKU_VERSION_ALTER 5
19
+ #define HKU_VERSION_BUILD 202602021556
20
20
  #define HKU_VERSION_MODE "RELEASE"
21
- #define HKU_VERSION_GIT "2.7.2 release.380a3be0 (RELEASE)"
21
+ #define HKU_VERSION_GIT "2.7.5 release.e8204674 (RELEASE)"
22
22
  // clang-format on
23
23
 
24
24
  #endif /* HKU_VERSION_H */
Binary file
Binary file
Binary file
Binary file
Binary file
hikyuu/plugin/device.dll CHANGED
Binary file
hikyuu/plugin/extind.dll CHANGED
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
hikyuu/test/Indicator.py CHANGED
@@ -199,8 +199,7 @@ class IndicatorTest(unittest.TestCase):
199
199
  x = PRICELIST(a)
200
200
  m = MA(x, 2)
201
201
  self.assertEqual(len(m), 4)
202
- self.assertEqual(m.discard, 0)
203
- self.assertTrue(abs(m[0] - 0.0) < 0.0001)
202
+ self.assertEqual(m.discard, 1)
204
203
  self.assertTrue(abs(m[1] - 0.5) < 0.0001)
205
204
  self.assertTrue(abs(m[2] - 1.5) < 0.0001)
206
205
  self.assertTrue(abs(m[3] - 2.5) < 0.0001)
@@ -95,6 +95,7 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
95
95
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_STD
96
96
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_SUM
97
97
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_VAR
98
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_VWAP
98
99
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ALIGN
99
100
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AMA
100
101
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ASIN
@@ -183,8 +184,8 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
183
184
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import KALMAN
184
185
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import KDATA_PART
185
186
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LAST
186
- from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LASTVALUE as CONST
187
187
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LASTVALUE
188
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LASTVALUE as CONST
188
189
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LIUTONGPAN
189
190
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LIUTONGPAN as CAPITAL
190
191
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LLV
@@ -297,8 +298,8 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
297
298
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import SP_TruncNormal
298
299
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import SP_Uniform
299
300
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import SQRT
300
- from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDEV as STD
301
301
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDEV
302
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDEV as STD
302
303
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDP
303
304
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ST_FixedPercent
304
305
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ST_Indicator
@@ -526,6 +527,7 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
526
527
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import crt_sys_strategy
527
528
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import dates_to_np
528
529
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import df_to_krecords
530
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import enable_kdata_cache
529
531
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import fetch_trial_license
530
532
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import find_optimal_system
531
533
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import find_optimal_system_multi
@@ -627,8 +629,8 @@ from hikyuu.util.mylog import class_logger
627
629
  from hikyuu.util.mylog import hku_benchmark
628
630
  from hikyuu.util.mylog import hku_debug as hku_trace
629
631
  from hikyuu.util.mylog import hku_debug
630
- from hikyuu.util.mylog import hku_debug_if as hku_trace_if
631
632
  from hikyuu.util.mylog import hku_debug_if
633
+ from hikyuu.util.mylog import hku_debug_if as hku_trace_if
632
634
  from hikyuu.util.mylog import hku_error
633
635
  from hikyuu.util.mylog import hku_error_if
634
636
  from hikyuu.util.mylog import hku_fatal
@@ -643,7 +645,6 @@ from hikyuu.util.mylog import with_trace
643
645
  from hikyuu.util.notebook import in_interactive_session
644
646
  from hikyuu.util.notebook import in_ipython_frontend
645
647
  from hikyuu.util.timeout import timeout
646
- import io as io
647
648
  import locale as locale
648
649
  import logging
649
650
  import numpy as np
@@ -652,12 +653,13 @@ import pandas as pd
652
653
  from pathlib import Path
653
654
  import pickle as pickle
654
655
  import sys as sys
656
+ import time as time
655
657
  import traceback as traceback
656
658
  from . import broker
657
659
  from . import broker_easytrader
658
660
  from . import broker_mail
659
661
  from . import trade
660
- __all__ = ['ABS', 'ACOS', 'AD', 'ADVANCE', 'AF_EqualWeight', 'AF_FixedAmount', 'AF_FixedWeight', 'AF_FixedWeightList', 'AF_MultiFactor', 'AGG_COUNT', 'AGG_FUNC', 'AGG_MAD', 'AGG_MAX', 'AGG_MEAN', 'AGG_MEDIAN', 'AGG_MIN', 'AGG_PROD', 'AGG_QUANTILE', 'AGG_STD', 'AGG_SUM', 'AGG_VAR', 'ALIGN', 'AMA', 'AMO', 'ASIN', 'ATAN', 'ATR', 'AVEDEV', 'AllocateFundsBase', 'BACKSET', 'BARSCOUNT', 'BARSLAST', 'BARSLASTCOUNT', 'BARSSINCE', 'BARSSINCEN', 'BASE_DIR', 'BETWEEN', 'BLOCKSETNUM', 'BUSINESS', 'Block', 'BlockInfoDriver', 'BorrowRecord', 'BrokerPositionRecord', 'CAPITAL', 'CEILING', 'CLOSE', 'CN_Bool', 'CN_OPLine', 'CONST', 'CONTEXT', 'CONTEXT_K', 'CORR', 'COS', 'COST', 'COUNT', 'CROSS', 'CVAL', 'CYCLE', 'C_AMO', 'C_CLOSE', 'C_HIGH', 'C_KDATA', 'C_LOW', 'C_OPEN', 'C_VOL', 'ConditionBase', 'Constant', 'CostRecord', 'DATE', 'DAY', 'DEBUG', 'DECLINE', 'DEVSQ', 'DIFF', 'DISCARD', 'DMA', 'DOWNNDAY', 'DROPNA', 'DataDriverFactory', 'Datetime', 'DatetimeList', 'DatetimeList_to_df', 'DatetimeList_to_np', 'Datetime_date', 'Datetime_datetime', 'Days', 'EMA', 'ERROR', 'EVERY', 'EV_Bool', 'EV_TwoLine', 'EXIST', 'EXP', 'EasyTraderOrderBroker', 'EnvironmentBase', 'FATAL', 'FILTER', 'FINANCE', 'FLOOR', 'FundsRecord', 'GROUP_COUNT', 'GROUP_FUNC', 'GROUP_MAX', 'GROUP_MEAN', 'GROUP_MIN', 'GROUP_PROD', 'GROUP_SUM', 'HHV', 'HHVBARS', 'HIGH', 'HKUCheckError', 'HKUException', 'HOUR', 'HSL', 'Hours', 'IC', 'ICIR', 'IF', 'INBLOCK', 'INDEXA', 'INDEXADV', 'INDEXC', 'INDEXDEC', 'INDEXH', 'INDEXL', 'INDEXO', 'INDEXV', 'INFO', 'INSUM', 'INTPART', 'IR', 'ISINF', 'ISINFA', 'ISLASTBAR', 'ISNA', 'IndParam', 'Indicator', 'IndicatorImp', 'JUMPDOWN', 'JUMPUP', 'KALMAN', 'KDATA', 'KDATA_PART', 'KDJ', 'KData', 'KDataDriver', 'KDataToClickHouseImporter', 'KDataToHdf5Importer', 'KDataToMySQLImporter', 'KRecord', 'KRecordList', 'LAST', 'LASTVALUE', 'LIUTONGPAN', 'LLV', 'LLVBARS', 'LN', 'LOG', 'LOG_LEVEL', 'LONGCROSS', 'LOW', 'LoanRecord', 'LoggingContext', 'MA', 'MACD', 'MAX', 'MDD', 'MF_EqualWeight', 'MF_ICIRWeight', 'MF_ICWeight', 'MF_Weight', 'MIN', 'MINUTE', 'MM_FixedCapital', 'MM_FixedCapitalFunds', 'MM_FixedCount', 'MM_FixedCountTps', 'MM_FixedPercent', 'MM_FixedRisk', 'MM_FixedUnits', 'MM_Nothing', 'MM_WilliamsFixedRisk', 'MOD', 'MONTH', 'MRR', 'MailOrderBroker', 'MarketInfo', 'Microseconds', 'Milliseconds', 'Minutes', 'MoneyManagerBase', 'MultiFactorBase', 'NDAY', 'NORM_MinMax', 'NORM_NOTHING', 'NORM_Quantile', 'NORM_Quantile_Uniform', 'NORM_Zscore', 'NOT', 'NormalizeBase', 'OFF', 'OPEN', 'OrderBrokerBase', 'OrderBrokerWrap', 'PF_Simple', 'PF_WithoutAF', 'PG_FixedHoldDays', 'PG_FixedPercent', 'PG_NoGoal', 'POS', 'POW', 'PRICELIST', 'Parameter', 'Parameter_items', 'Parameter_iter', 'Parameter_keys', 'Parameter_to_dict', 'Path', 'Performance', 'Performance_to_df', 'Portfolio', 'PositionRecord', 'PositionRecordList', 'ProfitGoalBase', 'QUANTILE_TRUNC', 'Query', 'RANK', 'RECOVER_BACKWARD', 'RECOVER_EQUAL_BACKWARD', 'RECOVER_EQUAL_FORWARD', 'RECOVER_FORWARD', 'REF', 'REFX', 'REPLACE', 'RESULT', 'REVERSE', 'ROC', 'ROCP', 'ROCR', 'ROCR100', 'ROUND', 'ROUNDDOWN', 'ROUNDUP', 'RSI', 'SAFTYLOSS', 'SCFilter_AmountLimit', 'SCFilter_Group', 'SCFilter_IgnoreNan', 'SCFilter_LessOrEqualValue', 'SCFilter_Price', 'SCFilter_TopN', 'SE_EvaluateOptimal', 'SE_Fixed', 'SE_MaxFundsOptimal', 'SE_MultiFactor', 'SE_MultiFactor2', 'SE_PerformanceOptimal', 'SE_Signal', 'SGN', 'SG_Add', 'SG_AllwaysBuy', 'SG_And', 'SG_Band', 'SG_Bool', 'SG_Buy', 'SG_Cross', 'SG_CrossGold', 'SG_Cycle', 'SG_Div', 'SG_Flex', 'SG_Mul', 'SG_OneSide', 'SG_Or', 'SG_Sell', 'SG_Single', 'SG_Single2', 'SG_Sub', 'SIN', 'SLICE', 'SLOPE', 'SMA', 'SPEARMAN', 'SP_FixedPercent', 'SP_FixedValue', 'SP_LogNormal', 'SP_Normal', 'SP_TruncNormal', 'SP_Uniform', 'SQRT', 'STD', 'STDEV', 'STDP', 'ST_FixedPercent', 'ST_Indicator', 'ST_Saftyloss', 'SUM', 'SUMBARS', 'SYS_Simple', 'SYS_WalkForward', 'ScoreRecord', 'ScoreRecordList', 'ScoresFilterBase', 'Seconds', 'SelectorBase', 'SignalBase', 'SlippageBase', 'SpotRecord', 'Stock', 'StockManager', 'StockTypeInfo', 'StockWeight', 'StockWeightList', 'StoplossBase', 'Strategy', 'StrategyContext', 'System', 'SystemPart', 'SystemWeight', 'SystemWeightList', 'TAN', 'TA_ACCBANDS', 'TA_ACOS', 'TA_AD', 'TA_ADD', 'TA_ADOSC', 'TA_ADX', 'TA_ADXR', 'TA_APO', 'TA_AROON', 'TA_AROONOSC', 'TA_ASIN', 'TA_ATAN', 'TA_ATR', 'TA_AVGDEV', 'TA_AVGPRICE', 'TA_BBANDS', 'TA_BETA', 'TA_BOP', 'TA_CCI', 'TA_CDL2CROWS', 'TA_CDL3BLACKCROWS', 'TA_CDL3INSIDE', 'TA_CDL3LINESTRIKE', 'TA_CDL3OUTSIDE', 'TA_CDL3STARSINSOUTH', 'TA_CDL3WHITESOLDIERS', 'TA_CDLABANDONEDBABY', 'TA_CDLADVANCEBLOCK', 'TA_CDLBELTHOLD', 'TA_CDLBREAKAWAY', 'TA_CDLCLOSINGMARUBOZU', 'TA_CDLCONCEALBABYSWALL', 'TA_CDLCOUNTERATTACK', 'TA_CDLDARKCLOUDCOVER', 'TA_CDLDOJI', 'TA_CDLDOJISTAR', 'TA_CDLDRAGONFLYDOJI', 'TA_CDLENGULFING', 'TA_CDLEVENINGDOJISTAR', 'TA_CDLEVENINGSTAR', 'TA_CDLGAPSIDESIDEWHITE', 'TA_CDLGRAVESTONEDOJI', 'TA_CDLHAMMER', 'TA_CDLHANGINGMAN', 'TA_CDLHARAMI', 'TA_CDLHARAMICROSS', 'TA_CDLHIGHWAVE', 'TA_CDLHIKKAKE', 'TA_CDLHIKKAKEMOD', 'TA_CDLHOMINGPIGEON', 'TA_CDLIDENTICAL3CROWS', 'TA_CDLINNECK', 'TA_CDLINVERTEDHAMMER', 'TA_CDLKICKING', 'TA_CDLKICKINGBYLENGTH', 'TA_CDLLADDERBOTTOM', 'TA_CDLLONGLEGGEDDOJI', 'TA_CDLLONGLINE', 'TA_CDLMARUBOZU', 'TA_CDLMATCHINGLOW', 'TA_CDLMATHOLD', 'TA_CDLMORNINGDOJISTAR', 'TA_CDLMORNINGSTAR', 'TA_CDLONNECK', 'TA_CDLPIERCING', 'TA_CDLRICKSHAWMAN', 'TA_CDLRISEFALL3METHODS', 'TA_CDLSEPARATINGLINES', 'TA_CDLSHOOTINGSTAR', 'TA_CDLSHORTLINE', 'TA_CDLSPINNINGTOP', 'TA_CDLSTALLEDPATTERN', 'TA_CDLSTICKSANDWICH', 'TA_CDLTAKURI', 'TA_CDLTASUKIGAP', 'TA_CDLTHRUSTING', 'TA_CDLTRISTAR', 'TA_CDLUNIQUE3RIVER', 'TA_CDLUPSIDEGAP2CROWS', 'TA_CDLXSIDEGAP3METHODS', 'TA_CEIL', 'TA_CMO', 'TA_CORREL', 'TA_COS', 'TA_COSH', 'TA_DEMA', 'TA_DIV', 'TA_DX', 'TA_EMA', 'TA_EXP', 'TA_FLOOR', 'TA_HT_DCPERIOD', 'TA_HT_DCPHASE', 'TA_HT_PHASOR', 'TA_HT_SINE', 'TA_HT_TRENDLINE', 'TA_HT_TRENDMODE', 'TA_IMI', 'TA_KAMA', 'TA_LINEARREG', 'TA_LINEARREG_ANGLE', 'TA_LINEARREG_INTERCEPT', 'TA_LINEARREG_SLOPE', 'TA_LN', 'TA_LOG10', 'TA_MA', 'TA_MACD', 'TA_MACDEXT', 'TA_MACDFIX', 'TA_MAMA', 'TA_MAVP', 'TA_MAX', 'TA_MAXINDEX', 'TA_MEDPRICE', 'TA_MFI', 'TA_MIDPOINT', 'TA_MIDPRICE', 'TA_MIN', 'TA_MININDEX', 'TA_MINMAX', 'TA_MINMAXINDEX', 'TA_MINUS_DI', 'TA_MINUS_DM', 'TA_MOM', 'TA_MULT', 'TA_NATR', 'TA_OBV', 'TA_PLUS_DI', 'TA_PLUS_DM', 'TA_PPO', 'TA_ROC', 'TA_ROCP', 'TA_ROCR', 'TA_ROCR100', 'TA_RSI', 'TA_SAR', 'TA_SAREXT', 'TA_SIN', 'TA_SINH', 'TA_SMA', 'TA_SQRT', 'TA_STDDEV', 'TA_STOCH', 'TA_STOCHF', 'TA_STOCHRSI', 'TA_SUB', 'TA_SUM', 'TA_T3', 'TA_TAN', 'TA_TANH', 'TA_TEMA', 'TA_TRANGE', 'TA_TRIMA', 'TA_TRIX', 'TA_TSF', 'TA_TYPPRICE', 'TA_ULTOSC', 'TA_VAR', 'TA_WCLPRICE', 'TA_WILLR', 'TA_WMA', 'TC_FixedA', 'TC_FixedA2015', 'TC_FixedA2017', 'TC_TestStub', 'TC_Zero', 'TIME', 'TIMELINE', 'TIMELINEVOL', 'TR', 'TRACE', 'TURNOVER', 'TestOrderBroker', 'TimeDelta', 'TimeDelta_timedelta', 'TimeLineList', 'TimeLineRecord', 'TradeCostBase', 'TradeManager', 'TradeRecord', 'TradeRecordList', 'TradeRequest', 'TransList', 'TransRecord', 'UPNDAY', 'UTCOffset', 'VALUE', 'VAR', 'VARP', 'VIGOR', 'VOL', 'WARN', 'WEAVE', 'WEEK', 'WINNER', 'WITHDAY', 'WITHHALFYEAR', 'WITHHOUR', 'WITHHOUR2', 'WITHHOUR4', 'WITHKTYPE', 'WITHMIN', 'WITHMIN15', 'WITHMIN30', 'WITHMIN5', 'WITHMIN60', 'WITHMONTH', 'WITHQUARTER', 'WITHWEEK', 'WITHYEAR', 'WMA', 'YEAR', 'ZHBOND10', 'ZONGGUBEN', 'ZSCORE', 'active_device', 'add_class_logger_handler', 'atexit', 'backtest', 'batch_calculate_inds', 'bind_email', 'broker', 'broker_easytrader', 'broker_mail', 'can_upgrade', 'capture_multiprocess_all_logger', 'check_data', 'class_logger', 'close_ostream_to_python', 'close_spend_time', 'combinate_ind', 'combinate_index', 'concat_to_df', 'constant', 'core', 'cpp', 'crtBrokerTM', 'crtOB', 'crtSEOptimal', 'crtTM', 'crt_pf_strategy', 'crt_sys_strategy', 'current_path', 'date', 'dates_to_np', 'datetime', 'df_to_ind', 'df_to_krecords', 'dll_directory', 'extend', 'fetch_trial_license', 'find_optimal_system', 'find_optimal_system_multi', 'get_block', 'get_business_name', 'get_data_from_buffer_server', 'get_date_range', 'get_expire_date', 'get_funds_list', 'get_kdata', 'get_latest_version_info', 'get_log_level', 'get_spot_from_buffer_server', 'get_stock', 'get_system_part_enum', 'get_system_part_name', 'get_version', 'get_version_git', 'get_version_with_build', 'hikyuu_init', 'hku_benchmark', 'hku_catch', 'hku_check', 'hku_check_ignore', 'hku_check_throw', 'hku_debug', 'hku_debug_if', 'hku_error', 'hku_error_if', 'hku_fatal', 'hku_fatal_if', 'hku_info', 'hku_info_if', 'hku_logger', 'hku_run_ignore_exception', 'hku_to_async', 'hku_trace', 'hku_trace_if', 'hku_warn', 'hku_warn_if', 'in_interactive_session', 'in_ipython_frontend', 'indicator', 'inner_analysis_sys_list', 'inner_combinate_ind_analysis', 'inner_combinate_ind_analysis_with_block', 'io', 'is_valid_license', 'isinf', 'isnan', 'krecords_to_df', 'krecords_to_np', 'locale', 'new_Query_init', 'new_path', 'np', 'old_Query_init', 'open_ostream_to_python', 'open_spend_time', 'os', 'parallel_run_pf', 'parallel_run_sys', 'pd', 'pickle', 'positions_to_df', 'positions_to_np', 'pyind', 'register_extra_ktype', 'release_extra_ktype', 'remove_license', 'roundDown', 'roundEx', 'roundUp', 'run_in_strategy', 'scorerecords_to_df', 'scorerecords_to_np', 'set_log_level', 'set_my_logger_file', 'set_python_in_interactive', 'set_python_in_jupyter', 'spend_time', 'spot_agent_is_connected', 'spot_agent_is_running', 'start_data_server', 'start_spot_agent', 'stop_data_server', 'stop_spot_agent', 'sys', 'systemweights_to_df', 'systemweights_to_np', 'timedelta', 'timeline_to_df', 'timeline_to_np', 'timeout', 'toPriceList', 'traceback', 'trade', 'trades_to_df', 'trades_to_np', 'translist_to_df', 'translist_to_np', 'util', 'view_license', 'weights_to_df', 'weights_to_np', 'with_trace']
662
+ __all__ = ['ABS', 'ACOS', 'AD', 'ADVANCE', 'AF_EqualWeight', 'AF_FixedAmount', 'AF_FixedWeight', 'AF_FixedWeightList', 'AF_MultiFactor', 'AGG_COUNT', 'AGG_FUNC', 'AGG_MAD', 'AGG_MAX', 'AGG_MEAN', 'AGG_MEDIAN', 'AGG_MIN', 'AGG_PROD', 'AGG_QUANTILE', 'AGG_STD', 'AGG_SUM', 'AGG_VAR', 'AGG_VWAP', 'ALIGN', 'AMA', 'AMO', 'ASIN', 'ATAN', 'ATR', 'AVEDEV', 'AllocateFundsBase', 'BACKSET', 'BARSCOUNT', 'BARSLAST', 'BARSLASTCOUNT', 'BARSSINCE', 'BARSSINCEN', 'BASE_DIR', 'BETWEEN', 'BLOCKSETNUM', 'BUSINESS', 'Block', 'BlockInfoDriver', 'BorrowRecord', 'BrokerPositionRecord', 'CAPITAL', 'CEILING', 'CLOSE', 'CN_Bool', 'CN_OPLine', 'CONST', 'CONTEXT', 'CONTEXT_K', 'CORR', 'COS', 'COST', 'COUNT', 'CROSS', 'CVAL', 'CYCLE', 'C_AMO', 'C_CLOSE', 'C_HIGH', 'C_KDATA', 'C_LOW', 'C_OPEN', 'C_VOL', 'ConditionBase', 'Constant', 'CostRecord', 'DATE', 'DAY', 'DEBUG', 'DECLINE', 'DEVSQ', 'DIFF', 'DISCARD', 'DMA', 'DOWNNDAY', 'DROPNA', 'DataDriverFactory', 'Datetime', 'DatetimeList', 'DatetimeList_to_df', 'DatetimeList_to_np', 'Datetime_date', 'Datetime_datetime', 'Days', 'EMA', 'ERROR', 'EVERY', 'EV_Bool', 'EV_TwoLine', 'EXIST', 'EXP', 'EasyTraderOrderBroker', 'EnvironmentBase', 'FATAL', 'FILTER', 'FINANCE', 'FLOOR', 'FundsRecord', 'GROUP_COUNT', 'GROUP_FUNC', 'GROUP_MAX', 'GROUP_MEAN', 'GROUP_MIN', 'GROUP_PROD', 'GROUP_SUM', 'HHV', 'HHVBARS', 'HIGH', 'HKUCheckError', 'HKUException', 'HOUR', 'HSL', 'Hours', 'IC', 'ICIR', 'IF', 'INBLOCK', 'INDEXA', 'INDEXADV', 'INDEXC', 'INDEXDEC', 'INDEXH', 'INDEXL', 'INDEXO', 'INDEXV', 'INFO', 'INSUM', 'INTPART', 'IR', 'ISINF', 'ISINFA', 'ISLASTBAR', 'ISNA', 'IndParam', 'Indicator', 'IndicatorImp', 'JUMPDOWN', 'JUMPUP', 'KALMAN', 'KDATA', 'KDATA_PART', 'KDJ', 'KData', 'KDataDriver', 'KDataToClickHouseImporter', 'KDataToHdf5Importer', 'KDataToMySQLImporter', 'KRecord', 'KRecordList', 'LAST', 'LASTVALUE', 'LIUTONGPAN', 'LLV', 'LLVBARS', 'LN', 'LOG', 'LOG_LEVEL', 'LONGCROSS', 'LOW', 'LoanRecord', 'LoggingContext', 'MA', 'MACD', 'MAX', 'MDD', 'MF_EqualWeight', 'MF_ICIRWeight', 'MF_ICWeight', 'MF_Weight', 'MIN', 'MINUTE', 'MM_FixedCapital', 'MM_FixedCapitalFunds', 'MM_FixedCount', 'MM_FixedCountTps', 'MM_FixedPercent', 'MM_FixedRisk', 'MM_FixedUnits', 'MM_Nothing', 'MM_WilliamsFixedRisk', 'MOD', 'MONTH', 'MRR', 'MailOrderBroker', 'MarketInfo', 'Microseconds', 'Milliseconds', 'Minutes', 'MoneyManagerBase', 'MultiFactorBase', 'NDAY', 'NORM_MinMax', 'NORM_NOTHING', 'NORM_Quantile', 'NORM_Quantile_Uniform', 'NORM_Zscore', 'NOT', 'NormalizeBase', 'OFF', 'OPEN', 'OrderBrokerBase', 'OrderBrokerWrap', 'PF_Simple', 'PF_WithoutAF', 'PG_FixedHoldDays', 'PG_FixedPercent', 'PG_NoGoal', 'POS', 'POW', 'PRICELIST', 'Parameter', 'Parameter_items', 'Parameter_iter', 'Parameter_keys', 'Parameter_to_dict', 'Path', 'Performance', 'Performance_to_df', 'Portfolio', 'PositionRecord', 'PositionRecordList', 'ProfitGoalBase', 'QUANTILE_TRUNC', 'Query', 'RANK', 'RECOVER_BACKWARD', 'RECOVER_EQUAL_BACKWARD', 'RECOVER_EQUAL_FORWARD', 'RECOVER_FORWARD', 'REF', 'REFX', 'REPLACE', 'RESULT', 'REVERSE', 'ROC', 'ROCP', 'ROCR', 'ROCR100', 'ROUND', 'ROUNDDOWN', 'ROUNDUP', 'RSI', 'SAFTYLOSS', 'SCFilter_AmountLimit', 'SCFilter_Group', 'SCFilter_IgnoreNan', 'SCFilter_LessOrEqualValue', 'SCFilter_Price', 'SCFilter_TopN', 'SE_EvaluateOptimal', 'SE_Fixed', 'SE_MaxFundsOptimal', 'SE_MultiFactor', 'SE_MultiFactor2', 'SE_PerformanceOptimal', 'SE_Signal', 'SGN', 'SG_Add', 'SG_AllwaysBuy', 'SG_And', 'SG_Band', 'SG_Bool', 'SG_Buy', 'SG_Cross', 'SG_CrossGold', 'SG_Cycle', 'SG_Div', 'SG_Flex', 'SG_Mul', 'SG_OneSide', 'SG_Or', 'SG_Sell', 'SG_Single', 'SG_Single2', 'SG_Sub', 'SIN', 'SLICE', 'SLOPE', 'SMA', 'SPEARMAN', 'SP_FixedPercent', 'SP_FixedValue', 'SP_LogNormal', 'SP_Normal', 'SP_TruncNormal', 'SP_Uniform', 'SQRT', 'STD', 'STDEV', 'STDP', 'ST_FixedPercent', 'ST_Indicator', 'ST_Saftyloss', 'SUM', 'SUMBARS', 'SYS_Simple', 'SYS_WalkForward', 'ScoreRecord', 'ScoreRecordList', 'ScoresFilterBase', 'Seconds', 'SelectorBase', 'SignalBase', 'SlippageBase', 'SpotRecord', 'Stock', 'StockManager', 'StockTypeInfo', 'StockWeight', 'StockWeightList', 'StoplossBase', 'Strategy', 'StrategyContext', 'System', 'SystemPart', 'SystemWeight', 'SystemWeightList', 'TAN', 'TA_ACCBANDS', 'TA_ACOS', 'TA_AD', 'TA_ADD', 'TA_ADOSC', 'TA_ADX', 'TA_ADXR', 'TA_APO', 'TA_AROON', 'TA_AROONOSC', 'TA_ASIN', 'TA_ATAN', 'TA_ATR', 'TA_AVGDEV', 'TA_AVGPRICE', 'TA_BBANDS', 'TA_BETA', 'TA_BOP', 'TA_CCI', 'TA_CDL2CROWS', 'TA_CDL3BLACKCROWS', 'TA_CDL3INSIDE', 'TA_CDL3LINESTRIKE', 'TA_CDL3OUTSIDE', 'TA_CDL3STARSINSOUTH', 'TA_CDL3WHITESOLDIERS', 'TA_CDLABANDONEDBABY', 'TA_CDLADVANCEBLOCK', 'TA_CDLBELTHOLD', 'TA_CDLBREAKAWAY', 'TA_CDLCLOSINGMARUBOZU', 'TA_CDLCONCEALBABYSWALL', 'TA_CDLCOUNTERATTACK', 'TA_CDLDARKCLOUDCOVER', 'TA_CDLDOJI', 'TA_CDLDOJISTAR', 'TA_CDLDRAGONFLYDOJI', 'TA_CDLENGULFING', 'TA_CDLEVENINGDOJISTAR', 'TA_CDLEVENINGSTAR', 'TA_CDLGAPSIDESIDEWHITE', 'TA_CDLGRAVESTONEDOJI', 'TA_CDLHAMMER', 'TA_CDLHANGINGMAN', 'TA_CDLHARAMI', 'TA_CDLHARAMICROSS', 'TA_CDLHIGHWAVE', 'TA_CDLHIKKAKE', 'TA_CDLHIKKAKEMOD', 'TA_CDLHOMINGPIGEON', 'TA_CDLIDENTICAL3CROWS', 'TA_CDLINNECK', 'TA_CDLINVERTEDHAMMER', 'TA_CDLKICKING', 'TA_CDLKICKINGBYLENGTH', 'TA_CDLLADDERBOTTOM', 'TA_CDLLONGLEGGEDDOJI', 'TA_CDLLONGLINE', 'TA_CDLMARUBOZU', 'TA_CDLMATCHINGLOW', 'TA_CDLMATHOLD', 'TA_CDLMORNINGDOJISTAR', 'TA_CDLMORNINGSTAR', 'TA_CDLONNECK', 'TA_CDLPIERCING', 'TA_CDLRICKSHAWMAN', 'TA_CDLRISEFALL3METHODS', 'TA_CDLSEPARATINGLINES', 'TA_CDLSHOOTINGSTAR', 'TA_CDLSHORTLINE', 'TA_CDLSPINNINGTOP', 'TA_CDLSTALLEDPATTERN', 'TA_CDLSTICKSANDWICH', 'TA_CDLTAKURI', 'TA_CDLTASUKIGAP', 'TA_CDLTHRUSTING', 'TA_CDLTRISTAR', 'TA_CDLUNIQUE3RIVER', 'TA_CDLUPSIDEGAP2CROWS', 'TA_CDLXSIDEGAP3METHODS', 'TA_CEIL', 'TA_CMO', 'TA_CORREL', 'TA_COS', 'TA_COSH', 'TA_DEMA', 'TA_DIV', 'TA_DX', 'TA_EMA', 'TA_EXP', 'TA_FLOOR', 'TA_HT_DCPERIOD', 'TA_HT_DCPHASE', 'TA_HT_PHASOR', 'TA_HT_SINE', 'TA_HT_TRENDLINE', 'TA_HT_TRENDMODE', 'TA_IMI', 'TA_KAMA', 'TA_LINEARREG', 'TA_LINEARREG_ANGLE', 'TA_LINEARREG_INTERCEPT', 'TA_LINEARREG_SLOPE', 'TA_LN', 'TA_LOG10', 'TA_MA', 'TA_MACD', 'TA_MACDEXT', 'TA_MACDFIX', 'TA_MAMA', 'TA_MAVP', 'TA_MAX', 'TA_MAXINDEX', 'TA_MEDPRICE', 'TA_MFI', 'TA_MIDPOINT', 'TA_MIDPRICE', 'TA_MIN', 'TA_MININDEX', 'TA_MINMAX', 'TA_MINMAXINDEX', 'TA_MINUS_DI', 'TA_MINUS_DM', 'TA_MOM', 'TA_MULT', 'TA_NATR', 'TA_OBV', 'TA_PLUS_DI', 'TA_PLUS_DM', 'TA_PPO', 'TA_ROC', 'TA_ROCP', 'TA_ROCR', 'TA_ROCR100', 'TA_RSI', 'TA_SAR', 'TA_SAREXT', 'TA_SIN', 'TA_SINH', 'TA_SMA', 'TA_SQRT', 'TA_STDDEV', 'TA_STOCH', 'TA_STOCHF', 'TA_STOCHRSI', 'TA_SUB', 'TA_SUM', 'TA_T3', 'TA_TAN', 'TA_TANH', 'TA_TEMA', 'TA_TRANGE', 'TA_TRIMA', 'TA_TRIX', 'TA_TSF', 'TA_TYPPRICE', 'TA_ULTOSC', 'TA_VAR', 'TA_WCLPRICE', 'TA_WILLR', 'TA_WMA', 'TC_FixedA', 'TC_FixedA2015', 'TC_FixedA2017', 'TC_TestStub', 'TC_Zero', 'TIME', 'TIMELINE', 'TIMELINEVOL', 'TR', 'TRACE', 'TURNOVER', 'TestOrderBroker', 'TimeDelta', 'TimeDelta_timedelta', 'TimeLineList', 'TimeLineRecord', 'TradeCostBase', 'TradeManager', 'TradeRecord', 'TradeRecordList', 'TradeRequest', 'TransList', 'TransRecord', 'UPNDAY', 'UTCOffset', 'VALUE', 'VAR', 'VARP', 'VIGOR', 'VOL', 'WARN', 'WEAVE', 'WEEK', 'WINNER', 'WITHDAY', 'WITHHALFYEAR', 'WITHHOUR', 'WITHHOUR2', 'WITHHOUR4', 'WITHKTYPE', 'WITHMIN', 'WITHMIN15', 'WITHMIN30', 'WITHMIN5', 'WITHMIN60', 'WITHMONTH', 'WITHQUARTER', 'WITHWEEK', 'WITHYEAR', 'WMA', 'YEAR', 'ZHBOND10', 'ZONGGUBEN', 'ZSCORE', 'active_device', 'add_class_logger_handler', 'atexit', 'backtest', 'batch_calculate_inds', 'bind_email', 'broker', 'broker_easytrader', 'broker_mail', 'can_upgrade', 'capture_multiprocess_all_logger', 'check_data', 'class_logger', 'close_ostream_to_python', 'close_spend_time', 'combinate_ind', 'combinate_index', 'concat_to_df', 'constant', 'core', 'cpp', 'crtBrokerTM', 'crtOB', 'crtSEOptimal', 'crtTM', 'crt_pf_strategy', 'crt_sys_strategy', 'current_path', 'date', 'dates_to_np', 'datetime', 'df_to_ind', 'df_to_krecords', 'dll_directory', 'enable_kdata_cache', 'extend', 'fetch_trial_license', 'find_optimal_system', 'find_optimal_system_multi', 'get_block', 'get_business_name', 'get_data_from_buffer_server', 'get_date_range', 'get_expire_date', 'get_funds_list', 'get_kdata', 'get_latest_version_info', 'get_log_level', 'get_spot_from_buffer_server', 'get_stock', 'get_system_part_enum', 'get_system_part_name', 'get_version', 'get_version_git', 'get_version_with_build', 'hikyuu_init', 'hku_benchmark', 'hku_catch', 'hku_check', 'hku_check_ignore', 'hku_check_throw', 'hku_debug', 'hku_debug_if', 'hku_error', 'hku_error_if', 'hku_fatal', 'hku_fatal_if', 'hku_info', 'hku_info_if', 'hku_logger', 'hku_run_ignore_exception', 'hku_to_async', 'hku_trace', 'hku_trace_if', 'hku_warn', 'hku_warn_if', 'in_interactive_session', 'in_ipython_frontend', 'indicator', 'inner_analysis_sys_list', 'inner_combinate_ind_analysis', 'inner_combinate_ind_analysis_with_block', 'is_valid_license', 'isinf', 'isnan', 'krecords_to_df', 'krecords_to_np', 'locale', 'new_Query_init', 'new_path', 'np', 'old_Query_init', 'open_ostream_to_python', 'open_spend_time', 'os', 'parallel_run_pf', 'parallel_run_sys', 'pd', 'pickle', 'positions_to_df', 'positions_to_np', 'pyind', 'register_extra_ktype', 'release_extra_ktype', 'remove_license', 'roundDown', 'roundEx', 'roundUp', 'run_in_strategy', 'scorerecords_to_df', 'scorerecords_to_np', 'set_log_level', 'set_my_logger_file', 'set_python_in_interactive', 'set_python_in_jupyter', 'spend_time', 'spot_agent_is_connected', 'spot_agent_is_running', 'start_data_server', 'start_spot_agent', 'stop_data_server', 'stop_spot_agent', 'sys', 'systemweights_to_df', 'systemweights_to_np', 'time', 'timedelta', 'timeline_to_df', 'timeline_to_np', 'timeout', 'toPriceList', 'traceback', 'trade', 'trades_to_df', 'trades_to_np', 'translist_to_df', 'translist_to_np', 'util', 'view_license', 'weights_to_df', 'weights_to_np', 'with_trace']
661
663
  AMO: hikyuu.cpp.core310.Indicator # value = Indicator{...
662
664
  BASE_DIR: str = 'D:\\workspace\\hikyuu\\hikyuu'
663
665
  CLOSE: hikyuu.cpp.core310.Indicator # value = Indicator{...