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
@@ -22,10 +22,22 @@ def em_import_block_to_mysql(connect):
22
22
 
23
23
  hku_info("更新数据库")
24
24
  cur = connect.cursor()
25
- sql = f"delete from hku_base.block where category in {tuple(blks.keys())}"
26
- cur.execute(sql)
27
- sql = f"delete from hku_base.BlockIndex where category in {tuple(blks.keys())}"
28
- cur.execute(sql)
25
+
26
+ # 构建参数化的DELETE语句以防止SQL注入
27
+ categories = tuple(blks.keys())
28
+ if len(categories) == 1:
29
+ # 处理只有一个类别的特殊情况
30
+ placeholders = '%s'
31
+ params = categories
32
+ else:
33
+ placeholders = ','.join(['%s'] * len(categories)) # 创建相应数量的占位符
34
+ params = categories
35
+
36
+ sql = f"delete from hku_base.block where category in ({placeholders})"
37
+ cur.execute(sql, params)
38
+
39
+ sql = f"delete from hku_base.BlockIndex where category in ({placeholders})"
40
+ cur.execute(sql, params)
29
41
 
30
42
  insert_records = []
31
43
 
@@ -23,10 +23,22 @@ def em_import_block_to_sqlite(connect):
23
23
 
24
24
  hku_info("更新数据库")
25
25
  cur = connect.cursor()
26
- sql = f"delete from block where category in {tuple(blks.keys())}"
27
- cur.execute(sql)
28
- sql = f"delete from BlockIndex where category in {tuple(blks.keys())}"
29
- cur.execute(sql)
26
+
27
+ # 构建参数化的DELETE语句以防止SQL注入
28
+ categories = tuple(blks.keys())
29
+ if len(categories) == 1:
30
+ # 处理只有一个类别的特殊情况
31
+ placeholders = '?'
32
+ params = categories
33
+ else:
34
+ placeholders = ','.join(['?'] * len(categories)) # 创建相应数量的占位符
35
+ params = categories
36
+
37
+ sql = f"delete from block where category in ({placeholders})"
38
+ cur.execute(sql, params)
39
+
40
+ sql = f"delete from BlockIndex where category in ({placeholders})"
41
+ cur.execute(sql, params)
30
42
 
31
43
  insert_records = []
32
44
 
@@ -54,6 +54,8 @@ min15 = {min15}
54
54
  min30 = {min30}
55
55
  min60 = {min60}
56
56
  hour2= {hour2}
57
+ timeline = {timeline}
58
+ trans = {trans}
57
59
  day_max = {day_max}
58
60
  week_max = {week_max}
59
61
  month_max = {month_max}
@@ -66,6 +68,8 @@ min15_max = {min15_max}
66
68
  min30_max = {min30_max}
67
69
  min60_max = {min60_max}
68
70
  hour2_max = {hour2_max}
71
+ timeline_max = {timeline_max}
72
+ trans_max = {trans_max}
69
73
 
70
74
  [baseinfo]
71
75
  type = sqlite3
@@ -120,6 +124,8 @@ min15 = {min15}
120
124
  min30 = {min30}
121
125
  min60 = {min60}
122
126
  hour2 = {hour2}
127
+ timeline = {timeline}
128
+ trans = {trans}
123
129
  day_max = {day_max}
124
130
  week_max = {week_max}
125
131
  month_max = {month_max}
@@ -132,6 +138,8 @@ min15_max = {min15_max}
132
138
  min30_max = {min30_max}
133
139
  min60_max = {min60_max}
134
140
  hour2_max = {hour2_max}
141
+ timeline_max = {timeline_max}
142
+ trans_max = {trans_max}
135
143
 
136
144
  [baseinfo]
137
145
  type = mysql
@@ -177,6 +185,8 @@ min15 = {min15}
177
185
  min30 = {min30}
178
186
  min60 = {min60}
179
187
  hour2 = {hour2}
188
+ timeline = {timeline}
189
+ trans = {trans}
180
190
  day_max = {day_max}
181
191
  week_max = {week_max}
182
192
  month_max = {month_max}
@@ -189,6 +199,8 @@ min15_max = {min15_max}
189
199
  min30_max = {min30_max}
