hikyuu 2.7.1.1__py3-none-manylinux2014_aarch64.whl → 2.7.2__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 +4 -1
- hikyuu/__init__.pyi +17 -11
- hikyuu/analysis/__init__.pyi +5 -1
- hikyuu/analysis/analysis.pyi +6 -2
- hikyuu/core.pyi +7 -3
- hikyuu/cpp/core310.pyi +49 -6
- hikyuu/cpp/core310.so +0 -0
- hikyuu/cpp/core311.pyi +49 -6
- hikyuu/cpp/core311.so +0 -0
- hikyuu/cpp/core312.pyi +49 -6
- hikyuu/cpp/core312.so +0 -0
- hikyuu/cpp/core313.pyi +49 -6
- 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/libhikyuu.so +0 -0
- hikyuu/data/clickhouse_upgrade/0001.sql +2 -0
- hikyuu/data/common_clickhouse.py +1 -3
- hikyuu/data/hku_config_template.py +6 -0
- hikyuu/data/mysql_upgrade/0029.sql +2 -0
- hikyuu/data/pytdx_to_clickhouse.py +85 -31
- hikyuu/data/pytdx_to_h5.py +74 -29
- hikyuu/data/pytdx_to_mysql.py +63 -19
- 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/draw/drawplot/bokeh_draw.pyi +10 -6
- hikyuu/draw/drawplot/echarts_draw.pyi +10 -6
- hikyuu/draw/drawplot/matplotlib_draw.py +8 -2
- hikyuu/draw/drawplot/matplotlib_draw.pyi +10 -6
- hikyuu/extend.pyi +6 -2
- hikyuu/gui/HikyuuTDX.py +12 -2
- hikyuu/gui/data/MainWindow.py +166 -142
- hikyuu/hub.pyi +6 -6
- hikyuu/include/hikyuu/StockManager.h +4 -0
- hikyuu/include/hikyuu/StrategyContext.h +4 -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/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/strategy/Strategy.h +1 -1
- hikyuu/include/hikyuu/trade_manage/TradeRecord.h +2 -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/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 +285 -0
- hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +296 -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 +10 -6
- hikyuu/trade_manage/trade.pyi +10 -6
- hikyuu/trade_sys/trade_sys.py +3 -1
- hikyuu/util/singleton.pyi +1 -1
- {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/METADATA +5 -1
- {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/RECORD +89 -72
- {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/WHEEL +0 -0
- {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/entry_points.txt +0 -0
- {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.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
|
|
|
@@ -739,206 +754,211 @@ class Ui_MainWindow(object):
|
|
|
739
754
|
self.gridLayout_6 = QGridLayout()
|
|
740
755
|
self.gridLayout_6.setObjectName(u"gridLayout_6")
|
|
741
756
|
self.gridLayout_6.setContentsMargins(20, -1, -1, -1)
|
|
742
|
-
self.
|
|
743
|
-
self.
|
|
744
|
-
self.preload_month_spinBox.setMaximum(999999)
|
|
757
|
+
self.preload_hour2_checkBox = QCheckBox(self.groupBox_6)
|
|
758
|
+
self.preload_hour2_checkBox.setObjectName(u"preload_hour2_checkBox")
|
|
745
759
|
|
|
746
|
-
self.gridLayout_6.addWidget(self.
|
|
760
|
+
self.gridLayout_6.addWidget(self.preload_hour2_checkBox, 12, 0, 1, 1)
|
|
747
761
|
|
|
748
|
-
self.
|
|
749
|
-
self.
|
|
750
|
-
self.
|
|
762
|
+
self.preload_year_spinBox = QSpinBox(self.groupBox_6)
|
|
763
|
+
self.preload_year_spinBox.setObjectName(u"preload_year_spinBox")
|
|
764
|
+
self.preload_year_spinBox.setMaximum(999999)
|
|
751
765
|
|
|
752
|
-
self.gridLayout_6.addWidget(self.
|
|
766
|
+
self.gridLayout_6.addWidget(self.preload_year_spinBox, 6, 2, 1, 1)
|
|
753
767
|
|
|
754
|
-
self.
|
|
755
|
-
self.
|
|
768
|
+
self.label_34 = QLabel(self.groupBox_6)
|
|
769
|
+
self.label_34.setObjectName(u"label_34")
|
|
756
770
|
|
|
757
|
-
self.gridLayout_6.addWidget(self.
|
|
771
|
+
self.gridLayout_6.addWidget(self.label_34, 11, 1, 1, 1)
|
|
758
772
|
|
|
759
|
-
self.
|
|
760
|
-
self.
|
|
773
|
+
self.label_25 = QLabel(self.groupBox_6)
|
|
774
|
+
self.label_25.setObjectName(u"label_25")
|
|
761
775
|
|
|
762
|
-
self.gridLayout_6.addWidget(self.
|
|
776
|
+
self.gridLayout_6.addWidget(self.label_25, 2, 1, 1, 1)
|
|
763
777
|
|
|
764
|
-
self.
|
|
765
|
-
self.
|
|
778
|
+
self.preload_min15_spinBox = QSpinBox(self.groupBox_6)
|
|
779
|
+
self.preload_min15_spinBox.setObjectName(u"preload_min15_spinBox")
|
|
780
|
+
self.preload_min15_spinBox.setMaximum(999999)
|
|
781
|
+
|
|
782
|
+
self.gridLayout_6.addWidget(self.preload_min15_spinBox, 9, 2, 1, 1)
|
|
783
|
+
|
|
784
|
+
self.preload_year_checkBox = QCheckBox(self.groupBox_6)
|
|
785
|
+
self.preload_year_checkBox.setObjectName(u"preload_year_checkBox")
|
|
766
786
|
|
|
767
|
-
self.gridLayout_6.addWidget(self.
|
|
787
|
+
self.gridLayout_6.addWidget(self.preload_year_checkBox, 6, 0, 1, 1)
|
|
788
|
+
|
|
789
|
+
self.label_42 = QLabel(self.groupBox_6)
|
|
790
|
+
self.label_42.setObjectName(u"label_42")
|
|
791
|
+
|
|
792
|
+
self.gridLayout_6.addWidget(self.label_42, 12, 1, 1, 1)
|
|
768
793
|
|
|
769
794
|
self.preload_week_spinBox = QSpinBox(self.groupBox_6)
|
|
770
795
|
self.preload_week_spinBox.setObjectName(u"preload_week_spinBox")
|
|
771
796
|
self.preload_week_spinBox.setMaximum(999999)
|
|
772
797
|
|
|
773
|
-
self.gridLayout_6.addWidget(self.preload_week_spinBox,
|
|
798
|
+
self.gridLayout_6.addWidget(self.preload_week_spinBox, 2, 2, 1, 1)
|
|
774
799
|
|
|
775
|
-
self.
|
|
776
|
-
self.
|
|
800
|
+
self.save_pushButton = QPushButton(self.groupBox_6)
|
|
801
|
+
self.save_pushButton.setObjectName(u"save_pushButton")
|
|
777
802
|
|
|
778
|
-
self.gridLayout_6.addWidget(self.
|
|
803
|
+
self.gridLayout_6.addWidget(self.save_pushButton, 5, 4, 1, 1)
|
|
779
804
|
|
|
780
|
-
self.
|
|
781
|
-
self.
|
|
805
|
+
self.preload_min15_checkBox = QCheckBox(self.groupBox_6)
|
|
806
|
+
self.preload_min15_checkBox.setObjectName(u"preload_min15_checkBox")
|
|
782
807
|
|
|
783
|
-
self.gridLayout_6.addWidget(self.
|
|
808
|
+
self.gridLayout_6.addWidget(self.preload_min15_checkBox, 9, 0, 1, 1)
|
|
784
809
|
|
|
785
|
-
self.
|
|
786
|
-
self.
|
|
787
|
-
self.
|
|
810
|
+
self.preload_min1_spinBox = QSpinBox(self.groupBox_6)
|
|
811
|
+
self.preload_min1_spinBox.setObjectName(u"preload_min1_spinBox")
|
|
812
|
+
self.preload_min1_spinBox.setMaximum(999999)
|
|
788
813
|
|
|
789
|
-
self.gridLayout_6.addWidget(self.
|
|
814
|
+
self.gridLayout_6.addWidget(self.preload_min1_spinBox, 7, 2, 1, 1)
|
|
790
815
|
|
|
791
|
-
self.
|
|
792
|
-
self.
|
|
793
|
-
self.
|
|
816
|
+
self.preload_min5_spinBox = QSpinBox(self.groupBox_6)
|
|
817
|
+
self.preload_min5_spinBox.setObjectName(u"preload_min5_spinBox")
|
|
818
|
+
self.preload_min5_spinBox.setMaximum(999999)
|
|
794
819
|
|
|
795
|
-
self.gridLayout_6.addWidget(self.
|
|
820
|
+
self.gridLayout_6.addWidget(self.preload_min5_spinBox, 8, 2, 1, 1)
|
|
796
821
|
|
|
797
|
-
self.
|
|
798
|
-
self.
|
|
822
|
+
self.preload_quarter_checkBox = QCheckBox(self.groupBox_6)
|
|
823
|
+
self.preload_quarter_checkBox.setObjectName(u"preload_quarter_checkBox")
|
|
799
824
|
|
|
800
|
-
self.gridLayout_6.addWidget(self.
|
|
825
|
+
self.gridLayout_6.addWidget(self.preload_quarter_checkBox, 4, 0, 1, 1)
|
|
801
826
|
|
|
802
|
-
self.
|
|
803
|
-
self.label_28.setObjectName(u"label_28")
|
|
827
|
+
self.horizontalSpacer_6 = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
|
|
804
828
|
|
|
805
|
-
self.gridLayout_6.
|
|
829
|
+
self.gridLayout_6.addItem(self.horizontalSpacer_6, 5, 3, 1, 1)
|
|
806
830
|
|
|
807
|
-
self.
|
|
808
|
-
self.
|
|
809
|
-
self.preload_min15_spinBox.setMaximum(999999)
|
|
831
|
+
self.preload_min30_checkBox = QCheckBox(self.groupBox_6)
|
|
832
|
+
self.preload_min30_checkBox.setObjectName(u"preload_min30_checkBox")
|
|
810
833
|
|
|
811
|
-
self.gridLayout_6.addWidget(self.
|
|
834
|
+
self.gridLayout_6.addWidget(self.preload_min30_checkBox, 10, 0, 1, 1)
|
|
812
835
|
|
|
813
|
-
self.
|
|
814
|
-
self.
|
|
836
|
+
self.label_26 = QLabel(self.groupBox_6)
|
|
837
|
+
self.label_26.setObjectName(u"label_26")
|
|
815
838
|
|
|
816
|
-
self.gridLayout_6.addWidget(self.
|
|
839
|
+
self.gridLayout_6.addWidget(self.label_26, 3, 1, 1, 1)
|
|
817
840
|
|
|
818
|
-
self.
|
|
819
|
-
self.
|
|
841
|
+
self.preload_min30_spinBox = QSpinBox(self.groupBox_6)
|
|
842
|
+
self.preload_min30_spinBox.setObjectName(u"preload_min30_spinBox")
|
|
843
|
+
self.preload_min30_spinBox.setMaximum(999999)
|
|
820
844
|
|
|
821
|
-
self.gridLayout_6.addWidget(self.
|
|
845
|
+
self.gridLayout_6.addWidget(self.preload_min30_spinBox, 10, 2, 1, 1)
|
|
822
846
|
|
|
823
|
-
self.
|
|
824
|
-
self.
|
|
847
|
+
self.label_32 = QLabel(self.groupBox_6)
|
|
848
|
+
self.label_32.setObjectName(u"label_32")
|
|
825
849
|
|
|
826
|
-
self.gridLayout_6.addWidget(self.
|
|
850
|
+
self.gridLayout_6.addWidget(self.label_32, 9, 1, 1, 1)
|
|
827
851
|
|
|
828
|
-
self.
|
|
829
|
-
self.
|
|
852
|
+
self.preload_month_checkBox = QCheckBox(self.groupBox_6)
|
|
853
|
+
self.preload_month_checkBox.setObjectName(u"preload_month_checkBox")
|
|
830
854
|
|
|
831
|
-
self.gridLayout_6.addWidget(self.
|
|
855
|
+
self.gridLayout_6.addWidget(self.preload_month_checkBox, 3, 0, 1, 1)
|
|
832
856
|
|
|
833
|
-
self.
|
|
834
|
-
self.
|
|
857
|
+
self.preload_min5_checkBox = QCheckBox(self.groupBox_6)
|
|
858
|
+
self.preload_min5_checkBox.setObjectName(u"preload_min5_checkBox")
|
|
835
859
|
|
|
836
|
-
self.gridLayout_6.addWidget(self.
|
|
860
|
+
self.gridLayout_6.addWidget(self.preload_min5_checkBox, 8, 0, 1, 1)
|
|
837
861
|
|
|
838
|
-
self.
|
|
839
|
-
self.
|
|
862
|
+
self.preload_halfyear_spinBox = QSpinBox(self.groupBox_6)
|
|
863
|
+
self.preload_halfyear_spinBox.setObjectName(u"preload_halfyear_spinBox")
|
|
864
|
+
self.preload_halfyear_spinBox.setMaximum(999999)
|
|
840
865
|
|
|
841
|
-
self.gridLayout_6.addWidget(self.
|
|
866
|
+
self.gridLayout_6.addWidget(self.preload_halfyear_spinBox, 5, 2, 1, 1)
|
|
842
867
|
|
|
843
|
-
self.
|
|
844
|
-
self.
|
|
868
|
+
self.label_27 = QLabel(self.groupBox_6)
|
|
869
|
+
self.label_27.setObjectName(u"label_27")
|
|
845
870
|
|
|
846
|
-
self.gridLayout_6.addWidget(self.
|
|
871
|
+
self.gridLayout_6.addWidget(self.label_27, 4, 1, 1, 1)
|
|
847
872
|
|
|
848
|
-
self.
|
|
849
|
-
self.
|
|
873
|
+
self.label_28 = QLabel(self.groupBox_6)
|
|
874
|
+
self.label_28.setObjectName(u"label_28")
|
|
850
875
|
|
|
851
|
-
self.gridLayout_6.addWidget(self.
|
|
876
|
+
self.gridLayout_6.addWidget(self.label_28, 5, 1, 1, 1)
|
|
852
877
|
|
|
853
|
-
self.
|
|
854
|
-
self.
|
|
855
|
-
self.preload_min1_spinBox.setMaximum(999999)
|
|
878
|
+
self.preload_day_checkBox = QCheckBox(self.groupBox_6)
|
|
879
|
+
self.preload_day_checkBox.setObjectName(u"preload_day_checkBox")
|
|
856
880
|
|
|
857
|
-
self.gridLayout_6.addWidget(self.
|
|
881
|
+
self.gridLayout_6.addWidget(self.preload_day_checkBox, 1, 0, 1, 1)
|
|
858
882
|
|
|
859
|
-
self.
|
|
860
|
-
self.
|
|
883
|
+
self.preload_quarter_spinBox = QSpinBox(self.groupBox_6)
|
|
884
|
+
self.preload_quarter_spinBox.setObjectName(u"preload_quarter_spinBox")
|
|
885
|
+
self.preload_quarter_spinBox.setMaximum(999999)
|
|
861
886
|
|
|
862
|
-
self.gridLayout_6.addWidget(self.
|
|
887
|
+
self.gridLayout_6.addWidget(self.preload_quarter_spinBox, 4, 2, 1, 1)
|
|
863
888
|
|
|
864
|
-
self.
|
|
865
|
-
self.
|
|
866
|
-
self.preload_min60_spinBox.setMaximum(999999)
|
|
889
|
+
self.label_30 = QLabel(self.groupBox_6)
|
|
890
|
+
self.label_30.setObjectName(u"label_30")
|
|
867
891
|
|
|
868
|
-
self.gridLayout_6.addWidget(self.
|
|
892
|
+
self.gridLayout_6.addWidget(self.label_30, 7, 1, 1, 1)
|
|
869
893
|
|
|
870
894
|
self.label_29 = QLabel(self.groupBox_6)
|
|
871
895
|
self.label_29.setObjectName(u"label_29")
|
|
872
896
|
|
|
873
|
-
self.gridLayout_6.addWidget(self.label_29,
|
|
897
|
+
self.gridLayout_6.addWidget(self.label_29, 6, 1, 1, 1)
|
|
874
898
|
|
|
875
|
-
self.
|
|
876
|
-
self.
|
|
877
|
-
self.preload_hour2_spinBox.setMaximum(999999)
|
|
878
|
-
|
|
879
|
-
self.gridLayout_6.addWidget(self.preload_hour2_spinBox, 11, 2, 1, 1)
|
|
880
|
-
|
|
881
|
-
self.preload_week_checkBox = QCheckBox(self.groupBox_6)
|
|
882
|
-
self.preload_week_checkBox.setObjectName(u"preload_week_checkBox")
|
|
899
|
+
self.preload_min60_checkBox = QCheckBox(self.groupBox_6)
|
|
900
|
+
self.preload_min60_checkBox.setObjectName(u"preload_min60_checkBox")
|
|
883
901
|
|
|
884
|
-
self.gridLayout_6.addWidget(self.
|
|
902
|
+
self.gridLayout_6.addWidget(self.preload_min60_checkBox, 11, 0, 1, 1)
|
|
885
903
|
|
|
886
|
-
self.
|
|
904
|
+
self.label_33 = QLabel(self.groupBox_6)
|
|
905
|
+
self.label_33.setObjectName(u"label_33")
|
|
887
906
|
|
|
888
|
-
self.gridLayout_6.
|
|
907
|
+
self.gridLayout_6.addWidget(self.label_33, 10, 1, 1, 1)
|
|
889
908
|
|
|
890
|
-
self.
|
|
891
|
-
self.
|
|
909
|
+
self.preload_week_checkBox = QCheckBox(self.groupBox_6)
|
|
910
|
+
self.preload_week_checkBox.setObjectName(u"preload_week_checkBox")
|
|
892
911
|
|
|
893
|
-
self.gridLayout_6.addWidget(self.
|
|
912
|
+
self.gridLayout_6.addWidget(self.preload_week_checkBox, 2, 0, 1, 1)
|
|
894
913
|
|
|
895
|
-
self.
|
|
896
|
-
self.
|
|
914
|
+
self.preload_halfyear_checkBox = QCheckBox(self.groupBox_6)
|
|
915
|
+
self.preload_halfyear_checkBox.setObjectName(u"preload_halfyear_checkBox")
|
|
897
916
|
|
|
898
|
-
self.gridLayout_6.addWidget(self.
|
|
917
|
+
self.gridLayout_6.addWidget(self.preload_halfyear_checkBox, 5, 0, 1, 1)
|
|
899
918
|
|
|
900
|
-
self.
|
|
901
|
-
self.
|
|
919
|
+
self.preload_min1_checkBox = QCheckBox(self.groupBox_6)
|
|
920
|
+
self.preload_min1_checkBox.setObjectName(u"preload_min1_checkBox")
|
|
902
921
|
|
|
903
|
-
self.gridLayout_6.addWidget(self.
|
|
922
|
+
self.gridLayout_6.addWidget(self.preload_min1_checkBox, 7, 0, 1, 1)
|
|
904
923
|
|
|
905
|
-
self.
|
|
906
|
-
self.
|
|
924
|
+
self.preload_min60_spinBox = QSpinBox(self.groupBox_6)
|
|
925
|
+
self.preload_min60_spinBox.setObjectName(u"preload_min60_spinBox")
|
|
926
|
+
self.preload_min60_spinBox.setMaximum(999999)
|
|
907
927
|
|
|
908
|
-
self.gridLayout_6.addWidget(self.
|
|
928
|
+
self.gridLayout_6.addWidget(self.preload_min60_spinBox, 11, 2, 1, 1)
|
|
909
929
|
|
|
910
|
-
self.
|
|
911
|
-
self.
|
|
930
|
+
self.preload_month_spinBox = QSpinBox(self.groupBox_6)
|
|
931
|
+
self.preload_month_spinBox.setObjectName(u"preload_month_spinBox")
|
|
932
|
+
self.preload_month_spinBox.setMaximum(999999)
|
|
912
933
|
|
|
913
|
-
self.gridLayout_6.addWidget(self.
|
|
934
|
+
self.gridLayout_6.addWidget(self.preload_month_spinBox, 3, 2, 1, 1)
|
|
914
935
|
|
|
915
|
-
self.
|
|
916
|
-
self.
|
|
917
|
-
self.preload_min5_spinBox.setMaximum(999999)
|
|
936
|
+
self.label_24 = QLabel(self.groupBox_6)
|
|
937
|
+
self.label_24.setObjectName(u"label_24")
|
|
918
938
|
|
|
919
|
-
self.gridLayout_6.addWidget(self.
|
|
939
|
+
self.gridLayout_6.addWidget(self.label_24, 1, 1, 1, 1)
|
|
920
940
|
|
|
921
|
-
self.
|
|
922
|
-
self.
|
|
941
|
+
self.preload_hour2_spinBox = QSpinBox(self.groupBox_6)
|
|
942
|
+
self.preload_hour2_spinBox.setObjectName(u"preload_hour2_spinBox")
|
|
943
|
+
self.preload_hour2_spinBox.setMaximum(999999)
|
|
923
944
|
|
|
924
|
-
self.gridLayout_6.addWidget(self.
|
|
945
|
+
self.gridLayout_6.addWidget(self.preload_hour2_spinBox, 12, 2, 1, 1)
|
|
925
946
|
|
|
926
|
-
self.
|
|
927
|
-
self.
|
|
947
|
+
self.label_31 = QLabel(self.groupBox_6)
|
|
948
|
+
self.label_31.setObjectName(u"label_31")
|
|
928
949
|
|
|
929
|
-
self.gridLayout_6.addWidget(self.
|
|
950
|
+
self.gridLayout_6.addWidget(self.label_31, 8, 1, 1, 1)
|
|
930
951
|
|
|
931
|
-
self.
|
|
932
|
-
self.
|
|
933
|
-
self.
|
|
952
|
+
self.preload_day_spinBox = QSpinBox(self.groupBox_6)
|
|
953
|
+
self.preload_day_spinBox.setObjectName(u"preload_day_spinBox")
|
|
954
|
+
self.preload_day_spinBox.setMaximum(999999)
|
|
934
955
|
|
|
935
|
-
self.gridLayout_6.addWidget(self.
|
|
956
|
+
self.gridLayout_6.addWidget(self.preload_day_spinBox, 1, 2, 1, 1)
|
|
936
957
|
|
|
937
|
-
self.
|
|
938
|
-
self.
|
|
939
|
-
self.preload_year_spinBox.setMaximum(999999)
|
|
958
|
+
self.label_59 = QLabel(self.groupBox_6)
|
|
959
|
+
self.label_59.setObjectName(u"label_59")
|
|
940
960
|
|
|
941
|
-
self.gridLayout_6.addWidget(self.
|
|
961
|
+
self.gridLayout_6.addWidget(self.label_59, 0, 0, 1, 1)
|
|
942
962
|
|
|
943
963
|
|
|
944
964
|
self.verticalLayout_4.addLayout(self.gridLayout_6)
|
|
@@ -1323,7 +1343,7 @@ class Ui_MainWindow(object):
|
|
|
1323
1343
|
self.groupBox_7.setTitle(QCoreApplication.translate("MainWindow", u"\u5bfc\u5165\u8bbe\u7f6e", None))
|
|
1324
1344
|
self.import_weight_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u4e0b\u8f7d\u6743\u606f\u6570\u636e", None))
|
|
1325
1345
|
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\
|
|
1346
|
+
self.import_block_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u4e0b\u8f7d\u6307\u6570\u677f\u5757", None))
|
|
1327
1347
|
self.import_stock_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u80a1\u7968", None))
|
|
1328
1348
|
self.import_fund_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u57fa\u91d1", None))
|
|
1329
1349
|
self.import_future_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u671f\u8d27", None))
|
|
@@ -1402,31 +1422,35 @@ class Ui_MainWindow(object):
|
|
|
1402
1422
|
self.groupBox_6.setTitle(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u8bbe\u7f6e", None))
|
|
1403
1423
|
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
1424
|
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))
|
|
1405
|
-
self.
|
|
1406
|
-
self.
|
|
1407
|
-
self.
|
|
1408
|
-
self.
|
|
1425
|
+
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))
|
|
1426
|
+
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))
|
|
1427
|
+
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))
|
|
1428
|
+
self.preload_hour2_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d120\u5206\u949f\u7ebf", None))
|
|
1429
|
+
self.label_34.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1430
|
+
self.label_25.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1409
1431
|
self.preload_year_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5e74\u7ebf", None))
|
|
1432
|
+
self.label_42.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1433
|
+
self.save_pushButton.setText(QCoreApplication.translate("MainWindow", u"\u4fdd\u5b58\u8bbe\u7f6e", None))
|
|
1434
|
+
self.preload_min15_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d15\u5206\u949f\u7ebf", None))
|
|
1435
|
+
self.preload_quarter_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5b63\u7ebf", None))
|
|
1410
1436
|
self.preload_min30_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d30\u5206\u949f\u7ebf", None))
|
|
1437
|
+
self.label_26.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1438
|
+
self.label_32.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1439
|
+
self.preload_month_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u6708\u7ebf", None))
|
|
1440
|
+
self.preload_min5_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d5\u5206\u949f\u7ebf", None))
|
|
1441
|
+
self.label_27.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1411
1442
|
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
1443
|
self.preload_day_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u65e5\u7ebf", None))
|
|
1417
|
-
self.
|
|
1418
|
-
self.preload_min1_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d1\u5206\u949f\u7ebf", None))
|
|
1419
|
-
self.preload_min15_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d15\u5206\u949f\u7ebf", None))
|
|
1420
|
-
self.preload_min60_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d60\u5206\u949f\u7ebf", None))
|
|
1444
|
+
self.label_30.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1421
1445
|
self.label_29.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1446
|
+
self.preload_min60_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d60\u5206\u949f\u7ebf", None))
|
|
1447
|
+
self.label_33.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1422
1448
|
self.preload_week_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5468\u7ebf", None))
|
|
1423
|
-
self.
|
|
1449
|
+
self.preload_halfyear_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u534a\u5e74\u7ebf", None))
|
|
1450
|
+
self.preload_min1_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d1\u5206\u949f\u7ebf", None))
|
|
1451
|
+
self.label_24.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1424
1452
|
self.label_31.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1425
|
-
self.
|
|
1426
|
-
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
|
-
self.label_32.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
|
|
1453
|
+
self.label_59.setText(QCoreApplication.translate("MainWindow", u"0 - \u8868\u793a\u4e0d\u9650\u5236", None))
|
|
1430
1454
|
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_6), QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u8bbe\u7f6e", None))
|
|
1431
1455
|
self.collect_start_pushButton.setText(QCoreApplication.translate("MainWindow", u"\u542f\u52a8\u91c7\u96c6", None))
|
|
1432
1456
|
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 0xffff20a45b40; 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 ffff20a3f0b0>
|
|
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 0xffff20a469e0; 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 ffff20a804a0>
|
|
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 0xffff20a46f20; 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 ffff20a813f0>
|
|
154
154
|
def __init__(self, **kwargs):
|
|
155
155
|
"""
|
|
156
156
|
A simple constructor that allows initialization from kwargs.
|
|
@@ -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);
|
|
@@ -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,
|
|
@@ -43,7 +43,7 @@ public:
|
|
|
43
43
|
const KQuery& query) override;
|
|
44
44
|
|
|
45
45
|
private:
|
|
46
|
-
string _getTableName(const string& market, const string& code, KQuery::KType ktype);
|
|
46
|
+
static string _getTableName(const string& market, const string& code, KQuery::KType ktype);
|
|
47
47
|
KRecordList _getKRecordList(const string& market, const string& code,
|
|
48
48
|
const KQuery::KType& kType, size_t start_ix, size_t end_ix);
|
|
49
49
|
KRecordList _getKRecordList(const string& market, const string& code,
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#pragma once
|
|
9
9
|
|
|
10
10
|
#include <string>
|
|
11
|
+
#include "hikyuu/utilities/datetime/Datetime.h"
|
|
11
12
|
|
|
12
13
|
#ifndef HKU_API
|
|
13
14
|
#define HKU_API
|
|
@@ -15,6 +16,9 @@
|
|
|
15
16
|
|
|
16
17
|
namespace hku {
|
|
17
18
|
|
|
19
|
+
void sysinfo_init();
|
|
20
|
+
void sysinfo_clean();
|
|
21
|
+
|
|
18
22
|
/**
|
|
19
23
|
* 获取Hikyuu当前版本号
|
|
20
24
|
* @return 版本号
|
|
@@ -34,11 +38,26 @@ std::string HKU_API getVersionWithGit();
|
|
|
34
38
|
*/
|
|
35
39
|
bool HKU_API CanUpgrade();
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
struct HKU_API LatestVersionInfo {
|
|
42
|
+
int version{1003001};
|
|
43
|
+
Datetime release_date;
|
|
44
|
+
std::string remark;
|
|
45
|
+
LatestVersionInfo() = default;
|
|
46
|
+
LatestVersionInfo(const LatestVersionInfo&) = default;
|
|
47
|
+
LatestVersionInfo(LatestVersionInfo&& rhs)
|
|
48
|
+
: version(rhs.version), release_date(rhs.release_date), remark(std::move(rhs.remark)) {}
|
|
49
|
+
LatestVersionInfo& operator=(LatestVersionInfo&& rhs) {
|
|
50
|
+
if (this == &rhs) {
|
|
51
|
+
return *this;
|
|
52
|
+
}
|
|
53
|
+
version = rhs.version;
|
|
54
|
+
release_date = rhs.release_date;
|
|
55
|
+
remark = std::move(rhs.remark);
|
|
56
|
+
return *this;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
LatestVersionInfo HKU_API getLatestVersionInfo();
|
|
42
61
|
|
|
43
62
|
/** 发送反馈信息 */
|
|
44
63
|
void HKU_API sendFeedback();
|
|
@@ -338,8 +338,8 @@ private:
|
|
|
338
338
|
|
|
339
339
|
size_t act_result_num = 0;
|
|
340
340
|
ar& BOOST_SERIALIZATION_NVP(act_result_num);
|
|
341
|
+
_readyBuffer(0, act_result_num);
|
|
341
342
|
for (size_t i = 0; i < act_result_num; ++i) {
|
|
342
|
-
m_pBuffer[i] = new vector<value_t>();
|
|
343
343
|
size_t count = 0;
|
|
344
344
|
ar& bs::make_nvp<size_t>(format("count_{}", i).c_str(), count);
|
|
345
345
|
vector<value_t>& values = *m_pBuffer[i];
|