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.
Files changed (149) hide show
  1. hikyuu/__init__.py +25 -7
  2. hikyuu/__init__.pyi +23 -12
  3. hikyuu/analysis/__init__.pyi +6 -1
  4. hikyuu/analysis/analysis.pyi +7 -2
  5. hikyuu/core.pyi +8 -3
  6. hikyuu/cpp/core310.pyi +94 -24
  7. hikyuu/cpp/core310.so +0 -0
  8. hikyuu/cpp/core311.pyi +94 -24
  9. hikyuu/cpp/core311.so +0 -0
  10. hikyuu/cpp/core312.pyi +94 -24
  11. hikyuu/cpp/core312.so +0 -0
  12. hikyuu/cpp/core313.pyi +94 -24
  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/libboost_atomic.so +0 -0
  17. hikyuu/cpp/libboost_atomic.so.1.90.0 +0 -0
  18. hikyuu/cpp/{libboost_charconv-mt.so → libboost_charconv.so} +0 -0
  19. hikyuu/cpp/{libboost_charconv-mt.so.1.88.0 → libboost_charconv.so.1.90.0} +0 -0
  20. hikyuu/cpp/libboost_chrono.so +0 -0
  21. hikyuu/cpp/libboost_chrono.so.1.90.0 +0 -0
  22. hikyuu/cpp/libboost_container.so +0 -0
  23. hikyuu/cpp/libboost_container.so.1.90.0 +0 -0
  24. hikyuu/cpp/libboost_date_time.so +0 -0
  25. hikyuu/cpp/libboost_date_time.so.1.90.0 +0 -0
  26. hikyuu/cpp/libboost_locale.so +0 -0
  27. hikyuu/cpp/libboost_locale.so.1.90.0 +0 -0
  28. hikyuu/cpp/libboost_random.so +0 -0
  29. hikyuu/cpp/libboost_random.so.1.90.0 +0 -0
  30. hikyuu/cpp/libboost_serialization.so +0 -0
  31. hikyuu/cpp/libboost_serialization.so.1.90.0 +0 -0
  32. hikyuu/cpp/libboost_thread.so +0 -0
  33. hikyuu/cpp/libboost_thread.so.1.90.0 +0 -0
  34. hikyuu/cpp/libboost_wserialization.so +0 -0
  35. hikyuu/cpp/libboost_wserialization.so.1.90.0 +0 -0
  36. hikyuu/cpp/libhikyuu.so +0 -0
  37. hikyuu/cpp/libsqlite3.so +0 -0
  38. hikyuu/data/clickhouse_upgrade/0001.sql +2 -0
  39. hikyuu/data/common_clickhouse.py +1 -3
  40. hikyuu/data/download_block.py +1 -1
  41. hikyuu/data/hku_config_template.py +30 -3
  42. hikyuu/data/mysql_upgrade/0029.sql +2 -0
  43. hikyuu/data/pytdx_to_clickhouse.py +86 -32
  44. hikyuu/data/pytdx_to_h5.py +73 -28
  45. hikyuu/data/pytdx_to_mysql.py +65 -21
  46. hikyuu/data/pytdx_weight_to_clickhouse.py +2 -0
  47. hikyuu/data/pytdx_weight_to_mysql.py +2 -0
  48. hikyuu/data/pytdx_weight_to_sqlite.py +2 -0
  49. hikyuu/data/sqlite_upgrade/0029.sql +4 -0
  50. hikyuu/data/tdx_to_clickhouse.py +2 -2
  51. hikyuu/data/tdx_to_h5.py +11 -11
  52. hikyuu/data/tdx_to_mysql.py +2 -2
  53. hikyuu/draw/drawplot/bokeh_draw.pyi +14 -7
  54. hikyuu/draw/drawplot/echarts_draw.pyi +14 -7
  55. hikyuu/draw/drawplot/matplotlib_draw.py +8 -2
  56. hikyuu/draw/drawplot/matplotlib_draw.pyi +14 -7
  57. hikyuu/extend.pyi +8 -3
  58. hikyuu/gui/HikyuuTDX.py +42 -3
  59. hikyuu/gui/data/MainWindow.py +189 -129
  60. hikyuu/hub.pyi +6 -6
  61. hikyuu/include/hikyuu/StockManager.h +17 -2
  62. hikyuu/include/hikyuu/StrategyContext.h +4 -4
  63. hikyuu/include/hikyuu/data_driver/BaseInfoDriver.h +2 -1
  64. hikyuu/include/hikyuu/data_driver/KDataDriver.h +2 -4
  65. hikyuu/include/hikyuu/data_driver/kdata/mysql/MySQLKDataDriver.h +5 -1
  66. hikyuu/include/hikyuu/data_driver/kdata/sqlite/SQLiteKDataDriver.h +1 -1
  67. hikyuu/include/hikyuu/global/sysinfo.h +24 -5
  68. hikyuu/include/hikyuu/indicator/IndicatorImp.h +1 -1
  69. hikyuu/include/hikyuu/plugin/KDataToClickHouseImporter.h +40 -0
  70. hikyuu/include/hikyuu/plugin/KDataToMySQLImporter.h +40 -0
  71. hikyuu/include/hikyuu/plugin/checkdata.h +20 -0
  72. hikyuu/include/hikyuu/plugin/extind.h +3 -0
  73. hikyuu/include/hikyuu/plugin/hkuextra.h +2 -0
  74. hikyuu/include/hikyuu/plugin/interface/CheckDataPluginInterface.h +25 -0
  75. hikyuu/include/hikyuu/plugin/interface/HkuExtraPluginInterface.h +2 -0
  76. hikyuu/include/hikyuu/plugin/interface/ImportKDataToClickHousePluginInterface.h +44 -0
  77. hikyuu/include/hikyuu/plugin/interface/ImportKDataToMySQLPluginInterface.h +42 -0
  78. hikyuu/include/hikyuu/plugin/interface/plugins.h +6 -0
  79. hikyuu/include/hikyuu/python/convert_any.h +9 -6
  80. hikyuu/include/hikyuu/python/pybind_utils.h +1 -1
  81. hikyuu/include/hikyuu/strategy/Strategy.h +1 -1
  82. hikyuu/include/hikyuu/trade_manage/TradeManagerBase.h +0 -1
  83. hikyuu/include/hikyuu/trade_manage/TradeRecord.h +2 -1
  84. hikyuu/include/hikyuu/trade_sys/allocatefunds/AllocateFundsBase.h +0 -1
  85. hikyuu/include/hikyuu/trade_sys/allocatefunds/build_in.h +1 -0
  86. hikyuu/include/hikyuu/trade_sys/allocatefunds/crt/AF_FixedAmount.h +26 -0
  87. hikyuu/include/hikyuu/trade_sys/allocatefunds/imp/FixAmountFunds.h +18 -0
  88. hikyuu/include/hikyuu/trade_sys/condition/ConditionBase.h +0 -1
  89. hikyuu/include/hikyuu/trade_sys/environment/EnvironmentBase.h +0 -1
  90. hikyuu/include/hikyuu/trade_sys/moneymanager/MoneyManagerBase.h +0 -1
  91. hikyuu/include/hikyuu/trade_sys/multifactor/MultiFactorBase.h +0 -1
  92. hikyuu/include/hikyuu/trade_sys/multifactor/NormalizeBase.h +0 -1
  93. hikyuu/include/hikyuu/trade_sys/multifactor/ScoresFilterBase.h +0 -1
  94. hikyuu/include/hikyuu/trade_sys/portfolio/Portfolio.h +13 -13
  95. hikyuu/include/hikyuu/trade_sys/profitgoal/ProfitGoalBase.h +9 -11
  96. hikyuu/include/hikyuu/trade_sys/selector/SelectorBase.h +0 -1
  97. hikyuu/include/hikyuu/trade_sys/signal/SignalBase.h +0 -1
  98. hikyuu/include/hikyuu/trade_sys/slippage/SlippageBase.h +0 -1
  99. hikyuu/include/hikyuu/trade_sys/stoploss/StoplossBase.h +0 -1
  100. hikyuu/include/hikyuu/trade_sys/system/System.h +1 -2
  101. hikyuu/include/hikyuu/utilities/Log.h +6 -7
  102. hikyuu/include/hikyuu/utilities/Parameter.h +17 -0
  103. hikyuu/include/hikyuu/utilities/config.h +28 -0
  104. hikyuu/include/hikyuu/utilities/plugin/PluginBase.h +17 -2
  105. hikyuu/include/hikyuu/utilities/plugin/PluginManager.h +41 -22
  106. hikyuu/include/hikyuu/utilities/thread/GlobalStealThreadPool.h +1 -2
  107. hikyuu/include/hikyuu/utilities/thread/GlobalThreadPool.h +1 -1
  108. hikyuu/include/hikyuu/utilities/thread/MQStealThreadPool.h +286 -0
  109. hikyuu/include/hikyuu/utilities/thread/MQThreadPool.h +1 -0
  110. hikyuu/include/hikyuu/utilities/thread/StealThreadPool.h +297 -0
  111. hikyuu/include/hikyuu/utilities/thread/ThreadPool.h +1 -0
  112. hikyuu/include/hikyuu/utilities/thread/WorkStealQueue.h +9 -8
  113. hikyuu/include/hikyuu/utilities/thread/algorithm.h +64 -14
  114. hikyuu/include/hikyuu/version.h +4 -4
  115. hikyuu/plugin/libbacktest.so +0 -0
  116. hikyuu/plugin/libcheckdata.so +0 -0
  117. hikyuu/plugin/libclickhousedriver.so +0 -0
  118. hikyuu/plugin/libdataserver.so +0 -0
  119. hikyuu/plugin/libdataserver_parquet.so +0 -0
  120. hikyuu/plugin/libdevice.so +0 -0
  121. hikyuu/plugin/libextind.so +0 -0
  122. hikyuu/plugin/libhkuextra.so +0 -0
  123. hikyuu/plugin/libimport2ch.so +0 -0
  124. hikyuu/plugin/libimport2hdf5.so +0 -0
  125. hikyuu/plugin/libimport2mysql.so +0 -0
  126. hikyuu/plugin/libtmreport.so +0 -0
  127. hikyuu/trade_manage/__init__.pyi +12 -7
  128. hikyuu/trade_manage/trade.pyi +12 -7
  129. hikyuu/trade_sys/trade_sys.py +54 -5
  130. hikyuu/util/__init__.pyi +1 -1
  131. hikyuu/util/singleton.pyi +1 -1
  132. {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/METADATA +10 -4
  133. {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/RECORD +136 -114
  134. hikyuu/cpp/libboost_chrono-mt.so +0 -0
  135. hikyuu/cpp/libboost_chrono-mt.so.1.88.0 +0 -0
  136. hikyuu/cpp/libboost_date_time-mt.so +0 -0
  137. hikyuu/cpp/libboost_date_time-mt.so.1.88.0 +0 -0
  138. hikyuu/cpp/libboost_serialization-mt.so +0 -0
  139. hikyuu/cpp/libboost_serialization-mt.so.1.88.0 +0 -0
  140. hikyuu/cpp/libboost_system-mt.so +0 -0
  141. hikyuu/cpp/libboost_system-mt.so.1.88.0 +0 -0
  142. hikyuu/cpp/libboost_thread-mt.so +0 -0
  143. hikyuu/cpp/libboost_thread-mt.so.1.88.0 +0 -0
  144. hikyuu/cpp/libboost_wserialization-mt.so +0 -0
  145. hikyuu/cpp/libboost_wserialization-mt.so.1.88.0 +0 -0
  146. hikyuu/data/pytdx_to_taos.py +0 -736
  147. {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/WHEEL +0 -0
  148. {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.dist-info}/entry_points.txt +0 -0
  149. {hikyuu-2.7.0.dist-info → hikyuu-2.7.3.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
 
@@ -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, 2, 2, 1, 1)
761
+ self.gridLayout_6.addWidget(self.preload_month_spinBox, 3, 2, 1, 1)
747
762
 
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)
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.preload_quarter_spinBox, 3, 2, 1, 1)
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, 7, 0, 1, 1)
772
+ self.gridLayout_6.addWidget(self.preload_min5_checkBox, 8, 0, 1, 1)
758
773
 
