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.
Files changed (89) hide show
  1. hikyuu/__init__.py +4 -1
  2. hikyuu/__init__.pyi +17 -11
  3. hikyuu/analysis/__init__.pyi +5 -1
  4. hikyuu/analysis/analysis.pyi +6 -2
  5. hikyuu/core.pyi +7 -3
  6. hikyuu/cpp/core310.pyi +49 -6
  7. hikyuu/cpp/core310.so +0 -0
  8. hikyuu/cpp/core311.pyi +49 -6
  9. hikyuu/cpp/core311.so +0 -0
  10. hikyuu/cpp/core312.pyi +49 -6
  11. hikyuu/cpp/core312.so +0 -0
  12. hikyuu/cpp/core313.pyi +49 -6
  13. hikyuu/cpp/core313.so +0 -0
  14. hikyuu/cpp/i18n/zh_CN/hikyuu.mo +0 -0
  15. hikyuu/cpp/i18n/zh_CN/hikyuu_plugin.mo +0 -0
  16. hikyuu/cpp/libhikyuu.so +0 -0
  17. hikyuu/data/clickhouse_upgrade/0001.sql +2 -0
  18. hikyuu/data/common_clickhouse.py +1 -3
  19. hikyuu/data/hku_config_template.py +6 -0
  20. hikyuu/data/mysql_upgrade/0029.sql +2 -0
  21. hikyuu/data/pytdx_to_clickhouse.py +85 -31
  22. hikyuu/data/pytdx_to_h5.py +74 -29
  23. hikyuu/data/pytdx_to_mysql.py +63 -19
  24. hikyuu/data/pytdx_weight_to_clickhouse.py +2 -0
  25. hikyuu/data/pytdx_weight_to_mysql.py +2 -0
  26. hikyuu/data/pytdx_weight_to_sqlite.py +2 -0
  27. hikyuu/data/sqlite_upgrade/0029.sql +4 -0
  28. hikyuu/draw/drawplot/bokeh_draw.pyi +10 -6
  29. hikyuu/draw/drawplot/echarts_draw.pyi +10 -6
  30. hikyuu/draw/drawplot/matplotlib_draw.py +8 -2
  31. hikyuu/draw/drawplot/matplotlib_draw.pyi +10 -6
  32. hikyuu/extend.pyi +6 -2
  33. hikyuu/gui/HikyuuTDX.py +12 -2
  34. hikyuu/gui/data/MainWindow.py +166 -142
  35. hikyuu/hub.pyi +6 -6
  36. hikyuu/include/hikyuu/StockManager.h +4 -0
  37. hikyuu/include/hikyuu/StrategyContext.h +4 -4
  38. hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +5 -1
  39. hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +1 -1
  40. hikyuu/include/hikyuu/global/sysinfo.h +24 -5
  41. hikyuu/include/hikyuu/indicator/IndicatorImp.h +1 -1
  42. hikyuu/include/hikyuu/plugin/KDataToClickHouseImporter.h +40 -0
  43. hikyuu/include/hikyuu/plugin/KDataToMySQLImporter.h +40 -0
  44. hikyuu/include/hikyuu/plugin/checkdata.h +20 -0
  45. hikyuu/include/hikyuu/plugin/hkuextra.h +2 -0
  46. hikyuu/include/hikyuu/plugin/interface/CheckDataPluginInterface.h +25 -0
  47. hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +2 -0
  48. hikyuu/include/hikyuu/plugin/interface/ImportKDataToClickHousePluginInterface.h +44 -0
  49. hikyuu/include/hikyuu/plugin/interface/ImportKDataToMySQLPluginInterface.h +42 -0
  50. hikyuu/include/hikyuu/plugin/interface/plugins.h +6 -0
  51. hikyuu/include/hikyuu/python/convert_any.h +9 -6
  52. hikyuu/include/hikyuu/strategy/Strategy.h +1 -1
  53. hikyuu/include/hikyuu/trade_manage/TradeRecord.h +2 -1
  54. hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +1 -0
  55. hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedAmount.h +26 -0
  56. hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixAmountFunds.h +18 -0
  57. hikyuu/include/hikyuu/utilities/Log.h +6 -7
  58. hikyuu/include/hikyuu/utilities/Parameter.h +17 -0
  59. hikyuu/include/hikyuu/utilities/config.h +28 -0
  60. hikyuu/include/hikyuu/utilities/plugin/PluginBase.h +17 -2
  61. hikyuu/include/hikyuu/utilities/plugin/PluginManager.h +41 -22
  62. hikyuu/include/hikyuu/utilities/thread/GlobalStealThreadPool.h +1 -2
  63. hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +1 -1
  64. hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +285 -0
  65. hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +296 -0
  66. hikyuu/include/hikyuu/utilities/thread/WorkStealQueue.h +9 -8
  67. hikyuu/include/hikyuu/utilities/thread/algorithm.h +64 -14
  68. hikyuu/include/hikyuu/version.h +4 -4
  69. hikyuu/plugin/libbacktest.so +0 -0
  70. hikyuu/plugin/libcheckdata.so +0 -0
  71. hikyuu/plugin/libclickhousedriver.so +0 -0
  72. hikyuu/plugin/libdataserver.so +0 -0
  73. hikyuu/plugin/libdataserver_parquet.so +0 -0
  74. hikyuu/plugin/libdevice.so +0 -0
  75. hikyuu/plugin/libextind.so +0 -0
  76. hikyuu/plugin/libhkuextra.so +0 -0
  77. hikyuu/plugin/libimport2ch.so +0 -0
  78. hikyuu/plugin/libimport2hdf5.so +0 -0
  79. hikyuu/plugin/libimport2mysql.so +0 -0
  80. hikyuu/plugin/libtmreport.so +0 -0
  81. hikyuu/trade_manage/__init__.pyi +10 -6
  82. hikyuu/trade_manage/trade.pyi +10 -6
  83. hikyuu/trade_sys/trade_sys.py +3 -1
  84. hikyuu/util/singleton.pyi +1 -1
  85. {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/METADATA +5 -1
  86. {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/RECORD +89 -72
  87. {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/WHEEL +0 -0
  88. {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/entry_points.txt +0 -0
  89. {hikyuu-2.7.1.1.dist-info → hikyuu-2.7.2.dist-info}/top_level.txt +0 -0
@@ -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.0
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.preload_month_spinBox = QSpinBox(self.groupBox_6)
743
- self.preload_month_spinBox.setObjectName(u"preload_month_spinBox")
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.preload_month_spinBox, 2, 2, 1, 1)
760
+ self.gridLayout_6.addWidget(self.preload_hour2_checkBox, 12, 0, 1, 1)
747
761
 
748
- self.preload_quarter_spinBox = QSpinBox(self.groupBox_6)
749
- self.preload_quarter_spinBox.setObjectName(u"preload_quarter_spinBox")
750
- self.preload_quarter_spinBox.setMaximum(999999)
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.preload_quarter_spinBox, 3, 2, 1, 1)
766
+ self.gridLayout_6.addWidget(self.preload_year_spinBox, 6, 2, 1, 1)
753
767
 
754
- self.preload_min5_checkBox = QCheckBox(self.groupBox_6)
755
- self.preload_min5_checkBox.setObjectName(u"preload_min5_checkBox")
768
+ self.label_34 = QLabel(self.groupBox_6)
769
+ self.label_34.setObjectName(u"label_34")
756
770
 
757
- self.gridLayout_6.addWidget(self.preload_min5_checkBox, 7, 0, 1, 1)
771
+ self.gridLayout_6.addWidget(self.label_34, 11, 1, 1, 1)
758
772
 
759
- self.label_33 = QLabel(self.groupBox_6)
760
- self.label_33.setObjectName(u"label_33")
773
+ self.label_25 = QLabel(self.groupBox_6)
774
+ self.label_25.setObjectName(u"label_25")
761
775
 
762
- self.gridLayout_6.addWidget(self.label_33, 9, 1, 1, 1)
776
+ self.gridLayout_6.addWidget(self.label_25, 2, 1, 1, 1)
763
777
 
764
- self.label_26 = QLabel(self.groupBox_6)
765
- self.label_26.setObjectName(u"label_26")
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.label_26, 2, 1, 1, 1)
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, 1, 2, 1, 1)
798
+ self.gridLayout_6.addWidget(self.preload_week_spinBox, 2, 2, 1, 1)
774
799
 
