mns-scheduler 1.1.8.4__py3-none-any.whl → 1.4.5.7__py3-none-any.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 (139) hide show
  1. mns_scheduler/__init__.py +1 -3
  2. mns_scheduler/auto_da_ban/auto_da_ban_service.py +89 -0
  3. mns_scheduler/company_info/clean/__init__.py +1 -1
  4. mns_scheduler/company_info/clean/company_info_clean_api.py +62 -21
  5. mns_scheduler/company_info/common/company_common_query_service.py +45 -0
  6. mns_scheduler/company_info/constant/__init__.py +1 -1
  7. mns_scheduler/company_info/constant/company_constant_data.py +335 -224
  8. mns_scheduler/company_info/de_list_stock/__init__.py +1 -1
  9. mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +1 -1
  10. mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +134 -0
  11. mns_scheduler/company_info/sync/company_info_set_service.py +208 -0
  12. mns_scheduler/company_info/sync/sync_company_info_task.py +203 -0
  13. mns_scheduler/company_info/task/company_announce_info_task.py +77 -0
  14. mns_scheduler/company_info/task/company_base_info_task.py +64 -0
  15. mns_scheduler/company_info/task/company_business_info_task.py +177 -0
  16. mns_scheduler/company_info/task/company_hold_info_task.py +66 -0
  17. mns_scheduler/company_info/task/company_industry_info_task.py +167 -0
  18. mns_scheduler/company_info/task/company_total_task.py +69 -0
  19. mns_scheduler/concept/clean/kpl_concept_clean_api.py +1 -1
  20. mns_scheduler/concept/clean/ths_concept_clean_api.py +20 -4
  21. mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +23 -18
  22. mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +4 -1
  23. mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +7 -7
  24. mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +9 -4
  25. mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +2 -2
  26. mns_scheduler/db/col_move_service.py +3 -3
  27. mns_scheduler/db/script/__init__.py +1 -1
  28. mns_scheduler/db/script/col_move_script.py +1 -1
  29. mns_scheduler/db/script/db_move/__init__.py +7 -0
  30. mns_scheduler/db/script/db_move/col_move_one_service.py +34 -0
  31. mns_scheduler/db/script/sync/__init__.py +1 -1
  32. mns_scheduler/db/script/sync/remote_data_sync_to_local.py +65 -4
  33. mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +80 -0
  34. mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +69 -0
  35. mns_scheduler/db/script/update/__init__.py +7 -0
  36. mns_scheduler/db/script/update/update_col_field.py +36 -0
  37. mns_scheduler/finance/__init__.py +1 -1
  38. mns_scheduler/finance/em/__init__.py +7 -0
  39. mns_scheduler/finance/{em_financial_asset_liability_sync_service_api.py → em/em_financial_asset_liability_sync_service_api.py} +2 -2
  40. mns_scheduler/finance/{em_financial_profit_sync_service_api.py → em/em_financial_profit_sync_service_api.py} +27 -26
  41. mns_scheduler/finance/{finance_common_api.py → em/finance_common_api.py} +3 -3
  42. mns_scheduler/finance/{sync_financial_report_service_api.py → sync_financial_report_service_task.py} +80 -27
  43. mns_scheduler/finance/xue_qiu/__init__.py +7 -0
  44. mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +77 -0
  45. mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py +161 -0
  46. mns_scheduler/hk/__init__.py +1 -1
  47. mns_scheduler/hk/hk_company_info_sync_service_api.py +4 -4
  48. mns_scheduler/hk/hk_industry_info_sync_service_api.py +3 -5
  49. mns_scheduler/industry/__init__.py +7 -0
  50. mns_scheduler/industry/ths/__init__.py +7 -0
  51. mns_scheduler/industry/ths/ths_industry_index_service.py +58 -0
  52. mns_scheduler/industry/ths/ths_industry_sync_service.py +68 -0
  53. mns_scheduler/irm/__init__.py +1 -1
  54. mns_scheduler/irm/api/__init__.py +1 -1
  55. mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +8 -58
  56. mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +15 -26
  57. mns_scheduler/irm/stock_irm_cninfo_service.py +43 -31
  58. mns_scheduler/irm/stock_question_id_service.py +169 -0
  59. mns_scheduler/k_line/clean/daily/__init__.py +1 -1
  60. mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +52 -6
  61. mns_scheduler/k_line/clean/daily/daily_k_line_service.py +7 -2
  62. mns_scheduler/k_line/clean/k_line_info_clean_impl.py +3 -2
  63. mns_scheduler/k_line/clean/k_line_info_clean_task.py +42 -15
  64. mns_scheduler/k_line/clean/week_month/__init__.py +1 -1
  65. mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +124 -26
  66. mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +2 -2
  67. mns_scheduler/k_line/common/__init__.py +7 -0
  68. mns_scheduler/k_line/common/k_line_common_api.py +188 -0
  69. mns_scheduler/k_line/hot_stocks/__init__.py +1 -1
  70. mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +1 -1
  71. mns_scheduler/k_line/{sync → month_week_daily}/bfq_k_line_sync.py +14 -29
  72. mns_scheduler/k_line/{sync → month_week_daily}/daily_week_month_line_sync.py +11 -12
  73. mns_scheduler/k_line/sync_status/__init__.py +7 -0
  74. mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +54 -0
  75. mns_scheduler/k_line/test/__init__.py +1 -1
  76. mns_scheduler/k_line/test/k_line_info_clean_his_data.py +14 -3
  77. mns_scheduler/k_line/year_quarter/__init__.py +7 -0
  78. mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +76 -0
  79. mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +1 -2
  80. mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +108 -0
  81. mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +5 -0
  82. mns_scheduler/lhb/__init__.py +1 -1
  83. mns_scheduler/lhb/stock_lhb_sync_service.py +1 -1
  84. mns_scheduler/open/__init__.py +1 -1
  85. mns_scheduler/open/sync_one_day_open_data_to_db_service.py +2 -3
  86. mns_scheduler/risk/__init__.py +1 -1
  87. mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +8 -2
  88. mns_scheduler/risk/financial/annual_report_audit_check_api.py +13 -3
  89. mns_scheduler/risk/financial/net_assets_check_api.py +21 -18
  90. mns_scheduler/risk/financial/profit_income_check_api.py +7 -2
  91. mns_scheduler/risk/financial_report_risk_check_api.py +1 -1
  92. mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +1 -1
  93. mns_scheduler/risk/self/wei_pan_stock_api.py +1 -1
  94. mns_scheduler/risk/test/__init__.py +1 -1
  95. mns_scheduler/risk/test/fix_blask_list.py +4 -6
  96. mns_scheduler/risk/transactions/transactions_check_api.py +22 -4
  97. mns_scheduler/self_choose/__init__.py +1 -1
  98. mns_scheduler/self_choose/ths_self_choose_service.py +99 -43
  99. mns_scheduler/trade/auto_login/trader_auto_service.py +7 -4
  100. mns_scheduler/trade/auto_sell_service_api.py +4 -4
  101. mns_scheduler/trade/balance/__init__.py +7 -0
  102. mns_scheduler/trade/balance/ths_account_balance_service.py +7 -0
  103. mns_scheduler/trade/sync_position_api.py +39 -6
  104. mns_scheduler/trade/task/trader_task_service.py +38 -10
  105. mns_scheduler/trade/tfp/__init__.py +7 -0
  106. mns_scheduler/trade/tfp/stock_tfp_info_sync.py +56 -0
  107. mns_scheduler/zb/stock_zb_pool_sync.py +1 -16
  108. mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +2 -2
  109. mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +1 -1
  110. mns_scheduler/zt/script/__init__.py +1 -1
  111. mns_scheduler/zt/script/fix_error_deal_day.py +41 -0
  112. mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +2 -2
  113. mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +2 -2
  114. mns_scheduler/zt/script/sync_now_higt_chg_zt.py +8 -7
  115. mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +260 -83
  116. mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +33 -90
  117. mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +27 -13
  118. mns_scheduler/zz_task/compensation/__init__.py +0 -0
  119. mns_scheduler/zz_task/compensation/compensate_task.py +161 -0
  120. mns_scheduler/zz_task/compensation/compensate_task_one_day.py +142 -0
  121. mns_scheduler/zz_task/data_sync_task.py +197 -103
  122. {mns_scheduler-1.1.8.4.dist-info → mns_scheduler-1.4.5.7.dist-info}/METADATA +1 -1
  123. mns_scheduler-1.4.5.7.dist-info/RECORD +176 -0
  124. {mns_scheduler-1.1.8.4.dist-info → mns_scheduler-1.4.5.7.dist-info}/WHEEL +1 -1
  125. mns_scheduler/2014-2015-test/2014_2015_chg_statistics.py +0 -87
  126. mns_scheduler/big_deal/ths_big_deal_sync.py +0 -98
  127. mns_scheduler/company_info/base/sync_company_base_info_api.py +0 -439
  128. mns_scheduler/company_info/base/sync_company_hold_info_api.py +0 -40
  129. mns_scheduler/company_info/remark/company_remark_info_sync.py +0 -46
  130. mns_scheduler/db/real_time_task_check.py +0 -84
  131. mns_scheduler/debt/kzz_bond_info_sync.py +0 -33
  132. mns_scheduler-1.1.8.4.dist-info/RECORD +0 -142
  133. /mns_scheduler/{2014-2015-test → auto_da_ban}/__init__.py +0 -0
  134. /mns_scheduler/company_info/{base → common}/__init__.py +0 -0
  135. /mns_scheduler/{big_deal → company_info/em_stock_info}/__init__.py +0 -0
  136. /mns_scheduler/company_info/{remark → sync}/__init__.py +0 -0
  137. /mns_scheduler/{debt → company_info/task}/__init__.py +0 -0
  138. /mns_scheduler/k_line/{sync → month_week_daily}/__init__.py +0 -0
  139. {mns_scheduler-1.1.8.4.dist-info → mns_scheduler-1.4.5.7.dist-info}/top_level.txt +0 -0