759
- self.label_33 = QLabel(self.groupBox_6)
760
- self.label_33.setObjectName(u"label_33")
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.label_33, 9, 1, 1, 1)
777
+ self.gridLayout_6.addWidget(self.preload_min1_checkBox, 7, 0, 1, 1)
763
778
 
764
- self.label_26 = QLabel(self.groupBox_6)
765
- self.label_26.setObjectName(u"label_26")
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.gridLayout_6.addWidget(self.label_26, 2, 1, 1, 1)
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, 1, 2, 1, 1)
799
+ self.gridLayout_6.addWidget(self.preload_week_spinBox, 2, 2, 1, 1)
774
800
 
775
- self.label_27 = QLabel(self.groupBox_6)
776
- self.label_27.setObjectName(u"label_27")
801
+ self.label_25 = QLabel(self.groupBox_6)
802
+ self.label_25.setObjectName(u"label_25")
777
803
 
778
- self.gridLayout_6.addWidget(self.label_27, 3, 1, 1, 1)
804
+ self.gridLayout_6.addWidget(self.label_25, 2, 1, 1, 1)
779
805
 
780
- self.preload_year_checkBox = QCheckBox(self.groupBox_6)
781
- self.preload_year_checkBox.setObjectName(u"preload_year_checkBox")
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.preload_year_checkBox, 5, 0, 1, 1)
810
+ self.gridLayout_6.addWidget(self.preload_quarter_spinBox, 4, 2, 1, 1)
784
811
 
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)
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.gridLayout_6.addWidget(self.preload_halfyear_spinBox, 4, 2, 1, 1)
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, 0, 2, 1, 1)
826
+ self.gridLayout_6.addWidget(self.preload_day_spinBox, 1, 2, 1, 1)
796
827
 
