mns-scheduler 1.4.5.6__tar.gz → 1.4.7.4__tar.gz

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 (187) hide show
  1. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/PKG-INFO +1 -1
  2. mns_scheduler-1.4.7.4/mns_scheduler/company_info/em_stock_info/clean_em_us_hk_stock_info.py +30 -0
  3. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +16 -9
  4. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +1 -0
  5. mns_scheduler-1.4.7.4/mns_scheduler/kpl/theme/__init__.py +7 -0
  6. mns_scheduler-1.4.7.4/mns_scheduler/kpl/theme/kpl_theme_sync_service.py +256 -0
  7. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/self_choose/ths_self_choose_service.py +18 -2
  8. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py +1 -1
  9. mns_scheduler-1.4.7.4/mns_scheduler/zt/zt_pool/em/__init__.py +7 -0
  10. mns_scheduler-1.4.5.6/mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py → mns_scheduler-1.4.7.4/mns_scheduler/zt/zt_pool/em/em_zt_pool_service.py +102 -210
  11. mns_scheduler-1.4.7.4/mns_scheduler/zt/zt_pool/em/em_zt_pool_sync_api.py +130 -0
  12. mns_scheduler-1.4.7.4/mns_scheduler/zt/zt_pool/ths/__init__.py +7 -0
  13. {mns_scheduler-1.4.5.6/mns_scheduler/zt/zt_pool → mns_scheduler-1.4.7.4/mns_scheduler/zt/zt_pool/ths}/ths_zt_pool_sync_api.py +7 -3
  14. mns_scheduler-1.4.7.4/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +79 -0
  15. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zz_task/compensation/compensate_task.py +8 -8
  16. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zz_task/compensation/compensate_task_one_day.py +11 -11
  17. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zz_task/data_sync_task.py +46 -16
  18. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler.egg-info/PKG-INFO +1 -1
  19. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler.egg-info/SOURCES.txt +8 -2
  20. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/setup.py +1 -1
  21. mns_scheduler-1.4.5.6/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +0 -61
  22. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/README.md +0 -0
  23. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/__init__.py +0 -0
  24. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/auto_da_ban/__init__.py +0 -0
  25. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/auto_da_ban/auto_da_ban_service.py +0 -0
  26. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/__init__.py +0 -0
  27. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/clean/__init__.py +0 -0
  28. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/clean/company_info_clean_api.py +0 -0
  29. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/common/__init__.py +0 -0
  30. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/common/company_common_query_service.py +0 -0
  31. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/constant/__init__.py +0 -0
  32. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/constant/company_constant_data.py +0 -0
  33. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/de_list_stock/__init__.py +0 -0
  34. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +0 -0
  35. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/em_stock_info/__init__.py +0 -0
  36. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/sync/__init__.py +0 -0
  37. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/sync/company_info_set_service.py +0 -0
  38. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/sync/sync_company_info_task.py +0 -0
  39. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/task/__init__.py +0 -0
  40. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/task/company_announce_info_task.py +0 -0
  41. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/task/company_base_info_task.py +0 -0
  42. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/task/company_business_info_task.py +0 -0
  43. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/task/company_hold_info_task.py +0 -0
  44. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/task/company_industry_info_task.py +0 -0
  45. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/company_info/task/company_total_task.py +0 -0
  46. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/__init__.py +0 -0
  47. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/clean/__init__.py +0 -0
  48. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
  49. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
  50. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/__init__.py +0 -0
  51. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/common/__init__.py +0 -0
  52. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
  53. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
  54. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/detaill/__init__.py +0 -0
  55. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +0 -0
  56. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
  57. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +0 -0
  58. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
  59. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
  60. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
  61. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/__init__.py +0 -0
  62. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/col_move_service.py +0 -0
  63. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/db_status.py +0 -0
  64. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/__init__.py +0 -0
  65. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/col_move_script.py +0 -0
  66. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/db_move/__init__.py +0 -0
  67. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/db_move/col_move_one_service.py +0 -0
  68. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/sync/__init__.py +0 -0
  69. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/sync/local_mongo_util.py +0 -0
  70. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/sync/remote_data_sync_to_local.py +0 -0
  71. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/sync/remote_mongo_util.py +0 -0
  72. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +0 -0
  73. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +0 -0
  74. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/update/__init__.py +0 -0
  75. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/db/script/update/update_col_field.py +0 -0
  76. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/dt/__init__.py +0 -0
  77. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
  78. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/__init__.py +0 -0
  79. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/em/__init__.py +0 -0
  80. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/em/em_financial_asset_liability_sync_service_api.py +0 -0
  81. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/em/em_financial_profit_sync_service_api.py +0 -0
  82. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/em/finance_common_api.py +0 -0
  83. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/sync_financial_report_service_task.py +0 -0
  84. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/xue_qiu/__init__.py +0 -0
  85. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +0 -0
  86. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py +0 -0
  87. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/hk/__init__.py +0 -0
  88. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
  89. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/hk/hk_industry_info_sync_service_api.py +0 -0
  90. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/industry/__init__.py +0 -0
  91. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/industry/ths/__init__.py +0 -0
  92. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/industry/ths/ths_industry_index_service.py +0 -0
  93. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/industry/ths/ths_industry_sync_service.py +0 -0
  94. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/irm/__init__.py +0 -0
  95. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/irm/api/__init__.py +0 -0
  96. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
  97. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
  98. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
  99. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/irm/stock_question_id_service.py +0 -0
  100. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/__init__.py +0 -0
  101. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/__init__.py +0 -0
  102. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
  103. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
  104. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
  105. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
  106. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
  107. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
  108. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
  109. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/common/__init__.py +0 -0
  110. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/common/k_line_common_api.py +0 -0
  111. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
  112. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
  113. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/month_week_daily/__init__.py +0 -0
  114. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +0 -0
  115. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py +0 -0
  116. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/sync_status/__init__.py +0 -0
  117. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +0 -0
  118. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/test/__init__.py +0 -0
  119. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
  120. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/year_quarter/__init__.py +0 -0
  121. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +0 -0
  122. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/__init__.py +0 -0
  123. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/__init__.py +0 -0
  124. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
  125. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
  126. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
  127. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
  128. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
  129. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +0 -0
  130. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
  131. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
  132. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/lhb/__init__.py +0 -0
  133. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
  134. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/open/__init__.py +0 -0
  135. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
  136. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/__init__.py +0 -0
  137. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/compliance/__init__.py +0 -0
  138. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
  139. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/financial/__init__.py +0 -0
  140. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
  141. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
  142. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
  143. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
  144. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
  145. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/major_violations/__init__.py +0 -0
  146. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
  147. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/self/__init__.py +0 -0
  148. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
  149. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/test/__init__.py +0 -0
  150. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
  151. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/transactions/__init__.py +0 -0
  152. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
  153. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/self_choose/__init__.py +0 -0
  154. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/__init__.py +0 -0
  155. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
  156. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/auto_login/__init__.py +0 -0
  157. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/auto_login/trader_auto_service.py +0 -0
  158. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
  159. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/balance/__init__.py +0 -0
  160. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/balance/ths_account_balance_service.py +0 -0
  161. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/sync_position_api.py +0 -0
  162. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/task/__init__.py +0 -0
  163. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/task/trader_task_service.py +0 -0
  164. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/tfp/__init__.py +0 -0
  165. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/trade/tfp/stock_tfp_info_sync.py +0 -0
  166. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zb/__init__.py +0 -0
  167. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
  168. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/__init__.py +0 -0
  169. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
  170. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
  171. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/export/__init__.py +0 -0
  172. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
  173. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/high_chg/__init__.py +0 -0
  174. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
  175. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
  176. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/open_data/__init__.py +0 -0
  177. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
  178. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/script/__init__.py +0 -0
  179. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/script/fix_error_deal_day.py +0 -0
  180. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
  181. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
  182. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
  183. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zz_task/__init__.py +0 -0
  184. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler/zz_task/compensation/__init__.py +0 -0
  185. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler.egg-info/dependency_links.txt +0 -0
  186. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/mns_scheduler.egg-info/top_level.txt +0 -0
  187. {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.7.4}/setup.cfg +0 -0
