mns-scheduler 1.0.8.7__py3-none-any.whl → 1.4.3.2__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 (156) hide show
  1. mns_scheduler/__init__.py +1 -3
  2. mns_scheduler/company_info/announce/company_announce_sync_service.py +65 -0
  3. mns_scheduler/company_info/{company_info_sync_api.py → base/sync_company_base_info_api.py} +239 -227
  4. mns_scheduler/company_info/base/sync_company_hold_info_api.py +37 -0
  5. mns_scheduler/company_info/base/sync_company_product_area_industry.py +161 -0
  6. mns_scheduler/company_info/clean/company_info_clean_api.py +133 -0
  7. mns_scheduler/company_info/constant/company_constant_data.py +497 -0
  8. mns_scheduler/company_info/{de_list_stock_service.py → de_list_stock/de_list_stock_service.py} +1 -1
  9. mns_scheduler/company_info/em_stock_info/__init__.py +7 -0
  10. mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +80 -0
  11. mns_scheduler/company_info/remark/__init__.py +7 -0
  12. mns_scheduler/company_info/remark/company_remark_info_sync.py +46 -0
  13. mns_scheduler/concept/clean/kpl_concept_clean_api.py +1 -1
  14. mns_scheduler/concept/clean/ths_concept_clean_api.py +74 -51
  15. mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +112 -56
  16. mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +6 -6
  17. mns_scheduler/concept/ths/detaill/__init__.py +0 -0
  18. mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +226 -0
  19. mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +169 -0
  20. mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +11 -23
  21. mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +19 -15
  22. mns_scheduler/db/col_move_service.py +10 -7
  23. mns_scheduler/db/db_status.py +1 -1
  24. mns_scheduler/db/script/__init__.py +7 -0
  25. mns_scheduler/db/script/col_move_script.py +45 -0
  26. mns_scheduler/db/script/db_move/__init__.py +7 -0
  27. mns_scheduler/db/script/db_move/col_move_one_service.py +34 -0
  28. mns_scheduler/db/script/sync/__init__.py +7 -0
  29. mns_scheduler/db/script/sync/local_mongo_util.py +231 -0
  30. mns_scheduler/db/script/sync/remote_data_sync_to_local.py +105 -0
  31. mns_scheduler/db/script/sync/remote_mongo_util.py +306 -0
  32. mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +80 -0
  33. mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +69 -0
  34. mns_scheduler/db/script/update/__init__.py +7 -0
  35. mns_scheduler/db/script/update/update_col_field.py +36 -0
  36. mns_scheduler/finance/__init__.py +1 -1
  37. mns_scheduler/finance/{em_financial_asset_liability_sync_service_api.py → em/em_financial_asset_liability_sync_service_api.py} +3 -3
  38. mns_scheduler/finance/{em_financial_profit_sync_service_api.py → em/em_financial_profit_sync_service_api.py} +30 -25
  39. mns_scheduler/finance/{finance_common_api.py → em/finance_common_api.py} +4 -4
  40. mns_scheduler/finance/sync_financial_report_service_task.py +202 -0
  41. mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +77 -0
  42. mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py +161 -0
  43. mns_scheduler/hk/__init__.py +1 -1
  44. mns_scheduler/hk/hk_company_info_sync_service_api.py +49 -5
  45. mns_scheduler/hk/hk_industry_info_sync_service_api.py +68 -0
  46. mns_scheduler/industry/__init__.py +7 -0
  47. mns_scheduler/industry/ths/__init__.py +7 -0
  48. mns_scheduler/industry/ths/ths_industry_index_service.py +58 -0
  49. mns_scheduler/industry/ths/ths_industry_sync_service.py +68 -0
  50. mns_scheduler/irm/__init__.py +1 -1
  51. mns_scheduler/irm/api/__init__.py +1 -1
  52. mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +1 -1
  53. mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +1 -1
  54. mns_scheduler/irm/stock_irm_cninfo_service.py +15 -13
  55. mns_scheduler/k_line/clean/daily/__init__.py +1 -1
  56. mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +57 -7
  57. mns_scheduler/k_line/clean/daily/daily_k_line_service.py +16 -3
  58. mns_scheduler/k_line/clean/k_line_info_clean_impl.py +3 -2
  59. mns_scheduler/k_line/clean/k_line_info_clean_task.py +42 -31
  60. mns_scheduler/k_line/clean/week_month/__init__.py +1 -1
  61. mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +125 -27
  62. mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +72 -17
  63. mns_scheduler/k_line/common/__init__.py +7 -0
  64. mns_scheduler/k_line/common/k_line_common_api.py +188 -0
  65. mns_scheduler/k_line/hot_stocks/__init__.py +1 -1
  66. mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +1 -1
  67. mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +77 -0
  68. mns_scheduler/k_line/{sync → month_week_daily}/daily_week_month_line_sync.py +14 -14
  69. mns_scheduler/k_line/sync_status/__init__.py +7 -0
  70. mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +54 -0
  71. mns_scheduler/k_line/test/__init__.py +7 -0
  72. mns_scheduler/k_line/test/k_line_info_clean_his_data.py +41 -0
  73. mns_scheduler/k_line/year_quarter/__init__.py +7 -0
  74. mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +76 -0
  75. mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +4 -2
  76. mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +108 -0
  77. mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +12 -7
  78. mns_scheduler/lhb/__init__.py +1 -1
  79. mns_scheduler/lhb/stock_lhb_sync_service.py +1 -1
  80. mns_scheduler/open/__init__.py +1 -1
  81. mns_scheduler/open/sync_one_day_open_data_to_db_service.py +6 -22
  82. mns_scheduler/risk/__init__.py +1 -1
  83. mns_scheduler/risk/compliance/__init__.py +0 -0
  84. mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +71 -0
  85. mns_scheduler/risk/financial/__init__.py +0 -0
  86. mns_scheduler/risk/financial/annual_report_audit_check_api.py +54 -0
  87. mns_scheduler/risk/financial/net_assets_check_api.py +75 -0
  88. mns_scheduler/risk/financial/profit_income_check_api.py +80 -0
  89. mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +1 -0
  90. mns_scheduler/risk/financial_report_risk_check_api.py +42 -0
  91. mns_scheduler/risk/major_violations/__init__.py +0 -0
  92. mns_scheduler/risk/{register_and_investigate_stock_sync_api.py → major_violations/register_and_investigate_stock_sync_api.py} +17 -8
  93. mns_scheduler/risk/self/__init__.py +0 -0
  94. mns_scheduler/risk/{wei_pan_stock_api.py → self/wei_pan_stock_api.py} +10 -4
  95. mns_scheduler/risk/test/__init__.py +7 -0
  96. mns_scheduler/{finance → risk}/test/fix_blask_list.py +6 -10
  97. mns_scheduler/risk/transactions/__init__.py +0 -0
  98. mns_scheduler/risk/transactions/transactions_check_api.py +183 -0
  99. mns_scheduler/self_choose/__init__.py +7 -0
  100. mns_scheduler/self_choose/ths_self_choose_service.py +158 -0
  101. mns_scheduler/trade/auto_ipo_buy_api.py +2 -2
  102. mns_scheduler/trade/auto_login/__init__.py +7 -0
  103. mns_scheduler/trade/auto_login/trader_auto_service.py +32 -0
  104. mns_scheduler/trade/auto_sell_service_api.py +10 -8
  105. mns_scheduler/trade/balance/__init__.py +7 -0
  106. mns_scheduler/trade/balance/ths_account_balance_service.py +7 -0
  107. mns_scheduler/trade/sync_position_api.py +41 -8
  108. mns_scheduler/trade/task/__init__.py +7 -0
  109. mns_scheduler/trade/task/trader_task_service.py +65 -0
  110. mns_scheduler/trade/tfp/__init__.py +7 -0
  111. mns_scheduler/trade/tfp/stock_tfp_info_sync.py +56 -0
  112. mns_scheduler/zb/stock_zb_pool_sync.py +1 -15
  113. mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +2 -3
  114. mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +12 -8
  115. mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +10 -25
  116. mns_scheduler/zt/script/__init__.py +1 -1
  117. mns_scheduler/zt/script/fix_error_deal_day.py +41 -0
  118. mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +2 -11
  119. mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +2 -2
  120. mns_scheduler/zt/script/sync_now_higt_chg_zt.py +43 -0
  121. mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +413 -0
  122. mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +193 -0
  123. mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +58 -0
  124. mns_scheduler/zz_task/compensation/__init__.py +0 -0
  125. mns_scheduler/zz_task/compensation/compensate_task.py +161 -0
  126. mns_scheduler/zz_task/compensation/compensate_task_one_day.py +142 -0
  127. mns_scheduler/zz_task/data_sync_task.py +271 -121
  128. {mns_scheduler-1.0.8.7.dist-info → mns_scheduler-1.4.3.2.dist-info}/METADATA +1 -1
  129. mns_scheduler-1.4.3.2.dist-info/RECORD +169 -0
  130. {mns_scheduler-1.0.8.7.dist-info → mns_scheduler-1.4.3.2.dist-info}/WHEEL +1 -1
  131. mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -122
  132. mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -99
  133. mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -139
  134. mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -55
  135. mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -51
  136. mns_scheduler/big_deal/ths_big_deal_sync.py +0 -98
  137. mns_scheduler/company_info/company_constant_data.py +0 -322
  138. mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -103
  139. mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -89
  140. mns_scheduler/finance/financial_high_risk_stock_clean_service_api.py +0 -202
  141. mns_scheduler/finance/sync_financial_report_service_api.py +0 -113
  142. mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -27
  143. mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -232
  144. mns_scheduler/risk/stock_equity_mortgage_sync_api.py +0 -32
  145. mns_scheduler/zt/zt_pool/zt_pool_sync_api.py +0 -151
  146. mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -28
  147. mns_scheduler-1.0.8.7.dist-info/RECORD +0 -112
  148. /mns_scheduler/{backup/app → company_info/announce}/__init__.py +0 -0
  149. /mns_scheduler/{backup/em → company_info/base}/__init__.py +0 -0
  150. /mns_scheduler/{backup/wen_cai → company_info/clean}/__init__.py +0 -0
  151. /mns_scheduler/{big_deal → company_info/constant}/__init__.py +0 -0
  152. /mns_scheduler/{real_time → company_info/de_list_stock}/__init__.py +0 -0
  153. /mns_scheduler/{backup → finance/em}/__init__.py +0 -0
  154. /mns_scheduler/finance/{test → xue_qiu}/__init__.py +0 -0
  155. /mns_scheduler/k_line/{sync → month_week_daily}/__init__.py +0 -0
  156. {mns_scheduler-1.0.8.7.dist-info → mns_scheduler-1.4.3.2.dist-info}/top_level.txt +0 -0