797
- self.preload_min30_checkBox = QCheckBox(self.groupBox_6)
798
- self.preload_min30_checkBox.setObjectName(u"preload_min30_checkBox")
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.preload_min30_checkBox, 9, 0, 1, 1)
832
+ self.gridLayout_6.addWidget(self.preload_min5_spinBox, 8, 2, 1, 1)
801
833
 
802
- self.label_28 = QLabel(self.groupBox_6)
803
- self.label_28.setObjectName(u"label_28")
834
+ self.save_pushButton = QPushButton(self.groupBox_6)
835
+ self.save_pushButton.setObjectName(u"save_pushButton")
804
836
 
805
- self.gridLayout_6.addWidget(self.label_28, 4, 1, 1, 1)
837
+ self.gridLayout_6.addWidget(self.save_pushButton, 5, 4, 1, 1)
806
838
 
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)
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.preload_min15_spinBox, 8, 2, 1, 1)
842
+ self.gridLayout_6.addWidget(self.preload_min30_checkBox, 10, 0, 1, 1)
812
843
 
813
- self.save_pushButton = QPushButton(self.groupBox_6)
814
- self.save_pushButton.setObjectName(u"save_pushButton")
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.save_pushButton, 4, 4, 1, 1)
847
+ self.gridLayout_6.addWidget(self.preload_quarter_checkBox, 4, 0, 1, 1)
817
848
 