775
- self.label_27 = QLabel(self.groupBox_6)
776
- self.label_27.setObjectName(u"label_27")
800
+ self.save_pushButton = QPushButton(self.groupBox_6)
801
+ self.save_pushButton.setObjectName(u"save_pushButton")
777
802
 
778
- self.gridLayout_6.addWidget(self.label_27, 3, 1, 1, 1)
803
+ self.gridLayout_6.addWidget(self.save_pushButton, 5, 4, 1, 1)
779
804
 
780
- self.preload_year_checkBox = QCheckBox(self.groupBox_6)
781
- self.preload_year_checkBox.setObjectName(u"preload_year_checkBox")
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.preload_year_checkBox, 5, 0, 1, 1)
808
+ self.gridLayout_6.addWidget(self.preload_min15_checkBox, 9, 0, 1, 1)
784
809
 
785
- self.preload_halfyear_spinBox = QSpinBox(self.groupBox_6)
786
- self.preload_halfyear_spinBox.setObjectName(u"preload_halfyear_spinBox")
787
- self.preload_halfyear_spinBox.setMaximum(999999)
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.preload_halfyear_spinBox, 4, 2, 1, 1)
814
+ self.gridLayout_6.addWidget(self.preload_min1_spinBox, 7, 2, 1, 1)
790
815
 
