hikyuu 2.6.3__py3-none-win_amd64.whl → 2.6.6__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 (146) hide show
  1. hikyuu/__init__.py +6 -0
  2. hikyuu/__init__.pyi +548 -546
  3. hikyuu/analysis/__init__.pyi +519 -514
  4. hikyuu/analysis/analysis.pyi +520 -515
  5. hikyuu/core.pyi +521 -516
  6. hikyuu/cpp/__init__.pyi +2 -2
  7. hikyuu/cpp/boost_date_time-mt.dll +0 -0
  8. hikyuu/cpp/boost_serialization-mt.dll +0 -0
  9. hikyuu/cpp/boost_wserialization-mt.dll +0 -0
  10. hikyuu/cpp/core310.pyd +0 -0
  11. hikyuu/cpp/core310.pyi +167 -36
  12. hikyuu/cpp/core311.pyd +0 -0
  13. hikyuu/cpp/core311.pyi +167 -36
  14. hikyuu/cpp/core312.pyd +0 -0
  15. hikyuu/cpp/core312.pyi +167 -36
  16. hikyuu/cpp/core313.pyd +0 -0
  17. hikyuu/cpp/core313.pyi +167 -36
  18. hikyuu/cpp/core39.pyd +0 -0
  19. hikyuu/cpp/core39.pyi +167 -36
  20. hikyuu/cpp/hikyuu.dll +0 -0
  21. hikyuu/cpp/hikyuu.lib +0 -0
  22. hikyuu/cpp/i18n/__init__.py +0 -0
  23. hikyuu/cpp/i18n/zh_CN.mo +0 -0
  24. hikyuu/cpp/sqlite3.dll +0 -0
  25. hikyuu/data/clickhouse_upgrade/__init__.py +1 -0
  26. hikyuu/data/clickhouse_upgrade/createdb.sql +1085 -0
  27. hikyuu/data/common.py +1 -1
  28. hikyuu/data/common_clickhouse.py +512 -0
  29. hikyuu/data/common_mysql.py +19 -0
  30. hikyuu/data/common_pytdx.py +2 -0
  31. hikyuu/data/common_sqlite3.py +1 -0
  32. hikyuu/data/em_block_to_clickhouse.py +120 -0
  33. hikyuu/data/hku_config_template.py +70 -1
  34. hikyuu/data/mysql_upgrade/0028.sql +95 -0
  35. hikyuu/data/pytdx_finance_to_clickhouse.py +107 -0
  36. hikyuu/data/pytdx_to_clickhouse.py +841 -0
  37. hikyuu/data/pytdx_to_h5.py +53 -13
  38. hikyuu/data/pytdx_to_mysql.py +42 -9
  39. hikyuu/data/pytdx_to_taos.py +736 -0
  40. hikyuu/data/pytdx_weight_to_clickhouse.py +191 -0
  41. hikyuu/data/sqlite_upgrade/0028.sql +97 -0
  42. hikyuu/data/tdx_to_clickhouse.py +448 -0
  43. hikyuu/data/zh_bond10_to_clickhouse.py +49 -0
  44. hikyuu/draw/__init__.pyi +1 -1
  45. hikyuu/draw/drawplot/__init__.pyi +8 -8
  46. hikyuu/draw/drawplot/bokeh_draw.pyi +538 -536
  47. hikyuu/draw/drawplot/common.pyi +1 -1
  48. hikyuu/draw/drawplot/echarts_draw.pyi +540 -538
  49. hikyuu/draw/drawplot/matplotlib_draw.py +7 -7
  50. hikyuu/draw/drawplot/matplotlib_draw.pyi +550 -548
  51. hikyuu/draw/elder.pyi +11 -11
  52. hikyuu/draw/kaufman.pyi +18 -18
  53. hikyuu/draw/volume.pyi +10 -10
  54. hikyuu/examples/notebook/001-overview.ipynb +65 -100
  55. hikyuu/examples/notebook/004-IndicatorOverview.ipynb +34 -32
  56. hikyuu/examples/notebook/007-SystemDetails.ipynb +64 -50
  57. hikyuu/examples/notebook/010-Portfolio.ipynb +120 -124
  58. hikyuu/extend.py +1 -1
  59. hikyuu/extend.pyi +527 -527
  60. hikyuu/fetcher/stock/zh_block_em.py +349 -5
  61. hikyuu/fetcher/stock/zh_stock_a_pytdx.py +11 -21
  62. hikyuu/fetcher/stock/zh_stock_a_qmt.py +4 -5
  63. hikyuu/fetcher/stock/zh_stock_a_sina_qq.py +16 -60
  64. hikyuu/flat/Spot.py +96 -200
  65. hikyuu/gui/HikyuuTDX.py +175 -23
  66. hikyuu/gui/data/ImportBlockInfoTask.py +12 -1
  67. hikyuu/gui/data/ImportHistoryFinanceTask.py +62 -44
  68. hikyuu/gui/data/ImportPytdxTimeToH5Task.py +14 -2
  69. hikyuu/gui/data/ImportPytdxToH5Task.py +17 -3
  70. hikyuu/gui/data/ImportPytdxTransToH5Task.py +14 -2
  71. hikyuu/gui/data/ImportTdxToH5Task.py +13 -1
  72. hikyuu/gui/data/ImportWeightToSqliteTask.py +16 -2
  73. hikyuu/gui/data/ImportZhBond10Task.py +12 -1
  74. hikyuu/gui/data/MainWindow.py +191 -110
  75. hikyuu/gui/data/UsePytdxImportToH5Thread.py +52 -29
  76. hikyuu/gui/data/UseQmtImportToH5Thread.py +1 -0
  77. hikyuu/gui/data/UseTdxImportToH5Thread.py +21 -2
  78. hikyuu/gui/dataserver.py +12 -4
  79. hikyuu/gui/spot_server.py +30 -40
  80. hikyuu/gui/start_qmt.py +20 -3
  81. hikyuu/hub.pyi +6 -6
  82. hikyuu/include/hikyuu/DataType.h +11 -0
  83. hikyuu/include/hikyuu/MarketInfo.h +6 -0
  84. hikyuu/include/hikyuu/StockManager.h +8 -0
  85. hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +35 -0
  86. hikyuu/include/hikyuu/data_driver/kdata/mysql/KRecordTable.h +1 -0
  87. hikyuu/include/hikyuu/global/GlobalSpotAgent.h +1 -1
  88. hikyuu/include/hikyuu/global/SpotRecord.h +15 -31
  89. hikyuu/include/hikyuu/global/agent/spot_generated.h +48 -232
  90. hikyuu/include/hikyuu/global/schedule/scheduler.h +1 -1
  91. hikyuu/include/hikyuu/indicator/build_in.h +1 -0
  92. hikyuu/include/hikyuu/indicator/crt/BARSLASTCOUNT.h +33 -0
  93. hikyuu/include/hikyuu/indicator/imp/IBarsLastCount.h +27 -0
  94. hikyuu/include/hikyuu/plugin/KDataToHdf5Importer.h +3 -0
  95. hikyuu/include/hikyuu/plugin/backtest.h +2 -2
  96. hikyuu/include/hikyuu/plugin/dataserver.h +26 -1
  97. hikyuu/include/hikyuu/plugin/device.h +8 -4
  98. hikyuu/include/hikyuu/plugin/interface/BackTestPluginInterface.h +1 -1
  99. hikyuu/include/hikyuu/plugin/interface/DataDriverPluginInterface.h +27 -0
  100. hikyuu/include/hikyuu/plugin/interface/DataServerPluginInterface.h +2 -1
  101. hikyuu/include/hikyuu/plugin/interface/DevicePluginInterface.h +2 -1
  102. hikyuu/include/hikyuu/plugin/interface/ImportKDataToHdf5PluginInterface.h +3 -0
  103. hikyuu/include/hikyuu/plugin/interface/TMReportPluginInterface.h +80 -0
  104. hikyuu/include/hikyuu/plugin/interface/plugins.h +4 -0
  105. hikyuu/include/hikyuu/strategy/Strategy.h +0 -9
  106. hikyuu/include/hikyuu/trade_manage/Performance.h +17 -9
  107. hikyuu/include/hikyuu/trade_manage/PositionExtInfo.h +92 -0
  108. hikyuu/include/hikyuu/trade_manage/PositionRecord.h +7 -1
  109. hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +60 -1
  110. hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Optimal.h +8 -0
  111. hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalEvaluateSelector.h +28 -0
  112. hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalSelectorBase.h +1 -0
  113. hikyuu/include/hikyuu/utilities/DllLoader.h +226 -0
  114. hikyuu/include/hikyuu/utilities/config.h +1 -1
  115. hikyuu/include/hikyuu/utilities/datetime/Datetime.h +20 -0
  116. hikyuu/include/hikyuu/utilities/datetime/TimeDelta.h +6 -0
  117. hikyuu/include/hikyuu/utilities/mo/mo.h +30 -14
  118. hikyuu/include/hikyuu/utilities/os.h +6 -0
  119. hikyuu/include/hikyuu/utilities/plugin/PluginLoader.h +10 -10
  120. hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +13 -7
  121. hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +13 -6
  122. hikyuu/include/hikyuu/version.h +4 -4
  123. hikyuu/plugin/backtest.dll +0 -0
  124. hikyuu/plugin/clickhousedriver.dll +0 -0
  125. hikyuu/plugin/dataserver.dll +0 -0
  126. hikyuu/plugin/device.dll +0 -0
  127. hikyuu/plugin/extind.dll +0 -0
  128. hikyuu/plugin/import2hdf5.dll +0 -0
  129. hikyuu/plugin/tmreport.dll +0 -0
  130. hikyuu/trade_manage/__init__.pyi +537 -535
  131. hikyuu/trade_manage/broker.pyi +3 -3
  132. hikyuu/trade_manage/broker_easytrader.pyi +1 -1
  133. hikyuu/trade_manage/trade.pyi +537 -535
  134. hikyuu/util/__init__.py +1 -0
  135. hikyuu/util/__init__.pyi +4 -3
  136. hikyuu/util/check.py +8 -0
  137. hikyuu/util/check.pyi +5 -1
  138. hikyuu/util/singleton.pyi +1 -1
  139. {hikyuu-2.6.3.dist-info → hikyuu-2.6.6.dist-info}/METADATA +4 -3
  140. {hikyuu-2.6.3.dist-info → hikyuu-2.6.6.dist-info}/RECORD +144 -123
  141. {hikyuu-2.6.3.dist-info → hikyuu-2.6.6.dist-info}/top_level.txt +2 -2
  142. hikyuu/include/hikyuu/global/agent/hikyuu/__init__.py +0 -1
  143. hikyuu/include/hikyuu/global/agent/hikyuu/flat/__init__.py +0 -1
  144. {hikyuu-2.6.3.dist-info → hikyuu-2.6.6.dist-info}/LICENSE +0 -0
  145. {hikyuu-2.6.3.dist-info → hikyuu-2.6.6.dist-info}/WHEEL +0 -0
  146. {hikyuu-2.6.3.dist-info → hikyuu-2.6.6.dist-info}/entry_points.txt +0 -0
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Form implementation generated from reading ui file 'MainWindow.ui'
4
4
  #