818
- self.label_34 = QLabel(self.groupBox_6)
819
- self.label_34.setObjectName(u"label_34")
849
+ self.label_29 = QLabel(self.groupBox_6)
850
+ self.label_29.setObjectName(u"label_29")
820
851
 
821
- self.gridLayout_6.addWidget(self.label_34, 10, 1, 1, 1)
852
+ self.gridLayout_6.addWidget(self.label_29, 6, 1, 1, 1)
822
853
 
823
- self.preload_hour2_checkBox = QCheckBox(self.groupBox_6)
824
- self.preload_hour2_checkBox.setObjectName(u"preload_hour2_checkBox")
854
+ self.label_30 = QLabel(self.groupBox_6)
855
+ self.label_30.setObjectName(u"label_30")
825
856
 
826
- self.gridLayout_6.addWidget(self.preload_hour2_checkBox, 11, 0, 1, 1)
857
+ self.gridLayout_6.addWidget(self.label_30, 7, 1, 1, 1)
827
858
 
828
- self.preload_halfyear_checkBox = QCheckBox(self.groupBox_6)
829
- self.preload_halfyear_checkBox.setObjectName(u"preload_halfyear_checkBox")
859
+ self.label_26 = QLabel(self.groupBox_6)
860
+ self.label_26.setObjectName(u"label_26")
830
861
 