@@ -1,3 +1,3 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns_scheduler
3
- Version: 1.4.5.6
3
+ Version: 1.4.7.4
@@ -0,0 +1,30 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ from mns_common.db.MongodbUtil import MongodbUtil
10
+ from loguru import logger
11
+ from datetime import datetime
12
+ import mns_common.constant.extra_income_db_name as extra_income_db_name
13
+
14
+ mongodb_util = MongodbUtil('27017')
15
+
16
+
17
+ def clean_us_stock_concept_industry():
18
+ em_us_stock_info_df = mongodb_util.find_all_data(extra_income_db_name.EM_US_STOCK_INFO)
19
+ return em_us_stock_info_df
20
+
21
+
22
+ if __name__ == '__main__':
23
+ em_us_stock_info_test_df = clean_us_stock_concept_industry()
24
+ em_us_stock_info_test_industry_df = em_us_stock_info_test_df.loc[em_us_stock_info_test_df['industry'] != '-']
25
+
26
+ em_us_stock_info_test_no_industry_df = em_us_stock_info_test_df.loc[em_us_stock_info_test_df['industry'] == '-']
27
+ em_us_stock_info_test_no_industry_df = em_us_stock_info_test_no_industry_df.sort_values(by=['flow_mv'],
28
+ ascending=False)
29
+
30
+ print(em_us_stock_info_test_industry_df)
@@ -23,8 +23,8 @@ mongodb_util = MongodbUtil('27017')
23
23
 