@@ -11,7 +11,7 @@ project_path = file_path[0:end]
11
11
  sys.path.append(project_path)
12
12
  mongodb_util = MongodbUtil('27017')
13
13
  import mns_common.api.msg.push_msg_api as push_msg_api
14
- import mns_scheduler.company_info.base.sync_company_base_info_api as company_info_sync_api
14
+ import mns_scheduler.company_info.sync.sync_company_info_task as sync_company_info_task
15
15
  import mns_scheduler.company_info.clean.company_info_clean_api as company_info_clean_api
16
16
  import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
17
17
  import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
@@ -38,15 +38,6 @@ def push_msg_to_we_chat_and_redis(concept_code, concept_name, url):
38
38
  ths_concept_clean_api.update_ths_concept_info()
39
39
 
40
40
 
41
- # 保存新概念信息到数据库
42
- def save_ths_concept_list(concept_code, concept_name, str_day, str_now_time):
43
- url = 'http://q.10jqka.com.cn/thshy/detail/code/' + str(concept_code)
44
- ths_concept_list = pd.DataFrame([
45
- [concept_code, concept_code, concept_name, str_day, url, str_now_time, True, True],
46
- ], columns=['_id', 'symbol', 'name', 'str_day', 'url', 'str_now_time', 'success', 'valid'])
47
- mongodb_util.save_mongo(ths_concept_list, 'ths_concept_list')
48
-
49
-
50
41
  # 保存新概念详细信息到数据库