5
- # Created by: PyQt5 UI code generator 5.15.10
5
+ # Created by: PyQt5 UI code generator 5.15.11
6
6
  #
7
7
  # WARNING: Any manual changes made to this file will be lost when pyuic5 is
8
8
  # run again. Do not edit this file unless you know what you are doing.
@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
14
14
  class Ui_MainWindow(object):
15
15
  def setupUi(self, MainWindow):
16
16
  MainWindow.setObjectName("MainWindow")
17
- MainWindow.resize(1269, 797)
17
+ MainWindow.resize(1178, 746)
18
18
  self.centralwidget = QtWidgets.QWidget(MainWindow)
19
19
  self.centralwidget.setObjectName("centralwidget")
20
20
  self.horizontalLayout_12 = QtWidgets.QHBoxLayout(self.centralwidget)
@@ -115,6 +115,12 @@ class Ui_MainWindow(object):
115
115
  self.import_weight_checkBox = QtWidgets.QCheckBox(self.groupBox_7)
116
116
  self.import_weight_checkBox.setObjectName("import_weight_checkBox")
117
117
  self.horizontalLayout_4.addWidget(self.import_weight_checkBox)
118
+ self.import_history_finance_checkBox = QtWidgets.QCheckBox(self.groupBox_7)
119
+ self.import_history_finance_checkBox.setObjectName("import_history_finance_checkBox")
120
+ self.horizontalLayout_4.addWidget(self.import_history_finance_checkBox)
121
+ self.import_block_checkBox = QtWidgets.QCheckBox(self.groupBox_7)
122
+ self.import_block_checkBox.setObjectName("import_block_checkBox")
123
+ self.horizontalLayout_4.addWidget(self.import_block_checkBox)
118
124
  self.verticalLayout_11.addLayout(self.horizontalLayout_4)
119
125
  self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
120
126
  self.horizontalLayout_3.setContentsMargins(10, -1, -1, -1)
@@ -172,7 +178,7 @@ class Ui_MainWindow(object):
172
178
  self.label_6.setObjectName("label_6")
173
179
  self.gridLayout_4.addWidget(self.label_6, 3, 0, 1, 1)
174
180
  self.min5_start_dateEdit = QtWidgets.QDateEdit(self.groupBox_7)
175
- self.min5_start_dateEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1989, 12, 27), QtCore.QTime(8, 0, 0)))
181
+ self.min5_start_dateEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1989, 12, 23), QtCore.QTime(8, 0, 0)))
176
182
  self.min5_start_dateEdit.setCalendarPopup(True)
177
183
  self.min5_start_dateEdit.setObjectName("min5_start_dateEdit")
178
184
  self.gridLayout_4.addWidget(self.min5_start_dateEdit, 1, 1, 1, 1)
@@ -194,7 +200,7 @@ class Ui_MainWindow(object):
194
200
  self.trans_start_dateEdit.setObjectName("trans_start_dateEdit")
195
201
  self.gridLayout_4.addWidget(self.trans_start_dateEdit, 3, 1, 1, 1)
196
202
  self.day_start_dateEdit = QtWidgets.QDateEdit(self.groupBox_7)