@@ -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)
@@ -2,28 +2,28 @@ 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
- import mns_common.component.trade.trade_service_api as trade_service_api
8
+ import mns_common.component.deal.deal_service_api as deal_service_api
9
9
  import pandas as pd
10
10
  import mns_common.utils.data_frame_util as data_frame_util
11
11
  import mns_common.constant.db_name_constant as db_name_constant
12
- import datetime
13
-
12
+ from datetime import datetime
13
+ from mns_common.component.deal.terminal_enum import TerminalEnum
14
14
  from mns_common.db.MongodbUtil import MongodbUtil
15
15
 
16
16
  mongodb_util = MongodbUtil('27017')
17
17
 
18
18
 
19
19
  # 同步持仓
20
- def sync_position():
21
- now_date = datetime.datetime.now()
20
+ def sync_position_ths():
21
+ now_date = datetime.now()
22
22
  str_day = now_date.strftime('%Y-%m-%d')
23
23
  query_exist = {'str_day': str_day}
24
24
  if mongodb_util.exist_data_query(db_name_constant.POSITION_STOCK, query_exist):
25
25
  return None
26
- position_list = trade_service_api.get_position()
26
+ position_list = deal_service_api.get_position('easy_trader')
27
27
  position_df = pd.DataFrame(position_list)