831
- self.gridLayout_6.addWidget(self.preload_halfyear_checkBox, 4, 0, 1, 1)
862
+ self.gridLayout_6.addWidget(self.label_26, 3, 1, 1, 1)
832
863
 
833
- self.preload_day_checkBox = QCheckBox(self.groupBox_6)
834
- self.preload_day_checkBox.setObjectName(u"preload_day_checkBox")
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.preload_day_checkBox, 0, 0, 1, 1)
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, 0, 1, 1, 1)
873
+ self.gridLayout_6.addWidget(self.label_24, 1, 1, 1, 1)
842
874
 
843
- self.preload_min1_checkBox = QCheckBox(self.groupBox_6)
844
- self.preload_min1_checkBox.setObjectName(u"preload_min1_checkBox")
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.preload_min1_checkBox, 6, 0, 1, 1)
879
+ self.gridLayout_6.addWidget(self.preload_year_spinBox, 6, 2, 1, 1)
847
880
 
848
- self.preload_min15_checkBox = QCheckBox(self.groupBox_6)
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.addWidget(self.preload_min15_checkBox, 8, 0, 1, 1)
883
+ self.gridLayout_6.addItem(self.horizontalSpacer_6, 5, 3, 1, 1)
852
884
 
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)
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.gridLayout_6.addWidget(self.preload_min1_spinBox, 6, 2, 1, 1)
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, 10, 0, 1, 1)
909
+ self.gridLayout_6.addWidget(self.preload_min60_checkBox, 11, 0, 1, 1)
863
910
 
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)
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.preload_min60_spinBox, 10, 2, 1, 1)
915
+ self.gridLayout_6.addWidget(self.preload_timeline_spinBox, 13, 2, 1, 1)
869
916
 
870
- self.label_29 = QLabel(self.groupBox_6)
871
- self.label_29.setObjectName(u"label_29")
917
+ self.label_28 = QLabel(self.groupBox_6)
918
+ self.label_28.setObjectName(u"label_28")
872
919
 
873
- self.gridLayout_6.addWidget(self.label_29, 5, 1, 1, 1)
920
+ self.gridLayout_6.addWidget(self.label_28, 5, 1, 1, 1)
874
921
 
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)
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.preload_hour2_spinBox, 11, 2, 1, 1)
925
+ self.gridLayout_6.addWidget(self.preload_hour2_checkBox, 12, 0, 1, 1)
880
926
 
881
- self.preload_week_checkBox = QCheckBox(self.groupBox_6)
882
- self.preload_week_checkBox.setObjectName(u"preload_week_checkBox")
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.preload_week_checkBox, 1, 0, 1, 1)
930
+ self.gridLayout_6.addWidget(self.preload_month_checkBox, 3, 0, 1, 1)
885
931
 
886
- self.horizontalSpacer_6 = QSpacerItem(20, 20, QSizePolicy.Policy.Fixed, QSizePolicy.Policy.Minimum)
932
+ self.label_32 = QLabel(self.groupBox_6)
933
+ self.label_32.setObjectName(u"label_32")
887
934
 
888
- self.gridLayout_6.addItem(self.horizontalSpacer_6, 4, 3, 1, 1)
935
+ self.gridLayout_6.addWidget(self.label_32, 9, 1, 1, 1)
889
936
 
890
- self.preload_quarter_checkBox = QCheckBox(self.groupBox_6)
891
- self.preload_quarter_checkBox.setObjectName(u"preload_quarter_checkBox")
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.preload_quarter_checkBox, 3, 0, 1, 1)
940
+ self.gridLayout_6.addWidget(self.preload_year_checkBox, 6, 0, 1, 1)
894
941
 