24
24
  def sync_all_em_stock_info():
25
25
  logger.info("同步东方财富a,etf,kzz,us,hk,信息开始")
26
- # 同步东方财富A股股票信息
27
- sync_stock_info()
26
+ # # 同步东方财富A股股票信息
27
+ # sync_stock_info()
28
28
  # 同步东方财富A股可转债信息
29
29
  sync_kzz_info()
30
30
  # 同步东方财富A股ETF信息
@@ -48,6 +48,7 @@ def sync_kzz_info():
48
48
  em_kzz_info = east_money_debt_api.get_kzz_real_time_quotes(30, 6)
49
49
  em_kzz_info['_id'] = em_kzz_info['symbol']
50
50
  em_kzz_info['sync_time'] = str_now_date
51
+ em_kzz_info = em_kzz_info.fillna(0)
51
52
  mongodb_util.save_mongo(em_kzz_info, extra_income_db_name.EM_KZZ_INFO)
52
53
  except BaseException as e:
53
54
  logger.error("同步东方财富可转债信息异常:{}", e)
@@ -62,6 +63,7 @@ def sync_etf_info():
62
63
  em_etf_info = east_money_etf_api.get_etf_real_time_quotes(30, 6)
63
64
  em_etf_info['_id'] = em_etf_info['symbol']
64
65
  em_etf_info['sync_time'] = str_now_date
66
+ em_etf_info = em_etf_info.fillna(0)
65
67
  mongodb_util.save_mongo(em_etf_info, extra_income_db_name.EM_ETF_INFO)
66
68
  except BaseException as e:
67
69
  logger.error("同步东方财富ETF信息异常:{}", e)
@@ -73,10 +75,11 @@ def sync_stock_info():
73
75
  str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
74
76
  logger.error("同步东方财富股票信息")
75
77
  try:
76
- em_etf_info = east_money_stock_a_v2_api.get_stock_real_time_quotes(60)
77
- em_etf_info['_id'] = em_etf_info['symbol']
78
- em_etf_info['sync_time'] = str_now_date
79
- mongodb_util.save_mongo(em_etf_info, extra_income_db_name.EM_A_STOCK_INFO)
78
+ em_stock_info = east_money_stock_a_v2_api.get_stock_real_time_quotes(60)
79
+ em_stock_info['_id'] = em_stock_info['symbol']
80
+ em_stock_info['sync_time'] = str_now_date
81
+ em_stock_info = em_stock_info.fillna(0)
82
+ mongodb_util.save_mongo(em_stock_info, extra_income_db_name.EM_A_STOCK_INFO)
80
83
  except BaseException as e:
81
84
  logger.error("同步东方财富ETF信息异常:{}", e)
82
85
 
@@ -93,6 +96,7 @@ def sync_hk_stock_info():
93
96
  em_hk_info = east_money_stock_hk_api.get_hk_real_time_quotes(30, em_cookie)
94
97
  em_hk_info['_id'] = em_hk_info['symbol']
95
98
  em_hk_info['sync_time'] = str_now_date
99
+ em_hk_info = em_hk_info.fillna(0)
96
100
  mongodb_util.save_mongo(em_hk_info, extra_income_db_name.EM_HK_STOCK_INFO)
97
101
  except BaseException as e:
98
102
  logger.error("同步东方财富ETF信息异常:{}", e)