28
28
  position_df = position_df.rename(columns={"明细": "detail",
29
29
  "序号": "index",
@@ -52,5 +52,38 @@ def sync_position():
52
52
  mongodb_util.save_mongo(position_df, db_name_constant.POSITION_STOCK)
53
53
 
54
54
 
55
+ def sync_position_qmt():
56
+ now_date = datetime.now()
57
+ str_day = now_date.strftime('%Y-%m-%d')
58
+ query_exist = {'str_day': str_day}
59
+ # if mongodb_util.exist_data_query(db_name_constant.POSITION_STOCK, query_exist):
60
+ # return None
61
+ position_list = deal_service_api.get_position(TerminalEnum.QMT.terminal_code)
62
+ if len(position_list) == 0:
63
+ return None
64
+ position_df = pd.DataFrame(position_list)
65
+ position_df = position_df.rename(columns={
66
+ "stock_code": "symbol",
67
+ "avg_price": "cost_price",
68
+ "profit_loss": "floating_profit_loss",
69
+ "market_value": "flow_mv",
70
+ "can_use_volume": "available_position",
71
+ "frozen_volume": "frozen_position",
72
+ })
73
+
74
+ position_df['cost_price'] = round(position_df['cost_price'], 2)
75
+ position_df['open_price'] = round(position_df['open_price'], 2)
76
+
77
+ position_df['open_position'] = position_df['available_position'] + position_df['frozen_position'] + position_df[
78
+ 'on_road_volume']
79
+
80
+ position_df['symbol'] = position_df['symbol'].str.slice(0, 6)
81
+
82
+ position_df["_id"] = position_df['symbol'] + '-' + str_day
83
+ position_df["str_day"] = str_day
84
+ position_df["valid"] = True
85
+ mongodb_util.save_mongo(position_df, db_name_constant.POSITION_STOCK)
86
+
87
+
55
88
  if __name__ == '__main__':
56
- sync_position()
89
+ sync_position_qmt()
@@ -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,65 @@
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
+ import mns_common.utils.cmd_util as cmd_util
9
+ import time
10
+ import mns_scheduler.trade.auto_login.trader_auto_service as trader_auto_service
11
+ import mns_common.utils.data_frame_util as data_frame_util
12
+ from loguru import logger
13
+
14
+ # 交易服务端
15
+ TRADER_SERVER_PATH = 'H:\\mns_trader_server.bat'
16
+ # 实时行情同步任务 python名称
17
+ TRADER_SERVER_NAME = "mns_trader_server"
18
+
19
+
20
+ # 打开交易客户端
21
+ def open_trader_terminal():
22
+ # 打开 [交易web服务端]
23
+ logger.info('打开 [交易web服务端]')
24
+ if bool(1- is_open_trader_server()):
25
+ cmd_util.open_bat_file(TRADER_SERVER_PATH)
26
+ time.sleep(10)
27
+ logger.info('自动登陆ths和qmt')
28
+ # 自动登陆ths和qmt
29
+ trader_auto_service.auto_login()
30
+ time.sleep(5)
31
+ # 杀死[交易web服务端],使用同花顺需要先打开xiadan.exe,在重新打开[交易web服务端]
32
+ logger.info('杀死[交易web服务端]')
33
+ kill_server()
34
+ time.sleep(5)
35
+ logger.info('重新打开 [交易web服务端]')
36
+ # 重新打开 [交易web服务端]
37
+ cmd_util.open_bat_file(TRADER_SERVER_PATH)
38
+
39
+
40
+ def is_open_trader_server():
41
+ all_cmd_processes = cmd_util.get_all_process()
42
+ all_cmd_processes_trader = all_cmd_processes.loc[
43
+ (all_cmd_processes['total_info'].str.contains(TRADER_SERVER_NAME, case=False, na=False))]
44
+ if data_frame_util.is_not_empty(all_cmd_processes_trader):
45
+ return True
46
+ else:
47
+ return False
48
+
49
+
50
+ def kill_server():
51
+ all_cmd_processes = cmd_util.get_all_process()
52
+ all_cmd_processes_trader = all_cmd_processes.loc[
53
+ (all_cmd_processes['total_info'].str.contains(TRADER_SERVER_NAME, case=False, na=False))]
54
+ if data_frame_util.is_not_empty(all_cmd_processes_trader):
55
+ for processes_one in all_cmd_processes_trader.itertuples():
56
+ try:
57
+ process_pid = processes_one.process_pid
58
+ cmd_util.kill_process_by_pid(process_pid)
59
+ except BaseException as e:
60
+ logger.error("杀死进程异常:{}", e)
61
+
62
+
63
+ if __name__ == '__main__':
64
+ # kill_server()
65
+ open_trader_terminal()
@@ -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,56 @@
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.component.tfp.stock_tfp_api as stock_tfp_api
10
+ import mns_common.constant.db_name_constant as db_name_constant
11
+ import mns_common.utils.data_frame_util as data_frame_util
12
+ from mns_common.db.MongodbUtil import MongodbUtil
13
+ import mns_common.component.common_service_fun_api as common_service_fun_api
14
+
15
+ mongodb_util = MongodbUtil('27017')
16
+
17
+
18
+ def sync_stock_tfp(str_day):
19
+ stock_tfp_df = stock_tfp_api.get_stock_tfp_by_day(str_day)
20
+ if data_frame_util.is_not_empty(stock_tfp_df):
21
+ stock_tfp_df['sus_begin_time'] = stock_tfp_df['sus_begin_time'].fillna('无')
22
+ stock_tfp_df['sus_end_time'] = stock_tfp_df['sus_end_time'].fillna('无')
23
+ stock_tfp_df['resume_time'] = stock_tfp_df['resume_time'].fillna('无')
24
+ stock_tfp_df['_id'] = stock_tfp_df['symbol'] + "_" + str_day
25
+ # 排除name列中值包含'B'的行
26
+ stock_tfp_df = stock_tfp_df[~stock_tfp_df['name'].str.contains('B', na=False)]
27
+
28
+ stock_tfp_df['sus_begin_time'] = stock_tfp_df['sus_begin_time'].astype(str)
29
+ stock_tfp_df['sus_end_time'] = stock_tfp_df['sus_end_time'].astype(str)
30
+ stock_tfp_df['resume_time'] = stock_tfp_df['resume_time'].astype(str)
31
+ stock_tfp_df['sus_begin_date'] = stock_tfp_df['sus_begin_date'].astype(str)
32
+ stock_tfp_df = common_service_fun_api.exclude_st_symbol(stock_tfp_df)
33
+ # 根据条件设置新列'type'的值
34
+
35
+ # 初始化类型值
36
+ stock_tfp_df['type'] = '0'
37
+ stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '盘中停牌', 'type'] = '0'
38
+ stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '停牌一天', 'type'] = '1'
39
+ stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '连续停牌', 'type'] = '2'
40
+ stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '刊登重要公告', 'type'] = '3'
41
+ stock_tfp_df.loc[stock_tfp_df['sus_reason'] == '拟筹划重大资产重组', 'type'] = '4'
42
+ stock_tfp_df['valid'] = True
43
+ stock_tfp_df['str_day'] = str_day
44
+ stock_tfp_df.loc[stock_tfp_df['type'] == '2', 'valid'] = False
45
+ stock_tfp_df.loc[stock_tfp_df['type'] == '1', 'valid'] = False
46
+
47
+ stock_tfp_df = stock_tfp_df.fillna(0)
48
+
49
+ mongodb_util.save_mongo(stock_tfp_df, db_name_constant.STOCK_TFP_INFO)
50
+
51
+ return stock_tfp_df
52
+
53
+
54
+ if __name__ == '__main__':
55
+ df = sync_stock_tfp('2025-07-30')
56
+ print(df)
@@ -27,18 +27,4 @@ def sync_stock_zb_pool(str_now_day):
27
27
 
