mns-scheduler 1.0.4.3__py3-none-any.whl → 1.0.4.5__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/kpl_concept_clean_api.py +80 -0
- mns_scheduler/concept/clean/ths_concept_clean_api.py +3 -3
- mns_scheduler/zz_task/data_sync_task.py +7 -4
- {mns_scheduler-1.0.4.3.dist-info → mns_scheduler-1.0.4.5.dist-info}/METADATA +1 -1
- {mns_scheduler-1.0.4.3.dist-info → mns_scheduler-1.0.4.5.dist-info}/RECORD +7 -6
- {mns_scheduler-1.0.4.3.dist-info → mns_scheduler-1.0.4.5.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.0.4.3.dist-info → mns_scheduler-1.0.4.5.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
file_path = os.path.abspath(__file__)
|
|
5
|
+
end = file_path.index('mns') + 16
|
|
6
|
+
project_path = file_path[0:end]
|
|
7
|
+
sys.path.append(project_path)
|
|
8
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
9
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
10
|
+
from loguru import logger
|
|
11
|
+
import mns_common.component.company.company_common_service_api as company_common_service_api
|
|
12
|
+
|
|
13
|
+
mongodb_util = MongodbUtil('27017')
|
|
14
|
+
import pandas as pd
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# 开盘啦
|
|
18
|
+
def update_kpl_concept_info():
|
|
19
|
+
query = {}
|
|
20
|
+
kpl_best_choose_index_df = mongodb_util.find_query_data(db_name_constant.KPL_BEST_CHOOSE_INDEX, query)
|
|
21
|
+
for kpl_concept_one in kpl_best_choose_index_df.itertuples():
|
|
22
|
+
try:
|
|
23
|
+
query_detail = {"plate_code": kpl_concept_one.plate_code}
|
|
24
|
+
kpl_best_choose_index_detail_df = mongodb_util.find_query_data(
|
|
25
|
+
db_name_constant.KPL_BEST_CHOOSE_INDEX_DETAIL,
|
|
26
|
+
query_detail)
|
|
27
|
+
concept_count = kpl_best_choose_index_detail_df.shape[0]
|
|
28
|
+
kpl_best_choose_index_one_df = kpl_best_choose_index_df.loc[
|
|
29
|
+
kpl_best_choose_index_df['plate_code'] == kpl_concept_one.plate_code]
|
|
30
|
+
kpl_best_choose_index_one_df['concept_count'] = concept_count
|
|
31
|
+
|
|
32
|
+
kpl_best_choose_index_detail_df = kpl_best_choose_index_detail_df.reset_index(drop=True)
|
|
33
|
+
|
|
34
|
+
if 'industry' in kpl_best_choose_index_detail_df.columns:
|
|
35
|
+
del kpl_best_choose_index_detail_df['industry']
|
|
36
|
+
|
|
37
|
+
company_info_df = company_common_service_api.get_company_info_industry()
|
|
38
|
+
company_info_df = company_info_df[['_id', 'industry']]
|
|
39
|
+
company_info_df = company_info_df.loc[
|
|
40
|
+
company_info_df['_id'].isin(list(kpl_best_choose_index_detail_df['symbol']))]
|
|
41
|
+
company_info_df = company_info_df.set_index(['_id'], drop=True)
|
|
42
|
+
|
|
43
|
+
kpl_best_choose_index_detail_df = kpl_best_choose_index_detail_df.set_index(['symbol'], drop=False)
|
|
44
|
+
kpl_best_choose_index_detail_df = pd.merge(kpl_best_choose_index_detail_df, company_info_df,
|
|
45
|
+
how='outer',
|
|
46
|
+
left_index=True, right_index=True)
|
|
47
|
+
kpl_best_choose_index_detail_df.dropna(subset=['industry'], axis=0, inplace=True)
|
|
48
|
+
|
|
49
|
+
grouped = kpl_best_choose_index_detail_df.groupby('industry')
|
|
50
|
+
result_list = grouped.size()
|
|
51
|
+
ths_concept_group = pd.DataFrame(result_list, columns=['number'])
|
|
52
|
+
ths_concept_group['industry'] = ths_concept_group.index
|
|
53
|
+
ths_concept_group = ths_concept_group.sort_values(by=['number'], ascending=False)
|
|
54
|
+
if ths_concept_group.shape[0] >= 2:
|
|
55
|
+
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
56
|
+
first_relevance_industry_number = list(ths_concept_group.iloc[0:1]['number'])[0]
|
|
57
|
+
second_relevance_industry = list(ths_concept_group.iloc[1:2]['industry'])[0]
|
|
58
|
+
second_relevance_industry_number = list(ths_concept_group.iloc[1:2]['number'])[0]
|
|
59
|
+
else:
|
|
60
|
+
first_relevance_industry = list(ths_concept_group.iloc[0:1]['industry'])[0]
|
|
61
|
+
first_relevance_industry_number = list(ths_concept_group.iloc[0:1]['number'])[0]
|
|
62
|
+
second_relevance_industry = '无'
|
|
63
|
+
second_relevance_industry_number = 0
|
|
64
|
+
kpl_best_choose_index_one_df['first_relevance_industry'] = first_relevance_industry
|
|
65
|
+
kpl_best_choose_index_one_df['second_relevance_industry'] = second_relevance_industry
|
|
66
|
+
kpl_best_choose_index_one_df['first_relevance_industry_number'] = first_relevance_industry_number
|
|
67
|
+
kpl_best_choose_index_one_df['second_relevance_industry_number'] = second_relevance_industry_number
|
|
68
|
+
|
|
69
|
+
kpl_best_choose_index_detail_df['first_relevance_industry'] = first_relevance_industry
|
|
70
|
+
kpl_best_choose_index_detail_df['second_relevance_industry'] = second_relevance_industry
|
|
71
|
+
|
|
72
|
+
mongodb_util.save_mongo(kpl_best_choose_index_one_df, db_name_constant.KPL_BEST_CHOOSE_INDEX)
|
|
73
|
+
mongodb_util.save_mongo(kpl_best_choose_index_detail_df, db_name_constant.KPL_BEST_CHOOSE_INDEX_DETAIL)
|
|
74
|
+
|
|
75
|
+
except Exception as e:
|
|
76
|
+
logger.error("更新开盘啦概念异常:{},{}", e, kpl_concept_one.plate_name)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
if __name__ == '__main__':
|
|
80
|
+
update_kpl_concept_info()
|
|
@@ -16,8 +16,8 @@ import mns_common.constant.db_name_constant as db_name_constant
|
|
|
16
16
|
mongodb_util = MongodbUtil('27017')
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
#
|
|
20
|
-
def
|
|
19
|
+
# 统计概念股票数量和行业分组信息
|
|
20
|
+
def update_ths_concept_info():
|
|
21
21
|
ths_concept_list = mongodb_util.find_all_data(db_name_constant.THS_CONCEPT_LIST)
|
|
22
22
|
for ths_concept_one in ths_concept_list.itertuples():
|
|
23
23
|
try:
|
|
@@ -108,6 +108,6 @@ def update_null_name():
|
|
|
108
108
|
|
|
109
109
|
if __name__ == '__main__':
|
|
110
110
|
logger.info("开始")
|
|
111
|
-
|
|
111
|
+
update_ths_concept_info()
|
|
112
112
|
logger.info("结束")
|
|
113
113
|
update_null_name()
|
|
@@ -38,6 +38,7 @@ import mns_scheduler.trade.auto_ipo_buy_api as auto_ipo_buy_api
|
|
|
38
38
|
import mns_scheduler.kpl.selection.index.sync_best_choose_his_index as sync_best_choose_his_index
|
|
39
39
|
import mns_scheduler.concept.ths.common.ths_concept_update_common_api as ths_concept_update_common_api
|
|
40
40
|
import mns_scheduler.trade.sync_position_api as sync_position_api
|
|
41
|
+
import mns_scheduler.concept.clean.kpl_concept_clean_api as kpl_concept_clean_api
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
# 同步交易日期任务完成
|
|
@@ -211,12 +212,14 @@ def sync_stock_gdfx_free_top_10_one_day():
|
|
|
211
212
|
east_money_stock_gdfx_free_top_10_api.sync_stock_gdfx_free_top_10_one_day(str_day)
|
|
212
213
|
|
|
213
214
|
|
|
214
|
-
#
|
|
215
|
-
def
|
|
215
|
+
# 更新概念信息
|
|
216
|
+
def concept_info_clean():
|
|
216
217
|
# 更新空概念名称
|
|
217
218
|
ths_concept_choose_api.update_null_name()
|
|
218
219
|
# 更新概念包含个数
|
|
219
|
-
ths_concept_choose_api.
|
|
220
|
+
ths_concept_choose_api.update_ths_concept_info()
|
|
221
|
+
# 开盘啦概念信息更新
|
|
222
|
+
kpl_concept_clean_api.update_kpl_concept_info()
|
|
220
223
|
|
|
221
224
|
|
|
222
225
|
# 同步概念下所有股票组成 by 概念指数
|
|
@@ -347,7 +350,7 @@ blockingScheduler.add_job(sync_today_trade_k_line_info, 'cron', hour='08', minut
|
|
|
347
350
|
blockingScheduler.add_job(sync_stock_gdfx_free_top_10_one_day, 'cron', hour='08,22', minute='23')
|
|
348
351
|
|
|
349
352
|
# 更新同花顺概念信息
|
|
350
|
-
blockingScheduler.add_job(
|
|
353
|
+
blockingScheduler.add_job(concept_info_clean, 'cron', hour='9,12,20', minute='24')
|
|
351
354
|
|
|
352
355
|
# 更新概念指数下所有股票组成 by 概念代码
|
|
353
356
|
blockingScheduler.add_job(update_one_concept_all_symbol_detail, 'cron', hour='08,18,12', minute='30')
|
|
@@ -15,7 +15,8 @@ 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/
|
|
18
|
+
mns_scheduler/concept/clean/kpl_concept_clean_api.py,sha256=xxIIgrXLI6xLf10t4unJa7aMB_QeKeki1HJVeXsntkY,4512
|
|
19
|
+
mns_scheduler/concept/clean/ths_concept_clean_api.py,sha256=XjmlLlzJ6kLDAXyaQwZJ1maYJpjE7P3DO7S1ieHOHRo,5907
|
|
19
20
|
mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
20
21
|
mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
21
22
|
mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=8KOz1AlUFmo0hdlkOuc5rDLKIeYkRK3-ooA5Z_wJX10,6724
|
|
@@ -63,9 +64,9 @@ mns_scheduler/zt/today_high_chg_pool_sync_api.py,sha256=G6FXMH7HnvhyMFoE-RszggkB
|
|
|
63
64
|
mns_scheduler/zt/zt_five_boards_sync_api.py,sha256=HfjPHKD99fU9c37kSenEX2_qNvFAjQGgy8ERuacSxwk,10916
|
|
64
65
|
mns_scheduler/zt/zt_pool_sync_api.py,sha256=tzSCnqAelV7MQBZ3KcpOQQHNYnjFnmvoDFcapBpU_NA,7534
|
|
65
66
|
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
66
|
-
mns_scheduler/zz_task/data_sync_task.py,sha256=
|
|
67
|
+
mns_scheduler/zz_task/data_sync_task.py,sha256=kS8HR6OZcsre3MWOyHFKEqG-S2v3SKUeezDLh5pCn5w,15670
|
|
67
68
|
mns_scheduler/zz_task/sync_realtime_quotes_task.py,sha256=DN3bq2XCDZC-PHlbD2NTog48bR44EruIEc2QVGKg7Tk,932
|
|
68
|
-
mns_scheduler-1.0.4.
|
|
69
|
-
mns_scheduler-1.0.4.
|
|
70
|
-
mns_scheduler-1.0.4.
|
|
71
|
-
mns_scheduler-1.0.4.
|
|
69
|
+
mns_scheduler-1.0.4.5.dist-info/METADATA,sha256=gdISslzPgHJblEJQ1Kcl_kqqVVKUUo4oPQ-PUnxof_w,64
|
|
70
|
+
mns_scheduler-1.0.4.5.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
71
|
+
mns_scheduler-1.0.4.5.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
72
|
+
mns_scheduler-1.0.4.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|