51
42
  def save_ths_concept_detail(new_concept_symbol_df,
52
43
  concept_name, str_day,
@@ -135,8 +126,6 @@ def save_ths_concept_detail(new_concept_symbol_df,
135
126
  ]]
136
127
  query_detail = {"concept_code": int(concept_code)}
137
128
  exist_concept_detail = mongodb_util.find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query_detail)
138
- # 更新入选理由
139
- update_long_short(new_concept_symbol_df)
140
129
 
141
130
  if exist_concept_detail is None or exist_concept_detail.shape[0] == 0:
142
131
  new_concept_symbol_df['grade'] = 1
@@ -169,26 +158,42 @@ def save_ths_concept_detail(new_concept_symbol_df,
169
158
 
170
159
 
171
160
  # 更新入选理由
172
- def update_long_short(new_concept_symbol_df):
161
+ def update_long_short(new_concept_symbol_df, exist_concept_detail):
173
162
  if data_frame_util.is_empty(new_concept_symbol_df):
174
163
  return None
175
164
  for new_concept_one in new_concept_symbol_df.itertuples():
176
165
  try:
177
166
  query = {'symbol': new_concept_one.symbol, 'concept_code': new_concept_one.concept_code}
178
- new_values = {"$set":{'long': new_concept_one.long, "short": new_concept_one.short}}
167
+ new_values = {"$set": {'long': new_concept_one.long, "short": new_concept_one.short}}
179
168
  mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
180
169
  mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL_APP)
181
170
  except BaseException as e:
182
171
  logger.error("更新入选理由异常:{}", e)
183
-
184
- # 更新公司表信息 todo 清空cache 公司表中 common_service_fun_api.py get_company_info_industry
172
+ # 更新已经被删除概念的股票
173
+ # update_delete_concept_symbol(list(new_concept_symbol_df['concept_code'])[0], new_concept_symbol_df,
174
+ # exist_concept_detail)
175
+ # 更新公司表信息 todo 清空cache 公司表中 common_service_fun_api.py get_company_info_industry
176
+
177
+
178
+ ## 更新已经被删除这个概念的股票
179
+ # def update_delete_concept_symbol(concept_code, new_concept_symbol_df, exist_concept_detail):
180
+ # delete_concept_symbol_df = exist_concept_detail.loc[
181
+ # ~(exist_concept_detail['symbol'].isin(list(new_concept_symbol_df['symbol'])))]
182
+ #
183
+ # if data_frame_util.is_not_empty(delete_concept_symbol_df):
184
+ # new_values = {"$set": {"grade": 0}}
185
+ # query = {'symbol': {"$in": list(delete_concept_symbol_df['symbol'])}, 'concept_code': concept_code}
186
+ # mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
187
+ # mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL_APP)
188
+ #
189
+ # exist_concept_detail = exist_concept_detail.loc[exist_concept_detail]
185
190
 