28
28
 
29
29
  if __name__ == '__main__':
30
- sync_date = date_handle_util.add_date_day('20231214', 1)
31
-
32
- now_date = datetime.now()
33
-
34
- str_now_day_01 = sync_date.strftime('%Y-%m-%d')
35
-
36
- while now_date > sync_date:
37
- stock_zb_pool_df = sync_stock_zb_pool(str_now_day_01)
38
- if stock_zb_pool_df is None:
39
- sync_date = date_handle_util.add_date_day(date_handle_util.no_slash_date(str_now_day_01), 1)
40
- str_now_day_01 = sync_date.strftime('%Y-%m-%d')
41
- continue
42
- mongodb_util.save_mongo(stock_zb_pool_df, 'stock_zb_pool')
43
- sync_date = date_handle_util.add_date_day(date_handle_util.no_slash_date(str_now_day_01), 1)
44
- str_now_day_01 = sync_date.strftime('%Y-%m-%d')
30
+ sync_stock_zb_pool('2025-04-18')
@@ -9,7 +9,7 @@ import pandas as pd
9
9
  from loguru import logger
10
10
  import mns_common.component.common_service_fun_api as common_service_fun_api
11
11
  import mns_common.component.trade_date.trade_date_common_service_api as trade_date_common_service_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.utils.date_handle_util as date_handle_util