@@ -109,6 +113,7 @@ def sync_hk_ggt_stock_info():
109
113
  em_hk_gtt_info = east_money_stock_hk_gtt_api.get_ggt_real_time_quotes(em_cookie, 30, 6)
110
114
  em_hk_gtt_info['_id'] = em_hk_gtt_info['symbol']
111
115
  em_hk_gtt_info['sync_time'] = str_now_date
116
+ em_hk_gtt_info = em_hk_gtt_info.fillna(0)
112
117
  mongodb_util.save_mongo(em_hk_gtt_info, extra_income_db_name.EM_HK_GGT_STOCK_INFO)
113
118
  except BaseException as e:
114
119
  logger.error("同步东方财富ETF信息异常:{}", e)
@@ -120,14 +125,16 @@ def sync_us_stock_info():
120
125
  str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
121
126
  logger.error("同步东方财富美股信息")
122
127
  em_cookie = cookie_info_service.get_em_cookie()
123
- us_stock_info = east_money_stock_us_api.get_us_stock_real_time_quotes(em_cookie, None)
128
+ us_stock_info = east_money_stock_us_api.get_us_real_time_quotes(30, em_cookie)
124
129
  us_stock_info['_id'] = us_stock_info['symbol']
125
130
  us_stock_info['sync_time'] = str_now_date
126
- mongodb_util.save_mongo(us_stock_info, extra_income_db_name.EM_US_STOCK_INFO)
131
+
132
+ us_stock_info = us_stock_info.fillna(0)
133
+ mongodb_util.save_mongo(us_stock_info, extra_income_db_name.US_STOCK_INFO_EM)
127
134
 
128
135
 
129
136
  if __name__ == '__main__':
130
- sync_stock_info()
137
+ sync_all_em_stock_info()
131
138
  # em_cookie = cookie_info_service.get_em_cookie()
132
139
  # em_us_stock_info = east_money_stock_us_api.get_us_stock_real_time_quotes(em_cookie, None)
133
140
  # em_us_stock_info['_id'] = em_us_stock_info['symbol']
@@ -116,6 +116,7 @@ def multi_threaded_k_line_sync(str_day):
116
116
  # 将list_date列中的所有NaN值设置为19890604
117
117
  real_time_quotes_now['list_date'].fillna(19890604, inplace=True)
118
118
  real_time_quotes_now['list_date'] = real_time_quotes_now['list_date'].replace(99990909, 19890604)
119
+ real_time_quotes_now['list_date'] = real_time_quotes_now['list_date'].replace(0, 19890604)
119
120
 
120
121
  # 将日期数值转换为日期时间格式
121
122
  real_time_quotes_now['list_date_01'] = pd.to_datetime(real_time_quotes_now['list_date'], format='%Y%m%d')