197
- self.day_start_dateEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1989, 12, 27), QtCore.QTime(8, 0, 0)))
203
+ self.day_start_dateEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1989, 12, 23), QtCore.QTime(8, 0, 0)))
198
204
  self.day_start_dateEdit.setCalendarPopup(True)
199
205
  self.day_start_dateEdit.setObjectName("day_start_dateEdit")
200
206
  self.gridLayout_4.addWidget(self.day_start_dateEdit, 0, 1, 1, 1)
@@ -232,6 +238,9 @@ class Ui_MainWindow(object):
232
238
  self.enable_mysql_radioButton = QtWidgets.QRadioButton(self.groupBox_4)
233
239
  self.enable_mysql_radioButton.setObjectName("enable_mysql_radioButton")
234
240
  self.horizontalLayout_19.addWidget(self.enable_mysql_radioButton)
241
+ self.enable_clickhouse_radioButton = QtWidgets.QRadioButton(self.groupBox_4)
242
+ self.enable_clickhouse_radioButton.setObjectName("enable_clickhouse_radioButton")
243
+ self.horizontalLayout_19.addWidget(self.enable_clickhouse_radioButton)
235
244
  spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
236
245
  self.horizontalLayout_19.addItem(spacerItem8)
237
246
  self.verticalLayout_14.addLayout(self.horizontalLayout_19)
@@ -265,33 +274,32 @@ class Ui_MainWindow(object):
265
274
  spacerItem10 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
266
275
  self.verticalLayout_9.addItem(spacerItem10)
267
276
  self.groupBox = QtWidgets.QGroupBox(self.tab_3)
277
+ self.groupBox.setFlat(False)
278
+ self.groupBox.setCheckable(False)
268
279
  self.groupBox.setObjectName("groupBox")
269
280
  self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.groupBox)
270
281
  self.verticalLayout_8.setObjectName("verticalLayout_8")
271
282
  self.gridLayout_5 = QtWidgets.QGridLayout()
272
283
  self.gridLayout_5.setContentsMargins(10, 10, -1, 10)
273
284
  self.gridLayout_5.setObjectName("gridLayout_5")
274
- self.label_18 = QtWidgets.QLabel(self.groupBox)
275
- self.label_18.setObjectName("label_18")
276
- self.gridLayout_5.addWidget(self.label_18, 2, 0, 1, 1)
277
- self.mysql_pwd_lineEdit = QtWidgets.QLineEdit(self.groupBox)
278
- self.mysql_pwd_lineEdit.setObjectName("mysql_pwd_lineEdit")
279
- self.gridLayout_5.addWidget(self.mysql_pwd_lineEdit, 5, 1, 1, 1)
280
- self.label_20 = QtWidgets.QLabel(self.groupBox)
281
- self.label_20.setObjectName("label_20")
282
- self.gridLayout_5.addWidget(self.label_20, 0, 0, 1, 1)
283
- self.mysql_ip_lineEdit = QtWidgets.QLineEdit(self.groupBox)
284
- self.mysql_ip_lineEdit.setObjectName("mysql_ip_lineEdit")
285
- self.gridLayout_5.addWidget(self.mysql_ip_lineEdit, 2, 1, 1, 1)
285
+ self.mysql_usr_lineEdit = QtWidgets.QLineEdit(self.groupBox)
286
+ self.mysql_usr_lineEdit.setObjectName("mysql_usr_lineEdit")
287
+ self.gridLayout_5.addWidget(self.mysql_usr_lineEdit, 3, 1, 1, 1)
286
288
  self.label_11 = QtWidgets.QLabel(self.groupBox)
287
289
  self.label_11.setObjectName("label_11")
288
- self.gridLayout_5.addWidget(self.label_11, 4, 0, 1, 1)
290
+ self.gridLayout_5.addWidget(self.label_11, 3, 0, 1, 1)
289
291
  self.mysql_port_lineEdit = QtWidgets.QLineEdit(self.groupBox)
290
292
  self.mysql_port_lineEdit.setObjectName("mysql_port_lineEdit")
291
- self.gridLayout_5.addWidget(self.mysql_port_lineEdit, 3, 1, 1, 1)
292
- self.mysql_usr_lineEdit = QtWidgets.QLineEdit(self.groupBox)
293
- self.mysql_usr_lineEdit.setObjectName("mysql_usr_lineEdit")
294
- self.gridLayout_5.addWidget(self.mysql_usr_lineEdit, 4, 1, 1, 1)
293
+ self.gridLayout_5.addWidget(self.mysql_port_lineEdit, 2, 1, 1, 1)
294
+ self.label_19 = QtWidgets.QLabel(self.groupBox)
295
+ self.label_19.setObjectName("label_19")
296
+ self.gridLayout_5.addWidget(self.label_19, 2, 0, 1, 1)
297
+ self.mysql_ip_lineEdit = QtWidgets.QLineEdit(self.groupBox)
298
+ self.mysql_ip_lineEdit.setObjectName("mysql_ip_lineEdit")
299
+ self.gridLayout_5.addWidget(self.mysql_ip_lineEdit, 1, 1, 1, 1)
300
+ self.label_13 = QtWidgets.QLabel(self.groupBox)
301
+ self.label_13.setObjectName("label_13")
302
+ self.gridLayout_5.addWidget(self.label_13, 4, 0, 1, 1)
295
303
  self.mysql_tmpdir_lineEdit = QtWidgets.QLineEdit(self.groupBox)
296
304
  self.mysql_tmpdir_lineEdit.setObjectName("mysql_tmpdir_lineEdit")
297
305
  self.gridLayout_5.addWidget(self.mysql_tmpdir_lineEdit, 0, 1, 1, 1)
@@ -300,26 +308,78 @@ class Ui_MainWindow(object):
300
308
  self.gridLayout_5.addWidget(self.mysql_tmpdir_pushButton, 0, 2, 1, 1)
301
309
  self.mysql_test_pushButton = QtWidgets.QPushButton(self.groupBox)
302
310
  self.mysql_test_pushButton.setObjectName("mysql_test_pushButton")
303
- self.gridLayout_5.addWidget(self.mysql_test_pushButton, 3, 2, 1, 1)
304
- self.label_19 = QtWidgets.QLabel(self.groupBox)
305
- self.label_19.setObjectName("label_19")
306
- self.gridLayout_5.addWidget(self.label_19, 3, 0, 1, 1)
307
- self.label_13 = QtWidgets.QLabel(self.groupBox)
308
- self.label_13.setObjectName("label_13")
309
- self.gridLayout_5.addWidget(self.label_13, 5, 0, 1, 1)
310
- spacerItem11 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
311
- self.gridLayout_5.addItem(spacerItem11, 1, 0, 1, 1)
311
+ self.gridLayout_5.addWidget(self.mysql_test_pushButton, 2, 2, 1, 1)
312
+ self.label_20 = QtWidgets.QLabel(self.groupBox)
313
+ self.label_20.setObjectName("label_20")
314
+ self.gridLayout_5.addWidget(self.label_20, 0, 0, 1, 1)
315
+ self.label_18 = QtWidgets.QLabel(self.groupBox)
316
+ self.label_18.setObjectName("label_18")
317
+ self.gridLayout_5.addWidget(self.label_18, 1, 0, 1, 1)
318
+ self.mysql_pwd_lineEdit = QtWidgets.QLineEdit(self.groupBox)
319
+ self.mysql_pwd_lineEdit.setObjectName("mysql_pwd_lineEdit")
320
+ self.gridLayout_5.addWidget(self.mysql_pwd_lineEdit, 4, 1, 1, 1)
312
321
  self.verticalLayout_8.addLayout(self.gridLayout_5)
