hikyuu 2.6.6__py3-none-win_amd64.whl → 2.6.7__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 (105) hide show
  1. hikyuu/__init__.py +10 -0
  2. hikyuu/__init__.pyi +567 -560
  3. hikyuu/analysis/__init__.pyi +539 -519
  4. hikyuu/analysis/analysis.pyi +540 -520
  5. hikyuu/core.pyi +541 -521
  6. hikyuu/cpp/__init__.pyi +2 -2
  7. hikyuu/cpp/core310.pyd +0 -0
  8. hikyuu/cpp/core310.pyi +1041 -859
  9. hikyuu/cpp/core311.pyd +0 -0
  10. hikyuu/cpp/core311.pyi +1041 -859
  11. hikyuu/cpp/core312.pyd +0 -0
  12. hikyuu/cpp/core312.pyi +1041 -859
  13. hikyuu/cpp/core313.pyd +0 -0
  14. hikyuu/cpp/core313.pyi +1041 -857
  15. hikyuu/cpp/core39.pyd +0 -0
  16. hikyuu/cpp/core39.pyi +1041 -859
  17. hikyuu/cpp/hikyuu.dll +0 -0
  18. hikyuu/cpp/hikyuu.lib +0 -0
  19. hikyuu/cpp/i18n/zh_CN/__init__.py +0 -0
  20. hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
  21. hikyuu/cpp/sqlite3.dll +0 -0
  22. hikyuu/data/common_clickhouse.py +0 -47
  23. hikyuu/data/tdx_to_h5.py +1 -1
  24. hikyuu/draw/__init__.pyi +1 -1
  25. hikyuu/draw/drawplot/__init__.pyi +9 -9
  26. hikyuu/draw/drawplot/bokeh_draw.pyi +556 -551
  27. hikyuu/draw/drawplot/common.pyi +1 -1
  28. hikyuu/draw/drawplot/echarts_draw.py +9 -8
  29. hikyuu/draw/drawplot/echarts_draw.pyi +558 -553
  30. hikyuu/draw/drawplot/matplotlib_draw.py +3 -3
  31. hikyuu/draw/drawplot/matplotlib_draw.pyi +568 -563
  32. hikyuu/draw/elder.pyi +11 -11
  33. hikyuu/draw/kaufman.py +1 -1
  34. hikyuu/draw/kaufman.pyi +18 -18
  35. hikyuu/draw/volume.pyi +10 -10
  36. hikyuu/examples/notebook/000-Index.ipynb +1 -1
  37. hikyuu/examples/notebook/001-overview.ipynb +78 -63
  38. hikyuu/examples/notebook/002-HowToGetStock.ipynb +259 -40
  39. hikyuu/examples/notebook/003-HowToGetKDataAndDraw.ipynb +49 -41
  40. hikyuu/examples/notebook/004-IndicatorOverview.ipynb +29 -29
  41. hikyuu/examples/notebook/005-Drawplot.ipynb +66 -37
  42. hikyuu/examples/notebook/006-TradeManager.ipynb +808 -61
  43. hikyuu/examples/notebook/007-SystemDetails.ipynb +23 -23
  44. hikyuu/examples/notebook/009-RealData.ipynb +3 -3
  45. hikyuu/examples/notebook/010-Portfolio.ipynb +761 -122
  46. hikyuu/extend.py +15 -100
  47. hikyuu/extend.pyi +551 -567
  48. hikyuu/gui/HikyuuTDX.py +2 -4
  49. hikyuu/gui/data/MainWindow.py +185 -174
  50. hikyuu/hub.pyi +6 -6
  51. hikyuu/include/hikyuu/DataType.h +1 -10
  52. hikyuu/include/hikyuu/KQuery.h +22 -28
  53. hikyuu/include/hikyuu/MarketInfo.h +1 -1
  54. hikyuu/include/hikyuu/Stock.h +15 -3
  55. hikyuu/include/hikyuu/StockManager.h +4 -3
  56. hikyuu/include/hikyuu/StockTypeInfo.h +6 -0
  57. hikyuu/include/hikyuu/TransRecord.h +2 -8
  58. hikyuu/include/hikyuu/doc.h +4 -0
  59. hikyuu/include/hikyuu/indicator/Indicator.h +37 -0
  60. hikyuu/include/hikyuu/lang.h +27 -0
  61. hikyuu/include/hikyuu/plugin/KDataToHdf5Importer.h +6 -1
  62. hikyuu/include/hikyuu/plugin/hkuextra.h +56 -0
  63. hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +38 -0
  64. hikyuu/include/hikyuu/plugin/interface/ImportKDataToHdf5PluginInterface.h +10 -1
  65. hikyuu/include/hikyuu/plugin/interface/plugins.h +2 -0
  66. hikyuu/include/hikyuu/python/pybind_utils.h +9 -0
  67. hikyuu/include/hikyuu/trade_manage/TradeRecord.h +1 -1
  68. hikyuu/include/hikyuu/utilities/config.h +0 -2
  69. hikyuu/include/hikyuu/utilities/os.h +3 -0
  70. hikyuu/include/hikyuu/utilities/plugin/PluginLoader.h +2 -1
  71. hikyuu/include/hikyuu/version.h +4 -4
  72. hikyuu/include/hikyuu/view/MarketView.h +59 -0
  73. hikyuu/indicator/__init__.py +0 -1
  74. hikyuu/indicator/indicator.py +14 -53
  75. hikyuu/plugin/backtest.dll +0 -0
  76. hikyuu/plugin/clickhousedriver.dll +0 -0
  77. hikyuu/plugin/dataserver.dll +0 -0
  78. hikyuu/plugin/device.dll +0 -0
  79. hikyuu/plugin/extind.dll +0 -0
  80. hikyuu/plugin/hkuextra.dll +0 -0
  81. hikyuu/plugin/import2hdf5.dll +0 -0
  82. hikyuu/plugin/tmreport.dll +0 -0
  83. hikyuu/test/test_init.py +59 -0
  84. hikyuu/test/test_real_tdx_import.py +336 -0
  85. hikyuu/test/test_tdx_import.py +315 -0
  86. hikyuu/test/test_tdx_real_data_import.py +281 -0
  87. hikyuu/trade_manage/__init__.pyi +556 -551
  88. hikyuu/trade_manage/broker.pyi +3 -3
  89. hikyuu/trade_manage/broker_easytrader.pyi +1 -1
  90. hikyuu/trade_manage/trade.py +4 -65
  91. hikyuu/trade_manage/trade.pyi +556 -563
  92. hikyuu/trade_sys/__init__.py +11 -0
  93. hikyuu/util/__init__.pyi +0 -1
  94. hikyuu/util/singleton.pyi +1 -1
  95. {hikyuu-2.6.6.dist-info → hikyuu-2.6.7.dist-info}/METADATA +6 -4
  96. {hikyuu-2.6.6.dist-info → hikyuu-2.6.7.dist-info}/RECORD +102 -95
  97. {hikyuu-2.6.6.dist-info → hikyuu-2.6.7.dist-info}/top_level.txt +2 -1
  98. hikyuu/cpp/i18n/zh_CN.mo +0 -0
  99. hikyuu/include/hikyuu/utilities/mo/mo.h +0 -64
  100. hikyuu/indicator/talib_wrap.py +0 -1273
  101. /hikyuu/include/hikyuu/utilities/{mo/moFileReader.h → moFileReader.h} +0 -0
  102. /hikyuu/include/hikyuu/{utilities/mo → view}/__init__.py +0 -0
  103. {hikyuu-2.6.6.dist-info → hikyuu-2.6.7.dist-info}/LICENSE +0 -0
  104. {hikyuu-2.6.6.dist-info → hikyuu-2.6.7.dist-info}/WHEEL +0 -0
  105. {hikyuu-2.6.6.dist-info → hikyuu-2.6.7.dist-info}/entry_points.txt +0 -0