791
- self.preload_day_spinBox = QSpinBox(self.groupBox_6)
792
- self.preload_day_spinBox.setObjectName(u"preload_day_spinBox")
793
- self.preload_day_spinBox.setMaximum(999999)
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.preload_day_spinBox, 0, 2, 1, 1)
820
+ self.gridLayout_6.addWidget(self.preload_min5_spinBox, 8, 2, 1, 1)
796
821
 
797
- self.preload_min30_checkBox = QCheckBox(self.groupBox_6)
798
- self.preload_min30_checkBox.setObjectName(u"preload_min30_checkBox")
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.preload_min30_checkBox, 9, 0, 1, 1)
825
+ self.gridLayout_6.addWidget(self.preload_quarter_checkBox, 4, 0, 1, 1)
801
826
 
802
- self.label_28 = QLabel(self.groupBox_6)
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.addWidget(self.label_28, 4, 1, 1, 1)
829
+ self.gridLayout_6.addItem(self.horizontalSpacer_6, 5, 3, 1, 1)
806
830
 
807
- self.preload_min15_spinBox = QSpinBox(self.groupBox_6)
808
- self.preload_min15_spinBox.setObjectName(u"preload_min15_spinBox")
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.preload_min15_spinBox, 8, 2, 1, 1)
834
+ self.gridLayout_6.addWidget(self.preload_min30_checkBox, 10, 0, 1, 1)
812
835
 
813
- self.save_pushButton = QPushButton(self.groupBox_6)
814
- self.save_pushButton.setObjectName(u"save_pushButton")
836
+ self.label_26 = QLabel(self.groupBox_6)
837
+ self.label_26.setObjectName(u"label_26")
815
838
 
816
- self.gridLayout_6.addWidget(self.save_pushButton, 4, 4, 1, 1)
839
+ self.gridLayout_6.addWidget(self.label_26, 3, 1, 1, 1)
817
840
 
818
- self.label_34 = QLabel(self.groupBox_6)
819
- self.label_34.setObjectName(u"label_34")
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.label_34, 10, 1, 1, 1)
845
+ self.gridLayout_6.addWidget(self.preload_min30_spinBox, 10, 2, 1, 1)
822
846
 
823
- self.preload_hour2_checkBox = QCheckBox(self.groupBox_6)
824
- self.preload_hour2_checkBox.setObjectName(u"preload_hour2_checkBox")
847
+ self.label_32 = QLabel(self.groupBox_6)
848
+ self.label_32.setObjectName(u"label_32")
825
849
 
826
- self.gridLayout_6.addWidget(self.preload_hour2_checkBox, 11, 0, 1, 1)
850
+ self.gridLayout_6.addWidget(self.label_32, 9, 1, 1, 1)
827
851
 