313
- spacerItem12 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
314
- self.verticalLayout_8.addItem(spacerItem12)
315
322
  self.verticalLayout_9.addWidget(self.groupBox)
323
+ spacerItem11 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
324
+ self.verticalLayout_9.addItem(spacerItem11)
325
+ self.groupBox_8 = QtWidgets.QGroupBox(self.tab_3)
326
+ self.groupBox_8.setObjectName("groupBox_8")
327
+ self.layoutWidget_2 = QtWidgets.QWidget(self.groupBox_8)
328
+ self.layoutWidget_2.setGeometry(QtCore.QRect(20, 30, 511, 208))
329
+ self.layoutWidget_2.setObjectName("layoutWidget_2")
330
+ self.gridLayout_7 = QtWidgets.QGridLayout(self.layoutWidget_2)
331
+ self.gridLayout_7.setContentsMargins(10, 10, 0, 10)
332
+ self.gridLayout_7.setObjectName("gridLayout_7")
333
+ self.clickhouse_test_pushButton = QtWidgets.QPushButton(self.layoutWidget_2)
334
+ self.clickhouse_test_pushButton.setObjectName("clickhouse_test_pushButton")
335
+ self.gridLayout_7.addWidget(self.clickhouse_test_pushButton, 2, 2, 1, 1)
336
+ self.label_52 = QtWidgets.QLabel(self.layoutWidget_2)
337
+ self.label_52.setObjectName("label_52")
338
+ self.gridLayout_7.addWidget(self.label_52, 5, 0, 1, 1)
339
+ self.label_54 = QtWidgets.QLabel(self.layoutWidget_2)
340
+ self.label_54.setObjectName("label_54")
341
+ self.gridLayout_7.addWidget(self.label_54, 1, 0, 1, 1)
342
+ self.label_51 = QtWidgets.QLabel(self.layoutWidget_2)
343
+ self.label_51.setObjectName("label_51")
344
+ self.gridLayout_7.addWidget(self.label_51, 2, 0, 1, 1)
345
+ self.label_53 = QtWidgets.QLabel(self.layoutWidget_2)
346
+ self.label_53.setObjectName("label_53")
347
+ self.gridLayout_7.addWidget(self.label_53, 0, 0, 1, 1)
348
+ self.clickhouse_pwd_lineEdit = QtWidgets.QLineEdit(self.layoutWidget_2)
349
+ self.clickhouse_pwd_lineEdit.setObjectName("clickhouse_pwd_lineEdit")
350
+ self.gridLayout_7.addWidget(self.clickhouse_pwd_lineEdit, 5, 1, 1, 1)
351
+ self.clickhouse_http_port_lineEdit = QtWidgets.QLineEdit(self.layoutWidget_2)
352
+ self.clickhouse_http_port_lineEdit.setObjectName("clickhouse_http_port_lineEdit")
353
+ self.gridLayout_7.addWidget(self.clickhouse_http_port_lineEdit, 2, 1, 1, 1)
354
+ self.clickhouse_usr_lineEdit = QtWidgets.QLineEdit(self.layoutWidget_2)
355
+ self.clickhouse_usr_lineEdit.setObjectName("clickhouse_usr_lineEdit")
356
+ self.gridLayout_7.addWidget(self.clickhouse_usr_lineEdit, 4, 1, 1, 1)
357
+ self.clickhouse_tmpdir_lineEdit = QtWidgets.QLineEdit(self.layoutWidget_2)
358
+ self.clickhouse_tmpdir_lineEdit.setObjectName("clickhouse_tmpdir_lineEdit")
359
+ self.gridLayout_7.addWidget(self.clickhouse_tmpdir_lineEdit, 0, 1, 1, 1)
360
+ self.clickhouse_ip_lineEdit = QtWidgets.QLineEdit(self.layoutWidget_2)
361
+ self.clickhouse_ip_lineEdit.setObjectName("clickhouse_ip_lineEdit")
362
+ self.gridLayout_7.addWidget(self.clickhouse_ip_lineEdit, 1, 1, 1, 1)
363
+ self.clickhouse_tmpdir_pushButton = QtWidgets.QPushButton(self.layoutWidget_2)
364
+ self.clickhouse_tmpdir_pushButton.setObjectName("clickhouse_tmpdir_pushButton")
365
+ self.gridLayout_7.addWidget(self.clickhouse_tmpdir_pushButton, 0, 2, 1, 1)
366
+ self.label_50 = QtWidgets.QLabel(self.layoutWidget_2)
367
+ self.label_50.setObjectName("label_50")
368
+ self.gridLayout_7.addWidget(self.label_50, 4, 0, 1, 1)
369
+ self.label_55 = QtWidgets.QLabel(self.layoutWidget_2)
370
+ self.label_55.setObjectName("label_55")
371
+ self.gridLayout_7.addWidget(self.label_55, 3, 0, 1, 1)
372
+ self.clickhouse_port_lineEdit = QtWidgets.QLineEdit(self.layoutWidget_2)
373
+ self.clickhouse_port_lineEdit.setObjectName("clickhouse_port_lineEdit")
374
+ self.gridLayout_7.addWidget(self.clickhouse_port_lineEdit, 3, 1, 1, 1)
375
+ self.verticalLayout_9.addWidget(self.groupBox_8)
316
376
  self.tabWidget.addTab(self.tab_3, "")
317
377
  self.tab_2 = QtWidgets.QWidget()
318
378
  self.tab_2.setObjectName("tab_2")
319
379
  self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.tab_2)
320
380
  self.verticalLayout_7.setObjectName("verticalLayout_7")