@@ -0,0 +1,7 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
@@ -0,0 +1,256 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ import mns_common.api.kpl.theme.kpl_theme_api as kpl_theme_api
10
+ from mns_common.db.MongodbUtil import MongodbUtil
11
+ from datetime import datetime
12
+ import pandas as pd
13
+ import mns_common.constant.db_name_constant as db_name_constant
14
+ from loguru import logger
15
+ import mns_common.component.cookie.cookie_info_service as cookie_info_service
16
+ import mns_common.utils.data_frame_util as data_frame_util
17
+ import mns_common.api.msg.push_msg_api as push_msg_api
18
+
19
+ mongodb_util = MongodbUtil('27017')
20
+
21
+
22
+ # 获取最大id
23
+ def query_max_theme_id():
24
+ kpl_theme_max_one_df = mongodb_util.descend_query({}, db_name_constant.KPL_THEME_LIST, '_id', 1)
25
+ if data_frame_util.is_empty(kpl_theme_max_one_df):
26
+ return 381
27
+ else:
28
+ return int(list(kpl_theme_max_one_df['theme_id'])[0])
29
+
30
+
31
+ def sync_new_kpl_theme_info():
32
+ exist_max_theme_id = query_max_theme_id() + 1
33
+ max_sync_theme_id = exist_max_theme_id + 10
34
+
35
+ while exist_max_theme_id <= max_sync_theme_id:
36
+ try:
37
+ kpl_token = cookie_info_service.get_kpl_cookie()
38
+
39
+ json_data = kpl_theme_api.kpl_theme_index(exist_max_theme_id, kpl_token)
40
+ tables = json_data.get('Table')
41
+ if tables is not None and len(tables) > 0:
42
+ theme_name = json_data.get('Name')
43
+
44
+ title = '新增开盘啦题材:' + theme_name
45
+ push_msg_api.push_msg_to_wechat(title, title)
46
+
47
+ # 保存到主线列表
48
+ sync_kpl_theme_list(json_data, exist_max_theme_id)
49
+ # 保存到主线详细列表
50
+ sync_kpl_theme_detail(json_data, exist_max_theme_id)
51
+ exist_max_theme_id = exist_max_theme_id + 1
52
+ except BaseException as e:
53
+ logger.error("更新新题材信息异常:{},{}", str(exist_max_theme_id), e)
54
+
55
+
56
+ def update_all_kpl_theme_info():
57
+ theme_id = 0
58
+ max_theme_id = query_max_theme_id() + 1
59
+ while theme_id < max_theme_id:
60
+ try:
61
+ kpl_token = cookie_info_service.get_kpl_cookie()
62
+ json_data = kpl_theme_api.kpl_theme_index(theme_id, kpl_token)
63
+ # 保存到主线列表
64
+ sync_kpl_theme_list(json_data, theme_id)
65
+ # 保存到主线详细列表
66
+ sync_kpl_theme_detail(json_data, theme_id)
67
+ theme_id = theme_id + 1
68
+ except BaseException as e:
69
+ logger.error("出现异常:{}", e)
70
+ theme_id = theme_id + 1
71
+
72
+
73
+ def sync_kpl_theme_list(json_data, theme_id):
74
+ tables = json_data.get('Table')
75
+ if tables is None or len(tables) == 0:
76
+ return None
77
+
78
+ theme_name = json_data.get('Name')
79
+
80
+ stock_list_df = pd.DataFrame(json_data.get('StockList'))
81
+
82
+ stock_list_df.drop_duplicates('StockID', keep='last', inplace=True)
83
+
84
+ logger.info("同步题材:{},{}", str(theme_id), theme_name)
85
+ brief_intro = json_data.get('BriefIntro')
86
+ introduction = json_data.get('Introduction')
87
+ kpl_create_time = covert_time(json_data.get('CreateTime'))
88
+ kpl_update_time = covert_time(json_data.get('UpdateTime'))
89
+ now_date = datetime.now()
90
+ sync_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
91
+
92
+ theme_dict = {
93
+ '_id': int(theme_id),
94
+ 'theme_id': str(theme_id),
95
+ 'theme_name': theme_name,
96
+ 'brief_intro': brief_intro,
97
+ 'introduction': introduction,
98
+ 'kpl_create_time': kpl_create_time,
99
+ 'kpl_update_time': kpl_update_time,
100
+ 'theme_remark': '',
101
+ 'sync_time': sync_time,
102
+ 'grade': 1,
103
+ 'stock_count': stock_list_df.shape[0],
104
+ 'valid': True,
105
+ 'theme_classify':2,
106
+ }
107
+
108
+ query = {'_id': str(theme_id)}
109
+
110
+ kpl_theme_one_df = mongodb_util.find_query_data(db_name_constant.KPL_THEME_LIST, query)
111
+
112
+ if data_frame_util.is_empty(kpl_theme_one_df):
113
+ ths_concept_one_df = pd.DataFrame(theme_dict, index=[1])
114
+ mongodb_util.save_mongo(ths_concept_one_df, db_name_constant.KPL_THEME_LIST)
115
+
116
+ else:
117
+ new_values = {'$set': {
118
+ 'brief_intro': brief_intro,
119
+ 'introduction': introduction,
120
+ 'kpl_update_time': kpl_update_time,
121
+ 'theme_name': theme_name}}
122
+
123
+ mongodb_util.update_many(query, new_values, db_name_constant.KPL_THEME_LIST)
124
+
125
+
126
+ def sync_kpl_theme_detail(json_data, theme_id):
127
+ tables = json_data.get('Table')
128
+ theme_name = json_data.get('Name')
129
+ if tables is None or len(tables) == 0:
130
+ return None
131
+ for table in tables:
132
+ save_theme_l1(table, theme_name, theme_id)
133
+
134
+ return tables
135
+
136
+
137
+ def save_theme_l1(table, theme_name, theme_id):
138
+ theme_l1 = table.get('Level1')
139
+
140
+ first_shelve_time = covert_time(theme_l1.get('FirstShelveTime'))
141
+ theme_l1_id = theme_l1.get('ID')
142
+ is_new = theme_l1.get('IsNew')
143
+ theme_l1_name = theme_l1.get('Name')
144
+ update_cache_time = covert_time(theme_l1.get('UpdateCacheTime'))
145
+ zs_code = theme_l1.get('ZSCode')
146
+ now_date = datetime.now()
147
+ sync_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
148
+ theme_dict = {
149
+ '_id': str(theme_l1_id),
150
+ 'theme_l1_id': str(theme_l1_id),
151
+ 'theme_l1_name': str(theme_l1_name),
152
+ 'theme_id': str(theme_id),
153
+ 'theme_name': str(theme_name),
154
+ 'first_shelve_time': first_shelve_time,
155
+ 'update_cache_time': update_cache_time,
156
+ 'zs_code': zs_code,
157
+ 'is_new': is_new,
158
+ 'sync_time': sync_time,
159
+ }
160
+
161
+ ths_concept_one_df = pd.DataFrame(theme_dict, index=[1])
162
+ mongodb_util.save_mongo(ths_concept_one_df, db_name_constant.KPL_THEME_LIST_L1)
163
+ stock_list = theme_l1.get('Stocks')
164
+ if len(stock_list) != 0:
165
+ save_theme_stocks(stock_list, theme_name, theme_id, theme_l1_name, theme_l1_id, '无', 0)
166
+ else:
167
+ theme_l2_list = table.get('Level2')
168
+ save_theme_l2(theme_l2_list, theme_name, theme_id, theme_l1_name, theme_l1_id)
169
+
170
+
171
+ def save_theme_l2(theme_l2_list, theme_name, theme_id, theme_l1_name, theme_l1_id):
172
+ for theme_l2_one in theme_l2_list:
173
+
174
+ first_shelve_time = covert_time(theme_l2_one.get('FirstShelveTime'))
175
+ theme_l2_id = theme_l2_one.get('ID')
176
+ is_new = theme_l2_one.get('IsNew')
177
+ theme_l2_name = theme_l2_one.get('Name')
178
+ update_cache_time = covert_time(theme_l2_one.get('UpdateCacheTime'))
179
+ zs_code = theme_l2_one.get('ZSCode')
180
+ now_date = datetime.now()
181
+ sync_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
182
+ theme_dict = {
183
+ '_id': str(theme_l2_id),
184
+ 'theme_l2_id': str(theme_l2_id),
185
+ 'theme_l2_name': str(theme_l2_name),
186
+
187
+ 'theme_l1_id': str(theme_l1_id),
188
+ 'theme_l1_name': str(theme_l1_name),
189
+ 'theme_id': str(theme_id),
190
+ 'theme_name': str(theme_name),
191
+ 'first_shelve_time': first_shelve_time,
192
+ 'update_cache_time': update_cache_time,
193
+ 'zs_code': zs_code,
194
+ 'is_new': is_new,
195
+ 'sync_time': sync_time,
196
+ }
197
+
198
+ ths_concept_one_df = pd.DataFrame(theme_dict, index=[1])
199
+ mongodb_util.save_mongo(ths_concept_one_df, db_name_constant.KPL_THEME_LIST_L2)
200
+ stock_list = theme_l2_one.get('Stocks')
201
+ if len(stock_list) != 0:
202
+ save_theme_stocks(stock_list, theme_name, theme_id, theme_l1_name, theme_l1_id, theme_l2_name, theme_l2_id)
203
+
204
+
205
+ def save_theme_stocks(stock_list, theme_name, theme_id, theme_l1_name, theme_l1_id, theme_l2_name, theme_l2_id):
206
+ stock_list_df = pd.DataFrame(stock_list)
207
+ stock_list_df = stock_list_df.rename(columns={
208
+ "StockID": "symbol",
209
+ "IsZz": "is_zz",
210
+ "IsHot": "is_hot",
211
+ "Reason": "reason",
212
+ "FirstShelveTime": "first_shelve_time",
213
+ "UpdateCacheTime": "update_cache_time",
214
+ "IsNew": "is_new",
215
+ "name": "prod_name",
216
+ "Hot": "hot",
217
+ })
218
+ stock_list_df["first_shelve_time"] = stock_list_df["first_shelve_time"].apply(covert_time)
219
+ stock_list_df["update_cache_time"] = stock_list_df["update_cache_time"].apply(covert_time)
220
+
221
+ stock_list_df['theme_id'] = str(theme_id)
222
+ stock_list_df['theme_name'] = theme_name
223
+
224
+ stock_list_df['theme_l1_id'] = str(theme_l1_id)
225
+ stock_list_df['theme_l1_name'] = theme_l1_name
226
+
227
+ stock_list_df['theme_l2_name'] = theme_l2_name
228
+ stock_list_df['theme_l2_id'] = str(theme_l2_id)
229
+
230
+ stock_list_df['_id'] = (stock_list_df['symbol']
231
+ + '_'
232
+ + stock_list_df['theme_id']
233
+ + '_'
234
+ + stock_list_df['theme_l1_id']
235
+ + '_'
236
+ + stock_list_df['theme_l2_id'])
237
+ now_date = datetime.now()
238
+ sync_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
239
+ stock_list_df['sync_time'] = sync_time
240
+ mongodb_util.save_mongo(stock_list_df, db_name_constant.KPL_THEME_DETAILS)
241
+
242
+
243
+ def covert_time(timestamp_str):
244
+ timestamp = int(timestamp_str)
245
+ if timestamp == 0:
246
+ return "1989-06-04"
247
+ else:
248
+ # 3. 转换为本地时区的datetime对象
249
+ dt_local = datetime.fromtimestamp(timestamp)
250
+ # 4. 格式化为「年月日 时分秒」的字符串(格式可自定义)
251
+ datetime_str = dt_local.strftime('%Y-%m-%d %H:%M:%S')
252
+ return datetime_str
253
+
254
+
255
+ if __name__ == '__main__':
256
+ update_all_kpl_theme_info()
@@ -137,14 +137,30 @@ def add_continue_boards_zt_stocks(ths_cookie):
137
137
  def add_main_line_leader(ths_cookie):