hikyuu/extend.py CHANGED
@@ -13,6 +13,9 @@ from datetime import datetime, timedelta, date # NOQA: E402
13
13
  import numpy as np # NOQA: E402
14
14
  import pandas as pd # NOQA: E402
15
15
 
16
+ # 解决中文对齐问题
17
+ pd.set_option('display.unicode.ambiguous_as_wide', True)
18
+ pd.set_option('display.unicode.east_asian_width', True)
16
19
 
17
20
  # ------------------------------------------------------------------
18
21
  # 增加Datetime、Stock的hash支持,以便可做为dict的key
@@ -152,43 +155,6 @@ TimeDelta.__add__ = __new_TimeDelta_add__
152
155
  TimeDelta.__sub__ = __new_TimeDelta_sub__
153
156
  TimeDelta.timedelta = TimeDelta_timedelta
154
157
 
155
- # ------------------------------------------------------------------
156
- # 增强 KData 的遍历
157
- # ------------------------------------------------------------------
158
-
159
-
160
- def KData_getitem(kdata, i):
161
- """
162
- :param i: int | Datetime | slice | str 类型
163
- """
164
- if isinstance(i, int):
165
- length = len(kdata)
166
- index = length + i if i < 0 else i
167
- if index < 0 or index >= length:
168
- raise IndexError("index out of range: %d" % i)
169
- return kdata.get(index)
170
-
171
- elif isinstance(i, Datetime):
172
- return kdata.get_by_datetime(i)
173
-
174
- elif isinstance(i, str):
175
- return kdata.get_by_datetime(Datetime(i))
176
-
177
- elif isinstance(i, slice):
178
- return [kdata.get(x) for x in range(*i.indices(len(kdata)))]
179
-
180
- else:
181
- raise IndexError("Error index type")
182
-
183
-
184
- def KData_iter(kdata):
185
- for i in range(len(kdata)):
186
- yield kdata[i]
187
-
188
-
189
- KData.__getitem__ = KData_getitem
190
- KData.__iter__ = KData_iter
191
-
192
158
 