321
- spacerItem13 = QtWidgets.QSpacerItem(20, 9, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
322
- self.verticalLayout_7.addItem(spacerItem13)
381
+ spacerItem12 = QtWidgets.QSpacerItem(20, 9, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
382
+ self.verticalLayout_7.addItem(spacerItem12)
323
383
  self.label_43 = QtWidgets.QLabel(self.tab_2)
324
384
  self.label_43.setObjectName("label_43")
325
385
  self.verticalLayout_7.addWidget(self.label_43)
@@ -337,12 +397,12 @@ class Ui_MainWindow(object):
337
397
  self.sched_import_timeEdit = QtWidgets.QTimeEdit(self.tab_2)
338
398
  self.sched_import_timeEdit.setObjectName("sched_import_timeEdit")
339
399
  self.horizontalLayout_14.addWidget(self.sched_import_timeEdit)
340
- spacerItem14 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
341
- self.horizontalLayout_14.addItem(spacerItem14)
400
+ spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
401
+ self.horizontalLayout_14.addItem(spacerItem13)
342
402
  self.horizontalLayout_11.addLayout(self.horizontalLayout_14)
343
403
  self.verticalLayout_7.addLayout(self.horizontalLayout_11)
344
- spacerItem15 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
345
- self.verticalLayout_7.addItem(spacerItem15)
404
+ spacerItem14 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
405
+ self.verticalLayout_7.addItem(spacerItem14)
346
406
  self.horizontalLayout_18 = QtWidgets.QHBoxLayout()
347
407
  self.horizontalLayout_18.setContentsMargins(10, -1, 10, -1)
348
408
  self.horizontalLayout_18.setObjectName("horizontalLayout_18")
@@ -352,11 +412,11 @@ class Ui_MainWindow(object):
352
412
  self.import_status_label = QtWidgets.QLabel(self.tab_2)
353
413
  self.import_status_label.setObjectName("import_status_label")
354
414
  self.horizontalLayout_18.addWidget(self.import_status_label)
355
- spacerItem16 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
356
- self.horizontalLayout_18.addItem(spacerItem16)
415
+ spacerItem15 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
416
+ self.horizontalLayout_18.addItem(spacerItem15)
357
417
  self.verticalLayout_7.addLayout(self.horizontalLayout_18)
358
- spacerItem17 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
359
- self.verticalLayout_7.addItem(spacerItem17)
418
+ spacerItem16 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
419
+ self.verticalLayout_7.addItem(spacerItem16)
360
420
  self.groupBox_5 = QtWidgets.QGroupBox(self.tab_2)
361
421
  self.groupBox_5.setObjectName("groupBox_5")
362
422
  self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_5)
@@ -404,11 +464,11 @@ class Ui_MainWindow(object):
404
464
  self.label_9 = QtWidgets.QLabel(self.groupBox_5)
405
465
  self.label_9.setObjectName("label_9")
406
466
  self.gridLayout.addWidget(self.label_9, 5, 0, 1, 1)
407
- spacerItem18 = QtWidgets.QSpacerItem(5, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
408
- self.gridLayout.addItem(spacerItem18, 0, 2, 1, 1)
467
+ spacerItem17 = QtWidgets.QSpacerItem(5, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
468
+ self.gridLayout.addItem(spacerItem17, 0, 2, 1, 1)
409
469
  self.verticalLayout_5.addLayout(self.gridLayout)
410
- spacerItem19 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
411
- self.verticalLayout_5.addItem(spacerItem19)
470
+ spacerItem18 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
471
+ self.verticalLayout_5.addItem(spacerItem18)
412
472
  self.import_detail_textEdit = QtWidgets.QTextEdit(self.groupBox_5)
413
473
  self.import_detail_textEdit.setFrameShape(QtWidgets.QFrame.NoFrame)
414
474
  self.import_detail_textEdit.setReadOnly(True)
@@ -434,8 +494,8 @@ class Ui_MainWindow(object):
434
494
  self.label_36.setObjectName("label_36")
435
495
  self.verticalLayout.addWidget(self.label_36)
436
496
  self.verticalLayout_4.addLayout(self.verticalLayout)
437
- spacerItem20 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
438
- self.verticalLayout_4.addItem(spacerItem20)
497
+ spacerItem19 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
498
+ self.verticalLayout_4.addItem(spacerItem19)
439
499
  self.gridLayout_6 = QtWidgets.QGridLayout()
440
500
  self.gridLayout_6.setContentsMargins(20, -1, -1, -1)
441
501
  self.gridLayout_6.setObjectName("gridLayout_6")
@@ -529,8 +589,8 @@ class Ui_MainWindow(object):
529
589
  self.preload_week_checkBox = QtWidgets.QCheckBox(self.groupBox_6)
530
590
  self.preload_week_checkBox.setObjectName("preload_week_checkBox")
531
591
  self.gridLayout_6.addWidget(self.preload_week_checkBox, 1, 0, 1, 1)
532
- spacerItem21 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
533
- self.gridLayout_6.addItem(spacerItem21, 4, 3, 1, 1)
592
+ spacerItem20 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
593
+ self.gridLayout_6.addItem(spacerItem20, 4, 3, 1, 1)
534
594
  self.preload_quarter_checkBox = QtWidgets.QCheckBox(self.groupBox_6)
535
595
  self.preload_quarter_checkBox.setObjectName("preload_quarter_checkBox")
536
596
  self.gridLayout_6.addWidget(self.preload_quarter_checkBox, 3, 0, 1, 1)
@@ -565,16 +625,16 @@ class Ui_MainWindow(object):
565
625
  self.preload_year_spinBox.setObjectName("preload_year_spinBox")
566
626
  self.gridLayout_6.addWidget(self.preload_year_spinBox, 5, 2, 1, 1)
567
627
  self.verticalLayout_4.addLayout(self.gridLayout_6)
568
- spacerItem22 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
569
- self.verticalLayout_4.addItem(spacerItem22)
628
+ spacerItem21 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
629
+ self.verticalLayout_4.addItem(spacerItem21)
570
630
  self.verticalLayout_3.addWidget(self.groupBox_6)
571
631
  self.tabWidget.addTab(self.tab_6, "")
572
632
  self.tab = QtWidgets.QWidget()
573
633
  self.tab.setObjectName("tab")
574
634
  self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab)
575
635
  self.verticalLayout_2.setObjectName("verticalLayout_2")
576
- spacerItem23 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
577
- self.verticalLayout_2.addItem(spacerItem23)
636
+ spacerItem22 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
637
+ self.verticalLayout_2.addItem(spacerItem22)
578
638
  self.horizontalLayout_15 = QtWidgets.QHBoxLayout()
579
639
  self.horizontalLayout_15.setContentsMargins(20, -1, -1, -1)
580
640
  self.horizontalLayout_15.setObjectName("horizontalLayout_15")
@@ -584,11 +644,11 @@ class Ui_MainWindow(object):
584
644
  self.collect_status_label = QtWidgets.QLabel(self.tab)
585
645
  self.collect_status_label.setObjectName("collect_status_label")
586
646
  self.horizontalLayout_15.addWidget(self.collect_status_label)
587
- spacerItem24 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
588
- self.horizontalLayout_15.addItem(spacerItem24)
647
+ spacerItem23 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
648
+ self.horizontalLayout_15.addItem(spacerItem23)
589
649
  self.verticalLayout_2.addLayout(self.horizontalLayout_15)
590
- spacerItem25 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
591
- self.verticalLayout_2.addItem(spacerItem25)
650
+ spacerItem24 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
651
+ self.verticalLayout_2.addItem(spacerItem24)
592
652
  self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
593
653
  self.horizontalLayout_13.setContentsMargins(20, -1, -1, -1)
594
654
  self.horizontalLayout_13.setObjectName("horizontalLayout_13")
@@ -600,11 +660,11 @@ class Ui_MainWindow(object):
600
660
  self.collect_source_comboBox.addItem("")
601
661
  self.collect_source_comboBox.addItem("")
602
662
  self.horizontalLayout_13.addWidget(self.collect_source_comboBox)
603
- spacerItem26 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
604
- self.horizontalLayout_13.addItem(spacerItem26)
663
+ spacerItem25 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
664
+ self.horizontalLayout_13.addItem(spacerItem25)
605
665
  self.verticalLayout_2.addLayout(self.horizontalLayout_13)
606
- spacerItem27 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
607
- self.verticalLayout_2.addItem(spacerItem27)
666
+ spacerItem26 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
667
+ self.verticalLayout_2.addItem(spacerItem26)
608
668
  self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
609
669
  self.horizontalLayout_10.setContentsMargins(20, -1, -1, -1)
610
670
  self.horizontalLayout_10.setObjectName("horizontalLayout_10")
@@ -615,11 +675,11 @@ class Ui_MainWindow(object):
615
675
  self.collect_sample_spinBox.setMaximum(86400)
616
676
  self.collect_sample_spinBox.setObjectName("collect_sample_spinBox")
617
677
  self.horizontalLayout_10.addWidget(self.collect_sample_spinBox)
618
- spacerItem28 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
619
- self.horizontalLayout_10.addItem(spacerItem28)
678
+ spacerItem27 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
679
+ self.horizontalLayout_10.addItem(spacerItem27)
620
680
  self.verticalLayout_2.addLayout(self.horizontalLayout_10)
621
- spacerItem29 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
622
- self.verticalLayout_2.addItem(spacerItem29)
681
+ spacerItem28 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
682
+ self.verticalLayout_2.addItem(spacerItem28)
623
683
  self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
624
684
  self.horizontalLayout_8.setContentsMargins(20, -1, -1, -1)
625
685
  self.horizontalLayout_8.setObjectName("horizontalLayout_8")
@@ -638,8 +698,8 @@ class Ui_MainWindow(object):
638
698
  self.collect_phase1_last_timeEdit = QtWidgets.QTimeEdit(self.tab)
639
699
  self.collect_phase1_last_timeEdit.setObjectName("collect_phase1_last_timeEdit")
640
700
  self.horizontalLayout_6.addWidget(self.collect_phase1_last_timeEdit)
641
- spacerItem30 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
642
- self.horizontalLayout_6.addItem(spacerItem30)
701
+ spacerItem29 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
702
+ self.horizontalLayout_6.addItem(spacerItem29)
643
703
  self.horizontalLayout_8.addLayout(self.horizontalLayout_6)
644
704
  self.verticalLayout_2.addLayout(self.horizontalLayout_8)
645
705
  self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
@@ -660,12 +720,12 @@ class Ui_MainWindow(object):
660
720
  self.collect_phase2_last_timeEdit = QtWidgets.QTimeEdit(self.tab)
661
721
  self.collect_phase2_last_timeEdit.setObjectName("collect_phase2_last_timeEdit")
662
722
  self.horizontalLayout_7.addWidget(self.collect_phase2_last_timeEdit)
663
- spacerItem31 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
664
- self.horizontalLayout_7.addItem(spacerItem31)
723
+ spacerItem30 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
724
+ self.horizontalLayout_7.addItem(spacerItem30)
665
725
  self.horizontalLayout_9.addLayout(self.horizontalLayout_7)
666
726
  self.verticalLayout_2.addLayout(self.horizontalLayout_9)
667
- spacerItem32 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
668
- self.verticalLayout_2.addItem(spacerItem32)
727
+ spacerItem31 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
728
+ self.verticalLayout_2.addItem(spacerItem31)
669
729
  self.horizontalLayout_16 = QtWidgets.QHBoxLayout()
670
730
  self.horizontalLayout_16.setContentsMargins(20, 0, -1, -1)
671
731
  self.horizontalLayout_16.setObjectName("horizontalLayout_16")
@@ -678,8 +738,8 @@ class Ui_MainWindow(object):
678
738
  self.collect_use_zhima_checkBox.setObjectName("collect_use_zhima_checkBox")
679
739
  self.horizontalLayout_16.addWidget(self.collect_use_zhima_checkBox)
680
740
  self.verticalLayout_2.addLayout(self.horizontalLayout_16)
681
- spacerItem33 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
682
- self.verticalLayout_2.addItem(spacerItem33)
741
+ spacerItem32 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
742
+ self.verticalLayout_2.addItem(spacerItem32)
683
743
  self.horizontalLayout_17 = QtWidgets.QHBoxLayout()
684
744
  self.horizontalLayout_17.setContentsMargins(20, 0, -1, -1)
685
745
  self.horizontalLayout_17.setObjectName("horizontalLayout_17")
@@ -698,11 +758,11 @@ class Ui_MainWindow(object):
698
758
  self.label_44.setScaledContents(True)
699
759
  self.label_44.setObjectName("label_44")
700
760
  self.label_46 = QtWidgets.QLabel(self.tab_star)
701
- self.label_46.setGeometry(QtCore.QRect(30, 20, 561, 221))
761
+ self.label_46.setGeometry(QtCore.QRect(30, 20, 501, 211))
702
762
  self.label_46.setWordWrap(True)
703
763
  self.label_46.setObjectName("label_46")
704
764
  self.line_2 = QtWidgets.QFrame(self.tab_star)
705
- self.line_2.setGeometry(QtCore.QRect(30, 240, 531, 16))
765
+ self.line_2.setGeometry(QtCore.QRect(30, 240, 511, 16))
706
766
  self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
707
767
  self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
708
768
  self.line_2.setObjectName("line_2")
@@ -713,7 +773,7 @@ class Ui_MainWindow(object):
713
773
  self.label_47.setFont(font)
714
774
  self.label_47.setObjectName("label_47")
715
775
  self.line_3 = QtWidgets.QFrame(self.tab_star)
716
- self.line_3.setGeometry(QtCore.QRect(30, 330, 531, 16))
776
+ self.line_3.setGeometry(QtCore.QRect(30, 330, 511, 16))
717
777
  self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
718
778
  self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
719
779
  self.line_3.setObjectName("line_3")
@@ -724,7 +784,7 @@ class Ui_MainWindow(object):
724
784
  self.label_48.setFont(font)
725
785
  self.label_48.setObjectName("label_48")
726
786
  self.line_4 = QtWidgets.QFrame(self.tab_star)
727
- self.line_4.setGeometry(QtCore.QRect(30, 560, 531, 16))
787
+ self.line_4.setGeometry(QtCore.QRect(30, 560, 511, 16))
728
788
  self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
729
789
  self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
730
790
  self.line_4.setObjectName("line_4")
@@ -735,10 +795,10 @@ class Ui_MainWindow(object):
735
795
  self.label_49.setFont(font)
736
796
  self.label_49.setObjectName("label_49")
737
797
  self.label_license = QtWidgets.QLabel(self.tab_star)
738
- self.label_license.setGeometry(QtCore.QRect(40, 610, 521, 91))
798
+ self.label_license.setGeometry(QtCore.QRect(40, 610, 511, 81))
739
799
  self.label_license.setObjectName("label_license")
740
800
  self.layoutWidget = QtWidgets.QWidget(self.tab_star)
741
- self.layoutWidget.setGeometry(QtCore.QRect(40, 290, 511, 33))
801
+ self.layoutWidget.setGeometry(QtCore.QRect(40, 290, 501, 33))
742
802
  self.layoutWidget.setObjectName("layoutWidget")
743
803
  self.horizontalLayout_20 = QtWidgets.QHBoxLayout(self.layoutWidget)
744
804
  self.horizontalLayout_20.setContentsMargins(0, 0, 0, 0)
@@ -768,7 +828,7 @@ class Ui_MainWindow(object):
768
828
  MainWindow.setCentralWidget(self.centralwidget)
769
829
 
770
830
  self.retranslateUi(MainWindow)
771
- self.tabWidget.setCurrentIndex(0)
831
+ self.tabWidget.setCurrentIndex(1)
772
832
  QtCore.QMetaObject.connectSlotsByName(MainWindow)
773
833
 
774
834
  def retranslateUi(self, MainWindow):
@@ -784,6 +844,8 @@ class Ui_MainWindow(object):
784
844
  self.qmt_radioButton.setText(_translate("MainWindow", "使用 qmt 数据下载(需要 miniqmt)(屏蔽,qmt下载数据太慢,且不稳定)"))
785
845
  self.groupBox_7.setTitle(_translate("MainWindow", "导入设置"))
786
846
  self.import_weight_checkBox.setText(_translate("MainWindow", "下载权息数据"))
847
+ self.import_history_finance_checkBox.setText(_translate("MainWindow", "下载历史财务数据"))
848
+ self.import_block_checkBox.setText(_translate("MainWindow", "下载行业与指数板块"))
787
849
  self.import_stock_checkBox.setText(_translate("MainWindow", "股票"))
788
850
  self.import_fund_checkBox.setText(_translate("MainWindow", "基金"))
789
851
  self.import_future_checkBox.setText(_translate("MainWindow", "期货"))
@@ -801,17 +863,27 @@ class Ui_MainWindow(object):
801
863
  self.groupBox_4.setTitle(_translate("MainWindow", "存储引擎设置"))
802
864
  self.enable_hdf55_radioButton.setText(_translate("MainWindow", "使用HDF5(推荐)"))
803
865
  self.enable_mysql_radioButton.setText(_translate("MainWindow", "使用MYSQL"))
866
+ self.enable_clickhouse_radioButton.setText(_translate("MainWindow", "使用Clickhouse(捐赠权益)"))
804
867
  self.groupBox_3.setTitle(_translate("MainWindow", "HDF5存储设置"))
805
868
  self.hdf5_dir_pushButton.setText(_translate("MainWindow", "选择"))
806
869
  self.label.setText(_translate("MainWindow", "目标数据(HDF5)存放目录:"))
807
870
  self.groupBox.setTitle(_translate("MainWindow", "MYSQL存储设置"))
808
- self.label_18.setText(_translate("MainWindow", "主机名/IP:"))
809
- self.label_20.setText(_translate("MainWindow", "临时文件目录:"))
810
871
  self.label_11.setText(_translate("MainWindow", "用户名:"))
811
- self.mysql_tmpdir_pushButton.setText(_translate("MainWindow", "选择"))
812
- self.mysql_test_pushButton.setText(_translate("MainWindow", "测试连接"))
813
872
  self.label_19.setText(_translate("MainWindow", "端口号:"))
814
873
  self.label_13.setText(_translate("MainWindow", "密码"))
874
+ self.mysql_tmpdir_pushButton.setText(_translate("MainWindow", "选择"))
875
+ self.mysql_test_pushButton.setText(_translate("MainWindow", "测试连接"))
876
+ self.label_20.setText(_translate("MainWindow", "临本机时文件目录:"))
877
+ self.label_18.setText(_translate("MainWindow", "主机名/IP:"))
878
+ self.groupBox_8.setTitle(_translate("MainWindow", "Clickhouse设置(捐赠权益)"))
879
+ self.clickhouse_test_pushButton.setText(_translate("MainWindow", "测试连接"))
880
+ self.label_52.setText(_translate("MainWindow", "密码"))
881
+ self.label_54.setText(_translate("MainWindow", "主机名/IP:"))
882
+ self.label_51.setText(_translate("MainWindow", "HTTP端口号:"))
883
+ self.label_53.setText(_translate("MainWindow", "本机临时文件目录:"))
884
+ self.clickhouse_tmpdir_pushButton.setText(_translate("MainWindow", "选择"))
885
+ self.label_50.setText(_translate("MainWindow", "用户名:"))
886
+ self.label_55.setText(_translate("MainWindow", "TCP端口号"))
815
887
  self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "存储设置"))
