mns-scheduler 1.0.3.9__py3-none-any.whl → 1.0.4.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.

Potentially problematic release.


This version of mns-scheduler might be problematic. Click here for more details.

@@ -9,20 +9,63 @@ from mns_common.db.MongodbUtil import MongodbUtil
9
9
  import pandas as pd
10
10
  import mns_common.api.ths.ths_stock_api as ths_stock_api
11
11
  import time
12
+ from loguru import logger
13
+ import mns_common.component.company.company_common_service_api as company_common_service_api
14
+ import mns_common.constant.db_name_constant as db_name_constant
12
15
 
13
16
  mongodb_util = MongodbUtil('27017')
14
17
 
15
18
 
16
19
  # 统计概念数量
17
20
  def update_concept_num():
18
- ths_concept_list = mongodb_util.find_all_data('ths_concept_list')
21
+ ths_concept_list = mongodb_util.find_all_data(db_name_constant.THS_CONCEPT_LIST)
19
22
  for ths_concept_one in ths_concept_list.itertuples():
20
- query = {'concept_code': ths_concept_one.symbol}
21
- concept_count = (mongodb_util
22
- .count(query, 'ths_stock_concept_detail'))
23
- ths_concept_list_one_df = ths_concept_list.loc[ths_concept_list['symbol'] == ths_concept_one.symbol]
24
- ths_concept_list_one_df['concept_count'] = concept_count
25
- mongodb_util.save_mongo(ths_concept_list_one_df, 'ths_concept_list')
23
+ try:
24
+ query = {'concept_code': ths_concept_one.symbol}
25
+ ths_stock_concept_detail_df = (mongodb_util
26
+ .find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query))
27
+ concept_count = ths_stock_concept_detail_df.shape[0]
28
+ ths_concept_list_one_df = ths_concept_list.loc[ths_concept_list['symbol'] == ths_concept_one.symbol]
29
+ ths_concept_list_one_df['concept_count'] = concept_count
30
+
31
+ ths_stock_concept_detail_df = ths_stock_concept_detail_df.reset_index(drop=True)
32
+ if 'industry' in ths_stock_concept_detail_df.columns:
33
+ del ths_stock_concept_detail_df['industry']
34
+
35
+ company_info_df = company_common_service_api.get_company_info_industry()
36
+ company_info_df = company_info_df[['_id', 'industry']]
37
+ company_info_df = company_info_df.loc[
38
+ company_info_df['_id'].isin(list(ths_stock_concept_detail_df['symbol']))]
39
+ company_info_df = company_info_df.set_index(['_id'], drop=True)
40
+
41
+ ths_stock_concept_detail_df = ths_stock_concept_detail_df.set_index(['symbol'], drop=False)
42
+ ths_stock_concept_detail_df = pd.merge(ths_stock_concept_detail_df, company_info_df,
43
+ how='outer',
44
+ left_index=True, right_index=True)
45
+ ths_stock_concept_detail_df.dropna(subset=['industry'], axis=0, inplace=True)
46
+
47
+ grouped = ths_stock_concept_detail_df.groupby('industry')
48
+ result_list = grouped.size()
49
+ ths_concept_group = pd.DataFrame(result_list, columns=['number'])
50
+ ths_concept_group['industry'] = ths_concept_group.index
51
+ ths_concept_group = ths_concept_group.sort_values(by=['number'], ascending=False)
52
+ if ths_concept_group.shape[0] >= 2:
53
+ first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
54
+ second_relevance_industry = list(ths_concept_group.iloc[1:2]['industry'])[0]
55
+ else:
56
+ first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
57
+ second_relevance_industry = '无'
58
+ ths_concept_list_one_df['first_relevance_industry'] = first_relevance_industry
59
+ ths_concept_list_one_df['second_relevance_industry'] = second_relevance_industry
60
+
61
+ ths_stock_concept_detail_df['first_relevance_industry'] = first_relevance_industry
62
+ ths_stock_concept_detail_df['second_relevance_industry'] = second_relevance_industry
63
+
64
+ mongodb_util.save_mongo(ths_concept_list_one_df, db_name_constant.THS_CONCEPT_LIST)
65
+ mongodb_util.save_mongo(ths_stock_concept_detail_df, db_name_constant.THS_STOCK_CONCEPT_DETAIL)
66
+
67
+ except BaseException as e:
68
+ logger.error("更新概念信息异常:{},{}", e, ths_concept_one.name)
26
69
 
27
70
 
28
71
  # 更新空名字
@@ -58,5 +101,5 @@ def update_null_name():
58
101
 
59
102
 
60
103
  if __name__ == '__main__':
61
- update_null_name()
62
104
  update_concept_num()