190
200
  min60_max = {min60_max}
191
201
  hour2_max = {hour2_max}
202
+ timeline_max = {timeline_max}
203
+ trans_max = {trans_max}
192
204
 
193
205
  [baseinfo]
194
206
  type = clickhouse
@@ -291,6 +303,8 @@ min15 = False
291
303
  min30 = False
292
304
  min60 = False
293
305
  hour2 = False
306
+ timeline = False
307
+ trans = False
294
308
  day_max = 100000
295
309
  week_max = 100000
296
310
  month_max = 100000
@@ -303,6 +317,8 @@ min15_max = 5120
303
317
  min30_max = 5120
304
318
  min60_max = 5120
305
319
  hour2_max = 5120
320
+ timeline_max = 5120
321
+ trans_max = 5120
306
322
  """
307
323
 
308
324
 
@@ -314,13 +330,15 @@ def generate_default_config():
314
330
  user_dir = os.path.expanduser('~')
315
331
  data_dir = "c:\\stock" if sys.platform == 'win32' else f"{user_dir}/stock"
316
332
  hdf5_config = hdf5_template.format(dir=data_dir, reload_time="00:00", quotation_server='ipc:///tmp/hikyuu_real.ipc',
317
- day=True, week=False,
333
+ lazy_preload=False, day=True, week=False,
318
334
  month=False, quarter=False, halfyear=False, year=False,
319
335
  min1=False, min5=False, min15=False, min30=False,
320
- min60=False, hour2=False, day_max=100000, week_max=100000,
336
+ min60=False, hour2=False, timeline=False, trans=False,
337
+ day_max=100000, week_max=100000,
321
338
  month_max=100000, quarter_max=100000, halfyear_max=100000,
322
339
  year_max=100000, min1_max=5120, min5_max=5120, min15_max=5120,
323
- min30_max=5120, min60_max=5120, hour2_max=5120)
340
+ min30_max=5120, min60_max=5120, hour2_max=5120,
341
+ timeline_max=5120, trans_max=5120)
324
342
  config_dir = f"{user_dir}/.hikyuu"
325
343
  if not os.path.lexists(config_dir):
326
344
  os.makedirs(config_dir)
@@ -0,0 +1,3 @@
1
+ update `hku_base`.`stocktypeinfo` set `minTradeNumber`=200 where `type`=9 and `description`='科创板';
2
+ update `hku_base`.`stocktypeinfo` set `minTradeNumber`=100 where `type`=11 and `description`='北交所';
3
+ UPDATE `hku_base`.`version` set `version` = 30;
@@ -327,11 +327,11 @@ def import_one_stock_data(connect, api, h5file, market, ktype, stock_record, sta
327
327
  hku_error(
328
328
  f"fetch data from tdx error! {bar_datetime} {ktype} {market}{code} last_krecord close: {last_krecord['closePrice']*0.001}, bar: {bar['close']}")
329
329
  return (0, False, Datetime(last_datetime))
330
- if ktype == 'DAY' and last_krecord['transAmount'] != 0 and (abs(float(last_krecord['transAmount']) - round(bar["amount"]*0.001))) > 10:
330
+ if ktype == 'DAY' and last_krecord['transAmount'] != 0 and (abs(float(last_krecord['transAmount']) - round(bar["amount"]*0.001))) > 10000:
331
331
  hku_error(
332
332
  f"fetch data from tdx error! {bar_datetime} {ktype} {market}{code} last_krecord amount: {float(last_krecord['transAmount'])}, bar: {round(bar['amount']*0.001)}")
333
333
  return (0, False, Datetime(last_datetime))
334
- if ktype == 'DAY' and last_krecord['transCount'] != 0 and abs(float(last_krecord['transCount']) - bar["vol"]) > 10:
334
+ if ktype == 'DAY' and last_krecord['transCount'] != 0 and abs(float(last_krecord['transCount']) - bar["vol"]) > 10000:
335
335
  hku_error(
336
336
  f"fetch data from tdx error! {bar_datetime} {ktype} {market}{code} last_krecord count: {last_krecord['transCount']}, bar: {bar['vol']}")
337
337
  return (0, False, Datetime(last_datetime))
@@ -371,11 +371,11 @@ def import_one_stock_data(
371
371
  hku_error(
372
372
  f"fetch data from tdx error! {bar_datetime} {ktype} {market}{code} last_krecord close: {last_krecord[4]}, bar: {bar['close']}")
373
373
  return (0, False, Datetime(last_datetime))
374
- if ktype == 'DAY' and last_krecord[5] != 0.0 and abs(last_krecord[5] - bar["amount"]*0.001) > 10:
374
+ if ktype == 'DAY' and last_krecord[5] != 0.0 and abs(last_krecord[5] - bar["amount"]*0.001) > 10000:
375
375
  hku_error(
376
376
  f"fetch data from tdx error! {bar_datetime} {ktype} {market}{code} last_krecord amount: {last_krecord[5]}, bar: {bar['amount']*0.001}")
377
377
  return (0, False, Datetime(last_datetime))
378
- if ktype == 'DAY' and last_krecord[6] != 0.0 and abs(last_krecord[6] - bar["vol"]) > 10:
378
+ if ktype == 'DAY' and last_krecord[6] != 0.0 and abs(last_krecord[6] - bar["vol"]) > 10000:
379
379
  hku_error(
380
380
  f"fetch data from tdx error! {bar_datetime} {ktype} {market}{code} last_krecord count: {last_krecord[6]}, bar: {bar['vol']}")
381
381
  return (0, False, Datetime(last_datetime))
@@ -523,11 +523,11 @@ def import_data(
523
523
  '5MIN': 'MIN5'
524
524
  }
525
525
  nktype = ktype_dict[ktype]
526
- h5_importer = get_mysql_importer(market, nktype)
527
- if h5_importer is not None:
526
+ importer = get_mysql_importer()
527
+ if importer is not None:
528
528
  for r in failed_list:
529
529
  hku_warn("remove {}{} {}: {}", r[0], r[1], nktype, r[2].start_of_day())
530
- h5_importer.remove(r[0], r[1], nktype, r[2].start_of_day())
530
+ importer.remove(r[0], r[1], nktype, r[2].start_of_day())
531
531
  hku_warn(f"已清理 {market} {failed_count} 个失败股票的最后记录,建议重新导入")
532
532
 
533
533
  if failed_count >= failed_limit:
@@ -0,0 +1,5 @@
1
+ BEGIN TRANSACTION;
2
+ update `stocktypeinfo` set `minTradeNumber`=200 where `type`=9 and `description`='科创板';
3
+ update `stocktypeinfo` set `minTradeNumber`=100 where `type`=11 and `description`='北交所';
4
+ UPDATE `version` set `version` = 30;
5
+ COMMIT;
@@ -189,7 +189,7 @@ def tdx_import_day_data_from_file(connect, filename, ktype, market, stock_record
189
189
  with open(filename, 'rb') as src_file:
190
190
  data = src_file.read(32)
191
191
  while data:
192
- record = struct.unpack('iiiiifii', data)
192
+ record = struct.unpack('IIIIIfII', data)
193
193
  if lastdatetime and record[0] <= lastdatetime:
194
194
  data = src_file.read(32)
195
195
  continue
@@ -291,7 +291,7 @@ def tdx_import_min_data_from_file(connect, filename, ktype, market, stock_record
291
291
 
292
292
  data = src_file.read(32)
293
293
  while data:
294
- record = struct.unpack('HHfffffii', data)
294
+ record = struct.unpack('HHfffffII', data)
295
295
  if record[3] >= record[2] >= record[4] > 0\
296
296
  and record[3] >= record[5] >= record[4] > 0\
297
297
  and record[5] >= 0 \
hikyuu/data/tdx_to_h5.py CHANGED
@@ -124,14 +124,14 @@ def tdx_import_stock_name_from_file(connect, filename, market, quotations=None):
124
124
  length = len(codepre[0])
125
125
  if code[:length] == codepre[0]:
126
126
  count += 1
127
- #print(market, code, newStockDict[code], codepre)
127
+ # print(market, code, newStockDict[code], codepre)
128
128
  sql = "insert into Stock(marketid, code, name, type, valid, startDate, endDate) \
129
129
  values (%s, '%s', '%s', %s, %s, %s, %s)" \
130
130
  % (marketid, code, newStockDict[code], codepre[1], 1, today, 99999999)
131
131
  cur.execute(sql)
132
132
  break
133
133
 
134
- #print('%s新增股票数:%i' % (market.upper(), count))
134
+ # print('%s新增股票数:%i' % (market.upper(), count))
135
135
  connect.commit()
136
136
  cur.close()
137
137
  return count
@@ -163,7 +163,7 @@ def tdx_import_day_data_from_file(connect, filename, h5file, market, stock_recor
163
163
  with open(filename, 'rb') as src_file:
164
164
  data = src_file.read(32)
165
165
  while data:
166
- record = struct.unpack('iiiiifii', data)
166
+ record = struct.unpack('IIIIIfII', data)
167
167
  if lastdatetime and record[0] <= lastdatetime:
168
168
  data = src_file.read(32)
169
169
  continue
@@ -191,8 +191,8 @@ def tdx_import_day_data_from_file(connect, filename, h5file, market, stock_recor
191
191
  if add_record_count > 0:
192
192
  table.flush()
193
193
 
194
- #更新基础信息数据库中股票对应的起止日期及其有效标志
195
- #if valid == 0:
194
+ # 更新基础信息数据库中股票对应的起止日期及其有效标志
195
+ # if valid == 0:
196
196
  cur = connect.cursor()
197
197
  cur.execute(
198
198
  "update stock set valid=1, startdate=%i, enddate=%i where stockid=%i" %
@@ -201,13 +201,13 @@ def tdx_import_day_data_from_file(connect, filename, h5file, market, stock_recor
201
201
  connect.commit()
202
202
  cur.close()
203
203
 
204
- #记录最新更新日期
204
+ # 记录最新更新日期
205
205
  if (code == '000001' and marketid == MARKETID.SH) \
206
- or (code == '399001' and marketid == MARKETID.SZ) :
206
+ or (code == '399001' and marketid == MARKETID.SZ):
207
207
  update_last_date(connect, marketid, table[-1]['datetime'] / 10000)
208
208
 
209
209
  elif table.nrows == 0:
210
- #print(market, stock_record)
210
+ # print(market, stock_record)
211
211
  table.remove()
212
212
 
213
213
  return add_record_count
@@ -290,7 +290,7 @@ def tdx_import_min_data_from_file(connect, filename, h5file, market, stock_recor
290
290
 
291
291
  data = src_file.read(32)
292
292
  while data:
293
- record = struct.unpack('HHfffffii', data)
293
+ record = struct.unpack('HHfffffII', data)
294
294
  if 0 not in record[2:6]:
295
295
  if record[3] >= record[2] >= record[4] \
296
296
  and record[3] >= record[5] >= record[4]:
@@ -314,7 +314,7 @@ def tdx_import_min_data_from_file(connect, filename, h5file, market, stock_recor
314
314
  if add_record_count > 0:
315
315
  table.flush()
316
316
  elif table.nrows == 0:
317
- #print(market, stock_record)
317
+ # print(market, stock_record)
318
318
  table.remove()
319
319
 
320
320
  return add_record_count
@@ -386,7 +386,7 @@ if __name__ == '__main__':
386
386
 
387
387
  src_dir = "D:\\TdxW_HuaTai"
388
388
  dest_dir = "c:\\stock"
389
- quotations = ['stock', 'fund'] #通达信盘后数据没有债券
389
+ quotations = ['stock', 'fund'] # 通达信盘后数据没有债券
390
390
 
391
391
  connect = sqlite3.connect(dest_dir + "\\stock.db")
392
392
  create_database(connect)
@@ -171,7 +171,7 @@ def tdx_import_day_data_from_file(connect, filename, ktype, market, stock_record
171
171
  with open(filename, 'rb') as src_file:
172
172
  data = src_file.read(32)
173
173
  while data:
174
- record = struct.unpack('iiiiifii', data)
174
+ record = struct.unpack('IIIIIfII', data)
175
175
  if lastdatetime and record[0] <= lastdatetime:
176
176
  data = src_file.read(32)
177
177
  continue
@@ -297,7 +297,7 @@ def tdx_import_min_data_from_file(connect, filename, ktype, market, stock_record
297
297
 
298
298
  data = src_file.read(32)
299
299
  while data:
300
- record = struct.unpack('HHfffffii', data)
300
+ record = struct.unpack('HHfffffII', data)
301
301
  if record[3] >= record[2] >= record[4] > 0\
302
302
  and record[3] >= record[5] >= record[4] > 0\
303
303
  and record[5] >= 0 \
hikyuu/draw/__init__.pyi CHANGED
@@ -9,8 +9,8 @@ from hikyuu.draw.drawplot import gcf
9
9
  from hikyuu.draw.drawplot import get_current_draw_engine
10
10
  from hikyuu.draw.drawplot.matplotlib_draw import DRAWBAND
11
11
  from hikyuu.draw.drawplot.matplotlib_draw import DRAWICON
12
- from hikyuu.draw.drawplot.matplotlib_draw import DRAWIMG
13
12
  from hikyuu.draw.drawplot.matplotlib_draw import DRAWIMG as DRAWBMP
13
+ from hikyuu.draw.drawplot.matplotlib_draw import DRAWIMG
14
14
  from hikyuu.draw.drawplot.matplotlib_draw import DRAWLINE
15
15
  from hikyuu.draw.drawplot.matplotlib_draw import DRAWNUMBER
16
16
  from hikyuu.draw.drawplot.matplotlib_draw import DRAWNUMBER_FIX
@@ -114,6 +114,7 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
114
114
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_STD
115
115
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_SUM
116
116
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_VAR
117
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AGG_VWAP
117
118
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ALIGN
118
119
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import AMA
119
120
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ASIN
@@ -202,8 +203,8 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
202
203
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import KALMAN
203
204
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import KDATA_PART
204
205
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LAST
205
- from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LASTVALUE as CONST
206
206
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LASTVALUE
207
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LASTVALUE as CONST
207
208
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LIUTONGPAN
208
209
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LIUTONGPAN as CAPITAL
209
210
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import LLV
@@ -316,8 +317,8 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
316
317
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import SP_TruncNormal
317
318
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import SP_Uniform
318
319
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import SQRT
319
- from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDEV as STD
320
320
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDEV
321
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDEV as STD
321
322
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import STDP
322
323
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ST_FixedPercent
323
324
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import ST_Indicator
@@ -545,6 +546,7 @@ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 impo
545
546
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import crt_sys_strategy
546
547
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import dates_to_np
547
548
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import df_to_krecords
549
+ from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import enable_kdata_cache
548
550
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import fetch_trial_license
549
551
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import find_optimal_system
550
552
  from hikyuu.cpp.core310.pybind11_detail_function_record_v1_msvc_md_mscver19 import find_optimal_system_multi
@@ -632,8 +634,8 @@ from hikyuu.hub import get_part_info
632
634
  from hikyuu.hub import get_part_list
633
635
  from hikyuu.hub import get_part_module
634
636
  from hikyuu.hub import get_part_name_list
635
- from hikyuu.hub import print_part_info as help_part
636
637
  from hikyuu.hub import print_part_info
638
+ from hikyuu.hub import print_part_info as help_part
637
639
  from hikyuu.hub import remove_hub
638
640
  from hikyuu.hub import search_part
639
641
  from hikyuu.hub import update_hub
@@ -684,8 +686,8 @@ from hikyuu.util.mylog import class_logger
684
686
  from hikyuu.util.mylog import hku_benchmark
685
687
  from hikyuu.util.mylog import hku_debug as hku_trace
686
688
  from hikyuu.util.mylog import hku_debug
687
- from hikyuu.util.mylog import hku_debug_if as hku_trace_if
688
689
  from hikyuu.util.mylog import hku_debug_if
690
+ from hikyuu.util.mylog import hku_debug_if as hku_trace_if
689
691
  from hikyuu.util.mylog import hku_error
690
692
  from hikyuu.util.mylog import hku_error_if
691
693
  from hikyuu.util.mylog import hku_fatal
@@ -700,7 +702,6 @@ from hikyuu.util.mylog import with_trace
700
702
  from hikyuu.util.notebook import in_interactive_session
701
703
  from hikyuu.util.notebook import in_ipython_frontend
702
704
  from hikyuu.util.timeout import timeout
703
- import io as io
704
705
  import locale as locale
705
706
  import logging
706
707
  import numpy as np
@@ -709,8 +710,9 @@ import pandas as pd
709
710
  from pathlib import Path
710
711
  import pickle as pickle
711
712
  import sys as sys
713
+ import time as time
712
714
  import traceback as traceback
713
- __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', 'ColumnDataSource', 'ConditionBase', 'Constant', 'CostRecord', 'DATE', 'DAY', 'DEBUG', 'DECLINE', 'DEVSQ', 'DIFF', 'DISCARD', 'DMA', 'DOWNNDAY', 'DROPNA', 'DataDriverFactory', 'Datetime', 'DatetimeList', 'DatetimeList_to_df', 'DatetimeList_to_np', 'DatetimeTickFormatter', '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', 'HoverTool', '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', 'Label', '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', 'Title', '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', 'add_local_hub', 'add_remote_hub', 'analysis', 'analysis_sys_list', 'analysis_sys_list_multi', 'atexit', 'ax_draw_macd', 'ax_draw_macd2', 'ax_fill_between', 'ax_set_xlim', 'ax_set_ylim', 'backtest', 'batch_calculate_inds', 'bind_email', 'broker', 'broker_easytrader', 'broker_mail', 'build_hub', 'can_upgrade', 'capture_multiprocess_all_logger', 'check_data', 'class_logger', 'close_ostream_to_python', 'close_spend_time', 'column', 'combinate_ind', 'combinate_ind_analysis', 'combinate_ind_analysis_multi', 'combinate_index', 'concat_to_df', 'constant', 'core', 'cpp', 'create_figure', 'create_one_axes_figure', 'create_three_axes_figure', 'create_two_axes_figure', 'crtAF', 'crtBrokerTM', 'crtCN', 'crtEV', 'crtMF', 'crtMM', 'crtNorm', 'crtOB', 'crtPG', 'crtSCFilter', 'crtSE', 'crtSEOptimal', 'crtSG', 'crtSP', 'crtST', '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', 'figure', 'find_optimal_system', 'find_optimal_system_multi', 'g_axes', 'g_figure', 'g_use_in_notbook', 'gca', 'gcf', 'get_block', 'get_business_name', 'get_color', 'get_current_hub', 'get_data_from_buffer_server', 'get_date_format', 'get_date_range', 'get_expire_date', 'get_funds_list', 'get_hub_name_list', 'get_hub_path', 'get_kdata', 'get_latest_version_info', 'get_log_level', 'get_part', 'get_part_info', 'get_part_list', 'get_part_module', 'get_part_name_list', 'get_spot_from_buffer_server', 'get_stock', 'get_system_part_enum', 'get_system_part_name', 'get_version', 'get_version_git', 'get_version_with_build', 'help_part', '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', 'hub', 'ibar', 'in_interactive_session', 'in_ipython_frontend', 'indicator', 'inner_analysis_sys_list', 'inner_combinate_ind_analysis', 'inner_combinate_ind_analysis_with_block', 'io', 'iplot', 'is_valid_license', 'isinf', 'isnan', 'kplot', 'krecords_to_df', 'krecords_to_np', 'locale', 'mkplot', 'new_Query_init', 'new_path', 'np', 'old_Query_init', 'open_ostream_to_python', 'open_spend_time', 'os', 'output_file', 'output_notebook', 'parallel_run_pf', 'parallel_run_sys', 'part_clone', 'part_init', 'part_iter', 'pd', 'pickle', 'positions_to_df', 'positions_to_np', 'print_part_info', 'pyind', 'register_extra_ktype', 'release_extra_ktype', 'remove_hub', 'remove_license', 'roundDown', 'roundEx', 'roundUp', 'run_in_strategy', 'scorerecords_to_df', 'scorerecords_to_np', 'search_part', 'set_log_level', 'set_my_logger_file', 'set_python_in_interactive', 'set_python_in_jupyter', 'sgplot', 'show', 'show_gcf', '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', 'trade_manage', 'trade_sys', 'trades_to_df', 'trades_to_np', 'trans_color', 'translist_to_df', 'translist_to_np', 'update_hub', 'use_bokeh_in_notebook', 'util', 'view_license', 'weights_to_df', 'weights_to_np', 'with_trace']
715
+ __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', 'ColumnDataSource', 'ConditionBase', 'Constant', 'CostRecord', 'DATE', 'DAY', 'DEBUG', 'DECLINE', 'DEVSQ', 'DIFF', 'DISCARD', 'DMA', 'DOWNNDAY', 'DROPNA', 'DataDriverFactory', 'Datetime', 'DatetimeList', 'DatetimeList_to_df', 'DatetimeList_to_np', 'DatetimeTickFormatter', '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', 'HoverTool', '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', 'Label', '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', 'Title', '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', 'add_local_hub', 'add_remote_hub', 'analysis', 'analysis_sys_list', 'analysis_sys_list_multi', 'atexit', 'ax_draw_macd', 'ax_draw_macd2', 'ax_fill_between', 'ax_set_xlim', 'ax_set_ylim', 'backtest', 'batch_calculate_inds', 'bind_email', 'broker', 'broker_easytrader', 'broker_mail', 'build_hub', 'can_upgrade', 'capture_multiprocess_all_logger', 'check_data', 'class_logger', 'close_ostream_to_python', 'close_spend_time', 'column', 'combinate_ind', 'combinate_ind_analysis', 'combinate_ind_analysis_multi', 'combinate_index', 'concat_to_df', 'constant', 'core', 'cpp', 'create_figure', 'create_one_axes_figure', 'create_three_axes_figure', 'create_two_axes_figure', 'crtAF', 'crtBrokerTM', 'crtCN', 'crtEV', 'crtMF', 'crtMM', 'crtNorm', 'crtOB', 'crtPG', 'crtSCFilter', 'crtSE', 'crtSEOptimal', 'crtSG', 'crtSP', 'crtST', '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', 'figure', 'find_optimal_system', 'find_optimal_system_multi', 'g_axes', 'g_figure', 'g_use_in_notbook', 'gca', 'gcf', 'get_block', 'get_business_name', 'get_color', 'get_current_hub', 'get_data_from_buffer_server', 'get_date_format', 'get_date_range', 'get_expire_date', 'get_funds_list', 'get_hub_name_list', 'get_hub_path', 'get_kdata', 'get_latest_version_info', 'get_log_level', 'get_part', 'get_part_info', 'get_part_list', 'get_part_module', 'get_part_name_list', 'get_spot_from_buffer_server', 'get_stock', 'get_system_part_enum', 'get_system_part_name', 'get_version', 'get_version_git', 'get_version_with_build', 'help_part', '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', 'hub', 'ibar', 'in_interactive_session', 'in_ipython_frontend', 'indicator', 'inner_analysis_sys_list', 'inner_combinate_ind_analysis', 'inner_combinate_ind_analysis_with_block', 'iplot', 'is_valid_license', 'isinf', 'isnan', 'kplot', 'krecords_to_df', 'krecords_to_np', 'locale', 'mkplot', 'new_Query_init', 'new_path', 'np', 'old_Query_init', 'open_ostream_to_python', 'open_spend_time', 'os', 'output_file', 'output_notebook', 'parallel_run_pf', 'parallel_run_sys', 'part_clone', 'part_init', 'part_iter', 'pd', 'pickle', 'positions_to_df', 'positions_to_np', 'print_part_info', 'pyind', 'register_extra_ktype', 'release_extra_ktype', 'remove_hub', 'remove_license', 'roundDown', 'roundEx', 'roundUp', 'run_in_strategy', 'scorerecords_to_df', 'scorerecords_to_np', 'search_part', 'set_log_level', 'set_my_logger_file', 'set_python_in_interactive', 'set_python_in_jupyter', 'sgplot', 'show', 'show_gcf', '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', 'trade_manage', 'trade_sys', 'trades_to_df', 'trades_to_np', 'trans_color', 'translist_to_df', 'translist_to_np', 'update_hub', 'use_bokeh_in_notebook', 'util', 'view_license', 'weights_to_df', 'weights_to_np', 'with_trace']
714
716
  def ax_draw_macd(axes, kdata, n1 = 12, n2 = 26, n3 = 9):
715
717
  """
716
718
  绘制MACD