816
888
  self.label_43.setText(_translate("MainWindow", " 注:HDF5存储导入时,请关闭其他 hikyuu 进程,HDF5不支持同时读写!"))
817
889
  self.sched_import_pushButton.setText(_translate("MainWindow", "启动定时导入"))
@@ -832,19 +904,19 @@ class Ui_MainWindow(object):
832
904
  "hr { height: 1px; border-width: 0; }\n"
833
905
  "li.unchecked::marker { content: \"\\2610\"; }\n"
834
906
  "li.checked::marker { content: \"\\2612\"; }\n"
835
- "</style></head><body style=\" font-family:\'Microsoft YaHei UI\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
836
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入上证日线记录:</span></p>\n"
837
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入深证日线记录:</span></p>\n"
838
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入上证5分钟线记录:</span></p>\n"
839
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入深证5分钟线记录:</span></p>\n"
840
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入上证1分钟线记录:</span></p>\n"
841
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入深证1分钟线记录:</span></p>\n"
842
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入上证分笔记录:</span></p>\n"
843
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入深证分笔记录:</span></p>\n"
844
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入上证分时数据:</span></p>\n"
845
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入深证分时数据:</span></p>\n"
846
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入权息数据数:</span></p>\n"
847
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">导入完毕!</span></p></body></html>"))
907
+ "</style></head><body style=\" font-family:\'.AppleSystemUIFont\'; font-size:13pt; font-weight:400; font-style:normal;\">\n"
908
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入上证日线记录:</span></p>\n"
909
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入深证日线记录:</span></p>\n"
910
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入上证5分钟线记录:</span></p>\n"
911
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入深证5分钟线记录:</span></p>\n"
912
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入上证1分钟线记录:</span></p>\n"
913
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入深证1分钟线记录:</span></p>\n"
914
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入上证分笔记录:</span></p>\n"
915
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入深证分笔记录:</span></p>\n"
916
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入上证分时数据:</span></p>\n"
917
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入深证分时数据:</span></p>\n"
918
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入权息数据数:</span></p>\n"
919
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">导入完毕!</span></p></body></html>"))
848
920
  self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "执行导入"))
