hikyuu 2.6.5__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.
- hikyuu/__init__.py +16 -0
- hikyuu/__init__.pyi +484 -474
- hikyuu/analysis/__init__.pyi +466 -445
- hikyuu/analysis/analysis.pyi +467 -446
- hikyuu/core.pyi +468 -447
- hikyuu/cpp/boost_date_time-mt.dll +0 -0
- hikyuu/cpp/boost_serialization-mt.dll +0 -0
- hikyuu/cpp/boost_wserialization-mt.dll +0 -0
- hikyuu/cpp/core310.pyd +0 -0
- hikyuu/cpp/core310.pyi +1070 -878
- hikyuu/cpp/core311.pyd +0 -0
- hikyuu/cpp/core311.pyi +1070 -878
- hikyuu/cpp/core312.pyd +0 -0
- hikyuu/cpp/core312.pyi +1070 -878
- hikyuu/cpp/core313.pyd +0 -0
- hikyuu/cpp/core313.pyi +1070 -876
- hikyuu/cpp/core39.pyd +0 -0
- hikyuu/cpp/core39.pyi +1070 -878
- hikyuu/cpp/hikyuu.dll +0 -0
- hikyuu/cpp/hikyuu.lib +0 -0
- hikyuu/cpp/i18n/__init__.py +0 -0
- hikyuu/cpp/i18n/zh_CN/__init__.py +0 -0
- hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
- hikyuu/cpp/sqlite3.dll +0 -0
- hikyuu/data/clickhouse_upgrade/__init__.py +1 -0
- hikyuu/data/clickhouse_upgrade/createdb.sql +1085 -0
- hikyuu/data/common_clickhouse.py +465 -0
- hikyuu/data/em_block_to_clickhouse.py +120 -0
- hikyuu/data/hku_config_template.py +58 -3
- hikyuu/data/pytdx_finance_to_clickhouse.py +107 -0
- hikyuu/data/pytdx_to_clickhouse.py +841 -0
- hikyuu/data/pytdx_to_mysql.py +4 -4
- hikyuu/data/pytdx_weight_to_clickhouse.py +191 -0
- hikyuu/data/tdx_to_clickhouse.py +448 -0
- hikyuu/data/tdx_to_h5.py +1 -1
- hikyuu/data/zh_bond10_to_clickhouse.py +49 -0
- hikyuu/draw/__init__.pyi +1 -1
- hikyuu/draw/drawplot/bokeh_draw.pyi +479 -471
- hikyuu/draw/drawplot/echarts_draw.py +9 -8
- hikyuu/draw/drawplot/echarts_draw.pyi +479 -471
- hikyuu/draw/drawplot/matplotlib_draw.py +3 -3
- hikyuu/draw/drawplot/matplotlib_draw.pyi +479 -471
- hikyuu/draw/elder.pyi +6 -6
- hikyuu/draw/kaufman.py +1 -1
- hikyuu/draw/kaufman.pyi +10 -10
- hikyuu/draw/volume.pyi +5 -5
- hikyuu/examples/notebook/000-Index.ipynb +1 -1
- hikyuu/examples/notebook/001-overview.ipynb +78 -63
- hikyuu/examples/notebook/002-HowToGetStock.ipynb +259 -40
- hikyuu/examples/notebook/003-HowToGetKDataAndDraw.ipynb +49 -41
- hikyuu/examples/notebook/004-IndicatorOverview.ipynb +29 -29
- hikyuu/examples/notebook/005-Drawplot.ipynb +66 -37
- hikyuu/examples/notebook/006-TradeManager.ipynb +808 -61
- hikyuu/examples/notebook/007-SystemDetails.ipynb +23 -23
- hikyuu/examples/notebook/009-RealData.ipynb +3 -3
- hikyuu/examples/notebook/010-Portfolio.ipynb +761 -122
- hikyuu/extend.py +15 -100
- hikyuu/extend.pyi +478 -493
- hikyuu/fetcher/stock/zh_stock_a_pytdx.py +9 -20
- hikyuu/fetcher/stock/zh_stock_a_qmt.py +4 -5
- hikyuu/fetcher/stock/zh_stock_a_sina_qq.py +16 -60
- hikyuu/flat/Spot.py +96 -200
- hikyuu/gui/HikyuuTDX.py +134 -7
- hikyuu/gui/data/ImportBlockInfoTask.py +11 -0
- hikyuu/gui/data/ImportHistoryFinanceTask.py +15 -1
- hikyuu/gui/data/ImportPytdxTimeToH5Task.py +11 -1
- hikyuu/gui/data/ImportPytdxToH5Task.py +13 -1
- hikyuu/gui/data/ImportPytdxTransToH5Task.py +11 -1
- hikyuu/gui/data/ImportTdxToH5Task.py +13 -1
- hikyuu/gui/data/ImportWeightToSqliteTask.py +14 -1
- hikyuu/gui/data/ImportZhBond10Task.py +11 -0
- hikyuu/gui/data/MainWindow.py +210 -135
- hikyuu/gui/data/UsePytdxImportToH5Thread.py +45 -26
- hikyuu/gui/data/UseTdxImportToH5Thread.py +19 -1
- hikyuu/gui/dataserver.py +12 -4
- hikyuu/gui/spot_server.py +30 -40
- hikyuu/gui/start_qmt.py +20 -3
- hikyuu/hub.pyi +6 -6
- hikyuu/include/hikyuu/DataType.h +2 -0
- hikyuu/include/hikyuu/KQuery.h +22 -28
- hikyuu/include/hikyuu/MarketInfo.h +1 -1
- hikyuu/include/hikyuu/Stock.h +15 -3
- hikyuu/include/hikyuu/StockManager.h +12 -3
- hikyuu/include/hikyuu/StockTypeInfo.h +6 -0
- hikyuu/include/hikyuu/TransRecord.h +2 -8
- hikyuu/include/hikyuu/data_driver/kdata/mysql/KRecordTable.h +1 -0
- hikyuu/include/hikyuu/doc.h +4 -0
- hikyuu/include/hikyuu/global/GlobalSpotAgent.h +1 -1
- hikyuu/include/hikyuu/global/SpotRecord.h +15 -31
- hikyuu/include/hikyuu/global/agent/spot_generated.h +48 -232
- hikyuu/include/hikyuu/global/schedule/scheduler.h +1 -1
- hikyuu/include/hikyuu/indicator/Indicator.h +37 -0
- hikyuu/include/hikyuu/lang.h +27 -0
- hikyuu/include/hikyuu/plugin/KDataToHdf5Importer.h +9 -1
- hikyuu/include/hikyuu/plugin/dataserver.h +26 -1
- hikyuu/include/hikyuu/plugin/device.h +2 -1
- hikyuu/include/hikyuu/plugin/hkuextra.h +56 -0
- hikyuu/include/hikyuu/plugin/interface/DataDriverPluginInterface.h +27 -0
- hikyuu/include/hikyuu/plugin/interface/DataServerPluginInterface.h +2 -1
- hikyuu/include/hikyuu/plugin/interface/DevicePluginInterface.h +1 -1
- hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +38 -0
- hikyuu/include/hikyuu/plugin/interface/ImportKDataToHdf5PluginInterface.h +13 -1
- hikyuu/include/hikyuu/plugin/interface/plugins.h +4 -0
- hikyuu/include/hikyuu/python/pybind_utils.h +9 -0
- hikyuu/include/hikyuu/strategy/Strategy.h +0 -9
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +1 -1
- hikyuu/include/hikyuu/utilities/config.h +0 -2
- hikyuu/include/hikyuu/utilities/os.h +9 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginLoader.h +2 -1
- hikyuu/include/hikyuu/version.h +4 -4
- hikyuu/include/hikyuu/view/MarketView.h +59 -0
- hikyuu/indicator/__init__.py +0 -1
- hikyuu/indicator/indicator.py +14 -53
- hikyuu/plugin/backtest.dll +0 -0
- hikyuu/plugin/clickhousedriver.dll +0 -0
- hikyuu/plugin/dataserver.dll +0 -0
- hikyuu/plugin/device.dll +0 -0
- hikyuu/plugin/extind.dll +0 -0
- hikyuu/plugin/hkuextra.dll +0 -0
- hikyuu/plugin/import2hdf5.dll +0 -0
- hikyuu/plugin/tmreport.dll +0 -0
- hikyuu/test/test_init.py +59 -0
- hikyuu/test/test_real_tdx_import.py +336 -0
- hikyuu/test/test_tdx_import.py +315 -0
- hikyuu/test/test_tdx_real_data_import.py +281 -0
- hikyuu/trade_manage/__init__.pyi +479 -471
- hikyuu/trade_manage/trade.py +4 -65
- hikyuu/trade_manage/trade.pyi +479 -483
- hikyuu/trade_sys/__init__.py +11 -0
- hikyuu/util/__init__.py +1 -0
- hikyuu/util/__init__.pyi +4 -4
- hikyuu/util/check.py +8 -0
- hikyuu/util/check.pyi +5 -1
- hikyuu/util/singleton.pyi +1 -1
- {hikyuu-2.6.5.dist-info → hikyuu-2.6.7.dist-info}/METADATA +7 -5
- {hikyuu-2.6.5.dist-info → hikyuu-2.6.7.dist-info}/RECORD +142 -124
- {hikyuu-2.6.5.dist-info → hikyuu-2.6.7.dist-info}/top_level.txt +4 -3
- hikyuu/include/hikyuu/global/agent/hikyuu/flat/__init__.py +0 -1
- hikyuu/include/hikyuu/utilities/mo/__init__.py +0 -1
- hikyuu/include/hikyuu/utilities/mo/mo.h +0 -48
- hikyuu/indicator/talib_wrap.py +0 -1273
- /hikyuu/include/hikyuu/utilities/{mo/moFileReader.h → moFileReader.h} +0 -0
- /hikyuu/include/hikyuu/{global/agent/hikyuu → view}/__init__.py +0 -0
- {hikyuu-2.6.5.dist-info → hikyuu-2.6.7.dist-info}/LICENSE +0 -0
- {hikyuu-2.6.5.dist-info → hikyuu-2.6.7.dist-info}/WHEEL +0 -0
- {hikyuu-2.6.5.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
|
|
251
|
-
|
|
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
|
|
281
|
-
|
|
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
|
-
|
|
295
|
-
|
|
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
|
-
|
|
306
|
-
|
|
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
|
-
|
|
321
|
-
|
|
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
|
-
|
|
326
|
-
|
|
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
|