895
- self.label_31 = QLabel(self.groupBox_6)
896
- self.label_31.setObjectName(u"label_31")
942
+ self.label_34 = QLabel(self.groupBox_6)
943
+ self.label_34.setObjectName(u"label_34")
897
944
 
898
- self.gridLayout_6.addWidget(self.label_31, 7, 1, 1, 1)
945
+ self.gridLayout_6.addWidget(self.label_34, 11, 1, 1, 1)
899
946
 
900
- self.label_25 = QLabel(self.groupBox_6)
901
- self.label_25.setObjectName(u"label_25")
947
+ self.label_60 = QLabel(self.groupBox_6)
948
+ self.label_60.setObjectName(u"label_60")
902
949
 
903
- self.gridLayout_6.addWidget(self.label_25, 1, 1, 1, 1)
950
+ self.gridLayout_6.addWidget(self.label_60, 13, 1, 1, 1)
904
951
 
905
- self.preload_month_checkBox = QCheckBox(self.groupBox_6)
906
- self.preload_month_checkBox.setObjectName(u"preload_month_checkBox")
952
+ self.label_27 = QLabel(self.groupBox_6)
953
+ self.label_27.setObjectName(u"label_27")
907
954
 
908
- self.gridLayout_6.addWidget(self.preload_month_checkBox, 2, 0, 1, 1)
955
+ self.gridLayout_6.addWidget(self.label_27, 4, 1, 1, 1)
909
956
 
910
- self.label_30 = QLabel(self.groupBox_6)
911
- self.label_30.setObjectName(u"label_30")
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.label_30, 6, 1, 1, 1)
961
+ self.gridLayout_6.addWidget(self.preload_min30_spinBox, 10, 2, 1, 1)
914
962
 
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)
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.preload_min5_spinBox, 7, 2, 1, 1)
966
+ self.gridLayout_6.addWidget(self.preload_halfyear_checkBox, 5, 0, 1, 1)
920
967
 
921
- self.label_42 = QLabel(self.groupBox_6)
922
- self.label_42.setObjectName(u"label_42")
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.label_42, 11, 1, 1, 1)
972
+ self.gridLayout_6.addWidget(self.preload_min1_spinBox, 7, 2, 1, 1)
925
973
 
926
- self.label_32 = QLabel(self.groupBox_6)
927
- self.label_32.setObjectName(u"label_32")
974
+ self.label_33 = QLabel(self.groupBox_6)
975
+ self.label_33.setObjectName(u"label_33")
928
976
 
929
- self.gridLayout_6.addWidget(self.label_32, 8, 1, 1, 1)
977
+ self.gridLayout_6.addWidget(self.label_33, 10, 1, 1, 1)
930
978
 
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)
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.preload_min30_spinBox, 9, 2, 1, 1)
982
+ self.gridLayout_6.addWidget(self.preload_trans_checkBox, 14, 0, 1, 1)
936
983
 
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)
984
+ self.label_61 = QLabel(self.groupBox_6)
985
+ self.label_61.setObjectName(u"label_61")
940
986
 
941
- self.gridLayout_6.addWidget(self.preload_year_spinBox, 5, 2, 1, 1)
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\u884c\u4e1a\u4e0e\u6307\u6570\u677f\u5757", None))
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.preload_min60_checkBox.setText(QCoreApplication.translate("MainWindow", u"\u9884\u52a0\u8f7d60\u5206\u949f\u7ebf", None))
1421
- self.label_29.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
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.label_25.setText(QCoreApplication.translate("MainWindow", u"\u6700\u5927\u7f13\u5b58\u6570\u91cf\uff1a", None))
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 0xffff67f696f0; ConfigModel>
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 ffff6c0495d0>
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 0xffff67f6a590; HubModel>
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 ffff67f9bd30>
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 0xffff67f6aad0; PartModel>
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 ffff67fb0450>
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{false}; // 用于指示是否所有数据准备完毕
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, 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);
@@ -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, 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,