105
+ update_null_name()
@@ -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)
@@ -59,6 +59,10 @@ def sync_best_choose_his_index(str_day):
59
59
  continue
60
60
  kpl_plate_best_index_df['number'] = number
61
61
  kpl_plate_best_index_df['str_day'] = str_day
62
+ hour = end_time[0:2]
63
+ minute = end_time[2:4]
64
+ str_now_date = str_day + " " + hour + ":" + minute + ":" + "00"
65
+ kpl_plate_best_index_df['str_now_date'] = str_now_date
62
66
  kpl_plate_best_index_df = kpl_plate_best_index_df[[
63
67
  "plate_code",
64
68
  "plate_name",
@@ -78,6 +82,7 @@ def sync_best_choose_his_index(str_day):
78
82
  "ava_pe_next",
79
83
  "number",
80
84
  "str_day",
85
+ "str_now_date"
81
86
 
82
87
  ]]
83
88
  save_kpl_his_index(kpl_plate_best_index_df, str_day, end_time)
@@ -100,7 +105,7 @@ def save_kpl_his_daily(kpl_plate_best_index_df, str_day, end_time):
100
105
 
101
106
 
102
107
  def sync_all_days():
103
- query = {"_id": {"$gte": '2022-07-22'}, 'trade_date': {"$lte": "2024-04-21"}}
108
+ query = {"_id": {"$gte": '2024-04-26'}, 'trade_date': {"$lte": "2024-05-07"}}
104
109
  trade_date_list = mongodb_util.find_query_data('trade_date_list', query)
105
110
  trade_date_list = trade_date_list.sort_values(by=['trade_date'], ascending=False)
106
111
  for trade_one in trade_date_list.itertuples():
@@ -175,7 +175,7 @@ def sync_realtime_quotes():
175
175
  now_date = datetime.datetime.now()
176
176
 
177
177
  str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
178
- if bool(date_util.is_trade_time(now_date)):
178
+ if bool(date_util.is_trade_time(now_date)):
179
179
  try:
180
180
  real_time_quotes_now = east_money_stock_api.get_real_time_quotes_all_stocks()
