mns-scheduler 1.1.5.2__py3-none-any.whl → 1.1.5.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/hk/hk_company_info_sync_service_api.py +1 -1
- mns_scheduler/hk/hk_industry_info_sync_service_api.py +69 -0
- mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +5 -20
- mns_scheduler/zz_task/data_sync_task.py +14 -0
- {mns_scheduler-1.1.5.2.dist-info → mns_scheduler-1.1.5.5.dist-info}/METADATA +1 -1
- {mns_scheduler-1.1.5.2.dist-info → mns_scheduler-1.1.5.5.dist-info}/RECORD +8 -7
- {mns_scheduler-1.1.5.2.dist-info → mns_scheduler-1.1.5.5.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.1.5.2.dist-info → mns_scheduler-1.1.5.5.dist-info}/top_level.txt +0 -0
|
@@ -63,7 +63,7 @@ def sync_hk_company_info():
|
|
|
63
63
|
hk_real_time_df['_id'] = hk_real_time_df['symbol']
|
|
64
64
|
|
|
65
65
|
hk_real_time_df.fillna(0, inplace=True)
|
|
66
|
-
|
|
66
|
+
mongodb_util.remove_all_data(db_name_constant.COMPANY_INFO_HK)
|
|
67
67
|
mongodb_util.save_mongo(hk_real_time_df, db_name_constant.COMPANY_INFO_HK)
|
|
68
68
|
|
|
69
69
|
|
|
@@ -0,0 +1,69 @@
|
|
|
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
|
+
|
|
9
|
+
import mns_common.api.em.east_money_stock_hk_api as east_money_stock_hk_api
|
|
10
|
+
import akshare as ak
|
|
11
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
12
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
13
|
+
from functools import lru_cache
|
|
14
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
15
|
+
import mns_common.component.zt.zt_common_service_api as zt_common_service_api
|
|
16
|
+
|
|
17
|
+
mongodb_util = MongodbUtil('27017')
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# 获取陆股通的列表
|
|
21
|
+
@lru_cache(maxsize=None)
|
|
22
|
+
def get_hk_ggt_component():
|
|
23
|
+
stock_hk_ggt_components_em_df = ak.stock_hk_ggt_components_em()
|
|
24
|
+
stock_hk_ggt_components_em_df = stock_hk_ggt_components_em_df.rename(columns={
|
|
25
|
+
"序号": "index",
|
|
26
|
+
"代码": "symbol",
|
|
27
|
+
"名称": "name"
|
|
28
|
+
})
|
|
29
|
+
return stock_hk_ggt_components_em_df
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# 获取em cookie
|
|
33
|
+
@lru_cache(maxsize=None)
|
|
34
|
+
def get_em_cookie():
|
|
35
|
+
query = {"type": "em_cookie"}
|
|
36
|
+
stock_account_info = mongodb_util.find_query_data(db_name_constant.STOCK_ACCOUNT_INFO, query)
|
|
37
|
+
cookie = list(stock_account_info['cookie'])[0]
|
|
38
|
+
return cookie
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def sync_hk_company_industry():
|
|
42
|
+
cookie = get_em_cookie()
|
|
43
|
+
hk_real_time_df = east_money_stock_hk_api.hk_real_time_quotes(cookie)
|
|
44
|
+
|
|
45
|
+
hk_real_time_df = hk_real_time_df[[
|
|
46
|
+
"symbol",
|
|
47
|
+
"name",
|
|
48
|
+
"chg",
|
|
49
|
+
"total_mv",
|
|
50
|
+
"flow_mv",
|
|
51
|
+
"list_date",
|
|
52
|
+
"industry",
|
|
53
|
+
"amount",
|
|
54
|
+
"now_price"
|
|
55
|
+
]]
|
|
56
|
+
hk_real_time_df = hk_real_time_df.loc[(hk_real_time_df['total_mv'] != '-')]
|
|
57
|
+
hk_real_time_df['total_mv'] = hk_real_time_df['total_mv'].astype(float)
|
|
58
|
+
hk_real_time_df['flow_mv'] = hk_real_time_df['flow_mv'].astype(float)
|
|
59
|
+
hk_real_time_df = hk_real_time_df.loc[hk_real_time_df['total_mv'] != 0]
|
|
60
|
+
|
|
61
|
+
hk_real_time_df.loc[hk_real_time_df['industry'] == '-', 'industry'] = '其他'
|
|
62
|
+
|
|
63
|
+
group_industry_df = zt_common_service_api.group_by_industry(hk_real_time_df, 'industry')
|
|
64
|
+
group_industry_df['_id'] = group_industry_df['industry']
|
|
65
|
+
mongodb_util.remove_all_data(db_name_constant.HK_COMPANY_INDUSTRY)
|
|
66
|
+
mongodb_util.save_mongo(group_industry_df, db_name_constant.HK_COMPANY_INDUSTRY)
|
|
67
|
+
|
|
68
|
+
if __name__ == '__main__':
|
|
69
|
+
sync_hk_company_industry()
|
|
@@ -16,6 +16,7 @@ from loguru import logger
|
|
|
16
16
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
17
17
|
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
18
18
|
import mns_common.component.trade_date.trade_date_common_service_api as trade_date_common_service_api
|
|
19
|
+
import mns_common.api.ths.zt.ths_stock_zt_pool_v2_api as ths_stock_zt_pool_v2_api
|
|
19
20
|
|
|
20
21
|
'''
|
|
21
22
|
东方财富涨停池
|
|
@@ -37,8 +38,8 @@ ZT_FIELD = ['_id', 'symbol', 'name', 'now_price', 'chg', 'first_closure_time',
|
|
|
37
38
|
'ths_concept_code', 'ths_concept_sync_day', 'em_industry',
|
|
38
39
|
'mv_circulation_ratio', 'ths_concept_list_info', 'kpl_plate_name',
|
|
39
40
|
'kpl_plate_list_info', 'company_type', 'diff_days', 'symbol', 'amount',
|
|
40
|
-
'
|
|
41
|
-
'exchange', '
|
|
41
|
+
'list_date',
|
|
42
|
+
'exchange', 'flow_mv', 'total_mv',
|
|
42
43
|
'classification', 'flow_mv_sp', 'total_mv_sp', 'flow_mv_level',
|
|
43
44
|
'amount_level', 'new_stock', 'list_date_01', 'index', 'str_day']
|
|
44
45
|
|
|
@@ -59,7 +60,7 @@ def save_zt_info(str_day):
|
|
|
59
60
|
stock_em_zt_pool_df_data = company_common_service_api.amendment_industry(stock_em_zt_pool_df_data)
|
|
60
61
|
try:
|
|
61
62
|
# 同花顺问财涨停池
|
|
62
|
-
ths_zt_pool_df_data =
|
|
63
|
+
ths_zt_pool_df_data = ths_stock_zt_pool_v2_api.get_ths_stock_zt_reason_with_cache(str_day)
|
|
63
64
|
|
|
64
65
|
# del stock_em_zt_pool_df_data['ths_concept_name']
|
|
65
66
|
# del stock_em_zt_pool_df_data['ths_concept_code']
|
|
@@ -74,22 +75,6 @@ def save_zt_info(str_day):
|
|
|
74
75
|
continue
|
|
75
76
|
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'zt_reason'] = \
|
|
76
77
|
list(ths_zt_pool_one_df['zt_reason'])[0]
|
|
77
|
-
|
|
78
|
-
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'quantity_ratio'] = \
|
|
79
|
-
list(ths_zt_pool_one_df['quantity_ratio'])[0]
|
|
80
|
-
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'high'] = \
|
|
81
|
-
list(ths_zt_pool_one_df['high'])[0]
|
|
82
|
-
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'low'] = \
|
|
83
|
-
list(ths_zt_pool_one_df['low'])[0]
|
|
84
|
-
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'open'] = \
|
|
85
|
-
list(ths_zt_pool_one_df['open'])[0]
|
|
86
|
-
|
|
87
|
-
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'wei_bi'] = \
|
|
88
|
-
list(ths_zt_pool_one_df['wei_bi'])[0]
|
|
89
|
-
|
|
90
|
-
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'buy_1_num'] = \
|
|
91
|
-
list(ths_zt_pool_one_df['buy_1_num'])[0]
|
|
92
|
-
|
|
93
78
|
except BaseException as e:
|
|
94
79
|
logger.error("出现异常:{}", e)
|
|
95
80
|
except BaseException as e:
|
|
@@ -132,7 +117,7 @@ def save_zt_info(str_day):
|
|
|
132
117
|
|
|
133
118
|
|
|
134
119
|
if __name__ == '__main__':
|
|
135
|
-
save_zt_info('2024-
|
|
120
|
+
save_zt_info('2024-09-30')
|
|
136
121
|
# from datetime import datetime
|
|
137
122
|
#
|
|
138
123
|
# if __name__ == '__main__':
|
|
@@ -52,6 +52,8 @@ import mns_scheduler.db.real_time_task_check as real_time_task_check_api
|
|
|
52
52
|
import mns_scheduler.trade.task.trader_task_service as trader_task_service
|
|
53
53
|
import mns_scheduler.company_info.remark.company_remark_info_sync as company_remark_info_sync
|
|
54
54
|
import mns_scheduler.finance.sync_financial_report_service_api as sync_financial_report_service_api
|
|
55
|
+
import mns_scheduler.hk.hk_industry_info_sync_service_api as hk_industry_info_sync_service_api
|
|
56
|
+
import mns_scheduler.hk.hk_company_info_sync_service_api as hk_company_info_sync_service_api
|
|
55
57
|
|
|
56
58
|
|
|
57
59
|
# 同步交易日期任务完成
|
|
@@ -374,6 +376,14 @@ def sync_financial_report_task():
|
|
|
374
376
|
sync_financial_report_service_api.sync_financial_report()
|
|
375
377
|
|
|
376
378
|
|
|
379
|
+
# 同步hk公司信息
|
|
380
|
+
def sync_hk_company_industry_info():
|
|
381
|
+
# 同步所有港股信息
|
|
382
|
+
hk_company_info_sync_service_api.sync_hk_company_info()
|
|
383
|
+
# 同步所有港股行业信息
|
|
384
|
+
hk_industry_info_sync_service_api.sync_hk_company_industry()
|
|
385
|
+
|
|
386
|
+
|
|
377
387
|
# # 定义BlockingScheduler
|
|
378
388
|
blockingScheduler = BlockingScheduler()
|
|
379
389
|
# sync_trade_date 同步交易日期
|
|
@@ -465,6 +475,10 @@ blockingScheduler.add_job(sync_company_remark_info, 'cron', hour='22', minute='3
|
|
|
465
475
|
blockingScheduler.add_job(self_choose_stock_task, 'cron', hour='17,22', minute='30')
|
|
466
476
|
# 同步财务报表任务
|
|
467
477
|
blockingScheduler.add_job(sync_financial_report_task, 'cron', hour='17', minute='30')
|
|
478
|
+
|
|
479
|
+
# 同步港股公司和行业信息
|
|
480
|
+
blockingScheduler.add_job(sync_hk_company_industry_info, 'cron', hour='09,19', minute='10')
|
|
481
|
+
|
|
468
482
|
print('定时任务启动成功')
|
|
469
483
|
blockingScheduler.start()
|
|
470
484
|
#
|
|
@@ -45,7 +45,8 @@ mns_scheduler/finance/em_financial_profit_sync_service_api.py,sha256=A_ONxC-1giG
|
|
|
45
45
|
mns_scheduler/finance/finance_common_api.py,sha256=_cjNHntTgXVbsfDT5F5KtCV_QNq2gbclgZ8UxrgGP64,2471
|
|
46
46
|
mns_scheduler/finance/sync_financial_report_service_api.py,sha256=YSSVt5R1EqYbW8C3JH4ng2iq7UkQynAMA1ye6G4iecw,5086
|
|
47
47
|
mns_scheduler/hk/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
48
|
-
mns_scheduler/hk/hk_company_info_sync_service_api.py,sha256=
|
|
48
|
+
mns_scheduler/hk/hk_company_info_sync_service_api.py,sha256=WdzrWH0cjTfEHMBzT0__nlmMjy7Vqbr1-X9lemv3OM8,2323
|
|
49
|
+
mns_scheduler/hk/hk_industry_info_sync_service_api.py,sha256=RUcmguyIMgh9xI09XyM7_So2E1_r1F36EEU-V-EYVio,2409
|
|
49
50
|
mns_scheduler/irm/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
50
51
|
mns_scheduler/irm/stock_irm_cninfo_service.py,sha256=mTwD7ZYKk9XlA3KD1SQWz2A8-OKAH2mdUl2A9Pzwrz8,9560
|
|
51
52
|
mns_scheduler/irm/api/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
@@ -125,11 +126,11 @@ mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py,sha256=aTrYgshcccoH
|
|
|
125
126
|
mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=dtREQdNpoDM4KLTvdXuiEhXmdjpc1dScMDgR3fbEbww,1685
|
|
126
127
|
mns_scheduler/zt/script/sync_now_higt_chg_zt.py,sha256=bhoIGDWTI3w0YKVfIAVNHWpUrYqJYDMGPt-1i3d_Zmw,1850
|
|
127
128
|
mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
128
|
-
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=
|
|
129
|
+
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=Y2TattsWufh8rSYxN5szSU_F5dnRELEdcA8jgF-h6Zo,6603
|
|
129
130
|
mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=LJVGqJyLn04oC-Xp59RVE1IOz7lx6ao78bw9l67sKBM,10382
|
|
130
131
|
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
131
|
-
mns_scheduler/zz_task/data_sync_task.py,sha256=
|
|
132
|
-
mns_scheduler-1.1.5.
|
|
133
|
-
mns_scheduler-1.1.5.
|
|
134
|
-
mns_scheduler-1.1.5.
|
|
135
|
-
mns_scheduler-1.1.5.
|
|
132
|
+
mns_scheduler/zz_task/data_sync_task.py,sha256=DczJjItL2JjaDd_bNAkviXtDdZIhTiwIox90q9qw4Qk,20200
|
|
133
|
+
mns_scheduler-1.1.5.5.dist-info/METADATA,sha256=ZlYZSLMtcVh-9B1Mv3lBSyjDjYfWo9RpgajpOCZnCVU,64
|
|
134
|
+
mns_scheduler-1.1.5.5.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
|
135
|
+
mns_scheduler-1.1.5.5.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
136
|
+
mns_scheduler-1.1.5.5.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|