14
14
  import mns_common.component.company.company_common_service_api as company_common_service_api
15
15
  from mns_common.db.MongodbUtil import MongodbUtil
@@ -138,7 +138,7 @@ def sync_stock_high_chg_pool_list(str_day, symbol_list):
138
138
  now_date = datetime.now()
139
139
  now_day = now_date.strftime('%Y-%m-%d')
140
140
 
141
- real_time_quotes_now_init = east_money_stock_api.get_real_time_quotes_all_stocks()
141
+ real_time_quotes_now_init = em_stock_info_api.get_a_stock_info()
142
142
 
143
143
  last_trade_zt_pool = zt_common_service_api.get_last_trade_day_zt(str_day)
144
144
 
@@ -294,4 +294,3 @@ def get_symbol_last_concept(symbol, str_day):
294
294
  return mongodb_util.descend_query(query, db_name_constant.THS_STOCK_CONCEPT_DETAIL, 'str_day', 1)
295
295
 
296
296
 
297
-
@@ -9,7 +9,7 @@ sys.path.append(project_path)
9
9
  from loguru import logger
10
10
  import mns_common.component.common_service_fun_api as common_service_fun_api
11
11
  import mns_common.utils.date_handle_util as date_handle_util
12
- import mns_common.component.company.company_common_service_api as company_common_service_api
12
+ import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
13
13
  import mns_common.component.data.data_init_api as data_init_api
14
14
  from mns_common.db.MongodbUtil import MongodbUtil
15
15
  import mns_common.utils.db_util as db_util