181
181
  real_time_quotes_now = handle_init_real_time_quotes_data(real_time_quotes_now.copy(),
@@ -347,7 +347,7 @@ blockingScheduler.add_job(sync_today_trade_k_line_info, 'cron', hour='08', minut
347
347
  blockingScheduler.add_job(sync_stock_gdfx_free_top_10_one_day, 'cron', hour='08,22', minute='23')
348
348
 
349
349
  # 更新同花顺概念信息
350
- blockingScheduler.add_job(ths_concept_info_clean, 'cron', hour='9,18', minute='01')
350
+ blockingScheduler.add_job(ths_concept_info_clean, 'cron', hour='9,12,20', minute='24')
351
351
 
352
352
  # 更新概念指数下所有股票组成 by 概念代码
353
353
  blockingScheduler.add_job(update_one_concept_all_symbol_detail, 'cron', hour='08,18,12', minute='30')
@@ -1,4 +1,4 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: mns-scheduler
3
- Version: 1.0.3.9
3
+ Version: 1.0.4.2
4
4
 
@@ -15,7 +15,7 @@ mns_scheduler/company_info/company_constant_data.py,sha256=LwyBWLoErAUPXss68ebVj
15
15
  mns_scheduler/company_info/company_info_sync_api.py,sha256=2sQk197p5qjq2DQlRpVbotSSIN87x43T-RGAtMiXQI4,20332
16
16
  mns_scheduler/concept/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
17
17
  mns_scheduler/concept/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
18
- mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=SR5NRzh4N2r0ouXX3SRAONJyH44eorJdpaayekbNWCE,2459
18
+ mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=Pdb5u5qSOVewT-q26S_632BfrjHrVaQUbf3PmXz0OIo,5253
19
19
  mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
20
20
  mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
21
21
  mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=8KOz1AlUFmo0hdlkOuc5rDLKIeYkRK3-ooA5Z_wJX10,6724
@@ -31,6 +31,7 @@ mns_scheduler/db/col_move_service.py,sha256=Ne1C2b6Y-czM9M5rf8omGsgSNeQw2SQaNbpS
31
31
  mns_scheduler/db/db_status.py,sha256=K1jtYIGZzDV6knpoJLLnXEhN3tyziJp_zY2gSfguHCA,747
32
32
  mns_scheduler/dt/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
33
33
  mns_scheduler/dt/stock_dt_pool_sync.py,sha256=5ivRUOnFtOapZniwTbujf1lVq3y4btm2Cmd5R6JJAVo,3466
34
+ mns_scheduler/finance/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
34
35
  mns_scheduler/k_line/__init__.py,sha256=ffZXFCLFdIwOsbxnw__u1MbQYh9yz7Bs8UMP6VF0X2M,161
35
36
  mns_scheduler/k_line/clean/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
36
37
  mns_scheduler/k_line/clean/k_line_info_clean_impl.py,sha256=3NPu-bkBw5ARW2yoMAmf_-au6vxQdSjzGlT-l4dqV4w,21833
@@ -40,7 +41,7 @@ mns_scheduler/k_line/sync/daily_week_month_line_sync.py,sha256=SNKkwGoyE1qzds1o-
40
41
  mns_scheduler/kpl/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
41
42
  mns_scheduler/kpl/selection/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
42
43
  mns_scheduler/kpl/selection/index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
43
- mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py,sha256=UJRhFfMcR4fkMfzEQhNT1R5PdGbbxRBwhphhpi9UFW0,4501
44
+ mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py,sha256=Cle5cU90HVo-vulFCRwaAFDG-J3dCriXmWm1OKHPnr4,4748
44
45
  mns_scheduler/kpl/selection/index/sync_best_choose_index.py,sha256=-34drqAMsx792DxR8P1A8DrGCM5yIVGsop3UzDNzsPw,8016
45
46
  mns_scheduler/kpl/selection/symbol/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
46
47
  mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py,sha256=kUKs0SWCqekhvV0o5A1pDv0Nw4x6VTS-ij0AryzKe8w,4679
@@ -48,7 +49,7 @@ mns_scheduler/kpl/selection/total/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3Zi
48
49
  mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py,sha256=WRK-Pu0-7ub9q1n5TK406_sAGQwOEUl2CZLu9suo70k,10461
49
50
  mns_scheduler/real_time/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
50
51
  mns_scheduler/real_time/realtime_quotes_now_create_db_index.py,sha256=qQCjcsG3WYgn3zemS45Ms0AHtbkCwlSVPPCntxVvK8Q,1066
51
- mns_scheduler/real_time/realtime_quotes_now_sync.py,sha256=6lDNnds3f_g4fQmY1tS4mg8pTB9Lbbhwf1_1WpA9tJA,9166
52
+ mns_scheduler/real_time/realtime_quotes_now_sync.py,sha256=XIz454cysRO-xfdgsEw3glR0LgTxFdZoCNONd4O7EgM,9165
52
53
  mns_scheduler/trade/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
53
54
  mns_scheduler/trade/auto_ipo_buy_api.py,sha256=QXNzFJGNGveVUcXBh0RRJb_HV7abbLYXRljezPJf9ZM,377
54
55
  mns_scheduler/trade/auto_sell_service_api.py,sha256=HaauZeOsuLNBrowXT8IKaSgWLR2Huott6mg_AoLhpUY,4423
@@ -62,9 +63,9 @@ mns_scheduler/zt/today_high_chg_pool_sync_api.py,sha256=G6FXMH7HnvhyMFoE-RszggkB
62
63
  mns_scheduler/zt/zt_five_boards_sync_api.py,sha256=HfjPHKD99fU9c37kSenEX2_qNvFAjQGgy8ERuacSxwk,10916
63
64
  mns_scheduler/zt/zt_pool_sync_api.py,sha256=tzSCnqAelV7MQBZ3KcpOQQHNYnjFnmvoDFcapBpU_NA,7534
64
65
  mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
65
- mns_scheduler/zz_task/data_sync_task.py,sha256=wpzBETzZEIk1S9eYJiZt7Gzh4bWzJDwEsJtfB690mKM,15508
66
+ mns_scheduler/zz_task/data_sync_task.py,sha256=jYYED_j4F3jwPnQiRM9kaVzTA-LdrCIBezEPZFESr-M,15511
66
67
  mns_scheduler/zz_task/sync_realtime_quotes_task.py,sha256=DN3bq2XCDZC-PHlbD2NTog48bR44EruIEc2QVGKg7Tk,932
67
- mns_scheduler-1.0.3.9.dist-info/METADATA,sha256=JXj1WYQwrRD2WnUIqF9ORpMegLXfa1TuT2BsmzX8E5I,64
68
- mns_scheduler-1.0.3.9.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
69
- mns_scheduler-1.0.3.9.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
70
- mns_scheduler-1.0.3.9.dist-info/RECORD,,
68
+ mns_scheduler-1.0.4.2.dist-info/METADATA,sha256=szaz1VXnlh9rwKYil44ufAby6-RkjsALcpNOEq-TxQs,64
69
+ mns_scheduler-1.0.4.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
70
+ mns_scheduler-1.0.4.2.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
71
+ mns_scheduler-1.0.4.2.dist-info/RECORD,,