hikyuu 2.6.2__py3-none-win_amd64.whl → 2.6.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.
- hikyuu/__init__.py +1 -1
- hikyuu/__init__.pyi +28 -13
- hikyuu/analysis/__init__.pyi +20 -0
- hikyuu/analysis/analysis.pyi +21 -1
- hikyuu/core.pyi +22 -2
- hikyuu/cpp/core310.pyd +0 -0
- hikyuu/cpp/core310.pyi +499 -50
- hikyuu/cpp/core311.pyd +0 -0
- hikyuu/cpp/core311.pyi +499 -50
- hikyuu/cpp/core312.pyd +0 -0
- hikyuu/cpp/core312.pyi +499 -50
- hikyuu/cpp/core313.pyd +0 -0
- hikyuu/cpp/core313.pyi +499 -50
- hikyuu/cpp/core39.pyd +0 -0
- hikyuu/cpp/core39.pyi +499 -50
- hikyuu/cpp/hikyuu.dll +0 -0
- hikyuu/cpp/hikyuu.lib +0 -0
- hikyuu/data/common.py +1 -1
- hikyuu/data/common_mysql.py +19 -0
- hikyuu/data/common_pytdx.py +2 -0
- hikyuu/data/common_sqlite3.py +1 -0
- hikyuu/data/hku_config_template.py +14 -0
- hikyuu/data/mysql_upgrade/0028.sql +95 -0
- hikyuu/data/pytdx_to_h5.py +53 -13
- hikyuu/data/pytdx_to_mysql.py +42 -9
- hikyuu/data/pytdx_to_taos.py +736 -0
- hikyuu/data/sqlite_upgrade/0028.sql +97 -0
- hikyuu/draw/__init__.pyi +1 -1
- hikyuu/draw/drawplot/__init__.pyi +1 -1
- hikyuu/draw/drawplot/bokeh_draw.pyi +24 -9
- hikyuu/draw/drawplot/echarts_draw.pyi +24 -9
- hikyuu/draw/drawplot/matplotlib_draw.py +26 -4
- hikyuu/draw/drawplot/matplotlib_draw.pyi +24 -9
- hikyuu/draw/kaufman.py +2 -2
- hikyuu/draw/kaufman.pyi +2 -2
- hikyuu/examples/notebook/001-overview.ipynb +65 -100
- hikyuu/examples/notebook/004-IndicatorOverview.ipynb +34 -32
- hikyuu/examples/notebook/007-SystemDetails.ipynb +64 -50
- hikyuu/examples/notebook/010-Portfolio.ipynb +120 -124
- hikyuu/extend.py +1 -1
- hikyuu/extend.pyi +24 -9
- hikyuu/fetcher/stock/zh_block_em.py +349 -5
- hikyuu/fetcher/stock/zh_stock_a_pytdx.py +2 -1
- hikyuu/gui/HikyuuTDX.py +47 -24
- hikyuu/gui/data/ImportBlockInfoTask.py +1 -1
- hikyuu/gui/data/ImportHistoryFinanceTask.py +48 -44
- hikyuu/gui/data/ImportPytdxTimeToH5Task.py +3 -1
- hikyuu/gui/data/ImportPytdxToH5Task.py +4 -2
- hikyuu/gui/data/ImportPytdxTransToH5Task.py +3 -1
- hikyuu/gui/data/ImportWeightToSqliteTask.py +2 -1
- hikyuu/gui/data/ImportZhBond10Task.py +1 -1
- hikyuu/gui/data/MainWindow.py +123 -106
- hikyuu/gui/data/UsePytdxImportToH5Thread.py +7 -3
- hikyuu/gui/data/UseQmtImportToH5Thread.py +1 -0
- hikyuu/gui/data/UseTdxImportToH5Thread.py +2 -1
- hikyuu/hub.pyi +6 -6
- hikyuu/include/hikyuu/Block.h +20 -0
- hikyuu/include/hikyuu/KQuery.h +8 -0
- hikyuu/include/hikyuu/MarketInfo.h +6 -0
- hikyuu/include/hikyuu/Stock.h +1 -1
- hikyuu/include/hikyuu/StockManager.h +6 -0
- hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +35 -0
- hikyuu/include/hikyuu/indicator/Indicator.h +5 -0
- hikyuu/include/hikyuu/indicator/IndicatorImp.h +8 -3
- hikyuu/include/hikyuu/indicator/build_in.h +1 -0
- hikyuu/include/hikyuu/indicator/crt/BARSLASTCOUNT.h +33 -0
- hikyuu/include/hikyuu/indicator/crt/INSUM.h +5 -10
- hikyuu/include/hikyuu/indicator/crt/RSI.h +2 -18
- hikyuu/include/hikyuu/indicator/imp/IBarsLastCount.h +27 -0
- hikyuu/include/hikyuu/plugin/backtest.h +3 -2
- hikyuu/include/hikyuu/plugin/device.h +6 -3
- hikyuu/include/hikyuu/plugin/extind.h +150 -0
- hikyuu/include/hikyuu/plugin/interface/BackTestPluginInterface.h +2 -1
- hikyuu/include/hikyuu/plugin/interface/DevicePluginInterface.h +1 -0
- hikyuu/include/hikyuu/plugin/interface/ExtendIndicatorsPluginInterface.h +26 -0
- hikyuu/include/hikyuu/plugin/interface/TMReportPluginInterface.h +80 -0
- hikyuu/include/hikyuu/plugin/interface/plugins.h +4 -0
- hikyuu/include/hikyuu/strategy/BrokerTradeManager.h +7 -5
- hikyuu/include/hikyuu/strategy/Strategy.h +22 -9
- hikyuu/include/hikyuu/trade_manage/OrderBrokerBase.h +11 -4
- hikyuu/include/hikyuu/trade_manage/Performance.h +17 -9
- hikyuu/include/hikyuu/trade_manage/PositionExtInfo.h +92 -0
- hikyuu/include/hikyuu/trade_manage/PositionRecord.h +7 -1
- hikyuu/include/hikyuu/trade_manage/TradeManager.h +8 -5
- hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +66 -5
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +9 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +8 -5
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_EqualWeight.h +4 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICIRWeight.h +4 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_ICWeight.h +4 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/crt/MF_Weight.h +4 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/EqualWeightMultiFactor.h +2 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICIRMultiFactor.h +2 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/ICMultiFactor.h +2 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/imp/WeightMultiFactor.h +1 -1
- hikyuu/include/hikyuu/trade_sys/selector/crt/SE_Optimal.h +8 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalEvaluateSelector.h +28 -0
- hikyuu/include/hikyuu/trade_sys/selector/imp/optimal/OptimalSelectorBase.h +1 -0
- hikyuu/include/hikyuu/trade_sys/system/TradeRequest.h +7 -4
- hikyuu/include/hikyuu/trade_sys/system/imp/WalkForwardTradeManager.h +17 -13
- hikyuu/include/hikyuu/utilities/DllLoader.h +226 -0
- hikyuu/include/hikyuu/utilities/datetime/Datetime.h +20 -0
- hikyuu/include/hikyuu/utilities/datetime/TimeDelta.h +6 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginLoader.h +10 -10
- hikyuu/include/hikyuu/utilities/thread/{MQStealThreadPool.h → GlobalMQStealThreadPool.h} +12 -12
- hikyuu/include/hikyuu/utilities/thread/GlobalMQThreadPool.h +271 -0
- hikyuu/include/hikyuu/utilities/thread/{StealThreadPool.h → GlobalStealThreadPool.h} +11 -10
- hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +224 -0
- hikyuu/include/hikyuu/utilities/thread/InterruptFlag.h +16 -0
- hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +40 -77
- hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +31 -59
- hikyuu/include/hikyuu/utilities/thread/ThreadSafeQueue.h +4 -0
- hikyuu/include/hikyuu/utilities/thread/algorithm.h +9 -9
- hikyuu/include/hikyuu/utilities/thread/thread.h +4 -0
- hikyuu/include/hikyuu/version.h +4 -4
- hikyuu/plugin/backtest.dll +0 -0
- hikyuu/plugin/dataserver.dll +0 -0
- hikyuu/plugin/device.dll +0 -0
- hikyuu/plugin/extind.dll +0 -0
- hikyuu/plugin/import2hdf5.dll +0 -0
- hikyuu/plugin/tmreport.dll +0 -0
- hikyuu/trade_manage/__init__.pyi +23 -8
- hikyuu/trade_manage/broker.py +8 -8
- hikyuu/trade_manage/broker.pyi +4 -4
- hikyuu/trade_manage/broker_easytrader.py +3 -3
- hikyuu/trade_manage/broker_easytrader.pyi +2 -2
- hikyuu/trade_manage/broker_mail.py +2 -2
- hikyuu/trade_manage/broker_mail.pyi +2 -2
- hikyuu/trade_manage/trade.pyi +23 -8
- hikyuu/util/singleton.pyi +1 -1
- {hikyuu-2.6.2.dist-info → hikyuu-2.6.5.dist-info}/METADATA +4 -3
- {hikyuu-2.6.2.dist-info → hikyuu-2.6.5.dist-info}/RECORD +136 -121
- {hikyuu-2.6.2.dist-info → hikyuu-2.6.5.dist-info}/LICENSE +0 -0
- {hikyuu-2.6.2.dist-info → hikyuu-2.6.5.dist-info}/WHEEL +0 -0
- {hikyuu-2.6.2.dist-info → hikyuu-2.6.5.dist-info}/entry_points.txt +0 -0
- {hikyuu-2.6.2.dist-info → hikyuu-2.6.5.dist-info}/top_level.txt +0 -0
hikyuu/gui/data/MainWindow.py
CHANGED
|
@@ -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.
|
|
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(
|
|
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,
|
|
181
|
+
self.min5_start_dateEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1989, 12, 24), QtCore.QTime(16, 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,
|
|
203
|
+
self.day_start_dateEdit.setMinimumDateTime(QtCore.QDateTime(QtCore.QDate(1989, 12, 24), QtCore.QTime(16, 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)
|
|
@@ -265,33 +271,32 @@ class Ui_MainWindow(object):
|
|
|
265
271
|
spacerItem10 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
|
266
272
|
self.verticalLayout_9.addItem(spacerItem10)
|
|
267
273
|
self.groupBox = QtWidgets.QGroupBox(self.tab_3)
|
|
274
|
+
self.groupBox.setFlat(False)
|
|
275
|
+
self.groupBox.setCheckable(False)
|
|
268
276
|
self.groupBox.setObjectName("groupBox")
|
|
269
277
|
self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.groupBox)
|
|
270
278
|
self.verticalLayout_8.setObjectName("verticalLayout_8")
|
|
271
279
|
self.gridLayout_5 = QtWidgets.QGridLayout()
|
|
272
280
|
self.gridLayout_5.setContentsMargins(10, 10, -1, 10)
|
|
273
281
|
self.gridLayout_5.setObjectName("gridLayout_5")
|
|
274
|
-
self.
|
|
275
|
-
self.
|
|
276
|
-
self.gridLayout_5.addWidget(self.
|
|
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)
|
|
282
|
+
self.mysql_usr_lineEdit = QtWidgets.QLineEdit(self.groupBox)
|
|
283
|
+
self.mysql_usr_lineEdit.setObjectName("mysql_usr_lineEdit")
|
|
284
|
+
self.gridLayout_5.addWidget(self.mysql_usr_lineEdit, 3, 1, 1, 1)
|
|
286
285
|
self.label_11 = QtWidgets.QLabel(self.groupBox)
|
|
287
286
|
self.label_11.setObjectName("label_11")
|
|
288
|
-
self.gridLayout_5.addWidget(self.label_11,
|
|
287
|
+
self.gridLayout_5.addWidget(self.label_11, 3, 0, 1, 1)
|
|
289
288
|
self.mysql_port_lineEdit = QtWidgets.QLineEdit(self.groupBox)
|
|
290
289
|
self.mysql_port_lineEdit.setObjectName("mysql_port_lineEdit")
|
|
291
|
-
self.gridLayout_5.addWidget(self.mysql_port_lineEdit,
|
|
292
|
-
self.
|
|
293
|
-
self.
|
|
294
|
-
self.gridLayout_5.addWidget(self.
|
|
290
|
+
self.gridLayout_5.addWidget(self.mysql_port_lineEdit, 2, 1, 1, 1)
|
|
291
|
+
self.label_19 = QtWidgets.QLabel(self.groupBox)
|
|
292
|
+
self.label_19.setObjectName("label_19")
|
|
293
|
+
self.gridLayout_5.addWidget(self.label_19, 2, 0, 1, 1)
|
|
294
|
+
self.mysql_ip_lineEdit = QtWidgets.QLineEdit(self.groupBox)
|
|
295
|
+
self.mysql_ip_lineEdit.setObjectName("mysql_ip_lineEdit")
|
|
296
|
+
self.gridLayout_5.addWidget(self.mysql_ip_lineEdit, 1, 1, 1, 1)
|
|
297
|
+
self.label_13 = QtWidgets.QLabel(self.groupBox)
|
|
298
|
+
self.label_13.setObjectName("label_13")
|
|
299
|
+
self.gridLayout_5.addWidget(self.label_13, 4, 0, 1, 1)
|
|
295
300
|
self.mysql_tmpdir_lineEdit = QtWidgets.QLineEdit(self.groupBox)
|
|
296
301
|
self.mysql_tmpdir_lineEdit.setObjectName("mysql_tmpdir_lineEdit")
|
|
297
302
|
self.gridLayout_5.addWidget(self.mysql_tmpdir_lineEdit, 0, 1, 1, 1)
|
|
@@ -300,26 +305,27 @@ class Ui_MainWindow(object):
|
|
|
300
305
|
self.gridLayout_5.addWidget(self.mysql_tmpdir_pushButton, 0, 2, 1, 1)
|
|
301
306
|
self.mysql_test_pushButton = QtWidgets.QPushButton(self.groupBox)
|
|
302
307
|
self.mysql_test_pushButton.setObjectName("mysql_test_pushButton")
|
|
303
|
-
self.gridLayout_5.addWidget(self.mysql_test_pushButton,
|
|
304
|
-
self.
|
|
305
|
-
self.
|
|
306
|
-
self.gridLayout_5.addWidget(self.
|
|
307
|
-
self.
|
|
308
|
-
self.
|
|
309
|
-
self.gridLayout_5.addWidget(self.
|
|
310
|
-
|
|
311
|
-
self.
|
|
308
|
+
self.gridLayout_5.addWidget(self.mysql_test_pushButton, 2, 2, 1, 1)
|
|
309
|
+
self.label_20 = QtWidgets.QLabel(self.groupBox)
|
|
310
|
+
self.label_20.setObjectName("label_20")
|
|
311
|
+
self.gridLayout_5.addWidget(self.label_20, 0, 0, 1, 1)
|
|
312
|
+
self.label_18 = QtWidgets.QLabel(self.groupBox)
|
|
313
|
+
self.label_18.setObjectName("label_18")
|
|
314
|
+
self.gridLayout_5.addWidget(self.label_18, 1, 0, 1, 1)
|
|
315
|
+
self.mysql_pwd_lineEdit = QtWidgets.QLineEdit(self.groupBox)
|
|
316
|
+
self.mysql_pwd_lineEdit.setObjectName("mysql_pwd_lineEdit")
|
|
317
|
+
self.gridLayout_5.addWidget(self.mysql_pwd_lineEdit, 4, 1, 1, 1)
|
|
312
318
|
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
319
|
self.verticalLayout_9.addWidget(self.groupBox)
|
|
320
|
+
spacerItem11 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
|
321
|
+
self.verticalLayout_9.addItem(spacerItem11)
|
|
316
322
|
self.tabWidget.addTab(self.tab_3, "")
|
|
317
323
|
self.tab_2 = QtWidgets.QWidget()
|
|
318
324
|
self.tab_2.setObjectName("tab_2")
|
|
319
325
|
self.verticalLayout_7 = QtWidgets.QVBoxLayout(self.tab_2)
|
|
320
326
|
self.verticalLayout_7.setObjectName("verticalLayout_7")
|
|
321
|
-
|
|
322
|
-
self.verticalLayout_7.addItem(
|
|
327
|
+
spacerItem12 = QtWidgets.QSpacerItem(20, 9, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
|
328
|
+
self.verticalLayout_7.addItem(spacerItem12)
|
|
323
329
|
self.label_43 = QtWidgets.QLabel(self.tab_2)
|
|
324
330
|
self.label_43.setObjectName("label_43")
|
|
325
331
|
self.verticalLayout_7.addWidget(self.label_43)
|
|
@@ -337,12 +343,12 @@ class Ui_MainWindow(object):
|
|
|
337
343
|
self.sched_import_timeEdit = QtWidgets.QTimeEdit(self.tab_2)
|
|
338
344
|
self.sched_import_timeEdit.setObjectName("sched_import_timeEdit")
|
|
339
345
|
self.horizontalLayout_14.addWidget(self.sched_import_timeEdit)
|
|
340
|
-
|
|
341
|
-
self.horizontalLayout_14.addItem(
|
|
346
|
+
spacerItem13 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
347
|
+
self.horizontalLayout_14.addItem(spacerItem13)
|
|
342
348
|
self.horizontalLayout_11.addLayout(self.horizontalLayout_14)
|
|
343
349
|
self.verticalLayout_7.addLayout(self.horizontalLayout_11)
|
|
344
|
-
|
|
345
|
-
self.verticalLayout_7.addItem(
|
|
350
|
+
spacerItem14 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
|
351
|
+
self.verticalLayout_7.addItem(spacerItem14)
|
|
346
352
|
self.horizontalLayout_18 = QtWidgets.QHBoxLayout()
|
|
347
353
|
self.horizontalLayout_18.setContentsMargins(10, -1, 10, -1)
|
|
348
354
|
self.horizontalLayout_18.setObjectName("horizontalLayout_18")
|
|
@@ -352,11 +358,11 @@ class Ui_MainWindow(object):
|
|
|
352
358
|
self.import_status_label = QtWidgets.QLabel(self.tab_2)
|
|
353
359
|
self.import_status_label.setObjectName("import_status_label")
|
|
354
360
|
self.horizontalLayout_18.addWidget(self.import_status_label)
|
|
355
|
-
|
|
356
|
-
self.horizontalLayout_18.addItem(
|
|
361
|
+
spacerItem15 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
362
|
+
self.horizontalLayout_18.addItem(spacerItem15)
|
|
357
363
|
self.verticalLayout_7.addLayout(self.horizontalLayout_18)
|
|
358
|
-
|
|
359
|
-
self.verticalLayout_7.addItem(
|
|
364
|
+
spacerItem16 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
|
365
|
+
self.verticalLayout_7.addItem(spacerItem16)
|
|
360
366
|
self.groupBox_5 = QtWidgets.QGroupBox(self.tab_2)
|
|
361
367
|
self.groupBox_5.setObjectName("groupBox_5")
|
|
362
368
|
self.verticalLayout_5 = QtWidgets.QVBoxLayout(self.groupBox_5)
|
|
@@ -404,11 +410,11 @@ class Ui_MainWindow(object):
|
|
|
404
410
|
self.label_9 = QtWidgets.QLabel(self.groupBox_5)
|
|
405
411
|
self.label_9.setObjectName("label_9")
|
|
406
412
|
self.gridLayout.addWidget(self.label_9, 5, 0, 1, 1)
|
|
407
|
-
|
|
408
|
-
self.gridLayout.addItem(
|
|
413
|
+
spacerItem17 = QtWidgets.QSpacerItem(5, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
|
414
|
+
self.gridLayout.addItem(spacerItem17, 0, 2, 1, 1)
|
|
409
415
|
self.verticalLayout_5.addLayout(self.gridLayout)
|
|
410
|
-
|
|
411
|
-
self.verticalLayout_5.addItem(
|
|
416
|
+
spacerItem18 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
|
417
|
+
self.verticalLayout_5.addItem(spacerItem18)
|
|
412
418
|
self.import_detail_textEdit = QtWidgets.QTextEdit(self.groupBox_5)
|
|
413
419
|
self.import_detail_textEdit.setFrameShape(QtWidgets.QFrame.NoFrame)
|
|
414
420
|
self.import_detail_textEdit.setReadOnly(True)
|
|
@@ -434,8 +440,8 @@ class Ui_MainWindow(object):
|
|
|
434
440
|
self.label_36.setObjectName("label_36")
|
|
435
441
|
self.verticalLayout.addWidget(self.label_36)
|
|
436
442
|
self.verticalLayout_4.addLayout(self.verticalLayout)
|
|
437
|
-
|
|
438
|
-
self.verticalLayout_4.addItem(
|
|
443
|
+
spacerItem19 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
|
444
|
+
self.verticalLayout_4.addItem(spacerItem19)
|
|
439
445
|
self.gridLayout_6 = QtWidgets.QGridLayout()
|
|
440
446
|
self.gridLayout_6.setContentsMargins(20, -1, -1, -1)
|
|
441
447
|
self.gridLayout_6.setObjectName("gridLayout_6")
|
|
@@ -529,8 +535,8 @@ class Ui_MainWindow(object):
|
|
|
529
535
|
self.preload_week_checkBox = QtWidgets.QCheckBox(self.groupBox_6)
|
|
530
536
|
self.preload_week_checkBox.setObjectName("preload_week_checkBox")
|
|
531
537
|
self.gridLayout_6.addWidget(self.preload_week_checkBox, 1, 0, 1, 1)
|
|
532
|
-
|
|
533
|
-
self.gridLayout_6.addItem(
|
|
538
|
+
spacerItem20 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum)
|
|
539
|
+
self.gridLayout_6.addItem(spacerItem20, 4, 3, 1, 1)
|
|
534
540
|
self.preload_quarter_checkBox = QtWidgets.QCheckBox(self.groupBox_6)
|
|
535
541
|
self.preload_quarter_checkBox.setObjectName("preload_quarter_checkBox")
|
|
536
542
|
self.gridLayout_6.addWidget(self.preload_quarter_checkBox, 3, 0, 1, 1)
|
|
@@ -565,16 +571,16 @@ class Ui_MainWindow(object):
|
|
|
565
571
|
self.preload_year_spinBox.setObjectName("preload_year_spinBox")
|
|
566
572
|
self.gridLayout_6.addWidget(self.preload_year_spinBox, 5, 2, 1, 1)
|
|
567
573
|
self.verticalLayout_4.addLayout(self.gridLayout_6)
|
|
568
|
-
|
|
569
|
-
self.verticalLayout_4.addItem(
|
|
574
|
+
spacerItem21 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
|
575
|
+
self.verticalLayout_4.addItem(spacerItem21)
|
|
570
576
|
self.verticalLayout_3.addWidget(self.groupBox_6)
|
|
571
577
|
self.tabWidget.addTab(self.tab_6, "")
|
|
572
578
|
self.tab = QtWidgets.QWidget()
|
|
573
579
|
self.tab.setObjectName("tab")
|
|
574
580
|
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.tab)
|
|
575
581
|
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
|
576
|
-
|
|
577
|
-
self.verticalLayout_2.addItem(
|
|
582
|
+
spacerItem22 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
|
583
|
+
self.verticalLayout_2.addItem(spacerItem22)
|
|
578
584
|
self.horizontalLayout_15 = QtWidgets.QHBoxLayout()
|
|
579
585
|
self.horizontalLayout_15.setContentsMargins(20, -1, -1, -1)
|
|
580
586
|
self.horizontalLayout_15.setObjectName("horizontalLayout_15")
|
|
@@ -584,11 +590,11 @@ class Ui_MainWindow(object):
|
|
|
584
590
|
self.collect_status_label = QtWidgets.QLabel(self.tab)
|
|
585
591
|
self.collect_status_label.setObjectName("collect_status_label")
|
|
586
592
|
self.horizontalLayout_15.addWidget(self.collect_status_label)
|
|
587
|
-
|
|
588
|
-
self.horizontalLayout_15.addItem(
|
|
593
|
+
spacerItem23 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
594
|
+
self.horizontalLayout_15.addItem(spacerItem23)
|
|
589
595
|
self.verticalLayout_2.addLayout(self.horizontalLayout_15)
|
|
590
|
-
|
|
591
|
-
self.verticalLayout_2.addItem(
|
|
596
|
+
spacerItem24 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
|
597
|
+
self.verticalLayout_2.addItem(spacerItem24)
|
|
592
598
|
self.horizontalLayout_13 = QtWidgets.QHBoxLayout()
|
|
593
599
|
self.horizontalLayout_13.setContentsMargins(20, -1, -1, -1)
|
|
594
600
|
self.horizontalLayout_13.setObjectName("horizontalLayout_13")
|
|
@@ -600,11 +606,11 @@ class Ui_MainWindow(object):
|
|
|
600
606
|
self.collect_source_comboBox.addItem("")
|
|
601
607
|
self.collect_source_comboBox.addItem("")
|
|
602
608
|
self.horizontalLayout_13.addWidget(self.collect_source_comboBox)
|
|
603
|
-
|
|
604
|
-
self.horizontalLayout_13.addItem(
|
|
609
|
+
spacerItem25 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
610
|
+
self.horizontalLayout_13.addItem(spacerItem25)
|
|
605
611
|
self.verticalLayout_2.addLayout(self.horizontalLayout_13)
|
|
606
|
-
|
|
607
|
-
self.verticalLayout_2.addItem(
|
|
612
|
+
spacerItem26 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
|
|
613
|
+
self.verticalLayout_2.addItem(spacerItem26)
|
|
608
614
|
self.horizontalLayout_10 = QtWidgets.QHBoxLayout()
|
|
609
615
|
self.horizontalLayout_10.setContentsMargins(20, -1, -1, -1)
|
|
610
616
|
self.horizontalLayout_10.setObjectName("horizontalLayout_10")
|
|
@@ -615,11 +621,11 @@ class Ui_MainWindow(object):
|
|
|
615
621
|
self.collect_sample_spinBox.setMaximum(86400)
|
|
616
622
|
self.collect_sample_spinBox.setObjectName("collect_sample_spinBox")
|
|
617
623
|
self.horizontalLayout_10.addWidget(self.collect_sample_spinBox)
|
|
618
|
-
|
|
619
|
-
self.horizontalLayout_10.addItem(
|
|
624
|
+
spacerItem27 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
625
|
+
self.horizontalLayout_10.addItem(spacerItem27)
|
|
620
626
|
self.verticalLayout_2.addLayout(self.horizontalLayout_10)
|
|
621
|
-
|
|
622
|
-
self.verticalLayout_2.addItem(
|
|
627
|
+
spacerItem28 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
|
628
|
+
self.verticalLayout_2.addItem(spacerItem28)
|
|
623
629
|
self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
|
|
624
630
|
self.horizontalLayout_8.setContentsMargins(20, -1, -1, -1)
|
|
625
631
|
self.horizontalLayout_8.setObjectName("horizontalLayout_8")
|
|
@@ -638,8 +644,8 @@ class Ui_MainWindow(object):
|
|
|
638
644
|
self.collect_phase1_last_timeEdit = QtWidgets.QTimeEdit(self.tab)
|
|
639
645
|
self.collect_phase1_last_timeEdit.setObjectName("collect_phase1_last_timeEdit")
|
|
640
646
|
self.horizontalLayout_6.addWidget(self.collect_phase1_last_timeEdit)
|
|
641
|
-
|
|
642
|
-
self.horizontalLayout_6.addItem(
|
|
647
|
+
spacerItem29 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
648
|
+
self.horizontalLayout_6.addItem(spacerItem29)
|
|
643
649
|
self.horizontalLayout_8.addLayout(self.horizontalLayout_6)
|
|
644
650
|
self.verticalLayout_2.addLayout(self.horizontalLayout_8)
|
|
645
651
|
self.horizontalLayout_9 = QtWidgets.QHBoxLayout()
|
|
@@ -660,12 +666,12 @@ class Ui_MainWindow(object):
|
|
|
660
666
|
self.collect_phase2_last_timeEdit = QtWidgets.QTimeEdit(self.tab)
|
|
661
667
|
self.collect_phase2_last_timeEdit.setObjectName("collect_phase2_last_timeEdit")
|
|
662
668
|
self.horizontalLayout_7.addWidget(self.collect_phase2_last_timeEdit)
|
|
663
|
-
|
|
664
|
-
self.horizontalLayout_7.addItem(
|
|
669
|
+
spacerItem30 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
|
670
|
+
self.horizontalLayout_7.addItem(spacerItem30)
|
|
665
671
|
self.horizontalLayout_9.addLayout(self.horizontalLayout_7)
|
|
666
672
|
self.verticalLayout_2.addLayout(self.horizontalLayout_9)
|
|
667
|
-
|
|
668
|
-
self.verticalLayout_2.addItem(
|
|
673
|
+
spacerItem31 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
|
674
|
+
self.verticalLayout_2.addItem(spacerItem31)
|
|
669
675
|
self.horizontalLayout_16 = QtWidgets.QHBoxLayout()
|
|
670
676
|
self.horizontalLayout_16.setContentsMargins(20, 0, -1, -1)
|
|
671
677
|
self.horizontalLayout_16.setObjectName("horizontalLayout_16")
|
|
@@ -678,8 +684,8 @@ class Ui_MainWindow(object):
|
|
|
678
684
|
self.collect_use_zhima_checkBox.setObjectName("collect_use_zhima_checkBox")
|
|
679
685
|
self.horizontalLayout_16.addWidget(self.collect_use_zhima_checkBox)
|
|
680
686
|
self.verticalLayout_2.addLayout(self.horizontalLayout_16)
|
|
681
|
-
|
|
682
|
-
self.verticalLayout_2.addItem(
|
|
687
|
+
spacerItem32 = QtWidgets.QSpacerItem(20, 10, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
|
|
688
|
+
self.verticalLayout_2.addItem(spacerItem32)
|
|
683
689
|
self.horizontalLayout_17 = QtWidgets.QHBoxLayout()
|
|
684
690
|
self.horizontalLayout_17.setContentsMargins(20, 0, -1, -1)
|
|
685
691
|
self.horizontalLayout_17.setObjectName("horizontalLayout_17")
|
|
@@ -698,11 +704,11 @@ class Ui_MainWindow(object):
|
|
|
698
704
|
self.label_44.setScaledContents(True)
|
|
699
705
|
self.label_44.setObjectName("label_44")
|
|
700
706
|
self.label_46 = QtWidgets.QLabel(self.tab_star)
|
|
701
|
-
self.label_46.setGeometry(QtCore.QRect(30, 20,
|
|
707
|
+
self.label_46.setGeometry(QtCore.QRect(30, 20, 501, 211))
|
|
702
708
|
self.label_46.setWordWrap(True)
|
|
703
709
|
self.label_46.setObjectName("label_46")
|
|
704
710
|
self.line_2 = QtWidgets.QFrame(self.tab_star)
|
|
705
|
-
self.line_2.setGeometry(QtCore.QRect(30, 240,
|
|
711
|
+
self.line_2.setGeometry(QtCore.QRect(30, 240, 511, 16))
|
|
706
712
|
self.line_2.setFrameShape(QtWidgets.QFrame.HLine)
|
|
707
713
|
self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken)
|
|
708
714
|
self.line_2.setObjectName("line_2")
|
|
@@ -713,7 +719,7 @@ class Ui_MainWindow(object):
|
|
|
713
719
|
self.label_47.setFont(font)
|
|
714
720
|
self.label_47.setObjectName("label_47")
|
|
715
721
|
self.line_3 = QtWidgets.QFrame(self.tab_star)
|
|
716
|
-
self.line_3.setGeometry(QtCore.QRect(30, 330,
|
|
722
|
+
self.line_3.setGeometry(QtCore.QRect(30, 330, 511, 16))
|
|
717
723
|
self.line_3.setFrameShape(QtWidgets.QFrame.HLine)
|
|
718
724
|
self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken)
|
|
719
725
|
self.line_3.setObjectName("line_3")
|
|
@@ -724,7 +730,7 @@ class Ui_MainWindow(object):
|
|
|
724
730
|
self.label_48.setFont(font)
|
|
725
731
|
self.label_48.setObjectName("label_48")
|
|
726
732
|
self.line_4 = QtWidgets.QFrame(self.tab_star)
|
|
727
|
-
self.line_4.setGeometry(QtCore.QRect(30, 560,
|
|
733
|
+
self.line_4.setGeometry(QtCore.QRect(30, 560, 511, 16))
|
|
728
734
|
self.line_4.setFrameShape(QtWidgets.QFrame.HLine)
|
|
729
735
|
self.line_4.setFrameShadow(QtWidgets.QFrame.Sunken)
|
|
730
736
|
self.line_4.setObjectName("line_4")
|
|
@@ -735,10 +741,10 @@ class Ui_MainWindow(object):
|
|
|
735
741
|
self.label_49.setFont(font)
|
|
736
742
|
self.label_49.setObjectName("label_49")
|
|
737
743
|
self.label_license = QtWidgets.QLabel(self.tab_star)
|
|
738
|
-
self.label_license.setGeometry(QtCore.QRect(40, 610,
|
|
744
|
+
self.label_license.setGeometry(QtCore.QRect(40, 610, 511, 81))
|
|
739
745
|
self.label_license.setObjectName("label_license")
|
|
740
746
|
self.layoutWidget = QtWidgets.QWidget(self.tab_star)
|
|
741
|
-
self.layoutWidget.setGeometry(QtCore.QRect(40, 290,
|
|
747
|
+
self.layoutWidget.setGeometry(QtCore.QRect(40, 290, 501, 33))
|
|
742
748
|
self.layoutWidget.setObjectName("layoutWidget")
|
|
743
749
|
self.horizontalLayout_20 = QtWidgets.QHBoxLayout(self.layoutWidget)
|
|
744
750
|
self.horizontalLayout_20.setContentsMargins(0, 0, 0, 0)
|
|
@@ -784,6 +790,8 @@ class Ui_MainWindow(object):
|
|
|
784
790
|
self.qmt_radioButton.setText(_translate("MainWindow", "使用 qmt 数据下载(需要 miniqmt)(屏蔽,qmt下载数据太慢,且不稳定)"))
|
|
785
791
|
self.groupBox_7.setTitle(_translate("MainWindow", "导入设置"))
|
|
786
792
|
self.import_weight_checkBox.setText(_translate("MainWindow", "下载权息数据"))
|
|
793
|
+
self.import_history_finance_checkBox.setText(_translate("MainWindow", "下载历史财务数据"))
|
|
794
|
+
self.import_block_checkBox.setText(_translate("MainWindow", "下载行业与指数板块"))
|
|
787
795
|
self.import_stock_checkBox.setText(_translate("MainWindow", "股票"))
|
|
788
796
|
self.import_fund_checkBox.setText(_translate("MainWindow", "基金"))
|
|
789
797
|
self.import_future_checkBox.setText(_translate("MainWindow", "期货"))
|
|
@@ -805,13 +813,13 @@ class Ui_MainWindow(object):
|
|
|
805
813
|
self.hdf5_dir_pushButton.setText(_translate("MainWindow", "选择"))
|
|
806
814
|
self.label.setText(_translate("MainWindow", "目标数据(HDF5)存放目录:"))
|
|
807
815
|
self.groupBox.setTitle(_translate("MainWindow", "MYSQL存储设置"))
|
|
808
|
-
self.label_18.setText(_translate("MainWindow", "主机名/IP:"))
|
|
809
|
-
self.label_20.setText(_translate("MainWindow", "临时文件目录:"))
|
|
810
816
|
self.label_11.setText(_translate("MainWindow", "用户名:"))
|
|
811
|
-
self.mysql_tmpdir_pushButton.setText(_translate("MainWindow", "选择"))
|
|
812
|
-
self.mysql_test_pushButton.setText(_translate("MainWindow", "测试连接"))
|
|
813
817
|
self.label_19.setText(_translate("MainWindow", "端口号:"))
|
|
814
818
|
self.label_13.setText(_translate("MainWindow", "密码"))
|
|
819
|
+
self.mysql_tmpdir_pushButton.setText(_translate("MainWindow", "选择"))
|
|
820
|
+
self.mysql_test_pushButton.setText(_translate("MainWindow", "测试连接"))
|
|
821
|
+
self.label_20.setText(_translate("MainWindow", "临时文件目录:"))
|
|
822
|
+
self.label_18.setText(_translate("MainWindow", "主机名/IP:"))
|
|
815
823
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "存储设置"))
|
|
816
824
|
self.label_43.setText(_translate("MainWindow", " 注:HDF5存储导入时,请关闭其他 hikyuu 进程,HDF5不支持同时读写!"))
|
|
817
825
|
self.sched_import_pushButton.setText(_translate("MainWindow", "启动定时导入"))
|
|
@@ -832,19 +840,19 @@ class Ui_MainWindow(object):
|
|
|
832
840
|
"hr { height: 1px; border-width: 0; }\n"
|
|
833
841
|
"li.unchecked::marker { content: \"\\2610\"; }\n"
|
|
834
842
|
"li.checked::marker { content: \"\\2612\"; }\n"
|
|
835
|
-
"</style></head><body style=\" font-family:\'
|
|
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>"))
|
|
843
|
+
"</style></head><body style=\" font-family:\'.AppleSystemUIFont\'; font-size:13pt; font-weight:400; font-style:normal;\">\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\'; font-size:9pt;\">导入上证日线记录:</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\'; font-size:9pt;\">导入深证日线记录:</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\'; font-size:9pt;\">导入上证5分钟线记录:</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\'; font-size:9pt;\">导入深证5分钟线记录:</span></p>\n"
|
|
848
|
+
"<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"
|
|
849
|
+
"<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"
|
|
850
|
+
"<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"
|
|
851
|
+
"<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"
|
|
852
|
+
"<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"
|
|
853
|
+
"<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"
|
|
854
|
+
"<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"
|
|
855
|
+
"<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
856
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "执行导入"))
|
|
849
857
|
self.groupBox_6.setTitle(_translate("MainWindow", "预加载设置"))
|
|
850
858
|
self.label_35.setText(_translate("MainWindow", "此处为 Hikyuu 运行时的数据预加载设置,请根据机器内存大小选择"))
|
|
@@ -892,20 +900,29 @@ class Ui_MainWindow(object):
|
|
|
892
900
|
"hr { height: 1px; border-width: 0; }\n"
|
|
893
901
|
"li.unchecked::marker { content: \"\\2610\"; }\n"
|
|
894
902
|
"li.checked::marker { content: \"\\2612\"; }\n"
|
|
895
|
-
"</style></head><body style=\" font-family:\'
|
|
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>"))
|
|
903
|
+
"</style></head><body style=\" font-family:\'.AppleSystemUIFont\'; font-size:13pt; font-weight:400; font-style:normal;\">\n"
|
|
904
|
+
"<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"
|
|
905
|
+
"<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"
|
|
906
|
+
"<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"
|
|
907
|
+
"<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"
|
|
908
|
+
"<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"
|
|
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; font-weight:696; color:#0000ff;\">3、此处采集为网络采集,更推荐直接运行安装目录下gui子目录下的 start_qmt.py ,使用miniqmt 实时服务。该程序独立运行,不用关闭,和这里的采集效果一样。注意:miniqmt需要QMT交易端配合,且在同一机器上执行。</span></p></body></html>"))
|
|
902
910
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "行情采集服务"))
|
|
903
|
-
self.label_46.setText(_translate("MainWindow", "
|
|
911
|
+
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"
|
|
912
|
+
"<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n"
|
|
913
|
+
"p, li { white-space: pre-wrap; }\n"
|
|
914
|
+
"hr { height: 1px; border-width: 0; }\n"
|
|
915
|
+
"li.unchecked::marker { content: \"\\2610\"; }\n"
|
|
916
|
+
"li.checked::marker { content: \"\\2612\"; }\n"
|
|
917
|
+
"</style></head><body style=\" font-family:\'.AppleSystemUIFont\'; font-size:13pt; font-weight:400; font-style:normal;\">\n"
|
|
918
|
+
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Hikyuu <span style=\" font-weight:700;\">专注于量化交易领域的核心技术构建,涵盖交易模型开发、极速计算引擎、高效回测框架及实盘拓展能力</span>,定位为量化交易的基础设施级计算引擎,为量化交易爱好者和专业提供高性能底层架构支持。随着社区规模扩大,项目持续迭代及技术支持事务逐渐分散了作者在策略研究上的精力。为保障项目的专注度与可持续性,现对捐赠用户提供部分额外功能作为回馈。诚挚期待社区伙伴的支持,您的参与都将直接助力 Hikyuu 的技术创新,共同推动量化交易基础设施的迭代升级。</p>\n"
|
|
919
|
+
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">捐赠功能以插件的方式提供,采用独立授权许可,完全在 hikyuu 之外,对喜欢自行编译扩展的朋友没有影响。因插件许可授权需要采集硬件信息,如有疑虑只要不申请试用许可和正式许可授权,不会触发硬件信息采集,如申请,视为同意采集。</p>\n"
|
|
920
|
+
"<p style=\" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-weight:700;\">详情参见:</span><a href=\"https://hikyuu.readthedocs.io/zh-cn/latest/vip/vip-plan.html\"><span style=\" text-decoration: underline; color:#3586ff;\">捐赠权益</span></a><span style=\" font-weight:700;\"> ,感谢大家的支持!</span></p></body></html>"))
|
|
904
921
|
self.label_47.setText(_translate("MainWindow", "申请试用许可(30天试用)"))
|
|
905
922
|
self.label_48.setText(_translate("MainWindow", "加入知识星球,获取星球许可(可同时在3台设备上使用)"))
|
|
906
923
|
self.label_49.setText(_translate("MainWindow", "当前授权信息"))
|
|
907
924
|
self.label_license.setText(_translate("MainWindow", "TextLabel"))
|
|
908
925
|
self.label_45.setText(_translate("MainWindow", "电子邮件地址:"))
|
|
909
926
|
self.fetch_trial_pushButton.setText(_translate("MainWindow", "申请试用许可"))
|
|
910
|
-
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_star), _translate("MainWindow", "
|
|
927
|
+
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_star), _translate("MainWindow", "项目捐赠"))
|
|
911
928
|
self.label_41.setText(_translate("MainWindow", "执行日志"))
|
|
@@ -90,8 +90,10 @@ class UsePytdxImportToH5Thread(QThread):
|
|
|
90
90
|
self.tasks.append(
|
|
91
91
|
ImportHistoryFinanceTask(self.log_queue, self.queue, self.config, dest_dir))
|
|
92
92
|
|
|
93
|
-
self.
|
|
94
|
-
|
|
93
|
+
if self.config.getboolean('block', 'enable', fallback=True):
|
|
94
|
+
self.tasks.append(ImportBlockInfoTask(self.log_queue, self.queue,
|
|
95
|
+
self.config, ('行业板块', '指数板块'))) # '概念板块', '地域板块',
|
|
96
|
+
|
|
95
97
|
self.tasks.append(ImportZhBond10Task(self.log_queue, self.queue, self.config))
|
|
96
98
|
|
|
97
99
|
task_count = 0
|
|
@@ -251,7 +253,7 @@ class UsePytdxImportToH5Thread(QThread):
|
|
|
251
253
|
import_new_holidays = sqlite_import_new_holidays
|
|
252
254
|
import_index_name = sqlite_import_index_name
|
|
253
255
|
import_stock_name = sqlite_import_stock_name
|
|
254
|
-
|
|
256
|
+
elif self.config.getboolean('mysql', 'enable', fallback=True):
|
|
255
257
|
db_config = {
|
|
256
258
|
'user': self.config['mysql']['usr'],
|
|
257
259
|
'password': self.config['mysql']['pwd'],
|
|
@@ -284,6 +286,8 @@ class UsePytdxImportToH5Thread(QThread):
|
|
|
284
286
|
self.logger.info("{} 新增股票数: {}".format(market, count))
|
|
285
287
|
self.send_message(
|
|
286
288
|
['INFO', '{} 新增股票数:{}'.format(market, count)])
|
|
289
|
+
pytdx_api.disconnect()
|
|
290
|
+
connect.close()
|
|
287
291
|
|
|
288
292
|
self.process_list.clear()
|
|
289
293
|
for task in self.tasks:
|
|
@@ -229,6 +229,7 @@ class UseQmtImportToH5Thread(QThread):
|
|
|
229
229
|
self.logger.info("{} 新增股票数: {}".format(market, count))
|
|
230
230
|
self.send_message(
|
|
231
231
|
['INFO', '{} 新增股票数:{}'.format(market, count)])
|
|
232
|
+
pytdx_api.disconnect()
|
|
232
233
|
|
|
233
234
|
self.process_list.clear()
|
|
234
235
|
for task in self.tasks:
|
|
@@ -91,7 +91,7 @@ class UseTdxImportToH5Thread(QThread):
|
|
|
91
91
|
ImportHistoryFinanceTask(self.log_queue, self.queue, self.config, dest_dir))
|
|
92
92
|
|
|
93
93
|
self.tasks.append(ImportBlockInfoTask(self.log_queue, self.queue,
|
|
94
|
-
self.config, ('行业板块', '
|
|
94
|
+
self.config, ('行业板块', '指数板块'))) # '概念板块', '地域板块'
|
|
95
95
|
self.tasks.append(ImportZhBond10Task(self.log_queue, self.queue, self.config))
|
|
96
96
|
|
|
97
97
|
task_count = 0
|
|
@@ -251,6 +251,7 @@ class UseTdxImportToH5Thread(QThread):
|
|
|
251
251
|
self.logger.info("{} 新增股票数: {}".format(market, count))
|
|
252
252
|
self.send_message(
|
|
253
253
|
['INFO', '{} 新增股票数:{}'.format(market, count)])
|
|
254
|
+
pytdx_api.disconnect()
|
|
254
255
|
|
|
255
256
|
self.process_list.clear()
|
|
256
257
|
for task in self.tasks:
|
hikyuu/hub.pyi
CHANGED
|
@@ -28,11 +28,11 @@ import sys as sys
|
|
|
28
28
|
import typing
|
|
29
29
|
__all__: list = ['add_remote_hub', 'add_local_hub', 'update_hub', 'remove_hub', 'build_hub', 'help_part', 'get_part', 'get_part_list', 'get_hub_path', 'get_part_info', 'get_part_module', 'print_part_info', 'get_hub_name_list', 'get_part_name_list', 'get_current_hub', 'search_part']
|
|
30
30
|
class ConfigModel(sqlalchemy.orm.decl_api.Base):
|
|
31
|
-
__mapper__: typing.ClassVar[sqlalchemy.orm.mapper.Mapper] # value = <Mapper at
|
|
31
|
+
__mapper__: typing.ClassVar[sqlalchemy.orm.mapper.Mapper] # value = <Mapper at 0x254a51cdc10; ConfigModel>
|
|
32
32
|
__table__: typing.ClassVar[sqlalchemy.sql.schema.Table] # value = Table('hub_config', MetaData(), Column('id', Integer(), table=<hub_config>, primary_key=True, nullable=False, default=Sequence('config_id_seq', metadata=MetaData())), Column('key', String(), table=<hub_config>), Column('value', String(), table=<hub_config>), schema=None)
|
|
33
33
|
__table_args__: typing.ClassVar[tuple] # value = (UniqueConstraint(Column('key', String(), table=<hub_config>)))
|
|
34
34
|
__tablename__: typing.ClassVar[str] = 'hub_config'
|
|
35
|
-
_sa_class_manager: typing.ClassVar[sqlalchemy.orm.instrumentation.ClassManager] # value = <ClassManager of <class 'hikyuu.hub.ConfigModel'> at
|
|
35
|
+
_sa_class_manager: typing.ClassVar[sqlalchemy.orm.instrumentation.ClassManager] # value = <ClassManager of <class 'hikyuu.hub.ConfigModel'> at 254a521fbd0>
|
|
36
36
|
def __init__(self, **kwargs):
|
|
37
37
|
"""
|
|
38
38
|
A simple constructor that allows initialization from kwargs.
|
|
@@ -109,11 +109,11 @@ class HubManager:
|
|
|
109
109
|
def print_part_info(self, name):
|
|
110
110
|
...
|
|
111
111
|
class HubModel(sqlalchemy.orm.decl_api.Base):
|
|
112
|
-
__mapper__: typing.ClassVar[sqlalchemy.orm.mapper.Mapper] # value = <Mapper at
|
|
112
|
+
__mapper__: typing.ClassVar[sqlalchemy.orm.mapper.Mapper] # value = <Mapper at 0x254a5259280; HubModel>
|
|
113
113
|
__table__: typing.ClassVar[sqlalchemy.sql.schema.Table] # value = Table('hub_repo', MetaData(), Column('id', Integer(), table=<hub_repo>, primary_key=True, nullable=False, default=Sequence('remote_id_seq', metadata=MetaData())), Column('name', String(), table=<hub_repo>), Column('hub_type', String(), table=<hub_repo>), Column('local_base', String(), table=<hub_repo>), Column('local', String(), table=<hub_repo>), Column('url', String(), table=<hub_repo>), Column('branch', String(), table=<hub_repo>), schema=None)
|
|
114
114
|
__table_args__: typing.ClassVar[tuple] # value = (UniqueConstraint(Column('name', String(), table=<hub_repo>)))
|
|
115
115
|
__tablename__: typing.ClassVar[str] = 'hub_repo'
|
|
116
|
-
_sa_class_manager: typing.ClassVar[sqlalchemy.orm.instrumentation.ClassManager] # value = <ClassManager of <class 'hikyuu.hub.HubModel'> at
|
|
116
|
+
_sa_class_manager: typing.ClassVar[sqlalchemy.orm.instrumentation.ClassManager] # value = <ClassManager of <class 'hikyuu.hub.HubModel'> at 254a5254630>
|
|
117
117
|
def __init__(self, **kwargs):
|
|
118
118
|
"""
|
|
119
119
|
A simple constructor that allows initialization from kwargs.
|
|
@@ -146,11 +146,11 @@ class ModuleConflictError(Exception):
|
|
|
146
146
|
def __str__(self):
|
|
147
147
|
...
|
|
148
148
|
class PartModel(sqlalchemy.orm.decl_api.Base):
|
|
149
|
-
__mapper__: typing.ClassVar[sqlalchemy.orm.mapper.Mapper] # value = <Mapper at
|
|
149
|
+
__mapper__: typing.ClassVar[sqlalchemy.orm.mapper.Mapper] # value = <Mapper at 0x254a52671f0; PartModel>
|
|
150
150
|
__table__: typing.ClassVar[sqlalchemy.sql.schema.Table] # value = Table('hub_part', MetaData(), Column('id', Integer(), table=<hub_part>, primary_key=True, nullable=False, default=Sequence('part_id_seq', metadata=MetaData())), Column('hub_name', String(), table=<hub_part>), Column('part', String(), table=<hub_part>), Column('name', String(), table=<hub_part>), Column('author', String(), table=<hub_part>), Column('version', String(), table=<hub_part>), Column('doc', String(), table=<hub_part>), Column('module_name', String(), table=<hub_part>), Column('label', String(), table=<hub_part>), schema=None)
|
|
151
151
|
__table_args__: typing.ClassVar[tuple] # value = (UniqueConstraint(Column('name', String(), table=<hub_part>)))
|
|
152
152
|
__tablename__: typing.ClassVar[str] = 'hub_part'
|
|
153
|
-
_sa_class_manager: typing.ClassVar[sqlalchemy.orm.instrumentation.ClassManager] # value = <ClassManager of <class 'hikyuu.hub.PartModel'> at
|
|
153
|
+
_sa_class_manager: typing.ClassVar[sqlalchemy.orm.instrumentation.ClassManager] # value = <ClassManager of <class 'hikyuu.hub.PartModel'> at 254a52660e0>
|
|
154
154
|
def __init__(self, **kwargs):
|
|
155
155
|
"""
|
|
156
156
|
A simple constructor that allows initialization from kwargs.
|