186
191
 
187
192
  def update_company_info(new_concept_symbol_df):
188
193
  if new_concept_symbol_df.shape[0] > 0:
189
194
  symbol_list = list(new_concept_symbol_df['symbol'])
190
- company_info_sync_api.sync_company_base_info(symbol_list)
191
- company_info_clean_api.fix_company_industry(None)
195
+ sync_company_info_task.sync_company_base_info(symbol_list)
196
+ company_info_clean_api.clean_company_info(symbol_list)
192
197
  # 公司缓存信息清除
193
198
  company_common_service_api.company_info_industry_cache_clear()
194
199
 
@@ -31,7 +31,10 @@ def update_ths_concept_choose_reason(ths_symbol_all_concepts, symbol):
31
31
  {'symbol': symbol, "concept_code": int(concept_one.cid)}]}
32
32
  short = concept_one.short
33
33
  long = concept_one.long
34
- new_values = {"$set": {"short": short, "long": long}}
34
+ if data_frame_util.is_string_not_empty(long):
35
+ new_values = {"$set": {"short": short, "long": long}}
36
+ else:
37
+ new_values = {"$set": {"grade": 0}}
35
38
  mongodb_util.update_many(query, new_values, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
36
39
  except BaseException as e:
37
40
  logger.error("更新ths概念入选理由异常{},{},{}", symbol, concept_one.title, e)
@@ -9,7 +9,7 @@ import mns_common.component.concept.ths_concept_common_service_api as ths_concep
9
9
  import mns_common.component.common_service_fun_api as common_service_fun_api
10
10
  import mns_common.api.ths.concept.app.ths_concept_detail_app as ths_concept_detail_app
11
11
  import mns_common.api.ths.wen_cai.ths_wen_cai_api as ths_wen_cai_api
12
- import mns_common.api.em.east_money_stock_api as east_money_stock_api
12
+ import mns_common.component.em.em_stock_info_api as em_stock_info_api
13
13
  import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
14
14
  import mns_common.api.ths.concept.web.ths_concept_detail_web as ths_concept_detail_web
15
15
  import math
@@ -24,7 +24,7 @@ import mns_common.constant.redis_msg_constant as redis_msg_constant
24
24
 
25
25
 
26
26
  def get_ths_concept_detail(concept_code, concept_name):
27
- real_time_quotes_all_stocks = east_money_stock_api.get_real_time_quotes_all_stocks()
27
+ real_time_quotes_all_stocks = em_stock_info_api.get_a_stock_info()
28
28
  # 1 通过入选理获取概念组成股票详情
29
29
  ths_concept_detail_by_explain = get_ths_concept_detail_by_explain(concept_code, real_time_quotes_all_stocks)
30
30
  # 2 app 分享链接获取概念组成详情
@@ -37,10 +37,10 @@ def get_ths_concept_detail(concept_code, concept_name):
37
37
  | (ths_concept_list['web_concept_code'] == int(concept_code))]
38
38
  if data_frame_util.is_not_empty(ths_concept_one_df):
39
39
  concept_name = list(ths_concept_one_df['name'])[0]
40
- if data_frame_util.is_string_not_empty(concept_name) and concept_name is not None:
41
- concept_detail_by_wen_cai_df = get_ths_concept_detail_by_wen_cai(concept_name, real_time_quotes_all_stocks)
42
- else:
43
- concept_detail_by_wen_cai_df = None
40
+ # if data_frame_util.is_string_not_empty(concept_name) and concept_name is not None:
41
+ # concept_detail_by_wen_cai_df = get_ths_concept_detail_by_wen_cai(concept_name, real_time_quotes_all_stocks)
42
+ # else:
43
+ concept_detail_by_wen_cai_df = None
44
44
  # 4 通过web端
45
45
  ths_concept_detail_from_web_df = get_ths_concept_detail_from_web(concept_code, real_time_quotes_all_stocks)
46
46
  # 判断是否都为空
@@ -218,7 +218,7 @@ def sync_ths_concept_detail_to_db(concept_code, concept_name):
218
218
 
219
219
 
220
220
  if __name__ == '__main__':
221
- sync_ths_concept_detail_to_db('886084', '光纤概念')
221
+ sync_ths_concept_detail_to_db('886090', '智谱AI')
222
222
  # real_time_quotes_all_stocks_df = east_money_stock_api.get_real_time_quotes_all_stocks()
223
223
  # get_ths_concept_detail_by_explain('886084', real_time_quotes_all_stocks_df)
224
224
  # get_ths_concept_detail_from_web('886084', real_time_quotes_all_stocks_df)