@@ -24,14 +24,15 @@ choose_field = ["_id",
24
24
  "symbol",
25
25
  "name",
26
26
  "industry",
27
- "now_price",
28
27
  "chg",
29
28
  "quantity_ratio",
30
29
  "amount_level",
30
+ 'sum_main_inflow_disk',
31
31
  "disk_ratio",
32
+ "now_price",
32
33
  "real_disk_diff_amount_exchange",
33
34
  'max_real_main_inflow_multiple',
34
- 'sum_main_inflow_disk',
35
+
35
36
  "real_main_inflow_multiple",
36
37
  "real_super_main_inflow_multiple",
37
38
  "super_main_inflow_multiple",
@@ -73,7 +74,7 @@ choose_field = ["_id",
73
74
  def sync_high_chg_real_time_quotes(str_day):
74
75
  mongo = db_util.get_db(str_day)
75
76
 
76
- realtime_quotes_db_name = 'realtime_quotes_now_' + str_day
77
+ realtime_quotes_db_name = db_name_constant.REAL_TIME_QUOTES_NOW + "_" + str_day
77
78
  high_chg_list = get_high_chg_symbol(str_day)
78
79
  if high_chg_list is None or len(high_chg_list) == 0:
79
80
  return
@@ -84,16 +85,15 @@ def sync_high_chg_real_time_quotes(str_day):
84
85
  real_time_quotes_now_high_chg_all = mongo.find_query_data(realtime_quotes_db_name, query_all)
85
86
  if real_time_quotes_now_high_chg_all.shape[0] == 0:
86
87
  return
87
- real_time_quotes_now_high_chg_all = company_common_service_api.amendment_industry_exist_na(
88
- real_time_quotes_now_high_chg_all,
89
- high_chg_list)
88
+ real_time_quotes_now_high_chg_all = company_common_service_new_api.amend_ths_industry(
89
+ real_time_quotes_now_high_chg_all)
90
90
  real_time_quotes_now_high_chg_all.dropna(subset=['symbol'], axis=0,
91
91
  inplace=True)
92
92
  real_time_quotes_now_high_chg_all = data_init_api.calculate_parameter_factor(
93
93
  real_time_quotes_now_high_chg_all)
94
94
 
95
95
  real_time_quotes_now_high_chg_all['amount_level'] = round(
96
- (real_time_quotes_now_high_chg_all['amount'] / common_service_fun_api.HUNDRED_MILLION), 2) * 10
96
+ (real_time_quotes_now_high_chg_all['amount'] / common_service_fun_api.HUNDRED_MILLION), 2)
97
97
  real_time_quotes_now_high_chg_all['flow_mv_sp'] = round(
98
98
  (real_time_quotes_now_high_chg_all['flow_mv'] / common_service_fun_api.HUNDRED_MILLION), 2)
99
99
  real_time_quotes_now_high_chg_all['total_mv_sp'] = round(
@@ -139,3 +139,7 @@ def save_realtime_quotes_now_zt_data(realtime_quotes_now_zt, str_day, symbol):
139
139
  result = mongodb_util.remove_data(remove_query, db_name_constant.ZT_STOCK_REAL_TIME_QUOTES).acknowledged
140
140
  if result:
141
141
  mongodb_util.insert_mongo(realtime_quotes_now_zt, db_name_constant.ZT_STOCK_REAL_TIME_QUOTES)
142
+
143
+
144
+ if __name__ == '__main__':
145
+ sync_high_chg_real_time_quotes('2024-12-26')
@@ -10,7 +10,7 @@ import mns_common.utils.date_handle_util as date_handle_util
10
10
  from loguru import logger
11
11
 
12
12
  import mns_common.component.trade_date.trade_date_common_service_api as trade_date_common_service_api
13
- import mns_common.component.company.company_common_service_api as company_common_service_api
13
+ import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
14
14
  import mns_common.component.common_service_fun_api as common_service_fun_api
15
15
  import mns_common.component.data.data_init_api as data_init_api
16
16
  import pandas as pd
@@ -62,22 +62,6 @@ realtime_quotes_now_zt_new_kc_open_field = ['_id',
62
62
  'real_disk_diff_amount_exchange', 'no_open_data']
63
63
 
64
64
 
65
- # fix 错杀数据 有成交量的数据
66
- def fix_industry_data(real_time_quotes_now):
67
- # fix industry
68
- real_time_quotes_now_r = company_common_service_api.amendment_industry(real_time_quotes_now.copy())
69
-
70
- symbol_list = list(real_time_quotes_now_r['symbol'])
71
-
72
- na_real_now = real_time_quotes_now.loc[
73
- ~(real_time_quotes_now['symbol'].isin(symbol_list))]
74
-
75
- na_real_now = na_real_now.loc[na_real_now['amount'] != 0]
76
-
77
- real_time_quotes_now_result = pd.concat([real_time_quotes_now_r, na_real_now], axis=0)
78
- return real_time_quotes_now_result
79
-
80
-
81
65
  def sync_all_kc_zt_data(str_day, symbols):
82
66
  if symbols is None:
83
67
  query_daily = {'date': date_handle_util.no_slash_date(str_day),
@@ -92,11 +76,9 @@ def sync_all_kc_zt_data(str_day, symbols):
92
76
  logger.error("无k线数据:{}", symbols)
93
77
  return
94
78
 
95
- company_info = company_common_service_api.get_company_info_industry_list_date()
96
- company_info['symbol'] = company_info['_id']
97
- company_info = company_info.loc[company_info['_id'].isin(list(kc_stock_qfq_daily['symbol']))]
79
+ kc_stock_qfq_daily = company_common_service_new_api.amend_ths_industry(kc_stock_qfq_daily)
98
80
 
99
- for stock_one in company_info.itertuples():
81
+ for stock_one in kc_stock_qfq_daily.itertuples():
100
82
  try:
101
83
 
102
84
  kc_stock_qfq_daily.loc[
@@ -150,7 +132,9 @@ def sync_all_kc_zt_data(str_day, symbols):
150
132
  query_real_time = {'symbol': kc_one.symbol}
151
133
  db = db_util.get_db(str_day)
152
134
  realtime_quotes_now_kc = db.find_query_data(db_name, query_real_time)
153
- realtime_quotes_now_kc = common_service_fun_api.exclude_new_stock(realtime_quotes_now_kc)
135
+ stock_name = kc_one.name
136
+ if stock_name.startswith('N'):
137
+ continue
154
138
  if realtime_quotes_now_kc.shape[0] == 0:
155
139
  logger.error("当期日期代码无开盘数据:{},{}", str_day, kc_one.symbol)
156
140
  continue
@@ -182,11 +166,14 @@ def one_symbol_day_open_data(realtime_quotes_now_kc, kc_one, str_day):
182
166
  realtime_quotes_now_zt_new_kc_open_copy.loc[:, 'yesterday_high_chg'] = kc_one.yesterday_high_chg
183
167
  realtime_quotes_now_zt_new_kc_open_copy.loc[:, 'today_chg'] = kc_one.chg
184
168
  realtime_quotes_now_zt_new_kc_open_copy.loc[:, 'str_day'] = str_day
185
-
169
+ realtime_quotes_now_zt_new_kc_open_copy = company_common_service_new_api.amend_ths_industry(
170
+ realtime_quotes_now_zt_new_kc_open_copy)
186
171
  realtime_quotes_now_zt_new_kc_open_copy = handle_init_real_time_quotes_data(
187
172
  realtime_quotes_now_zt_new_kc_open_copy.copy(),
188
173
  str_now_date,
189
174
  1)
175
+ if data_frame_util.is_empty(realtime_quotes_now_zt_new_kc_open_copy):
176
+ return None
190
177
  realtime_quotes_now_zt_new_kc_open_copy = realtime_quotes_now_zt_new_kc_open_copy[
191
178
  realtime_quotes_now_zt_new_kc_open_field]
192
179
 
@@ -219,8 +206,6 @@ def handle_init_real_time_quotes_data(real_time_quotes_now, str_now_date, number
219
206
  real_time_quotes_now = common_service_fun_api.exclude_b_symbol(real_time_quotes_now.copy())
220
207
  # classification symbol
221
208
  real_time_quotes_now = common_service_fun_api.classify_symbol(real_time_quotes_now.copy())
222
- # fix industry
223
- real_time_quotes_now = fix_industry_data(real_time_quotes_now.copy())
224
209
  # calculate parameter
225
210
  real_time_quotes_now = data_init_api.calculate_parameter_factor(real_time_quotes_now.copy())
226
211
 
@@ -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,41 @@
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
+ import mns_common.utils.date_handle_util as date_handle_util
11
+ mongodb_util = MongodbUtil('27017')
12
+
13
+ from mns_scheduler.db.script.sync.remote_mongo_util import RemoteMongodbUtil
14
+
15
+
16
+ remote_mongodb_util = RemoteMongodbUtil('27017')
17
+
18
+
19
+ def fix_error_deal_days(db_name):
20
+ realtime_quotes_now_zt_new_kc_open_df = mongodb_util.find_query_data(db_name, {})
21
+ realtime_quotes_now_zt_new_kc_open_df['id_key'] = realtime_quotes_now_zt_new_kc_open_df['_id']
22
+ for stock_one in realtime_quotes_now_zt_new_kc_open_df.itertuples():
23
+ try:
24
+ symbol = stock_one.symbol
25
+ str_day = stock_one.str_day
26
+ query = {'symbol': symbol, 'date': {"$lt": date_handle_util.no_slash_date(str_day)}}
27
+ deal_days = mongodb_util.count(query, 'stock_qfq_daily')
28
+ new_values = {"$set": {"deal_days": deal_days}}
29
+ id_key = stock_one.id_key
30
+ update_query = {'_id': id_key}
31
+ mongodb_util.update_many(update_query, new_values, db_name)
32
+ logger.info("更新到:{},{}", symbol, str_day)
33
+ except BaseException as e:
34
+ logger.error("出现异常:{},{},{}", symbol, str_day, e)
35
+
36
+
37
+ if __name__ == '__main__':
38
+ # db_name_0 = 'realtime_quotes_now_zt_new_kc_open'
39
+ db_name_01 = 'stock_high_chg_pool'
40
+ # fix_error_deal_days(db_name_0)
41
+ fix_error_deal_days(db_name_01)
@@ -2,17 +2,15 @@ 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_scheduler.zt.open_data.kcx_high_chg_open_data_sync as kcx_high_chg_open_data_sync
9
9
  from loguru import logger
10
10
 
11
-
12
11
  from mns_common.db.MongodbUtil import MongodbUtil
13
12
  import mns_common.utils.data_frame_util as data_frame_util
14
13
 
15
-
16
14
  mongodb_util = MongodbUtil('27017')
17
15
  mongodb_util_21019 = MongodbUtil('27019')
18
16
  realtime_quotes_now_zt_new_kc_open_field = ['_id',
@@ -52,13 +50,6 @@ realtime_quotes_now_zt_new_kc_open_field = ['_id',
52
50
  'max_real_main_inflow_multiple', 'list_date',
53
51
  'real_super_main_inflow_multiple', 'real_flow_mv',
54
52
  'real_disk_diff_amount_exchange', 'no_open_data']
55
- # kcx 高涨幅开盘数据同步
56
- def realtime_quotes_now_zt_new_kc_open_sync():
57
- realtime_quotes_now_zt_new_kc_open = mongodb_util.find_all_data('realtime_quotes_now_zt_new_kc_open')
58
- realtime_quotes_now_zt_new_kc_open = realtime_quotes_now_zt_new_kc_open[realtime_quotes_now_zt_new_kc_open_field]
59
- realtime_quotes_now_zt_new_kc_open = realtime_quotes_now_zt_new_kc_open.sort_values(by=['str_day'], ascending=False)
60
-
61
- mongodb_util.insert_mongo(realtime_quotes_now_zt_new_kc_open, 'realtime_quotes_now_zt_new_kc_open_copy')
62
53
 
63
54
 
64
55
  # query = {'$and': [{"_id": {'$lte': str_end}}, {"_id": {'$gte': '2022-04-25'}}]}
@@ -92,7 +83,7 @@ def fix_miss_data(str_end):
92
83
 
93
84
 
94
85
  if __name__ == '__main__':
95
- kcx_high_chg_open_data_sync.sync_all_kc_zt_data('2024-06-04', None)
86
+ kcx_high_chg_open_data_sync.sync_all_kc_zt_data('2025-06-30', None)
96
87
  # sync_all_kc_zt_data('2023-08-16')
97
88
  # sync_all_kc_zt_data('2023-07-07')
98
89
  # realtime_quotes_now_zt_new_kc_open_sync()
@@ -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 mns_common.utils.date_handle_util as date_handle_util
@@ -36,4 +36,4 @@ def sync_his_zt_pool_data(begin_day, end_day):
36
36
 
37
37
 
38
38
  if __name__ == '__main__':
39
- sync_high_chg_pool_service.sync_stock_high_chg_pool_list('2024-06-07', ['605058'])
39
+ sync_high_chg_pool_service.sync_stock_high_chg_pool_list('2025-05-23', None)
@@ -0,0 +1,43 @@
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
+ import mns_common.component.em.em_stock_info_api as em_stock_info_api
9
+ import mns_common.component.common_service_fun_api as common_service_fun_api
10
+ import mns_scheduler.k_line.month_week_daily.daily_week_month_line_sync as daily_week_month_line_sync
11
+ from datetime import datetime
12
+ import mns_scheduler.zt.zt_pool.em_zt_pool_sync_api as em_zt_pool_sync_api
13
+ import mns_scheduler.zt.high_chg.sync_high_chg_pool_service as sync_high_chg_pool_service
14
+ import mns_scheduler.zt.open_data.kcx_high_chg_open_data_sync as kcx_high_chg_open_data_sync
15
+ import mns_scheduler.zt.high_chg.sync_high_chg_real_time_quotes_service as sync_high_chg_real_time_quotes_service
16
+
17
+
18
+ def sync_now_day_high_chg():
19
+ real_time_quotes_now_es = em_stock_info_api.get_a_stock_info()
20
+ real_time_quotes_now_es_high_chg = real_time_quotes_now_es.loc[
21
+ real_time_quotes_now_es['chg'] > common_service_fun_api.ZT_CHG]
22
+ now_date = datetime.now()
23
+
24
+ str_now_day = now_date.strftime('%Y-%m-%d')
25
+ # 同步qfq k线
26
+ daily_week_month_line_sync.sync_all_daily_data('daily', 'qfq', 'stock_qfq_daily', str_now_day,
27
+ list(real_time_quotes_now_es_high_chg['symbol']))
28
+
29
+
30
+ # 同步当前涨停
31
+ em_zt_pool_sync_api.save_zt_info(str_now_day)
32
+
33
+ # 同步涨幅列表
34
+ sync_high_chg_pool_service.sync_stock_high_chg_pool_list(str_now_day, None)
35
+
36
+ # 同步kcx 集合竞价数据
37
+ kcx_high_chg_open_data_sync.sync_all_kc_zt_data(str_now_day, None)
38
+ # 同步实时行情数据
39
+ sync_high_chg_real_time_quotes_service.sync_high_chg_real_time_quotes(str_now_day)
40
+
41
+
42
+ if __name__ == '__main__':
43
+ sync_now_day_high_chg()