849
921
  self.groupBox_6.setTitle(_translate("MainWindow", "预加载设置"))
850
922
  self.label_35.setText(_translate("MainWindow", "此处为 Hikyuu 运行时的数据预加载设置,请根据机器内存大小选择"))
@@ -892,20 +964,29 @@ class Ui_MainWindow(object):
892
964
  "hr { height: 1px; border-width: 0; }\n"
893
965
  "li.unchecked::marker { content: \"\\2610\"; }\n"
894
966
  "li.checked::marker { content: \"\\2612\"; }\n"
895
- "</style></head><body style=\" font-family:\'Microsoft YaHei UI\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
896
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">注:</span></p>\n"
897
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:10pt; font-weight:600; color:#ff0000;\">1、行情采集服务仅对预加载数据有效</span><span style=\" font-family:\'SimSun\';\">,在行情采集服务运行期间,hikyuu.interactive运行时将自动连接采集服务获取行情数据,并更新预加载的内容数据。</span></p>\n"
898
- "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'SimSun\';\"><br /></p>\n"
899
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\';\">2、如使用芝麻代理(</span><a href=\"http://h.zhimaruanjian.com/\"><span style=\" font-family:\'SimSun\'; text-decoration: underline; color:#0000ff;\">http://h.zhimaruanjian.com/</span></a><span style=\" font-family:\'SimSun\';\">),请自行申请(需付费),并确保ip为其白名单。</span></p>\n"
900
- "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'SimSun\';\"><br /></p>\n"
901
- "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-weight:696; color:#0000ff;\">3、此处采集为网络采集,更推荐直接运行安装目录下gui子目录下的 start_qmt.py ,使用miniqmt 实时服务。该程序独立运行,不用关闭,和这里的采集效果一样。注意:miniqmt需要QMT交易端配合,且在同一机器上执行。</span></p></body></html>"))
967
+ "</style></head><body style=\" font-family:\'.AppleSystemUIFont\'; font-size:13pt; font-weight:400; font-style:normal;\">\n"
968
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">注:</span></p>\n"
969
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:10pt; font-weight:600; color:#ff0000;\">1、行情采集服务仅对预加载数据有效</span><span style=\" font-family:\'SimSun\'; font-size:9pt;\">,在行情采集服务运行期间,hikyuu.interactive运行时将自动连接采集服务获取行情数据,并更新预加载的内容数据。</span></p>\n"
970
+ "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'SimSun\'; font-size:9pt;\"><br /></p>\n"
971
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt;\">2、如使用芝麻代理(</span><a href=\"http://h.zhimaruanjian.com/\"><span style=\" font-family:\'SimSun\'; font-size:9pt; text-decoration: underline; color:#0000ff;\">http://h.zhimaruanjian.com/</span></a><span style=\" font-family:\'SimSun\'; font-size:9pt;\">),请自行申请(需付费),并确保ip为其白名单。</span></p>\n"
972
+ "<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'SimSun\'; font-size:9pt;\"><br /></p>\n"
973
+ "<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:696; color:#0000ff;\">3、此处采集为网络采集,更推荐直接运行安装目录下gui子目录下的 start_qmt.py ,使用miniqmt 实时服务。该程序独立运行,不用关闭,和这里的采集效果一样。注意:miniqmt需要QMT交易端配合,且在同一机器上执行。</span></p></body></html>"))
902
974
  self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "行情采集服务"))