@@ -39,7 +39,7 @@ def sync_ths_concept_new_index_from_app():
39
39
  # 当前最大概念代码
40
40
  max_concept_code = int(ths_concept_sync_common_api.get_max_concept_code())
41
41
  # 最大概念代码上限
42
- max_concept_code_limit =max_concept_code + 2
42
+ max_concept_code_limit = max_concept_code + 2
43
43
  # 同花顺概念列表
44
44
  ths_concept_list_exist = ths_concept_common_service_api.get_all_ths_concept()
45
45
  # 同步向上3次
@@ -74,11 +74,14 @@ def sync_ths_concept_new_index_from_app():
74
74
  'str_now_time': str_now_time,
75
75
  'web_concept_code': concept_code,
76
76
  'web_concept_url': url,
77
- 'valid': True
77
+ 'valid': True,
78
+ 'grade': 1,
79
+ 'remark': ''
78
80
  }
79
81
  diff_one_df = pd.DataFrame(new_concept_one, index=[1])
82
+ # 保存新增概念信息
80
83
  mongodb_util.save_mongo(diff_one_df, db_name_constant.THS_CONCEPT_LIST)
81
- # 新增概念信息处理
84
+ # 新增概念信息处理 推送到微信
82
85
  ths_concept_sync_common_api.push_msg_to_we_chat_and_redis(concept_code, concept_name,
83
86
  url)
84
87
  # 同步概念详情到db
@@ -134,7 +137,9 @@ def sync_ths_concept_new_index_from_detail():
134
137
  'str_now_time': str_now_time,
135
138
  'web_concept_code': concept_code,
136
139
  'web_concept_url': url,
137
- 'valid': True
140
+ 'valid': True,
141
+ 'grade': 1,
142
+ 'remark': ''
138
143
  }
139
144
  diff_one_df = pd.DataFrame(new_concept_one, index=[1])
140
145
  mongodb_util.save_mongo(diff_one_df, db_name_constant.THS_CONCEPT_LIST)
@@ -1,7 +1,7 @@
1
1
  import os
2
2
  import sys
3
3
  import mns_common.api.ths.concept.web.ths_concept_detail_web as ths_concept_detail_web
4
- import mns_common.api.em.east_money_stock_api as east_money_stock_api
4
+ import mns_common.component.em.em_stock_info_api as em_stock_info_api
5
5
  import mns_common.component.common_service_fun_api as common_service_fun_api
6
6
  from mns_common.db.MongodbUtil import MongodbUtil
7
7
  from loguru import logger
@@ -157,7 +157,7 @@ def update_symbol_new_concept(symbol_df, page_number):
157
157
 
158
158
  def sync_symbol_all_concept(symbol):
159
159
  create_index()
160
- real_time_quotes_now = east_money_stock_api.get_real_time_quotes_all_stocks()
160
+ real_time_quotes_now = em_stock_info_api.get_a_stock_info()
161
161
  real_time_quotes_now = common_service_fun_api.classify_symbol(real_time_quotes_now)
162
162
  if symbol is not None:
163
163
  real_time_quotes_now = real_time_quotes_now.loc[real_time_quotes_now['symbol'] == symbol]
@@ -70,7 +70,7 @@ def sync_col_move(str_day):
70
70
  try:
71
71
  db_export('127.0.0.1:27017', str_day)
72
72
  db_import('127.0.0.1:27019', str_day)
73
- # delete_exist_data(str_day)
73
+ delete_exist_data(str_day)
74
74
  except BaseException as e:
75
75
  logger.error("备份数据出现错误:{}", e)
76
76
 
@@ -115,5 +115,5 @@ if __name__ == '__main__':
115
115
 
116
116
  trade_date_list = mongodb_util.find_query_data('trade_date_list', query_trade)
117
117
  for trade_one in trade_date_list.itertuples():
118
- trade_date = trade_one.trade_date
119
- sync_col_move(trade_date)
118
+ trade_date_move = trade_one.trade_date
119
+ sync_col_move(trade_date_move)
@@ -2,6 +2,6 @@ import sys
2
2
  import os
3
3
 
4
4
  file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
5
+ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
@@ -2,7 +2,7 @@ import sys
2
2
  import os
3
3
 
4
4
  file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