193
159
  # ------------------------------------------------------------------
194
160
  # 重定义Query
@@ -247,83 +213,32 @@ Query.__init__ = new_Query_init
247
213
  # ------------------------------------------------------------------
248
214
  # 增加转化为 np.array、pandas.DataFrame 的功能
249
215
  # ------------------------------------------------------------------
250
- def KData_to_np(kdata):
251
- """转化为numpy结构数组"""
252
- if kdata.get_query().ktype in ('DAY', 'WEEK', 'MONTH', 'QUARTER', 'HALFYEAR', 'YEAR'):
253
- k_type = np.dtype(
254
- {
255
- 'names': ['datetime', 'open', 'high', 'low', 'close', 'amount', 'volume'],
256
- 'formats': ['datetime64[D]', 'd', 'd', 'd', 'd', 'd', 'd']
257
- }
258
- )
259
- else:
260
- k_type = np.dtype(
261
- {
262
- 'names': ['datetime', 'open', 'high', 'low', 'close', 'amount', 'volume'],
263
- 'formats': ['datetime64[ms]', 'd', 'd', 'd', 'd', 'd', 'd']
264
- }
265
- )
266
- return np.array(
267
- [(k.datetime.datetime(), k.open, k.high, k.low, k.close, k.amount, k.volume) for k in kdata], dtype=k_type
268
- )
269
-
270
-
271
- def KData_to_df(kdata):
272
- """转化为pandas的DataFrame"""
273
- return pd.DataFrame.from_records(KData_to_np(kdata), index='datetime')
274
-
275
-
276
- KData.to_np = KData_to_np
277
- KData.to_df = KData_to_df
216
+ def DatetimeList_to_np(data: DatetimeList):
217
+ return dates_to_np(data)
278
218
 
279
219
 
280
- def DatetimeList_to_np(data):
281
- """仅在安装了numpy模块时生效,转换为numpy.array"""
282
- return np.array(data, dtype='datetime64[D]')
283
-
284
-
285
- def DatetimeList_to_df(data):
286
- """仅在安装了pandas模块时生效,转换为pandas.DataFrame"""
287
- return pd.DataFrame(data.to_np(), columns=('Datetime', ))
220
+ def DatetimeList_to_df(data: DatetimeList):
221
+ return pd.DataFrame.from_records(dates_to_np(data))
288
222
 
289
223
 
290
224
  DatetimeList.to_np = DatetimeList_to_np
291
225
  DatetimeList.to_df = DatetimeList_to_df
292
226
 
293
227
 
294
- def TimeLine_to_np(data):
295
- """转化为numpy结构数组"""
296
- t_type = np.dtype({'names': ['datetime', 'price', 'vol'], 'formats': ['datetime64[ms]', 'd', 'd']})
297
- return np.array([(t.date.datetime(), t.price, t.vol) for t in data], dtype=t_type)
298
-
299
-
300
- def TimeLine_to_df(kdata):
301
- """转化为pandas的DataFrame"""
302
- return pd.DataFrame.from_records(TimeLine_to_np(kdata), index='datetime')
228
+ TimeLineList.to_np = lambda data: timeline_to_np(data)
229
+ TimeLineList.to_df = lambda data: timeline_to_df(data)
303
230
 
304
231
 
305
- TimeLineList.to_np = TimeLine_to_np
306
- TimeLineList.to_df = TimeLine_to_df
307
-
308
-
309
- def TransList_to_np(data):
310
- """转化为numpy结构数组"""
311
- t_type = np.dtype(
312
- {
313
- 'names': ['datetime', 'price', 'vol', 'direct'],
314
- 'formats': ['datetime64[ms]', 'd', 'd', 'd']
315
- }
316
- )
317
- return np.array([(t.date.datetime(), t.price, t.vol, t.direct) for t in data], dtype=t_type)
232
+ TransList.to_np = lambda data: translist_to_np(data)
233
+ TransList.to_df = lambda data: translist_to_df(data)
318
234
 
319
235
 
320
- def TransList_to_df(kdata):
321
- """转化为pandas的DataFrame"""
322
- return pd.DataFrame.from_records(TransList_to_np(kdata), index='datetime')
236
+ StockWeightList.to_np = lambda data: weights_to_np(data)
237
+ StockWeightList.to_df = lambda data: weights_to_df(data)
323
238
 
324
239
 
325
- TransList.to_np = TransList_to_np
326
- TransList.to_df = TransList_to_df
240
+ KRecordList.to_np = lambda data: krecords_to_np(data)
241
+ KRecordList.to_df = lambda data: krecords_to_df(data)
327
242
 
328
243
  # ------------------------------------------------------------------
329
244
  # 增强 Parameter