828
- self.preload_halfyear_checkBox = QCheckBox(self.groupBox_6)
829
- self.preload_halfyear_checkBox.setObjectName(u"preload_halfyear_checkBox")
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.preload_halfyear_checkBox, 4, 0, 1, 1)
855
+ self.gridLayout_6.addWidget(self.preload_month_checkBox, 3, 0, 1, 1)
832
856
 
833
- self.preload_day_checkBox = QCheckBox(self.groupBox_6)
834
- self.preload_day_checkBox.setObjectName(u"preload_day_checkBox")
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.preload_day_checkBox, 0, 0, 1, 1)
860
+ self.gridLayout_6.addWidget(self.preload_min5_checkBox, 8, 0, 1, 1)
837
861
 
838
- self.label_24 = QLabel(self.groupBox_6)
839
- self.label_24.setObjectName(u"label_24")
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.label_24, 0, 1, 1, 1)
866
+ self.gridLayout_6.addWidget(self.preload_halfyear_spinBox, 5, 2, 1, 1)
842
867
 
843
- self.preload_min1_checkBox = QCheckBox(self.groupBox_6)
844
- self.preload_min1_checkBox.setObjectName(u"preload_min1_checkBox")
868
+ self.label_27 = QLabel(self.groupBox_6)
869
+ self.label_27.setObjectName(u"label_27")
845
870
 
846
- self.gridLayout_6.addWidget(self.preload_min1_checkBox, 6, 0, 1, 1)
871
+ self.gridLayout_6.addWidget(self.label_27, 4, 1, 1, 1)
847
872
 
848
- self.preload_min15_checkBox = QCheckBox(self.groupBox_6)
849
- self.preload_min15_checkBox.setObjectName(u"preload_min15_checkBox")
873
+ self.label_28 = QLabel(self.groupBox_6)
874
+ self.label_28.setObjectName(u"label_28")
850
875
 
851
- self.gridLayout_6.addWidget(self.preload_min15_checkBox, 8, 0, 1, 1)
876
+ self.gridLayout_6.addWidget(self.label_28, 5, 1, 1, 1)
852
877
 
853
- self.preload_min1_spinBox = QSpinBox(self.groupBox_6)
854
- self.preload_min1_spinBox.setObjectName(u"preload_min1_spinBox")
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.preload_min1_spinBox, 6, 2, 1, 1)
881
+ self.gridLayout_6.addWidget(self.preload_day_checkBox, 1, 0, 1, 1)
858
882
 
859
- self.preload_min60_checkBox = QCheckBox(self.groupBox_6)
860
- self.preload_min60_checkBox.setObjectName(u"preload_min60_checkBox")
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.preload_min60_checkBox, 10, 0, 1, 1)
887
+ self.gridLayout_6.addWidget(self.preload_quarter_spinBox, 4, 2, 1, 1)
863
888
 
864
- self.preload_min60_spinBox = QSpinBox(self.groupBox_6)
865
- self.preload_min60_spinBox.setObjectName(u"preload_min60_spinBox")
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.preload_min60_spinBox, 10, 2, 1, 1)
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, 5, 1, 1, 1)
897
+ self.gridLayout_6.addWidget(self.label_29, 6, 1, 1, 1)
874
898
 
875
- self.preload_hour2_spinBox = QSpinBox(self.groupBox_6)
876
- self.preload_hour2_spinBox.setObjectName(u"preload_hour2_spinBox")
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.preload_week_checkBox, 1, 0, 1, 1)
902
+ self.gridLayout_6.addWidget(self.preload_min60_checkBox, 11, 0, 1, 1)
885
903
 
886
- self.horizontalSpacer_6 = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
904
+ self.label_33 = QLabel(self.groupBox_6)
905
+ self.label_33.setObjectName(u"label_33")
887
906
 
888
- self.gridLayout_6.addItem(self.horizontalSpacer_6, 4, 3, 1, 1)
907
+ self.gridLayout_6.addWidget(self.label_33, 10, 1, 1, 1)
889
908
 
890
- self.preload_quarter_checkBox = QCheckBox(self.groupBox_6)
891
- self.preload_quarter_checkBox.setObjectName(u"preload_quarter_checkBox")
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.preload_quarter_checkBox, 3, 0, 1, 1)
912
+ self.gridLayout_6.addWidget(self.preload_week_checkBox, 2, 0, 1, 1)
894
913
 
