hikyuu 2.7.0__py3-none-manylinux2014_aarch64.whl → 2.7.3__py3-none-manylinux2014_aarch64.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 +25 -7
- hikyuu/__init__.pyi +23 -12
- hikyuu/analysis/__init__.pyi +6 -1
- hikyuu/analysis/analysis.pyi +7 -2
- hikyuu/core.pyi +8 -3
- hikyuu/cpp/core310.pyi +94 -24
- hikyuu/cpp/core310.so +0 -0
- hikyuu/cpp/core311.pyi +94 -24
- hikyuu/cpp/core311.so +0 -0
- hikyuu/cpp/core312.pyi +94 -24
- hikyuu/cpp/core312.so +0 -0
- hikyuu/cpp/core313.pyi +94 -24
- hikyuu/cpp/core313.so +0 -0
- hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
- hikyuu/cpp/i18n/zh_CN/hikyuu_plugin.mo +0 -0
- hikyuu/cpp/libboost_atomic.so +0 -0
- hikyuu/cpp/libboost_atomic.so.1.90.0 +0 -0
- hikyuu/cpp/{libboost_charconv-mt.so → libboost_charconv.so} +0 -0
- hikyuu/cpp/{libboost_charconv-mt.so.1.88.0 → libboost_charconv.so.1.90.0} +0 -0
- hikyuu/cpp/libboost_chrono.so +0 -0
- hikyuu/cpp/libboost_chrono.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_container.so +0 -0
- hikyuu/cpp/libboost_container.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_date_time.so +0 -0
- hikyuu/cpp/libboost_date_time.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_locale.so +0 -0
- hikyuu/cpp/libboost_locale.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_random.so +0 -0
- hikyuu/cpp/libboost_random.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_serialization.so +0 -0
- hikyuu/cpp/libboost_serialization.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_thread.so +0 -0
- hikyuu/cpp/libboost_thread.so.1.90.0 +0 -0
- hikyuu/cpp/libboost_wserialization.so +0 -0
- hikyuu/cpp/libboost_wserialization.so.1.90.0 +0 -0
- hikyuu/cpp/libhikyuu.so +0 -0
- hikyuu/cpp/libsqlite3.so +0 -0
- hikyuu/data/clickhouse_upgrade/0001.sql +2 -0
- hikyuu/data/common_clickhouse.py +1 -3
- hikyuu/data/download_block.py +1 -1
- hikyuu/data/hku_config_template.py +30 -3
- hikyuu/data/mysql_upgrade/0029.sql +2 -0
- hikyuu/data/pytdx_to_clickhouse.py +86 -32
- hikyuu/data/pytdx_to_h5.py +73 -28
- hikyuu/data/pytdx_to_mysql.py +65 -21
- hikyuu/data/pytdx_weight_to_clickhouse.py +2 -0
- hikyuu/data/pytdx_weight_to_mysql.py +2 -0
- hikyuu/data/pytdx_weight_to_sqlite.py +2 -0
- hikyuu/data/sqlite_upgrade/0029.sql +4 -0
- hikyuu/data/tdx_to_clickhouse.py +2 -2
- hikyuu/data/tdx_to_h5.py +11 -11
- hikyuu/data/tdx_to_mysql.py +2 -2
- hikyuu/draw/drawplot/bokeh_draw.pyi +14 -7
- hikyuu/draw/drawplot/echarts_draw.pyi +14 -7
- hikyuu/draw/drawplot/matplotlib_draw.py +8 -2
- hikyuu/draw/drawplot/matplotlib_draw.pyi +14 -7
- hikyuu/extend.pyi +8 -3
- hikyuu/gui/HikyuuTDX.py +42 -3
- hikyuu/gui/data/MainWindow.py +189 -129
- hikyuu/hub.pyi +6 -6
- hikyuu/include/hikyuu/StockManager.h +17 -2
- hikyuu/include/hikyuu/StrategyContext.h +4 -4
- hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +2 -1
- hikyuu/include/hikyuu/data_driver/KDataDriver.h +2 -4
- hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +5 -1
- hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +1 -1
- hikyuu/include/hikyuu/global/sysinfo.h +24 -5
- hikyuu/include/hikyuu/indicator/IndicatorImp.h +1 -1
- hikyuu/include/hikyuu/plugin/KDataToClickHouseImporter.h +40 -0
- hikyuu/include/hikyuu/plugin/KDataToMySQLImporter.h +40 -0
- hikyuu/include/hikyuu/plugin/checkdata.h +20 -0
- hikyuu/include/hikyuu/plugin/extind.h +3 -0
- hikyuu/include/hikyuu/plugin/hkuextra.h +2 -0
- hikyuu/include/hikyuu/plugin/interface/CheckDataPluginInterface.h +25 -0
- hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +2 -0
- hikyuu/include/hikyuu/plugin/interface/ImportKDataToClickHousePluginInterface.h +44 -0
- hikyuu/include/hikyuu/plugin/interface/ImportKDataToMySQLPluginInterface.h +42 -0
- hikyuu/include/hikyuu/plugin/interface/plugins.h +6 -0
- hikyuu/include/hikyuu/python/convert_any.h +9 -6
- hikyuu/include/hikyuu/python/pybind_utils.h +1 -1
- hikyuu/include/hikyuu/strategy/Strategy.h +1 -1
- hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +0 -1
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +2 -1
- hikyuu/include/hikyuu/trade_sys/allocatefunds/AllocateFundsBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +1 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedAmount.h +26 -0
- hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixAmountFunds.h +18 -0
- hikyuu/include/hikyuu/trade_sys/condition/ConditionBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/environment/EnvironmentBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/NormalizeBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/multifactor/ScoresFilterBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +13 -13
- hikyuu/include/hikyuu/trade_sys/profitgoal/ProfitGoalBase.h +9 -11
- hikyuu/include/hikyuu/trade_sys/selector/SelectorBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/slippage/SlippageBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/stoploss/StoplossBase.h +0 -1
- hikyuu/include/hikyuu/trade_sys/system/System.h +1 -2
- hikyuu/include/hikyuu/utilities/Log.h +6 -7
- hikyuu/include/hikyuu/utilities/Parameter.h +17 -0
- hikyuu/include/hikyuu/utilities/config.h +28 -0
- hikyuu/include/hikyuu/utilities/plugin/PluginBase.h +17 -2
- hikyuu/include/hikyuu/utilities/plugin/PluginManager.h +41 -22
- hikyuu/include/hikyuu/utilities/thread/GlobalStealThreadPool.h +1 -2
- hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +1 -1
- hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +286 -0
- hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +1 -0
- hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +297 -0
- hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +1 -0
- hikyuu/include/hikyuu/utilities/thread/WorkStealQueue.h +9 -8
- hikyuu/include/hikyuu/utilities/thread/algorithm.h +64 -14
- hikyuu/include/hikyuu/version.h +4 -4
- hikyuu/plugin/libbacktest.so +0 -0
- hikyuu/plugin/libcheckdata.so +0 -0
- hikyuu/plugin/libclickhousedriver.so +0 -0
- hikyuu/plugin/libdataserver.so +0 -0
- hikyuu/plugin/libdataserver_parquet.so +0 -0
- hikyuu/plugin/libdevice.so +0 -0
- hikyuu/plugin/libextind.so +0 -0
- hikyuu/plugin/libhkuextra.so +0 -0
- hikyuu/plugin/libimport2ch.so +0 -0
- hikyuu/plugin/libimport2hdf5.so +0 -0
- hikyuu/plugin/libimport2mysql.so +0 -0
- hikyuu/plugin/libtmreport.so +0 -0
- hikyuu/trade_manage/__init__.pyi +12 -7
- hikyuu/trade_manage/trade.pyi +12 -7
- hikyuu/trade_sys/trade_sys.py +54 -5
- hikyuu/util/__init__.pyi +1 -1
- hikyuu/util/singleton.pyi +1 -1
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/METADATA +10 -4
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/RECORD +136 -114
- hikyuu/cpp/libboost_chrono-mt.so +0 -0
- hikyuu/cpp/libboost_chrono-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_date_time-mt.so +0 -0
- hikyuu/cpp/libboost_date_time-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_serialization-mt.so +0 -0
- hikyuu/cpp/libboost_serialization-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_system-mt.so +0 -0
- hikyuu/cpp/libboost_system-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_thread-mt.so +0 -0
- hikyuu/cpp/libboost_thread-mt.so.1.88.0 +0 -0
- hikyuu/cpp/libboost_wserialization-mt.so +0 -0
- hikyuu/cpp/libboost_wserialization-mt.so.1.88.0 +0 -0
- hikyuu/data/pytdx_to_taos.py +0 -736
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/WHEEL +0 -0
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/entry_points.txt +0 -0
- {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/top_level.txt +0 -0
hikyuu/gui/data/MainWindow.py
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
################################################################################
|
|
4
4
|
## Form generated from reading UI file 'MainWindow.ui'
|
|
5
5
|
##
|
|
6
|
-
## Created by: Qt User Interface Compiler version 6.10.
|
|
6
|
+
## Created by: Qt User Interface Compiler version 6.10.1
|
|
7
7
|
##
|
|
8
8
|
## WARNING! All changes made in this file will be lost when recompiling UI file!
|
|
9
9
|
################################################################################
|
|
@@ -729,6 +729,21 @@ class Ui_MainWindow(object):
|
|
|
729
729
|
|
|
730
730
|
self.verticalLayout.addWidget(self.label_36)
|
|
731
731
|
|
|
732
|
+
self.lazy_checkBox = QCheckBox(self.groupBox_6)
|
|
733
|
+
self.lazy_checkBox.setObjectName(u"lazy_checkBox")
|
|
734
|
+
|
|
735
|
+
self.verticalLayout.addWidget(self.lazy_checkBox)
|
|
736
|
+
|
|
737
|
+
self.label_57 = QLabel(self.groupBox_6)
|
|
738
|
+
self.label_57.setObjectName(u"label_57")
|
|
739
|
+
|
|
740
|
+
self.verticalLayout.addWidget(self.label_57)
|
|
741
|
+
|
|
742
|
+
self.label_58 = QLabel(self.groupBox_6)
|
|
743
|
+
self.label_58.setObjectName(u"label_58")
|
|
744
|
+
|
|
745
|
+
self.verticalLayout.addWidget(self.label_58)
|
|
746
|
+
|
|
732
747
|
|
|
733
748
|
self.verticalLayout_4.addLayout(self.verticalLayout)
|
|
734
749
|
|
|
@@ -743,202 +758,239 @@ class Ui_MainWindow(object):
|
|
|
743
758
|
self.preload_month_spinBox.setObjectName(u"preload_month_spinBox")
|
|
744
759
|
self.preload_month_spinBox.setMaximum(999999)
|
|
745
760
|
|
|
746
|
-
self.gridLayout_6.addWidget(self.preload_month_spinBox,
|
|
761
|
+
self.gridLayout_6.addWidget(self.preload_month_spinBox, 3, 2, 1, 1)
|
|
747
762
|
|
|
748
|
-
self.
|
|
749
|
-
self.
|
|
750
|
-
self.
|
|
763
|
+
self.preload_min60_spinBox = QSpinBox(self.groupBox_6)
|
|
764
|
+
self.preload_min60_spinBox.setObjectName(u"preload_min60_spinBox")
|
|
765
|
+
self.preload_min60_spinBox.setMaximum(999999)
|
|
751
766
|
|
|
752
|
-
self.gridLayout_6.addWidget(self.
|
|
767
|
+
self.gridLayout_6.addWidget(self.preload_min60_spinBox, 11, 2, 1, 1)
|
|
753
768
|
|
|
754
769
|
self.preload_min5_checkBox = QCheckBox(self.groupBox_6)
|
|
755
770
|
self.preload_min5_checkBox.setObjectName(u"preload_min5_checkBox")
|
|
756
771
|
|
|
757
|
-
self.gridLayout_6.addWidget(self.preload_min5_checkBox,
|
|
772
|
+
self.gridLayout_6.addWidget(self.preload_min5_checkBox, 8, 0, 1, 1)
|
|
758
773
|
|
|
759
|
-
self.
|
|
760
|
-
self.
|
|
774
|
+
self.preload_min1_checkBox = QCheckBox(self.groupBox_6)
|
|
775
|
+
self.preload_min1_checkBox.setObjectName(u"preload_min1_checkBox")
|
|
761
776
|
|
|
762
|
-
self.gridLayout_6.addWidget(self.
|
|
777
|
+
self.gridLayout_6.addWidget(self.preload_min1_checkBox, 7, 0, 1, 1)
|
|
763
778
|
|
|
764
|
-
self.
|
|
765
|
-
self.
|
|
779
|
+
self.label_42 = QLabel(self.groupBox_6)
|
|
780
|
+
self.label_42.setObjectName(u"label_42")
|
|
781
|
+
|
|
782
|
+
self.gridLayout_6.addWidget(self.label_42, 12, 1, 1, 1)
|
|
783
|
+
|
|
784
|
+
self.preload_min15_checkBox = QCheckBox(self.groupBox_6)
|
|
785
|
+
self.preload_min15_checkBox.setObjectName(u"preload_min15_checkBox")
|
|
786
|
+
|
|
787
|
+
self.gridLayout_6.addWidget(self.preload_min15_checkBox, 9, 0, 1, 1)
|
|
766
788
|
|
|
767
|
-
self.
|
|
789
|
+
self.preload_hour2_spinBox = QSpinBox(self.groupBox_6)
|
|
790
|
+
self.preload_hour2_spinBox.setObjectName(u"preload_hour2_spinBox")
|
|
791
|
+
self.preload_hour2_spinBox.setMaximum(999999)
|
|
792
|
+
|
|
793
|
+
self.gridLayout_6.addWidget(self.preload_hour2_spinBox, 12, 2, 1, 1)
|
|
768
794
|
|
|
769
795
|
self.preload_week_spinBox = QSpinBox(self.groupBox_6)
|
|
770
796
|
self.preload_week_spinBox.setObjectName(u"preload_week_spinBox")
|
|
771
797
|
self.preload_week_spinBox.setMaximum(999999)
|
|
772
798
|
|
|
773
|
-
self.gridLayout_6.addWidget(self.preload_week_spinBox,
|
|
799
|
+
self.gridLayout_6.addWidget(self.preload_week_spinBox, 2, 2, 1, 1)
|
|
774
800
|
|
|
775
|
-
self.
|
|
776
|
-
self.
|
|
801
|
+
self.label_25 = QLabel(self.groupBox_6)
|
|
802
|
+
self.label_25.setObjectName(u"label_25")
|
|
777
803
|
|
|
778
|
-
self.gridLayout_6.addWidget(self.
|
|
804
|
+
self.gridLayout_6.addWidget(self.label_25, 2, 1, 1, 1)
|
|
779
805
|
|
|
780
|
-
self.
|
|
781
|
-
self.
|
|
806
|
+
self.preload_quarter_spinBox = QSpinBox(self.groupBox_6)
|
|
807
|
+
self.preload_quarter_spinBox.setObjectName(u"preload_quarter_spinBox")
|
|
808
|
+
self.preload_quarter_spinBox.setMaximum(999999)
|
|
782
809
|
|
|
783
|
-
self.gridLayout_6.addWidget(self.
|
|
810
|
+
self.gridLayout_6.addWidget(self.preload_quarter_spinBox, 4, 2, 1, 1)
|
|
784
811
|
|
|
785
|
-
self.
|
|
786
|
-
self.
|
|
787
|
-
|
|
812
|
+
self.preload_day_checkBox = QCheckBox(self.groupBox_6)
|
|
813
|
+
self.preload_day_checkBox.setObjectName(u"preload_day_checkBox")
|
|
814
|
+
|
|
815
|
+
self.gridLayout_6.addWidget(self.preload_day_checkBox, 1, 0, 1, 1)
|
|
788
816
|
|
|
789
|
-
self.
|
|
817
|
+
self.preload_week_checkBox = QCheckBox(self.groupBox_6)
|
|
818
|
+
self.preload_week_checkBox.setObjectName(u"preload_week_checkBox")
|
|
819
|
+
|
|
820
|
+
self.gridLayout_6.addWidget(self.preload_week_checkBox, 2, 0, 1, 1)
|
|
790
821
|
|
|
791
822
|
self.preload_day_spinBox = QSpinBox(self.groupBox_6)
|
|
792
823
|
self.preload_day_spinBox.setObjectName(u"preload_day_spinBox")
|
|
793
824
|
self.preload_day_spinBox.setMaximum(999999)
|
|
794
825
|
|
|
795
|
-
self.gridLayout_6.addWidget(self.preload_day_spinBox,
|
|
826
|
+
self.gridLayout_6.addWidget(self.preload_day_spinBox, 1, 2, 1, 1)
|
|
796
827
|
|
|
797
|
-
self.
|
|
798
|
-
self.
|
|
828
|
+
self.preload_min5_spinBox = QSpinBox(self.groupBox_6)
|
|
829
|
+
self.preload_min5_spinBox.setObjectName(u"preload_min5_spinBox")
|
|
830
|
+
self.preload_min5_spinBox.setMaximum(999999)
|
|
799
831
|
|
|
800
|
-
self.gridLayout_6.addWidget(self.
|
|
832
|
+
self.gridLayout_6.addWidget(self.preload_min5_spinBox, 8, 2, 1, 1)
|
|
801
833
|
|
|
802
|
-
self.
|
|
803
|
-
self.
|
|
834
|
+
self.save_pushButton = QPushButton(self.groupBox_6)
|
|
835
|
+
self.save_pushButton.setObjectName(u"save_pushButton")
|
|
804
836
|
|
|
805
|
-
self.gridLayout_6.addWidget(self.
|
|
837
|
+
self.gridLayout_6.addWidget(self.save_pushButton, 5, 4, 1, 1)
|
|
806
838
|
|
|
807
|
-
self.
|
|
808
|
-
self.
|
|
809
|
-
self.preload_min15_spinBox.setMaximum(999999)
|
|
839
|
+
self.preload_min30_checkBox = QCheckBox(self.groupBox_6)
|
|
840
|
+
self.preload_min30_checkBox.setObjectName(u"preload_min30_checkBox")
|
|
810
841
|
|
|
811
|
-
self.gridLayout_6.addWidget(self.
|
|
842
|
+
self.gridLayout_6.addWidget(self.preload_min30_checkBox, 10, 0, 1, 1)
|
|
812
843
|
|
|
813
|
-
self.
|
|
814
|
-
self.
|
|
844
|
+
self.preload_quarter_checkBox = QCheckBox(self.groupBox_6)
|
|
845
|
+
self.preload_quarter_checkBox.setObjectName(u"preload_quarter_checkBox")
|
|
815
846
|
|
|
816
|
-
self.gridLayout_6.addWidget(self.
|
|
847
|
+
self.gridLayout_6.addWidget(self.preload_quarter_checkBox, 4, 0, 1, 1)
|
|
817
848
|
|
|
818
|
-
self.
|
|
819
|
-
self.
|
|
849
|
+
self.label_29 = QLabel(self.groupBox_6)
|
|
850
|
+
self.label_29.setObjectName(u"label_29")
|
|
820
851
|
|
|
821
|
-
self.gridLayout_6.addWidget(self.
|
|
852
|
+
self.gridLayout_6.addWidget(self.label_29, 6, 1, 1, 1)
|
|
822
853
|
|
|
823
|
-
self.
|
|
824
|
-
self.
|
|
854
|
+
self.label_30 = QLabel(self.groupBox_6)
|
|
855
|
+
self.label_30.setObjectName(u"label_30")
|
|
825
856
|
|
|
826
|
-
self.gridLayout_6.addWidget(self.
|
|
857
|
+
self.gridLayout_6.addWidget(self.label_30, 7, 1, 1, 1)
|
|
827
858
|
|
|
828
|
-
self.
|
|
829
|
-
self.
|
|
859
|
+
self.label_26 = QLabel(self.groupBox_6)
|
|
860
|
+
self.label_26.setObjectName(u"label_26")
|
|
830
861
|
|
|
831
|
-
self.gridLayout_6.addWidget(self.
|
|
862
|
+
self.gridLayout_6.addWidget(self.label_26, 3, 1, 1, 1)
|
|
832
863
|
|
|
833
|
-
self.
|
|
834
|
-
self.
|
|
864
|
+
self.preload_halfyear_spinBox = QSpinBox(self.groupBox_6)
|
|
865
|
+
self.preload_halfyear_spinBox.setObjectName(u"preload_halfyear_spinBox")
|
|
866
|
+
self.preload_halfyear_spinBox.setMaximum(999999)
|
|
835
867
|
|
|
836
|
-
self.gridLayout_6.addWidget(self.
|
|
868
|
+
self.gridLayout_6.addWidget(self.preload_halfyear_spinBox, 5, 2, 1, 1)
|
|
837
869
|
|
|
838
870
|
self.label_24 = QLabel(self.groupBox_6)
|
|
839
871
|
self.label_24.setObjectName(u"label_24")
|
|
840
872
|
|
|
841
|
-
self.gridLayout_6.addWidget(self.label_24,
|
|
873
|
+
self.gridLayout_6.addWidget(self.label_24, 1, 1, 1, 1)
|
|
842
874
|
|
|
843
|
-
self.
|
|
844
|
-
self.
|
|
875
|
+
self.preload_year_spinBox = QSpinBox(self.groupBox_6)
|
|
876
|
+
self.preload_year_spinBox.setObjectName(u"preload_year_spinBox")
|
|
877
|
+
self.preload_year_spinBox.setMaximum(999999)
|
|
845
878
|
|
|
846
|
-
self.gridLayout_6.addWidget(self.
|
|
879
|
+
self.gridLayout_6.addWidget(self.preload_year_spinBox, 6, 2, 1, 1)
|
|
847
880
|
|
|
848
|
-
self.
|
|
849
|
-
self.preload_min15_checkBox.setObjectName(u"preload_min15_checkBox")
|
|
881
|
+
self.horizontalSpacer_6 = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
|
|
850
882
|
|
|
851
|
-
self.gridLayout_6.
|
|
883
|
+
self.gridLayout_6.addItem(self.horizontalSpacer_6, 5, 3, 1, 1)
|
|
852
884
|
|
|
853
|
-
self.
|
|
854
|
-
self.
|
|
855
|
-
|
|
885
|
+
self.label_59 = QLabel(self.groupBox_6)
|
|
886
|
+
self.label_59.setObjectName(u"label_59")
|
|
887
|
+
|
|
888
|
+
self.gridLayout_6.addWidget(self.label_59, 0, 0, 1, 1)
|
|
889
|
+
|
|
890
|
+
self.preload_min15_spinBox = QSpinBox(self.groupBox_6)
|
|
891
|
+
self.preload_min15_spinBox.setObjectName(u"preload_min15_spinBox")
|
|
892
|
+
self.preload_min15_spinBox.setMaximum(999999)
|
|
893
|
+
|
|
894
|
+
self.gridLayout_6.addWidget(self.preload_min15_spinBox, 9, 2, 1, 1)
|
|
856
895
|
|
|
857
|
-
self.
|
|
896
|
+
self.label_31 = QLabel(self.groupBox_6)
|
|
897
|
+
self.label_31.setObjectName(u"label_31")
|
|
898
|
+
|
|
899
|
+
self.gridLayout_6.addWidget(self.label_31, 8, 1, 1, 1)
|
|
900
|
+
|
|
901
|
+
self.preload_timeline_checkBox = QCheckBox(self.groupBox_6)
|
|
902
|
+
self.preload_timeline_checkBox.setObjectName(u"preload_timeline_checkBox")
|
|
903
|
+
|
|
904
|
+
self.gridLayout_6.addWidget(self.preload_timeline_checkBox, 13, 0, 1, 1)
|
|
858
905
|
|
|
859
906
|
self.preload_min60_checkBox = QCheckBox(self.groupBox_6)
|
|
860
907
|
self.preload_min60_checkBox.setObjectName(u"preload_min60_checkBox")
|
|
861
908
|
|
|
862
|
-
self.gridLayout_6.addWidget(self.preload_min60_checkBox,
|
|
909
|
+
self.gridLayout_6.addWidget(self.preload_min60_checkBox, 11, 0, 1, 1)
|
|
863
910
|
|
|
864
|
-
self.
|
|
865
|
-
self.
|
|
866
|
-
self.
|
|
911
|
+
self.preload_timeline_spinBox = QSpinBox(self.groupBox_6)
|
|
912
|
+
self.preload_timeline_spinBox.setObjectName(u"preload_timeline_spinBox")
|
|
913
|
+
self.preload_timeline_spinBox.setMaximum(999999)
|
|
867
914
|
|
|
868
|
-
self.gridLayout_6.addWidget(self.
|
|
915
|
+
self.gridLayout_6.addWidget(self.preload_timeline_spinBox, 13, 2, 1, 1)
|
|
869
916
|
|
|
870
|
-
self.
|
|
871
|
-
self.
|
|
917
|
+
self.label_28 = QLabel(self.groupBox_6)
|
|
918
|
+
self.label_28.setObjectName(u"label_28")
|
|
872
919
|
|
|
873
|
-
self.gridLayout_6.addWidget(self.
|
|
920
|
+
self.gridLayout_6.addWidget(self.label_28, 5, 1, 1, 1)
|
|
874
921
|
|
|
875
|
-
self.
|
|
876
|
-
self.
|
|
877
|
-
self.preload_hour2_spinBox.setMaximum(999999)
|
|
922
|
+
self.preload_hour2_checkBox = QCheckBox(self.groupBox_6)
|
|
923
|
+
self.preload_hour2_checkBox.setObjectName(u"preload_hour2_checkBox")
|
|
878
924
|
|
|
879
|
-
self.gridLayout_6.addWidget(self.
|
|
925
|
+
self.gridLayout_6.addWidget(self.preload_hour2_checkBox, 12, 0, 1, 1)
|
|
880
926
|
|
|
881
|
-
self.
|
|
882
|
-
self.
|
|
927
|
+
self.preload_month_checkBox = QCheckBox(self.groupBox_6)
|
|
928
|
+
self.preload_month_checkBox.setObjectName(u"preload_month_checkBox")
|
|
883
929
|
|
|
884
|
-
self.gridLayout_6.addWidget(self.
|
|
930
|
+
self.gridLayout_6.addWidget(self.preload_month_checkBox, 3, 0, 1, 1)
|
|
885
931
|
|
|
886
|
-
self.
|
|
932
|
+
self.label_32 = QLabel(self.groupBox_6)
|
|
933
|
+
self.label_32.setObjectName(u"label_32")
|
|
887
934
|
|
|
888
|
-
self.gridLayout_6.
|
|
935
|
+
self.gridLayout_6.addWidget(self.label_32, 9, 1, 1, 1)
|
|
889
936
|
|
|
890
|
-
self.
|
|
891
|
-
self.
|
|
937
|
+
self.preload_year_checkBox = QCheckBox(self.groupBox_6)
|
|
938
|
+
self.preload_year_checkBox.setObjectName(u"preload_year_checkBox")
|
|
892
939
|
|
|
893
|
-
self.gridLayout_6.addWidget(self.
|
|
940
|
+
self.gridLayout_6.addWidget(self.preload_year_checkBox, 6, 0, 1, 1)
|
|
894
941
|
|
|
895
|
-
self.
|
|
896
|
-
self.
|
|
942
|
+
self.label_34 = QLabel(self.groupBox_6)
|
|
943
|
+
self.label_34.setObjectName(u"label_34")
|
|
897
944
|
|
|
898
|
-
self.gridLayout_6.addWidget(self.
|
|
945
|
+
self.gridLayout_6.addWidget(self.label_34, 11, 1, 1, 1)
|
|
899
946
|
|
|
900
|
-
self.
|
|
901
|
-
self.
|
|
947
|
+
self.label_60 = QLabel(self.groupBox_6)
|
|
948
|
+
self.label_60.setObjectName(u"label_60")
|
|
902
949
|
|
|
903
|
-
self.gridLayout_6.addWidget(self.
|
|
950
|
+
self.gridLayout_6.addWidget(self.label_60, 13, 1, 1, 1)
|
|
904
951
|
|
|
905
|
-
self.
|
|
906
|
-
self.
|
|
952
|
+
self.label_27 = QLabel(self.groupBox_6)
|
|
953
|
+
self.label_27.setObjectName(u"label_27")
|
|
907
954
|
|
|
908
|
-
self.gridLayout_6.addWidget(self.
|
|
955
|
+
self.gridLayout_6.addWidget(self.label_27, 4, 1, 1, 1)
|
|
909
956
|
|
|
910
|
-
self.
|
|
911
|
-
self.
|
|
957
|
+
self.preload_min30_spinBox = QSpinBox(self.groupBox_6)
|
|
958
|
+
self.preload_min30_spinBox.setObjectName(u"preload_min30_spinBox")
|
|
959
|
+
self.preload_min30_spinBox.setMaximum(999999)
|
|
912
960
|
|
|
913
|
-
self.gridLayout_6.addWidget(self.
|
|
961
|
+
self.gridLayout_6.addWidget(self.preload_min30_spinBox, 10, 2, 1, 1)
|
|
914
962
|
|
|
915
|
-
self.
|
|
916
|
-
self.
|
|
917
|
-
self.preload_min5_spinBox.setMaximum(999999)
|
|
963
|
+
self.preload_halfyear_checkBox = QCheckBox(self.groupBox_6)
|
|
964
|
+
self.preload_halfyear_checkBox.setObjectName(u"preload_halfyear_checkBox")
|
|
918
965
|
|
|
919
|
-
self.gridLayout_6.addWidget(self.
|
|
966
|
+
self.gridLayout_6.addWidget(self.preload_halfyear_checkBox, 5, 0, 1, 1)
|
|
920
967
|
|
|
921
|
-
self.
|
|
922
|
-
self.
|
|
968
|
+
self.preload_min1_spinBox = QSpinBox(self.groupBox_6)
|
|
969
|
+
self.preload_min1_spinBox.setObjectName(u"preload_min1_spinBox")
|
|
970
|
+
self.preload_min1_spinBox.setMaximum(999999)
|
|
923
971
|
|
|
924
|
-
self.gridLayout_6.addWidget(self.
|
|
972
|
+
self.gridLayout_6.addWidget(self.preload_min1_spinBox, 7, 2, 1, 1)
|
|
925
973
|
|
|
926
|
-
self.
|
|
927
|
-
self.
|
|
974
|
+
self.label_33 = QLabel(self.groupBox_6)
|
|
975
|
+
self.label_33.setObjectName(u"label_33")
|
|
928
976
|
|
|
929
|
-
self.gridLayout_6.addWidget(self.
|
|
977
|
+
self.gridLayout_6.addWidget(self.label_33, 10, 1, 1, 1)
|
|
930
978
|
|
|
931
|
-
self.
|
|
932
|
-
self.
|
|
933
|
-
self.preload_min30_spinBox.setMaximum(999999)
|
|
979
|
+
self.preload_trans_checkBox = QCheckBox(self.groupBox_6)
|
|
980
|
+
self.preload_trans_checkBox.setObjectName(u"preload_trans_checkBox")
|
|
934
981
|
|
|
935
|
-
self.gridLayout_6.addWidget(self.
|
|
982
|
+
self.gridLayout_6.addWidget(self.preload_trans_checkBox, 14, 0, 1, 1)
|
|
936
983
|
|
|
937
|
-
self.
|
|
938
|
-
self.
|
|
939
|
-
self.preload_year_spinBox.setMaximum(999999)
|
|
984
|
+
self.label_61 = QLabel(self.groupBox_6)
|
|
985
|
+
self.label_61.setObjectName(u"label_61")
|
|
940
986
|
|
|
941
|
-
self.gridLayout_6.addWidget(self.
|
|
987
|
+
self.gridLayout_6.addWidget(self.label_61, 14, 1, 1, 1)
|
|
988
|
+
|
|
989
|
+
self.preload_trans_spinBox = QSpinBox(self.groupBox_6)
|
|
990
|
+
self.preload_trans_spinBox.setObjectName(u"preload_trans_spinBox")
|
|
991
|
+
self.preload_trans_spinBox.setMaximum(999999)
|
|
992
|
+
|
|
993
|
+
self.gridLayout_6.addWidget(self.preload_trans_spinBox, 14, 2, 1, 1)
|
|
942
994
|
|
|
943
995
|
|
|
944
996
|
self.verticalLayout_4.addLayout(self.gridLayout_6)
|
|
@@ -1323,7 +1375,7 @@ class Ui_MainWindow(object):
|
|
|
1323
1375
|
self.groupBox_7.setTitle(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u8bbe\u7f6e", None))
|
|
1324
1376
|
self.import_weight_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u4e0b\u8f7d\u6743\u606f\u6570\u636e", None))
|
|
1325
1377
|
self.import_history_finance_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u4e0b\u8f7d\u5386\u53f2\u8d22\u52a1\u6570\u636e", None))
|
|
1326
|
-
self.import_block_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u4e0b\u8f7d\
|
|
1378
|
+
self.import_block_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u4e0b\u8f7d\u6307\u6570\u677f\u5757", None))
|
|
1327
1379
|
self.import_stock_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u80a1\u7968", None))
|
|
1328
1380
|
self.import_fund_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u57fa\u91d1", None))
|
|
1329
1381
|
self.import_future_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u671f\u8d27", None))
|
|
@@ -1402,31 +1454,39 @@ class Ui_MainWindow(object):
|
|
|
1402
1454
|
self.groupBox_6.setTitle(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u8bbe\u7f6e", None))
|
|
1403
1455
|
self.label_35.setText(QCoreApplication.translate("MainWindow", u"\u6b64\u5904\u4e3a Hikyuu \u8fd0\u884c\u65f6\u7684\u6570\u636e\u9884\u52a0\u8f7d\u8bbe\u7f6e\uff0c\u8bf7\u6839\u636e\u673a\u5668\u5185\u5b58\u5927\u5c0f\u9009\u62e9", None))
|
|
1404
1456
|
self.label_36.setText(QCoreApplication.translate("MainWindow", u"\uff08\u76ee\u524d\u52a0\u8f7d\u5168\u90e8\u65e5\u7ebf\u6570\u636e\u76ee\u524d\u9700\u8981\u7ea6\u9700900M\u5185\u5b58\uff09", None))
|
|
1457
|
+
self.lazy_checkBox.setText(QCoreApplication.translate("MainWindow", u"(\u6350\u8d60\u6743\u76ca)\u4f7f\u7528\u61d2\u52a0\u8f7d\u6a21\u5f0f(\u4ec5\u5bf9\u65e5\u7ebf\u4ee5\u4e0b\u7ea7\u522b\u751f\u6548)", None))
|
|
1458
|
+
self.label_57.setText(QCoreApplication.translate("MainWindow", u"\u8c28\u614e!!! \u6b64\u5904\u4e3a\u5168\u5c40\u8bbe\u7f6e\uff0c\u4f7f\u7528\u61d2\u52a0\u8f7d\u5bb9\u6613\u4e0d\u5c0f\u5fc3\u904d\u5386\u8fc7\u591a\u8bc1\u5238\u5bfc\u81f4\u7206\u5185\u5b58\uff01\uff01", None))
|
|
1459
|
+
self.label_58.setText(QCoreApplication.translate("MainWindow", u"\u5efa\u8bae\u901a\u8fc7\u6307\u5b9a load_hikyuu \u53c2\u6570\u7684\u65b9\u5f0f\u4f7f\u7528\u61d2\u52a0\u8f7d", None))
|
|
1405
1460
|
self.preload_min5_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d5\u5206\u949f\u7ebf", None))
|
|
1406
|
-
self.label_33.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1407
|
-
self.label_26.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1408
|
-
self.label_27.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1409
|
-
self.preload_year_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5e74\u7ebf", None))
|
|
1410
|
-
self.preload_min30_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d30\u5206\u949f\u7ebf", None))
|
|
1411
|
-
self.label_28.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1412
|
-
self.save_pushButton.setText(QCoreApplication.translate("MainWindow", u"\u4fdd\u5b58\u8bbe\u7f6e", None))
|
|
1413
|
-
self.label_34.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1414
|
-
self.preload_hour2_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d120\u5206\u949f\u7ebf", None))
|
|
1415
|
-
self.preload_halfyear_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u534a\u5e74\u7ebf", None))
|
|
1416
|
-
self.preload_day_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u65e5\u7ebf", None))
|
|
1417
|
-
self.label_24.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1418
1461
|
self.preload_min1_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d1\u5206\u949f\u7ebf", None))
|
|
1462
|
+
self.label_42.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1419
1463
|
self.preload_min15_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d15\u5206\u949f\u7ebf", None))
|
|
1420
|
-
self.
|
|
1421
|
-
self.
|
|
1464
|
+
self.label_25.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1465
|
+
self.preload_day_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u65e5\u7ebf", None))
|
|
1422
1466
|
self.preload_week_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5468\u7ebf", None))
|
|
1467
|
+
self.save_pushButton.setText(QCoreApplication.translate("MainWindow", u"\u4fdd\u5b58\u8bbe\u7f6e", None))
|
|
1468
|
+
self.preload_min30_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d30\u5206\u949f\u7ebf", None))
|
|
1423
1469
|
self.preload_quarter_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5b63\u7ebf", None))
|
|
1470
|
+
self.label_29.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1471
|
+
self.label_30.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1472
|
+
self.label_26.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1473
|
+
self.label_24.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1474
|
+
self.label_59.setText(QCoreApplication.translate("MainWindow", u"0 - \u8868\u793a\u4e0d\u9650\u5236", None))
|
|
1424
1475
|
self.label_31.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1425
|
-
self.
|
|
1476
|
+
self.preload_timeline_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5206\u65f6\u7ebf", None))
|
|
1477
|
+
self.preload_min60_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d60\u5206\u949f\u7ebf", None))
|
|
1478
|
+
self.label_28.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1479
|
+
self.preload_hour2_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d120\u5206\u949f\u7ebf", None))
|
|
1426
1480
|
self.preload_month_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u6708\u7ebf", None))
|
|
1427
|
-
self.label_30.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1428
|
-
self.label_42.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1429
1481
|
self.label_32.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1482
|
+
self.preload_year_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5e74\u7ebf", None))
|
|
1483
|
+
self.label_34.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1484
|
+
self.label_60.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1485
|
+
self.label_27.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1486
|
+
self.preload_halfyear_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u534a\u5e74\u7ebf", None))
|
|
1487
|
+
self.label_33.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1488
|
+
self.preload_trans_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5206\u7b14", None))
|
|
1489
|
+
self.label_61.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1430
1490
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6), QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u8bbe\u7f6e", None))
|
|
1431
1491
|
self.collect_start_pushButton.setText(QCoreApplication.translate("MainWindow", u"\u542f\u52a8\u91c7\u96c6", None))
|
|
1432
1492
|
self.collect_status_label.setText(QCoreApplication.translate("MainWindow", u"TextLabel", None))
|
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 0xffff36f05b70; 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 ffff36eff6f0>
|
|
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 0xffff36f06a10; 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 ffff36f40540>
|
|
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 0xffff36f06f50; 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 ffff36f41490>
|
|
154
154
|
def __init__(self, **kwargs):
|
|
155
155
|
"""
|
|
156
156
|
A simple constructor that allows initialization from kwargs.
|
|
@@ -90,7 +90,7 @@ public:
|
|
|
90
90
|
|
|
91
91
|
/** 是否所有数据准备完毕 */
|
|
92
92
|
bool dataReady() const;
|
|
93
|
-
|
|
93
|
+
bool initializing() const;
|
|
94
94
|
/**
|
|
95
95
|
* 根据"市场简称证券代码"获取对应的证券实例
|
|
96
96
|
* @param querystr 格式:“市场简称证券代码”,如"sh000001"
|
|
@@ -164,6 +164,13 @@ public:
|
|
|
164
164
|
*/
|
|
165
165
|
BlockList getBlockList();
|
|
166
166
|
|
|
167
|
+
/**
|
|
168
|
+
* 获取指定指数的板块列表, 如果不存在返回空列表
|
|
169
|
+
* @param index_stk 指数
|
|
170
|
+
* @return 板块列表
|
|
171
|
+
*/
|
|
172
|
+
BlockList getBlockListByIndexStock(const Stock& stk);
|
|
173
|
+
|
|
167
174
|
/**
|
|
168
175
|
* 获取指定证券所属的板块列表
|
|
169
176
|
* @param stk 指定证券
|
|
@@ -273,6 +280,10 @@ public:
|
|
|
273
280
|
m_cancel_load = true;
|
|
274
281
|
}
|
|
275
282
|
|
|
283
|
+
bool hasCancelLoad() const {
|
|
284
|
+
return m_cancel_load;
|
|
285
|
+
}
|
|
286
|
+
|
|
276
287
|
public:
|
|
277
288
|
typedef StockMapIterator const_iterator;
|
|
278
289
|
const_iterator begin() const {
|
|
@@ -318,7 +329,7 @@ private:
|
|
|
318
329
|
static StockManager* m_sm;
|
|
319
330
|
std::atomic_bool m_initializing{false};
|
|
320
331
|
std::atomic_bool m_cancel_load{false}; // 取消加载, 用于退出指示
|
|
321
|
-
std::atomic_bool m_data_ready{
|
|
332
|
+
std::atomic_bool m_data_ready{true}; // 用于指示是否所有数据准备完毕, 如果未初始化则为 true
|
|
322
333
|
std::thread::id m_thread_id; // 记录线程id,用于判断Stratege是以独立进程方式还是线程方式运行
|
|
323
334
|
string m_tmpdir;
|
|
324
335
|
string m_datadir;
|
|
@@ -365,6 +376,10 @@ inline bool StockManager::dataReady() const {
|
|
|
365
376
|
return m_data_ready;
|
|
366
377
|
}
|
|
367
378
|
|
|
379
|
+
inline bool StockManager::initializing() const {
|
|
380
|
+
return m_initializing;
|
|
381
|
+
}
|
|
382
|
+
|
|
368
383
|
inline Stock StockManager::operator[](const string& query) const {
|
|
369
384
|
return getStock(query);
|
|
370
385
|
}
|
|
@@ -38,7 +38,7 @@ public:
|
|
|
38
38
|
* @param preloadNum 指定的预加载数量,如:{{"min_max", 100}, {"day_max", 200}}
|
|
39
39
|
*/
|
|
40
40
|
StrategyContext(const vector<string>& stockCodeList, const vector<KQuery::KType>& ktypeList,
|
|
41
|
-
const unordered_map<string,
|
|
41
|
+
const unordered_map<string, int64_t>& preloadNum = {});
|
|
42
42
|
|
|
43
43
|
// 自定义移动构造与赋值会引起 python 中无法正常退出
|
|
44
44
|
// StrategyContext(const StrategyContext&) = default;
|
|
@@ -77,9 +77,9 @@ public:
|
|
|
77
77
|
return m_ktypeList;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
void setPreloadNum(const unordered_map<string,
|
|
80
|
+
void setPreloadNum(const unordered_map<string, int64_t>& preloadNum);
|
|
81
81
|
|
|
82
|
-
const unordered_map<string,
|
|
82
|
+
const unordered_map<string, int64_t>& getPreloadNum() const noexcept {
|
|
83
83
|
return m_preloadNum;
|
|
84
84
|
}
|
|
85
85
|
|
|
@@ -108,7 +108,7 @@ private:
|
|
|
108
108
|
vector<string> m_mustLoad{"sh000001", "sh000300"}; // 默认必须加载的 stock
|
|
109
109
|
vector<string> m_stockCodeList;
|
|
110
110
|
vector<KQuery::KType> m_ktypeList;
|
|
111
|
-
unordered_map<string,
|
|
111
|
+
unordered_map<string, int64_t> m_preloadNum;
|
|
112
112
|
};
|
|
113
113
|
|
|
114
114
|
HKU_API std::ostream& operator<<(std::ostream& os, const StrategyContext& context);
|
|
@@ -219,7 +219,8 @@ public:
|
|
|
219
219
|
/**
|
|
220
220
|
* 获取所有历史财务信息, 用于列式存储时数据初始化使用
|
|
221
221
|
*/
|
|
222
|
-
virtual unordered_map<string, vector<HistoryFinanceInfo>> getAllHistoryFinance(
|
|
222
|
+
virtual unordered_map<string, vector<HistoryFinanceInfo>> getAllHistoryFinance(
|
|
223
|
+
const std::atomic_bool& cancel_flag) {
|
|
223
224
|
HKU_ERROR("Not support getAllHistoryFinance()!");
|
|
224
225
|
return unordered_map<string, vector<HistoryFinanceInfo>>();
|
|
225
226
|
}
|
|
@@ -129,8 +129,7 @@ public:
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
virtual std::unordered_map<std::string, KRecordList> getAllKRecordList(
|
|
132
|
-
const KQuery::KType& ktype, const Datetime& start_date,
|
|
133
|
-
const std::atomic<bool>& cancel_flag) {
|
|
132
|
+
const KQuery::KType& ktype, const Datetime& start_date, const std::atomic_bool& cancel_flag) {
|
|
134
133
|
HKU_THROW("Not support getAllKRecordList");
|
|
135
134
|
}
|
|
136
135
|
|
|
@@ -210,8 +209,7 @@ public:
|
|
|
210
209
|
}
|
|
211
210
|
|
|
212
211
|
std::unordered_map<std::string, KRecordList> getAllKRecordList(
|
|
213
|
-
const KQuery::KType& ktype, const Datetime& start_date,
|
|
214
|
-
const std::atomic<bool>& cancel_flag) {
|
|
212
|
+
const KQuery::KType& ktype, const Datetime& start_date, const std::atomic_bool& cancel_flag) {
|
|
215
213
|
return m_driver->getAllKRecordList(ktype, start_date, cancel_flag);
|
|
216
214
|
}
|
|
217
215
|
|
|
@@ -26,6 +26,9 @@ public:
|
|
|
26
26
|
MySQLKDataDriver();
|
|
27
27
|
virtual ~MySQLKDataDriver() override;
|
|
28
28
|
|
|
29
|
+
MySQLKDataDriver(const MySQLKDataDriver&) = delete;
|
|
30
|
+
MySQLKDataDriver& operator=(const MySQLKDataDriver&) = delete;
|
|
31
|
+
|
|
29
32
|
virtual KDataDriverPtr _clone() override {
|
|
30
33
|
return std::make_shared<MySQLKDataDriver>();
|
|
31
34
|
}
|
|
@@ -56,7 +59,8 @@ public:
|
|
|
56
59
|
const KQuery& query) override;
|
|
57
60
|
|
|
58
61
|
private:
|
|
59
|
-
string _getTableName(const string& market, const string& code,
|
|
62
|
+
static string _getTableName(const string& market, const string& code,
|
|
63
|
+
const KQuery::KType& ktype);
|
|
60
64
|
KRecordList _getKRecordList(const string& market, const string& code,
|
|
61
65
|
const KQuery::KType& kType, size_t start_ix, size_t end_ix);
|
|
62
66
|
KRecordList _getKRecordList(const string& market, const string& code,
|