mns-scheduler 1.4.3.0__py3-none-any.whl → 1.4.3.3__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/zb/stock_zb_pool_sync.py +1 -1
- mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +241 -65
- {mns_scheduler-1.4.3.0.dist-info → mns_scheduler-1.4.3.3.dist-info}/METADATA +1 -1
- {mns_scheduler-1.4.3.0.dist-info → mns_scheduler-1.4.3.3.dist-info}/RECORD +6 -6
- {mns_scheduler-1.4.3.0.dist-info → mns_scheduler-1.4.3.3.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.4.3.0.dist-info → mns_scheduler-1.4.3.3.dist-info}/top_level.txt +0 -0
|
@@ -20,6 +20,11 @@ import mns_common.component.em.em_real_time_quotes_api as em_real_time_quotes_ap
|
|
|
20
20
|
from datetime import datetime
|
|
21
21
|
import mns_common.api.ths.zt.ths_stock_zt_pool_api as ths_stock_zt_pool_api
|
|
22
22
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
23
|
+
import mns_common.component.deal.deal_service_api as deal_service_api
|
|
24
|
+
import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
|
|
25
|
+
import mns_common.api.ths.company.ths_company_info_api as ths_company_info_api
|
|
26
|
+
import mns_common.component.cookie.cookie_info_service as cookie_info_service
|
|
27
|
+
import time
|
|
23
28
|
|
|
24
29
|
'''
|
|
25
30
|
东方财富涨停池
|
|
@@ -49,13 +54,22 @@ ZT_FIELD = ['_id', 'symbol', 'name', 'now_price', 'chg', 'first_closure_time',
|
|
|
49
54
|
|
|
50
55
|
def save_zt_info(str_day):
|
|
51
56
|
if bool(1 - trade_date_common_service_api.is_trade_day(str_day)):
|
|
52
|
-
return
|
|
57
|
+
return pd.DataFrame()
|
|
53
58
|
|
|
54
59
|
stock_em_zt_pool_df_data = stock_zt_pool_api.stock_em_zt_pool_df(
|
|
55
60
|
date_handle_util.no_slash_date(str_day))
|
|
56
61
|
|
|
57
62
|
# fix 涨停池没有的股票
|
|
58
|
-
stock_em_zt_pool_df_data =
|
|
63
|
+
stock_em_zt_pool_df_data = handle_miss_zt_data(stock_em_zt_pool_df_data.copy(), str_day)
|
|
64
|
+
|
|
65
|
+
try:
|
|
66
|
+
# 同花顺问财涨停池
|
|
67
|
+
ths_zt_pool_df_data = ths_stock_zt_pool_v2_api.get_ths_stock_zt_reason_with_cache(str_day)
|
|
68
|
+
except BaseException as e:
|
|
69
|
+
logger.error("使用问财同步ths涨停数据异常")
|
|
70
|
+
ths_zt_pool_df_data = pd.DataFrame()
|
|
71
|
+
|
|
72
|
+
stock_em_zt_pool_df_data = handle_ths_em_diff_data(ths_zt_pool_df_data, stock_em_zt_pool_df_data)
|
|
59
73
|
|
|
60
74
|
stock_em_zt_pool_df_data = common_service_fun_api.total_mv_classification(stock_em_zt_pool_df_data.copy())
|
|
61
75
|
|
|
@@ -64,68 +78,14 @@ def save_zt_info(str_day):
|
|
|
64
78
|
stock_em_zt_pool_df_data = common_service_fun_api.symbol_amount_simple(stock_em_zt_pool_df_data.copy())
|
|
65
79
|
|
|
66
80
|
stock_em_zt_pool_df_data = company_common_service_api.amendment_industry(stock_em_zt_pool_df_data.copy())
|
|
81
|
+
|
|
67
82
|
# 主线标记 复盘用
|
|
68
83
|
stock_em_zt_pool_df_data['main_line'] = '无'
|
|
69
84
|
stock_em_zt_pool_df_data['sub_main_line'] = '无'
|
|
85
|
+
|
|
70
86
|
# 上个交易交易日涨停股票
|
|
71
87
|
last_trade_day_zt_df = zt_common_service_api.get_last_trade_day_zt(str_day)
|
|
72
88
|
|
|
73
|
-
try:
|
|
74
|
-
# 同花顺问财涨停池
|
|
75
|
-
ths_zt_pool_df_data = ths_stock_zt_pool_v2_api.get_ths_stock_zt_reason_with_cache(str_day)
|
|
76
|
-
|
|
77
|
-
# del stock_em_zt_pool_df_data['ths_concept_name']
|
|
78
|
-
# del stock_em_zt_pool_df_data['ths_concept_code']
|
|
79
|
-
|
|
80
|
-
today_main_line_df = mongodb_util.find_query_data(db_name_constant.MAIN_LINE_DETAIL, {'str_day': str_day})
|
|
81
|
-
|
|
82
|
-
for stock_one in stock_em_zt_pool_df_data.itertuples():
|
|
83
|
-
try:
|
|
84
|
-
|
|
85
|
-
# 设置连板数目
|
|
86
|
-
stock_em_zt_pool_df_data = set_connected_boards_numbers(stock_em_zt_pool_df_data.copy(),
|
|
87
|
-
stock_one.symbol,
|
|
88
|
-
last_trade_day_zt_df.copy())
|
|
89
|
-
|
|
90
|
-
ths_zt_pool_one_df = ths_zt_pool_df_data.loc[ths_zt_pool_df_data['symbol'] == stock_one.symbol]
|
|
91
|
-
if data_frame_util.is_empty(ths_zt_pool_one_df):
|
|
92
|
-
stock_em_zt_pool_df_data['zt_reason'] = '0'
|
|
93
|
-
continue
|
|
94
|
-
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'zt_reason'] = \
|
|
95
|
-
list(ths_zt_pool_one_df['zt_reason'])[0]
|
|
96
|
-
|
|
97
|
-
first_closure_time = list(ths_zt_pool_one_df['first_closure_time'])[0]
|
|
98
|
-
first_closure_time = first_closure_time.replace(":", "")
|
|
99
|
-
|
|
100
|
-
stock_em_zt_pool_df_data.loc[
|
|
101
|
-
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'first_closure_time'] = first_closure_time
|
|
102
|
-
|
|
103
|
-
# 涨停分析
|
|
104
|
-
zt_result_dict = ths_stock_zt_pool_api.zt_analyse_reason(stock_one.symbol)
|
|
105
|
-
zt_analysis = zt_result_dict['zt_analyse_detail']
|
|
106
|
-
zt_reason = zt_result_dict['zt_reason']
|
|
107
|
-
|
|
108
|
-
stock_em_zt_pool_df_data.loc[
|
|
109
|
-
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'zt_reason'] = zt_reason
|
|
110
|
-
|
|
111
|
-
stock_em_zt_pool_df_data.loc[
|
|
112
|
-
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'zt_analysis'] = zt_analysis
|
|
113
|
-
|
|
114
|
-
today_main_line_one_df = today_main_line_df.loc[today_main_line_df['symbol'] == stock_one.symbol]
|
|
115
|
-
if data_frame_util.is_not_empty(today_main_line_one_df):
|
|
116
|
-
stock_em_zt_pool_df_data.loc[
|
|
117
|
-
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'main_line'] = \
|
|
118
|
-
list(today_main_line_one_df['main_line'])[0]
|
|
119
|
-
|
|
120
|
-
stock_em_zt_pool_df_data.loc[
|
|
121
|
-
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'sub_main_line'] = \
|
|
122
|
-
list(today_main_line_one_df['sub_main_line'])[0]
|
|
123
|
-
except BaseException as e:
|
|
124
|
-
stock_em_zt_pool_df_data['zt_reason'] = '0'
|
|
125
|
-
logger.error("出现异常:{}", e)
|
|
126
|
-
except BaseException as e:
|
|
127
|
-
stock_em_zt_pool_df_data['zt_reason'] = '0'
|
|
128
|
-
logger.error("出现异常:{}", e)
|
|
129
89
|
stock_em_zt_pool_df_data['first_closure_time'] = stock_em_zt_pool_df_data['first_closure_time'].str.strip()
|
|
130
90
|
stock_em_zt_pool_df_data['list_date'] = stock_em_zt_pool_df_data['list_date'].apply(
|
|
131
91
|
lambda x: pd.to_numeric(x, errors="coerce"))
|
|
@@ -150,25 +110,114 @@ def save_zt_info(str_day):
|
|
|
150
110
|
|
|
151
111
|
stock_em_zt_pool_df_data['str_day'] = str_day
|
|
152
112
|
stock_em_zt_pool_df_data['_id'] = stock_em_zt_pool_df_data['symbol'] + "_" + str_day
|
|
113
|
+
stock_em_zt_pool_df_data.drop_duplicates('symbol', keep='last', inplace=True)
|
|
153
114
|
|
|
154
|
-
|
|
115
|
+
query_today_zt = {'str_day': str_day}
|
|
155
116
|
|
|
156
|
-
|
|
117
|
+
stock_today_zt_pool_df = mongodb_util.find_query_data(db_name_constant.STOCK_ZT_POOL, query_today_zt)
|
|
118
|
+
|
|
119
|
+
if data_frame_util.is_empty(stock_today_zt_pool_df):
|
|
120
|
+
|
|
121
|
+
today_new_zt_pool_df = stock_em_zt_pool_df_data.copy()
|
|
122
|
+
else:
|
|
123
|
+
today_new_zt_pool_df = stock_em_zt_pool_df_data.loc[
|
|
124
|
+
~stock_em_zt_pool_df_data['symbol'].isin(stock_today_zt_pool_df['symbol'])]
|
|
157
125
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
mongodb_util.
|
|
126
|
+
try:
|
|
127
|
+
|
|
128
|
+
today_main_line_df = mongodb_util.find_query_data(db_name_constant.MAIN_LINE_DETAIL, {'str_day': str_day})
|
|
129
|
+
|
|
130
|
+
for stock_one in today_new_zt_pool_df.itertuples():
|
|
131
|
+
try:
|
|
132
|
+
zt_reason = ''
|
|
133
|
+
zt_analyse_detail = ''
|
|
134
|
+
|
|
135
|
+
# 设置连板数目
|
|
136
|
+
stock_em_zt_pool_df_data = set_connected_boards_numbers(stock_em_zt_pool_df_data.copy(),
|
|
137
|
+
stock_one.symbol,
|
|
138
|
+
last_trade_day_zt_df.copy())
|
|
139
|
+
|
|
140
|
+
reason_tag = False
|
|
141
|
+
# 网页获取
|
|
142
|
+
try:
|
|
143
|
+
ths_cookie = cookie_info_service.get_ths_cookie()
|
|
144
|
+
# 问财获取涨停分析
|
|
145
|
+
zt_analyse_detail = ths_company_info_api.get_company_hot_info(stock_one.symbol, ths_cookie)
|
|
146
|
+
|
|
147
|
+
zt_reason = zt_analyse_detail.split("\n")[0]
|
|
148
|
+
reason_tag = True
|
|
149
|
+
time.sleep(2)
|
|
150
|
+
except BaseException as e:
|
|
151
|
+
time.sleep(2)
|
|
152
|
+
logger.error("网页获取涨停详情异常:{},{}", stock_one.symbol, e)
|
|
153
|
+
|
|
154
|
+
# 问财获取
|
|
155
|
+
if bool(1 - reason_tag):
|
|
156
|
+
try:
|
|
157
|
+
# 问财获取涨停分析
|
|
158
|
+
zt_result_dict = ths_stock_zt_pool_api.zt_analyse_reason(stock_one.symbol)
|
|
159
|
+
zt_analyse_detail = zt_result_dict['zt_analyse_detail']
|
|
160
|
+
zt_reason = zt_result_dict['zt_reason']
|
|
161
|
+
time.sleep(2)
|
|
162
|
+
except BaseException as e:
|
|
163
|
+
time.sleep(2)
|
|
164
|
+
logger.error("问财获取涨停详情异常:{},{}", stock_one.symbol, e)
|
|
165
|
+
|
|
166
|
+
stock_em_zt_pool_df_data.loc[
|
|
167
|
+
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'zt_reason'] = zt_reason
|
|
168
|
+
|
|
169
|
+
stock_em_zt_pool_df_data.loc[
|
|
170
|
+
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'zt_analysis'] = zt_analyse_detail
|
|
171
|
+
|
|
172
|
+
if data_frame_util.is_not_empty(today_main_line_df):
|
|
173
|
+
today_main_line_one_df = today_main_line_df.loc[today_main_line_df['symbol'] == stock_one.symbol]
|
|
174
|
+
if data_frame_util.is_not_empty(today_main_line_one_df):
|
|
175
|
+
stock_em_zt_pool_df_data.loc[
|
|
176
|
+
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'main_line'] = \
|
|
177
|
+
list(today_main_line_one_df['main_line'])[0]
|
|
178
|
+
|
|
179
|
+
stock_em_zt_pool_df_data.loc[
|
|
180
|
+
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol, 'sub_main_line'] = \
|
|
181
|
+
list(today_main_line_one_df['sub_main_line'])[0]
|
|
182
|
+
|
|
183
|
+
query_exist = {'symbol': stock_one.symbol, 'str_day': str_day}
|
|
184
|
+
if mongodb_util.exist_data_query(db_name_constant.STOCK_ZT_POOL, query_exist):
|
|
185
|
+
continue
|
|
186
|
+
else:
|
|
187
|
+
|
|
188
|
+
stock_em_zt_pool_df_data_one = stock_em_zt_pool_df_data.loc[
|
|
189
|
+
stock_em_zt_pool_df_data['symbol'] == stock_one.symbol]
|
|
190
|
+
stock_em_zt_pool_df_data_one = stock_em_zt_pool_df_data_one[ZT_FIELD]
|
|
191
|
+
|
|
192
|
+
chg = round(float(list(stock_em_zt_pool_df_data_one['chg'])[0]), 2)
|
|
193
|
+
stock_em_zt_pool_df_data_one['chg'] = chg
|
|
194
|
+
|
|
195
|
+
mongodb_util.save_mongo(stock_em_zt_pool_df_data_one, db_name_constant.STOCK_ZT_POOL)
|
|
196
|
+
|
|
197
|
+
except BaseException as e:
|
|
198
|
+
|
|
199
|
+
logger.error("同步涨停信息出现异常:{},{}", stock_one.symbol, e)
|
|
200
|
+
except BaseException as e:
|
|
201
|
+
stock_em_zt_pool_df_data['zt_reason'] = '0'
|
|
202
|
+
logger.error("出现异常:{}", e)
|
|
203
|
+
|
|
204
|
+
stock_em_zt_pool_df_data = pd.concat([stock_today_zt_pool_df, today_new_zt_pool_df])
|
|
205
|
+
stock_em_zt_pool_df_data = stock_em_zt_pool_df_data[ZT_FIELD]
|
|
161
206
|
return stock_em_zt_pool_df_data
|
|
162
207
|
|
|
163
208
|
|
|
164
209
|
# 设置连板数目
|
|
165
210
|
def set_connected_boards_numbers(stock_em_zt_pool_df_data, symbol, last_trade_day_zt_df):
|
|
211
|
+
# 连板股票
|
|
166
212
|
connected_boards_df_copy = last_trade_day_zt_df.loc[
|
|
167
213
|
last_trade_day_zt_df['symbol'].isin(stock_em_zt_pool_df_data['symbol'])]
|
|
214
|
+
|
|
168
215
|
connected_boards_df = connected_boards_df_copy.copy()
|
|
169
216
|
connected_boards_df['connected_boards_numbers'] = connected_boards_df['connected_boards_numbers'] + 1
|
|
170
217
|
|
|
218
|
+
# 连板股票
|
|
171
219
|
connected_boards_df_one = connected_boards_df.loc[connected_boards_df['symbol'] == symbol]
|
|
220
|
+
|
|
172
221
|
if data_frame_util.is_not_empty(connected_boards_df_one):
|
|
173
222
|
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == symbol, 'connected_boards_numbers'] = \
|
|
174
223
|
list(connected_boards_df_one['connected_boards_numbers'])[0]
|
|
@@ -184,7 +233,7 @@ def set_connected_boards_numbers(stock_em_zt_pool_df_data, symbol, last_trade_da
|
|
|
184
233
|
return stock_em_zt_pool_df_data
|
|
185
234
|
|
|
186
235
|
|
|
187
|
-
def
|
|
236
|
+
def handle_miss_zt_data(stock_em_zt_pool_df_data, str_day):
|
|
188
237
|
now_date = datetime.now()
|
|
189
238
|
now_day = now_date.strftime('%Y-%m-%d')
|
|
190
239
|
if now_day == str_day:
|
|
@@ -240,8 +289,135 @@ def sync_miss_zt_data(stock_em_zt_pool_df_data, str_day):
|
|
|
240
289
|
return stock_em_zt_pool_df_data
|
|
241
290
|
|
|
242
291
|
|
|
292
|
+
def handle_ths_em_diff_data(ths_zt_pool_df_data, stock_em_zt_pool_df_data):
|
|
293
|
+
if data_frame_util.is_empty(ths_zt_pool_df_data):
|
|
294
|
+
return stock_em_zt_pool_df_data
|
|
295
|
+
else:
|
|
296
|
+
diff_ths_zt_df = ths_zt_pool_df_data.loc[
|
|
297
|
+
~(ths_zt_pool_df_data['symbol'].isin(stock_em_zt_pool_df_data['symbol']))]
|
|
298
|
+
if data_frame_util.is_empty(diff_ths_zt_df):
|
|
299
|
+
return stock_em_zt_pool_df_data
|
|
300
|
+
else:
|
|
301
|
+
diff_ths_zt_df = diff_ths_zt_df[[
|
|
302
|
+
'symbol',
|
|
303
|
+
'name',
|
|
304
|
+
'chg',
|
|
305
|
+
'now_price',
|
|
306
|
+
# 'amount',
|
|
307
|
+
# 'flow_mv',
|
|
308
|
+
# 'total_mv',
|
|
309
|
+
# 'exchange',
|
|
310
|
+
'closure_funds',
|
|
311
|
+
'first_closure_time',
|
|
312
|
+
'last_closure_time',
|
|
313
|
+
'frying_plates_numbers',
|
|
314
|
+
'statistics',
|
|
315
|
+
'connected_boards_numbers'
|
|
316
|
+
|
|
317
|
+
]]
|
|
318
|
+
|
|
319
|
+
company_info_df = query_company_info_with_share()
|
|
320
|
+
company_info_df['symbol'] = company_info_df['_id']
|
|
321
|
+
company_info_df = company_info_df.loc[company_info_df['symbol'].isin(list(diff_ths_zt_df['symbol']))]
|
|
322
|
+
|
|
323
|
+
company_info_df = common_service_fun_api.add_after_prefix(company_info_df)
|
|
324
|
+
|
|
325
|
+
symbol_prefix_list = list(company_info_df['symbol_prefix'])
|
|
326
|
+
real_time_quotes_list = deal_service_api.get_qmt_real_time_quotes_detail('qmt',
|
|
327
|
+
symbol_prefix_list)
|
|
328
|
+
|
|
329
|
+
real_time_quotes_df = pd.DataFrame(real_time_quotes_list)
|
|
330
|
+
|
|
331
|
+
real_time_quotes_df['symbol'] = real_time_quotes_df['symbol'].str.slice(0, 6)
|
|
332
|
+
company_info_df = company_info_df.set_index(['symbol'], drop=True)
|
|
333
|
+
real_time_quotes_df = real_time_quotes_df.set_index(['symbol'], drop=False)
|
|
334
|
+
|
|
335
|
+
real_time_quotes_df = pd.merge(company_info_df, real_time_quotes_df, how='outer',
|
|
336
|
+
left_index=True, right_index=True)
|
|
337
|
+
|
|
338
|
+
real_time_quotes_df['amount'] = round(real_time_quotes_df['amount'], 1)
|
|
339
|
+
|
|
340
|
+
real_time_quotes_df['total_mv'] = round(
|
|
341
|
+
real_time_quotes_df['lastPrice'] * real_time_quotes_df['total_share'], 1)
|
|
342
|
+
real_time_quotes_df['flow_mv'] = round(real_time_quotes_df['lastPrice'] * real_time_quotes_df['flow_share'],
|
|
343
|
+
1)
|
|
344
|
+
real_time_quotes_df['exchange'] = round(
|
|
345
|
+
real_time_quotes_df['amount'] * 100 / real_time_quotes_df['flow_mv'], 1)
|
|
346
|
+
|
|
347
|
+
real_time_quotes_df = real_time_quotes_df[
|
|
348
|
+
['symbol', 'amount', 'total_mv', 'flow_mv', 'exchange', 'industry']]
|
|
349
|
+
|
|
350
|
+
real_time_quotes_df = real_time_quotes_df.set_index(['symbol'], drop=True)
|
|
351
|
+
diff_ths_zt_df = diff_ths_zt_df.set_index(['symbol'], drop=False)
|
|
352
|
+
diff_ths_zt_df = pd.merge(real_time_quotes_df, diff_ths_zt_df, how='outer',
|
|
353
|
+
left_index=True, right_index=True)
|
|
354
|
+
|
|
355
|
+
diff_ths_zt_df = diff_ths_zt_df[[
|
|
356
|
+
'symbol',
|
|
357
|
+
'name',
|
|
358
|
+
'chg',
|
|
359
|
+
'now_price',
|
|
360
|
+
'amount',
|
|
361
|
+
'flow_mv',
|
|
362
|
+
'total_mv',
|
|
363
|
+
'exchange',
|
|
364
|
+
'closure_funds',
|
|
365
|
+
'first_closure_time',
|
|
366
|
+
'last_closure_time',
|
|
367
|
+
'frying_plates_numbers',
|
|
368
|
+
'statistics',
|
|
369
|
+
'connected_boards_numbers',
|
|
370
|
+
'industry'
|
|
371
|
+
|
|
372
|
+
]]
|
|
373
|
+
|
|
374
|
+
exist_number = stock_em_zt_pool_df_data.shape[0] + 1
|
|
375
|
+
|
|
376
|
+
diff_ths_zt_df.index = range(exist_number, exist_number + len(diff_ths_zt_df))
|
|
377
|
+
diff_ths_zt_df['index'] = diff_ths_zt_df.index
|
|
378
|
+
|
|
379
|
+
stock_em_zt_pool_df_data = pd.concat([stock_em_zt_pool_df_data, diff_ths_zt_df])
|
|
380
|
+
return stock_em_zt_pool_df_data
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def query_company_info_with_share():
|
|
384
|
+
query_field = {"_id": 1,
|
|
385
|
+
"industry": 1,
|
|
386
|
+
"company_type": 1,
|
|
387
|
+
"ths_industry_code": 1,
|
|
388
|
+
"ths_concept_name": 1,
|
|
389
|
+
"ths_concept_code": 1,
|
|
390
|
+
"ths_concept_sync_day": 1,
|
|
391
|
+
"first_sw_industry": 1,
|
|
392
|
+
"second_sw_industry": 1,
|
|
393
|
+
"second_industry_code": 1,
|
|
394
|
+
"third_sw_industry": 1,
|
|
395
|
+
"mv_circulation_ratio": 1,
|
|
396
|
+
"list_date": 1,
|
|
397
|
+
"diff_days": 1,
|
|
398
|
+
'em_industry': 1,
|
|
399
|
+
'operate_profit': 1,
|
|
400
|
+
'total_operate_income': 1,
|
|
401
|
+
"name": 1,
|
|
402
|
+
'pb': 1,
|
|
403
|
+
'pe_ttm': 1,
|
|
404
|
+
'ROE': 1,
|
|
405
|
+
'ths_industry_name': 1,
|
|
406
|
+
'total_share': 1,
|
|
407
|
+
'flow_share': 1
|
|
408
|
+
}
|
|
409
|
+
de_list_company_symbols = company_common_service_new_api.get_de_list_company()
|
|
410
|
+
query_field_key = str(query_field)
|
|
411
|
+
query = {"_id": {"$regex": "^[^48]"},
|
|
412
|
+
'symbol': {"$nin": de_list_company_symbols}, }
|
|
413
|
+
query_key = str(query)
|
|
414
|
+
company_info_df = company_common_service_new_api.get_company_info_by_field(query_key, query_field_key)
|
|
415
|
+
|
|
416
|
+
return company_info_df
|
|
417
|
+
|
|
418
|
+
|
|
243
419
|
if __name__ == '__main__':
|
|
244
|
-
save_zt_info('2025-11-
|
|
420
|
+
save_zt_info('2025-11-18')
|
|
245
421
|
# from datetime import datetime
|
|
246
422
|
#
|
|
247
423
|
# if __name__ == '__main__':
|
|
@@ -138,7 +138,7 @@ mns_scheduler/trade/task/trader_task_service.py,sha256=1vdjfs-M9y0ana2OLwWdlkB9Y
|
|
|
138
138
|
mns_scheduler/trade/tfp/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
139
139
|
mns_scheduler/trade/tfp/stock_tfp_info_sync.py,sha256=7sHUhvMW_5vEyfVhFGDP7It2F27STb0OcpNnBCQjZ8I,2574
|
|
140
140
|
mns_scheduler/zb/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
141
|
-
mns_scheduler/zb/stock_zb_pool_sync.py,sha256=
|
|
141
|
+
mns_scheduler/zb/stock_zb_pool_sync.py,sha256=ri8J2tgDduGY5eTYIpN6sYPNtqk_tmJxG5spvpWT2_s,1272
|
|
142
142
|
mns_scheduler/zt/__init__.py,sha256=Rzolrn2R5RZIj-eOmu9KcL6oZBY9Wjz_uBFXPlzirQc,1641
|
|
143
143
|
mns_scheduler/zt/connected_boards/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
144
144
|
mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py,sha256=HfjPHKD99fU9c37kSenEX2_qNvFAjQGgy8ERuacSxwk,10916
|
|
@@ -155,7 +155,7 @@ mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py,sha256=k2nrBjG41LU4
|
|
|
155
155
|
mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=WX5ZlV0x2kkXiLTep8fcs2ZkWY5BMWS8lQv8xpq4DlY,1685
|
|
156
156
|
mns_scheduler/zt/script/sync_now_higt_chg_zt.py,sha256=7qUtn58ty9Vc6kY33BooCDIOojDGmSf9U5ncAtZt4cc,1853
|
|
157
157
|
mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
158
|
-
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=
|
|
158
|
+
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=coTMbMgoFa0c7SJNzTyuON_XegzOw4rs6a3dAOGQ4Sw,20512
|
|
159
159
|
mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=LI4o4_sovmLj1tMROPRQRCj5gaITKLGoYH-nUCuysbU,7501
|
|
160
160
|
mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py,sha256=A-qohVTrnSd8Bs9gubjxScGjB7zEZOBLJuVZfuIwLeU,2445
|
|
161
161
|
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
@@ -163,7 +163,7 @@ mns_scheduler/zz_task/data_sync_task.py,sha256=GbOJ0DhHVxTAz9W09POLZl3AzYFlTsPP7
|
|
|
163
163
|
mns_scheduler/zz_task/compensation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
164
164
|
mns_scheduler/zz_task/compensation/compensate_task.py,sha256=Dyo66NcSnXZ-Cne4_v77BBb27SemAiuGXRLnvQ26X0E,6464
|
|
165
165
|
mns_scheduler/zz_task/compensation/compensate_task_one_day.py,sha256=jvaYpUS8AyJHgJTNchbco6eXMSzW1o4YNHgUBqrRTDk,5753
|
|
166
|
-
mns_scheduler-1.4.3.
|
|
167
|
-
mns_scheduler-1.4.3.
|
|
168
|
-
mns_scheduler-1.4.3.
|
|
169
|
-
mns_scheduler-1.4.3.
|
|
166
|
+
mns_scheduler-1.4.3.3.dist-info/METADATA,sha256=gcTNHaKsJ_Xl305CqVUkUQg4sWWQdN1-rrXcnNilEAo,64
|
|
167
|
+
mns_scheduler-1.4.3.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
168
|
+
mns_scheduler-1.4.3.3.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
169
|
+
mns_scheduler-1.4.3.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|