5
+ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  import pymongo
@@ -0,0 +1,7 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
@@ -0,0 +1,34 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+ from loguru import logger
9
+
10
+
11
+ def db_export(db, col):
12
+ cmd = 'F:/mongo/bin/mongodump.exe --host ' + db + ' -d patience -c ' + col + ' -o D:/back'
13
+ os.system(cmd)
14
+ logger.info("export finished:{}", col)
15
+
16
+
17
+ def db_import(db, col):
18
+ cmd = 'F:/mongo/bin/mongorestore.exe --host ' + db + ' -d patience -c ' + col + ' D:/back/patience/' + col + '.bson'
19
+ os.system(cmd)
20
+
21
+ path = 'D:\\back\\patience\\' + col + '.bson'
22
+ cmd_del = 'del /F /S /Q ' + path
23
+ os.system(cmd_del)
24
+
25
+ logger.info("import finished:{}", col)
26
+
27
+
28
+ def handle_one_col(col_name):
29
+ db_export('127.0.0.1:27017', col_name)
30
+ db_import('127.0.0.1:27019', col_name)
31
+
32
+
33
+ if __name__ == '__main__':
34
+ handle_one_col('one_minute_k_line_bfq_h')
@@ -2,6 +2,6 @@ import sys
2
2
  import os
3
3
 
4
4
  file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
5
+ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
@@ -2,23 +2,32 @@ import sys
2
2
  import os
3
3
 
4
4
  file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
5
+ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  import mns_common.utils.data_frame_util as data_frame_util
9
9
  from mns_scheduler.db.script.sync.remote_mongo_util import RemoteMongodbUtil
10
10
  from mns_scheduler.db.script.sync.local_mongo_util import LocalMongodbUtil
11
11
  from loguru import logger
12
+ import numpy as np
12
13
 
13
14
  remote_mongodb_util = RemoteMongodbUtil('27017')
14
15
  local_mongodb_util = LocalMongodbUtil('27017')
15
16
 