895
- self.label_31 = QLabel(self.groupBox_6)
896
- self.label_31.setObjectName(u"label_31")
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.label_31, 7, 1, 1, 1)
917
+ self.gridLayout_6.addWidget(self.preload_halfyear_checkBox, 5, 0, 1, 1)
899
918
 
900
- self.label_25 = QLabel(self.groupBox_6)
901
- self.label_25.setObjectName(u"label_25")
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.label_25, 1, 1, 1, 1)
922
+ self.gridLayout_6.addWidget(self.preload_min1_checkBox, 7, 0, 1, 1)
904
923
 
905
- self.preload_month_checkBox = QCheckBox(self.groupBox_6)
906
- self.preload_month_checkBox.setObjectName(u"preload_month_checkBox")
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.preload_month_checkBox, 2, 0, 1, 1)
928
+ self.gridLayout_6.addWidget(self.preload_min60_spinBox, 11, 2, 1, 1)
909
929
 
910
- self.label_30 = QLabel(self.groupBox_6)
911
- self.label_30.setObjectName(u"label_30")
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.label_30, 6, 1, 1, 1)
934
+ self.gridLayout_6.addWidget(self.preload_month_spinBox, 3, 2, 1, 1)
914
935
 
915
- self.preload_min5_spinBox = QSpinBox(self.groupBox_6)
916
- self.preload_min5_spinBox.setObjectName(u"preload_min5_spinBox")
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.preload_min5_spinBox, 7, 2, 1, 1)
939
+ self.gridLayout_6.addWidget(self.label_24, 1, 1, 1, 1)
920
940
 
921
- self.label_42 = QLabel(self.groupBox_6)
922
- self.label_42.setObjectName(u"label_42")
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.label_42, 11, 1, 1, 1)
945
+ self.gridLayout_6.addWidget(self.preload_hour2_spinBox, 12, 2, 1, 1)
925
946
 
926
- self.label_32 = QLabel(self.groupBox_6)
927
- self.label_32.setObjectName(u"label_32")
947
+ self.label_31 = QLabel(self.groupBox_6)
948
+ self.label_31.setObjectName(u"label_31")
928
949
 
929
- self.gridLayout_6.addWidget(self.label_32, 8, 1, 1, 1)
950
+ self.gridLayout_6.addWidget(self.label_31, 8, 1, 1, 1)
930
951
 
931
- self.preload_min30_spinBox = QSpinBox(self.groupBox_6)
932
- self.preload_min30_spinBox.setObjectName(u"preload_min30_spinBox")
933
- self.preload_min30_spinBox.setMaximum(999999)
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.preload_min30_spinBox, 9, 2, 1, 1)
956
+ self.gridLayout_6.addWidget(self.preload_day_spinBox, 1, 2, 1, 1)
936
957
 
937
- self.preload_year_spinBox = QSpinBox(self.groupBox_6)
938
- self.preload_year_spinBox.setObjectName(u"preload_year_spinBox")
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.preload_year_spinBox, 5, 2, 1, 1)
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\u884c\u4e1a\u4e0e\u6307\u6570\u677f\u5757", None))
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.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))
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.label_24.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
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.preload_quarter_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d\u5b63\u7ebf", None))
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.label_25.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
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 0xffff4fe35930; ConfigModel>
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 ffffb407d620>
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 0xffff4fe367d0; HubModel>
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 ffff4fe63c90>
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 0xffff4fe36d10; PartModel>
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 ffff4fe78cc0>
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.
@@ -273,6 +273,10 @@ public:
273
273
  m_cancel_load = true;
274
274
  }
275
275
 
276
+ bool hasCancelLoad() const {
277
+ return m_cancel_load;
278
+ }
279
+
276
280
  public:
277
281
  typedef StockMapIterator const_iterator;
278
282
  const_iterator begin() const {
@@ -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, int>& preloadNum = {});
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, int>& preloadNum);
80
+ void setPreloadNum(const unordered_map<string, int64_t>& preloadNum);
81
81
 
82
- const unordered_map<string, int>& getPreloadNum() const noexcept {
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, int> m_preloadNum;
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, const KQuery::KType& ktype);
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
- * @return std::string
40
- */
41
- std::string HKU_API getLatestVersion();
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];