138
138
  main_line_leader_df = mongodb_util.find_query_data('main_line_leader', {})
139
139
  if data_frame_util.is_not_empty(main_line_leader_df):
140
+ main_line_leader_df = count_main_line_number(main_line_leader_df)
141
+
140
142
  main_line_leader_df = main_line_leader_df.sort_values(
141
- by=['main_line_number', 'main_line_leader_grade', 'chg'],
142
- ascending=[False, False, False]
143
+ by=['main_line_number', 'main_line_leader_grade'],
144
+ ascending=[False, False,]
143
145
  )
144
146
  for stock_one in main_line_leader_df.itertuples():
145
147
  ths_self_choose_api.add_stock_to_account(stock_one.symbol, ths_cookie)
146
148
 
147
149
 
150
+ # 统计主线的数量
151
+ def count_main_line_number(main_line_detail_df):
152
+ # 统计主线的数量
153
+ main_line_detail_df['main_line_number'] = main_line_detail_df.groupby('main_line')['main_line'].transform(
154
+ 'count')
155
+ # 相同主线数量 数量加1
156
+ main_line_detail_df['main_line_number'] = (
157
+ main_line_detail_df.groupby('main_line_number')['main_line']
158
+ .transform('rank', method='dense') - 1
159
+ ) * 0.1 + main_line_detail_df['main_line_number']
160
+
161
+ return main_line_detail_df
162
+
163
+
148
164
  # 自选股操作 删除当天自选股 增加新的连板股票 添加固定选择自选
149
165
  def self_choose_stock_handle():
150
166
  ths_cookie = cookie_info_service.get_ths_cookie()
@@ -9,7 +9,7 @@ import mns_common.component.em.em_stock_info_api as em_stock_info_api
9
9
  import mns_common.component.common_service_fun_api as common_service_fun_api
10
10
  import mns_scheduler.k_line.month_week_daily.daily_week_month_line_sync as daily_week_month_line_sync
11
11
  from datetime import datetime
12
- import mns_scheduler.zt.zt_pool.em_zt_pool_sync_api as em_zt_pool_sync_api
12
+ import mns_scheduler.zt.zt_pool.em.em_zt_pool_sync_api as em_zt_pool_sync_api
13
13
  import mns_scheduler.zt.high_chg.sync_high_chg_pool_service as sync_high_chg_pool_service
14
14
  import mns_scheduler.zt.open_data.kcx_high_chg_open_data_sync as kcx_high_chg_open_data_sync
15
15
  import mns_scheduler.zt.high_chg.sync_high_chg_real_time_quotes_service as sync_high_chg_real_time_quotes_service
@@ -0,0 +1,7 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 16
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)