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.
- mns_scheduler/concept/clean/ths_concept_clean_api.py +51 -8
- mns_scheduler/finance/__init__.py +7 -0
- mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +6 -1
- mns_scheduler/real_time/realtime_quotes_now_sync.py +1 -1
- mns_scheduler/zz_task/data_sync_task.py +1 -1
- {mns_scheduler-1.0.3.9.dist-info → mns_scheduler-1.0.4.2.dist-info}/METADATA +1 -1
- {mns_scheduler-1.0.3.9.dist-info → mns_scheduler-1.0.4.2.dist-info}/RECORD +9 -8
- {mns_scheduler-1.0.3.9.dist-info → mns_scheduler-1.0.4.2.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.0.3.9.dist-info → mns_scheduler-1.0.4.2.dist-info}/top_level.txt +0 -0
|
@@ -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(
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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()
|
|
@@ -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": '
|
|
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
|
|
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,
|
|
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')
|
|
@@ -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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
68
|
-
mns_scheduler-1.0.
|
|
69
|
-
mns_scheduler-1.0.
|
|
70
|
-
mns_scheduler-1.0.
|
|
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,,
|
|
File without changes
|
|
File without changes
|