16
17
  col_list = [
18
+ 'zt_reason_analysis',
19
+ 'today_exclude_stocks',
20
+ 'today_self_choose_stock',
21
+ 'main_line_detail',
22
+ 'em_a_stock_info',
23
+ 'em_etf_info',
24
+ 'em_kzz_info',
25
+ 'em_hk_stock_info',
26
+ 'company_info',
17
27
  'company_remark_info',
18
28
  'company_holding_info',
19
29
  'industry_concept_remark',
20
30
  'trade_date_list',
21
- 'company_info',
22
31
  'de_list_stock',
23
32
  'kpl_best_choose_index',
24
33
  'kpl_best_choose_index_detail',
@@ -29,8 +38,12 @@ col_list = [
29
38
  'self_choose_stock',
30
39
  'stock_account_info',
31
40
  'ths_concept_list',
32
- 'stock_zt_pool',
33
- 'ths_stock_concept_detail'
41
+ 'stock_zt_pool_five',
42
+ 'ths_stock_concept_detail',
43
+ 'stock_high_chg_pool',
44
+ 'today_new_concept_list',
45
+ 'ths_stock_concept_detail_app',
46
+
34
47
  ]
35
48
 
36
49
 
@@ -41,6 +54,8 @@ def remote_data():
41
54
  if data_frame_util.is_not_empty(col_df):
42
55
  result = local_mongodb_util.remove_all_data(col)
43
56
  if result.acknowledged:
57
+ col_df.replace([np.inf, -np.inf], 0, inplace=True)
58
+
44
59
  local_mongodb_util.save_mongo(col_df, col)
45
60
 
46
61
  logger.info("同步集合完成:{}", col)
@@ -48,5 +63,51 @@ def remote_data():
48
63
  logger.error("同步失败:{},{}", e, col)
49
64
 
50
65
 
66
+ def sync_zt_data(str_day):
67
+ col = 'stock_zt_pool'
68
+ try:
69
+ query = {'str_day': str_day}
70
+ col_df = remote_mongodb_util.find_query_data(col, query)
71
+ if data_frame_util.is_not_empty(col_df):
72
+ col_df.replace([np.inf, -np.inf], 0, inplace=True)
73
+ local_mongodb_util.save_mongo(col_df, col)
74
+
75
+ logger.info("同步集合完成:{}", col)
76
+ except BaseException as e:
77
+ logger.error("同步失败:{},{}", e, col)
78
+
79
+
80
+ def sync_open_data():
81
+ query = {"$and": [{'trade_date': {"$gte": "2025-03-21"}}, {'trade_date': {"$lte": "2025-04-02"}}]}
82
+ trade_date_list_df = remote_mongodb_util.find_query_data('trade_date_list', query)
83
+ trade_date_list_df = trade_date_list_df.sort_values(by=['trade_date'], ascending=False)
84
+ for trade_date_one in trade_date_list_df.itertuples():
85
+ try:
86
+ trade_date = trade_date_one.trade_date
87
+ query_01 = {"str_day": trade_date}
88
+ realtime_quotes_now_open_df = remote_mongodb_util.find_query_data('realtime_quotes_now_open', query_01)
89
+ if 'ths_concept_list' in realtime_quotes_now_open_df.columns:
90
+ del realtime_quotes_now_open_df['ths_concept_list']
91
+ local_mongodb_util.insert_mongo(realtime_quotes_now_open_df, 'realtime_quotes_now_open')
92
+ logger.info("同步到:{}", trade_date)
93
+ except BaseException as e:
94
+ logger.error("同步异常:{}", e)
95
+ return trade_date_list_df
96
+
97
+
51
98
  if __name__ == '__main__':
99
+ sync_zt_data('2025-12-21')
100
+ sync_zt_data('2025-12-23')
101
+ sync_zt_data('2025-12-24')
102
+ sync_zt_data('2025-12-25')
103
+ sync_zt_data('2025-12-26')
52
104
  remote_data()
105
+ # sync_zt_data('2025-08-26')
106
+ # sync_zt_data('2025-08-25')
107
+ # sync_zt_data('2025-08-26')
108
+ # remote_data()
109
+ # sync_zt_data('2025-07-23')
110
+ # sync_zt_data('2025-07-24')
111
+ # sync_zt_data('2025-07-25')
112
+ # sync_open_data()
113
+ # remote_data()
@@ -0,0 +1,80 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ from mns_scheduler.db.script.sync.remote_mongo_util import RemoteMongodbUtil
10
+ from mns_scheduler.db.script.sync.local_mongo_util import LocalMongodbUtil
11
+ from loguru import logger
12
+
13
+ remote_mongodb_util = RemoteMongodbUtil('27017')
14
+ local_mongodb_util = LocalMongodbUtil('27017')
15
+
16
+
17
+ def create_index(db_name):
18
+ local_mongodb_util.create_index(db_name, [("symbol", 1)])
19
+
20
+ local_mongodb_util.create_index(db_name, [("str_now_date", 1)])
21
+
22
+ local_mongodb_util.create_index(db_name, [("symbol", 1), ("number", 1)])
23
+
24
+
25
+ def sync_real_time_data(str_day, min_number, max_number):
26
+ db_name = 'realtime_quotes_now_' + str_day
27
+ # 创建索引
28
+ create_index(db_name)
29
+ while min_number <= max_number:
30
+ query = {'number': min_number}
31
+ data_df = remote_mongodb_util.find_query_data(db_name, query)
32
+ local_mongodb_util.insert_mongo(data_df, db_name)
33
+ min_number = min_number + 1
34
+ logger.info(min_number)
35
+
36
+
37
+ def sync_k_line(str_day):
38
+ query = {"str_day": str_day}
39
+ db_name = 'k_line_info'
40
+ data_df = remote_mongodb_util.find_query_data(db_name, query)
41
+ try:
42
+ local_mongodb_util.insert_mongo(data_df, db_name)
43
+ except BaseException as e:
44
+ logger.error("出现异常:{}", e)
45
+ pass
46
+
47
+
48
+ if __name__ == '__main__':
49
+ str_day_01 = '2025-09-10'
50
+ sync_k_line(str_day_01)
51
+
52
+ # sync_real_time_data(str_day_01, 1, 2500)
53
+
54
+ # sync_k_line(str_day_01)
55
+ # sync_k_line('2024-11-13')
56
+ # sync_k_line('2024-11-12')
57
+ # sync_k_line('2024-11-15') 232
58
+
59
+ # sync_real_time_data('2024-11-15', 10, 1010)
60
+
61
+ # sync_k_line('2024-12-20')
62
+ # sync_k_line('2024-12-19')
63
+ # sync_k_line('2024-12-18')
64
+ # sync_k_line('2024-12-17')
65
+ # sync_k_line('2024-12-16')
66
+ #
67
+ # sync_k_line('2024-12-13')
68
+ # sync_k_line('2024-12-12')
69
+ # sync_k_line('2024-12-11')
70
+ # sync_k_line('2024-12-10')
71
+ # sync_k_line('2024-12-09')
72
+ #
73
+ # sync_k_line('2024-12-06')
74
+ # sync_k_line('2024-12-05')
75
+ # sync_k_line('2024-12-04')
76
+ # sync_k_line('2024-12-03')
77
+ # sync_k_line('2024-12-02')
78
+
79
+ # sync_real_time_data('2024-12-20', 1000, 2000)
80
+ # sync_real_time_data('2024-11-13', 10, 1010)
@@ -0,0 +1,69 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+
9
+ import mns_common.utils.data_frame_util as data_frame_util
10
+ from mns_scheduler.db.script.sync.remote_mongo_util import RemoteMongodbUtil
11
+ from mns_scheduler.db.script.sync.local_mongo_util import LocalMongodbUtil
12
+ from loguru import logger
13
+ import numpy as np
14
+
15
+ remote_mongodb_util = RemoteMongodbUtil('27017')
16
+ local_mongodb_util = LocalMongodbUtil('27017')
17
+
18
+
19
+ def sync_real_time_data(str_day, min_number, max_number):
20
+ db_name = 'realtime_quotes_now_' + str_day
21
+ while min_number <= max_number:
22
+ query = {'number': min_number}
23
+ data_df = remote_mongodb_util.find_query_data(db_name, query)
24
+ local_mongodb_util.insert_mongo(data_df, db_name)
25
+ min_number = min_number + 1
26
+ logger.info(min_number)
27
+
28
+
29
+ def sync_k_line(str_day):
30
+ query = {"str_day": str_day}
31
+ db_name = 'k_line_info'
32
+ data_df = remote_mongodb_util.find_query_data(db_name, query)
33
+ try:
34
+ local_mongodb_util.save_mongo(data_df, db_name)
35
+ except BaseException as e:
36
+ pass
37
+
38
+
39
+ if __name__ == '__main__':
40
+ sync_k_line('2025-08-27')
41
+ # sync_k_line('2025-07-24')
42
+ # sync_k_line('2025-07-25')
43
+ # sync_k_line(str_day_01)
44
+ # sync_k_line('2024-11-13')
45
+ # sync_k_line('2024-11-12')
46
+ # sync_k_line('2024-11-15') 232
47
+ # sync_real_time_data(str_day_01, 1, 2000)
48
+ # sync_real_time_data('2024-11-15', 10, 1010)
49
+ #
50
+ # sync_k_line('2024-12-20')
51
+ # sync_k_line('2024-12-19')
52
+ # sync_k_line('2024-12-18')
53
+ # sync_k_line('2024-12-17')
54
+ # sync_k_line('2024-12-16')
55
+ #
56
+ # sync_k_line('2024-12-13')
57
+ # sync_k_line('2024-12-12')
58
+ # sync_k_line('2024-12-11')
59
+ # sync_k_line('2024-12-10')
60
+ # sync_k_line('2024-12-09')
61
+ #
62
+ # sync_k_line('2024-12-06')
63
+ # sync_k_line('2024-12-05')
64
+ # sync_k_line('2024-12-04')
65
+ # sync_k_line('2024-12-03')
66
+ # sync_k_line('2024-12-02')
67
+
68
+ # sync_real_time_data('2024-12-20', 1000, 2000)
69
+ # sync_real_time_data('2024-11-13', 10, 1010)
@@ -0,0 +1,7 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
@@ -0,0 +1,36 @@
1
+ import sys
2
+ import os
3
+
4
+ file_path = os.path.abspath(__file__)
5
+ end = file_path.index('mns') + 17
6
+ project_path = file_path[0:end]
7
+ sys.path.append(project_path)
8
+ from mns_common.db.MongodbUtil import MongodbUtil
9
+ from loguru import logger
10
+
11
+ mongodb_util_27017 = MongodbUtil('27017')
12
+ mongodb_util_27019 = MongodbUtil('27019')
13
+
14
+
15
+ def update_col_data():
16
+ query = {"$and": [{'trade_date': {'$lte': '2024-05-23'}},
17
+ {'trade_date': {'$gte': '2022-07-02'}}]}
18
+ trade_date_list_df = mongodb_util_27017.find_query_data('trade_date_list', query)
19
+ trade_date_list_df = trade_date_list_df.sort_values(by=['trade_date'], ascending=True)
20
+ for trade_one in trade_date_list_df.itertuples():
21
+ col_name = 'realtime_quotes_now_' + trade_one.trade_date
22
+ new_values = {'$unset': {
23
+ 'classification': '',
24
+ 'medium_order_net_inflow': '',
25
+ 'small_order_net_inflow': '',
26
+ 'str_day': '',
27
+ 'list_date': '',
28
+ 'amount_level': '',
29
+ 'name': '', 'industry': '', 'concept': ''}}
30
+
31
+ mongodb_util_27019.update_many({}, new_values, col_name)
32
+ logger.info("完成集合数据更新:{}", col_name)
33
+
34
+
35
+ if __name__ == '__main__':
36
+ update_col_data()
@@ -2,6 +2,6 @@ import sys
2
2
  import os
3
3
 
4
4
  file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
5
+ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
@@ -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)
@@ -2,12 +2,12 @@ import sys
2
2
  import os
3
3
 
4
4
  file_path = os.path.abspath(__file__)
5
- end = file_path.index('mns') + 16
5
+ end = file_path.index('mns') + 17
6
6
  project_path = file_path[0:end]
7
7
  sys.path.append(project_path)
8
8
  import akshare as ak
9
9
  from mns_common.db.MongodbUtil import MongodbUtil
10
- import mns_scheduler.finance.finance_common_api as finance_common_api
10
+ import mns_scheduler.finance.em.finance_common_api as finance_common_api
11
11
  import mns_common.constant.db_name_constant as db_name_constant
12
12
 
13
13
  mongodb_util = MongodbUtil('27017')