903
- self.label_46.setText(_translate("MainWindow", "<html><head/><body><p>Hikyuu 作为长期持续维护的开源项目,<span style=\" font-weight:700;\">专注于量化交易领域的核心技术构建,涵盖交易模型开发、极速计算引擎、高效回测框架及实盘拓展能力</span>,定位为量化交易的基础设施级计算引擎,为量化交易爱好者和专业提供高性能底层架构支持。随着社区规模扩大,项目持续迭代及技术支持事务逐渐分散了作者在策略研究上的精力。为保障项目的专注度与可持续性,现推出 &quot;VIP计划&quot;,通过提供部分VIP功能作为回馈,构建良性的项目发展生态。诚挚期待社区伙伴的支持,您的参与都将直接助力 Hikyuu 的技术创新,共同推动量化交易基础设施的迭代升级。</p><p>VIP功能以插件的方式提供,采用独立授权许可,完全在 hikyuu 之外,对喜欢自行编译扩展的朋友没有影响。因插件许可授权需要采集硬件信息,如有疑虑只要不申请试用许可和正式许可授权,不会触发硬件信息采集。</p><p><span style=\" font-weight:700;\">正式许可授权除资金支持外,亦可通过其他方式获取,详情参见:</span><a href=\"https://gitee.com/fasiondog/hikyuu/blob/master/vip-plan.md\"><span style=\" font-weight:700; text-decoration: underline; color:#3586ff;\">VIP计划</span></a><span style=\" font-weight:700;\"> 中 &quot;如何获取免费授权和延长授权时间&quot; 章节,已提供的VIP功能亦在其中,可自行查看,感谢大家的支持!</span></p></body></html>"))
904
- self.label_47.setText(_translate("MainWindow", "申请试用许可(30天试用)"))
905
- self.label_48.setText(_translate("MainWindow", "加入知识星球,获取星球许可(可同时在3台设备上使用)"))
906
- self.label_49.setText(_translate("MainWindow", "当前授权信息"))
975
+ self.label_46.setText(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
976
+ "<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n"
977
+ "p, li { white-space: pre-wrap; }\n"
978
+ "hr { height: 1px; border-width: 0; }\n"
979
+ "li.unchecked::marker { content: \"\\2610\"; }\n"
980
+ "li.checked::marker { content: \"\\2612\"; }\n"
981
+ "</style></head><body style=\" font-family:\'Microsoft YaHei UI\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
982
+ "<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'.AppleSystemUIFont\'; font-size:10pt;\">Hikyuu </span><span style=\" font-family:\'.AppleSystemUIFont\'; font-size:10pt; font-weight:700;\">专注于量化交易领域的核心技术构建,涵盖交易模型开发、极速计算引擎、高效回测框架及实盘拓展能力</span><span style=\" font-family:\'.AppleSystemUIFont\'; font-size:10pt;\">,定位为量化交易的基础设施级计算引擎,为量化交易爱好者和专业提供高性能底层架构支持。随着社区规模扩大,项目持续迭代及技术支持事务逐渐分散了作者在策略研究上的精力。为保障项目的专注度与可持续性,现对捐赠用户提供部分额外功能作为回馈。诚挚期待社区伙伴的支持,您的参与都将直接助力 Hikyuu 的技术创新,共同推动量化交易基础设施的迭代升级。</span></p>\n"
983
+ "<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'.AppleSystemUIFont\'; font-size:10pt;\">捐赠功能以插件的方式提供,采用独立授权许可,完全在 hikyuu 之外,对喜欢自行编译扩展的朋友没有影响。因插件许可授权需要采集硬件信息,如有疑虑只要不申请试用许可和正式许可授权,不会触发硬件信息采集,如申请,视为同意采集。</span></p>\n"
984
+ "<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-family:\'.AppleSystemUIFont\'; font-size:10pt; font-weight:700;\">详情参见:</span><a href=\"https://hikyuu.readthedocs.io/zh-cn/latest/vip/vip-plan.html\"><span style=\" font-family:\'.AppleSystemUIFont\'; font-size:10pt; text-decoration: underline; color:#3586ff;\">捐赠权益</span></a><span style=\" font-family:\'.AppleSystemUIFont\'; font-size:10pt; font-weight:700;\"> ,感谢大家的支持!</span></p></body></html>"))
985
+ self.label_47.setText(_translate("MainWindow", "申请捐赠试用(30天试用)"))
986
+ self.label_48.setText(_translate("MainWindow", "加入知识星球进行捐赠,可同时在3台设备上使用)"))
987
+ self.label_49.setText(_translate("MainWindow", "当前捐赠授权信息"))
907
988
  self.label_license.setText(_translate("MainWindow", "TextLabel"))
908
989
  self.label_45.setText(_translate("MainWindow", "电子邮件地址:"))
909
990
  self.fetch_trial_pushButton.setText(_translate("MainWindow", "申请试用许可"))
910
- self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_star), _translate("MainWindow", "项目VIP"))
991
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_star), _translate("MainWindow", "项目捐赠"))
911
992
  self.label_41.setText(_translate("MainWindow", "执行日志"))