mns-scheduler 1.1.1.0__py3-none-any.whl → 1.1.1.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/concept/ths/common/ths_concept_sync_common_api.py +15 -0
- mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +1 -1
- mns_scheduler/db/col_move_service.py +1 -2
- mns_scheduler/k_line/sync/bfq_k_line_sync.py +92 -0
- mns_scheduler/k_line/sync/daily_week_month_line_sync.py +1 -0
- mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +4 -2
- mns_scheduler/trade/auto_ipo_buy_api.py +2 -2
- mns_scheduler/trade/auto_sell_service_api.py +6 -4
- mns_scheduler/trade/sync_position_api.py +2 -2
- mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +1 -9
- mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +1 -1
- mns_scheduler/zt/zt_pool/{zt_pool_sync_api.py → em_zt_pool_sync_api.py} +5 -1
- mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +245 -0
- mns_scheduler/zz_task/data_sync_task.py +6 -3
- {mns_scheduler-1.1.1.0.dist-info → mns_scheduler-1.1.1.3.dist-info}/METADATA +1 -1
- {mns_scheduler-1.1.1.0.dist-info → mns_scheduler-1.1.1.3.dist-info}/RECORD +18 -16
- {mns_scheduler-1.1.1.0.dist-info → mns_scheduler-1.1.1.3.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.1.1.0.dist-info → mns_scheduler-1.1.1.3.dist-info}/top_level.txt +0 -0
|
@@ -89,12 +89,27 @@ def save_ths_concept_detail(new_concept_symbol_df,
|
|
|
89
89
|
"total_mv_sp": 1}
|
|
90
90
|
company_info = mongodb_util.find_query_data_choose_field('company_info',
|
|
91
91
|
query_company_info, query_field)
|
|
92
|
+
if 'industry' in company_info.columns:
|
|
93
|
+
del company_info['industry']
|
|
94
|
+
if 'company_type' in company_info.columns:
|
|
95
|
+
del company_info['company_type']
|
|
96
|
+
if 'flow_mv_sp' in company_info.columns:
|
|
97
|
+
del company_info['flow_mv_sp']
|
|
98
|
+
if 'total_mv_sp' in company_info.columns:
|
|
99
|
+
del company_info['total_mv_sp']
|
|
92
100
|
|
|
93
101
|
company_info = company_info.set_index(['_id'], drop=True)
|
|
94
102
|
new_concept_symbol_df = new_concept_symbol_df.set_index(['symbol'], drop=False)
|
|
95
103
|
|
|
96
104
|
new_concept_symbol_df = pd.merge(new_concept_symbol_df, company_info, how='outer',
|
|
97
105
|
left_index=True, right_index=True)
|
|
106
|
+
|
|
107
|
+
if 'index' not in company_info.columns:
|
|
108
|
+
new_concept_symbol_df['index'] = 0
|
|
109
|
+
|
|
110
|
+
if 'change' not in company_info.columns:
|
|
111
|
+
new_concept_symbol_df['change'] = 0
|
|
112
|
+
|
|
98
113
|
new_concept_symbol_df['concept_name'] = new_concept_symbol_df['concept_name'].replace(" ", "")
|
|
99
114
|
query = {'concept_code': concept_code}
|
|
100
115
|
|
|
@@ -41,7 +41,7 @@ if __name__ == '__main__':
|
|
|
41
41
|
now_date = datetime.datetime.now()
|
|
42
42
|
begin_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
43
43
|
print('同步开始:' + begin_date)
|
|
44
|
-
|
|
44
|
+
update_concept_all_detail_info()
|
|
45
45
|
now_date = datetime.datetime.now()
|
|
46
46
|
end_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
47
47
|
print('同步结束:' + end_date)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import sys
|
|
3
|
+
|
|
4
|
+
file_path = os.path.abspath(__file__)
|
|
5
|
+
end = file_path.index('mns') + 17
|
|
6
|
+
project_path = file_path[0:end]
|
|
7
|
+
sys.path.append(project_path)
|
|
8
|
+
|
|
9
|
+
from loguru import logger
|
|
10
|
+
import mns_common.api.em.east_money_stock_api as east_money_stock_api
|
|
11
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
12
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
13
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
14
|
+
import mns_common.api.akshare.k_line_api as k_line_api
|
|
15
|
+
import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
|
|
16
|
+
|
|
17
|
+
mongodb_util = MongodbUtil('27017')
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def sync_bfq_k_line_data(period='daily',
|
|
21
|
+
hq='hfq',
|
|
22
|
+
hq_col='stock_hfq_daily',
|
|
23
|
+
end_date='22220101',
|
|
24
|
+
symbol=None):
|
|
25
|
+
stock_hfq_df = k_line_api.stock_zh_a_hist(symbol=symbol, period=period,
|
|
26
|
+
start_date=date_handle_util.no_slash_date('1990-12-19'),
|
|
27
|
+
end_date=date_handle_util.no_slash_date(end_date),
|
|
28
|
+
adjust=hq)
|
|
29
|
+
|
|
30
|
+
stock_hfq_df.rename(columns={"日期": "date", "开盘": "open",
|
|
31
|
+
"收盘": "close", "最高": "high",
|
|
32
|
+
"最低": "low", "成交量": "volume",
|
|
33
|
+
"成交额": "amount", "振幅": "pct_chg",
|
|
34
|
+
"涨跌幅": "chg", "涨跌额": "change",
|
|
35
|
+
"换手率": "exchange"}, inplace=True)
|
|
36
|
+
|
|
37
|
+
stock_hfq_df['symbol'] = symbol
|
|
38
|
+
stock_hfq_df['_id'] = stock_hfq_df['symbol'] + '-' + stock_hfq_df['date']
|
|
39
|
+
stock_hfq_df['last_price'] = round(((stock_hfq_df['close']) / (1 + stock_hfq_df['chg'] / 100)), 2)
|
|
40
|
+
stock_hfq_df['max_chg'] = round(
|
|
41
|
+
((stock_hfq_df['high'] - stock_hfq_df['last_price']) / stock_hfq_df['last_price']) * 100, 2)
|
|
42
|
+
stock_hfq_df['amount_level'] = round((stock_hfq_df['amount'] / common_service_fun_api.HUNDRED_MILLION), 2)
|
|
43
|
+
stock_hfq_df['flow_mv'] = round(stock_hfq_df['amount'] * 100 / stock_hfq_df['exchange'], 2)
|
|
44
|
+
stock_hfq_df['flow_mv_sp'] = round(stock_hfq_df['flow_mv'] / common_service_fun_api.HUNDRED_MILLION, 2)
|
|
45
|
+
|
|
46
|
+
classification = common_service_fun_api.classify_symbol_one(symbol)
|
|
47
|
+
stock_hfq_df['classification'] = classification
|
|
48
|
+
stock_hfq_df = stock_hfq_df.sort_values(by=['date'], ascending=False)
|
|
49
|
+
insert_data(stock_hfq_df, hq_col, symbol)
|
|
50
|
+
logger.info(period + 'k线同步-' + hq + '-' + symbol)
|
|
51
|
+
return stock_hfq_df
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def sync_all_bfq_k_line(period='daily',
|
|
55
|
+
hq='hfq',
|
|
56
|
+
hq_col='stock_hfq_daily',
|
|
57
|
+
end_date='22220101',
|
|
58
|
+
symbol=None):
|
|
59
|
+
real_time_quotes_now_es = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
60
|
+
|
|
61
|
+
symbol_list = list(real_time_quotes_now_es['symbol'])
|
|
62
|
+
# 退市公司
|
|
63
|
+
de_list_company = company_common_service_new_api.get_de_list_company()
|
|
64
|
+
symbol_list.extend(de_list_company)
|
|
65
|
+
symbol_list = set(symbol_list)
|
|
66
|
+
if symbol is not None:
|
|
67
|
+
symbol_list = [symbol]
|
|
68
|
+
for symbol in symbol_list:
|
|
69
|
+
try:
|
|
70
|
+
sync_bfq_k_line_data(period,
|
|
71
|
+
hq,
|
|
72
|
+
hq_col,
|
|
73
|
+
end_date,
|
|
74
|
+
symbol)
|
|
75
|
+
except BaseException as e:
|
|
76
|
+
logger.warning("同步不复权k线:{},{}", symbol, e)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def insert_data(stock_hfq_df, hq_col, symbol):
|
|
80
|
+
query = {'symbol': symbol}
|
|
81
|
+
tag = mongodb_util.remove_data(query, hq_col)
|
|
82
|
+
success = tag.acknowledged
|
|
83
|
+
if success:
|
|
84
|
+
mongodb_util.insert_mongo(stock_hfq_df, hq_col)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
if __name__ == '__main__':
|
|
88
|
+
sync_all_bfq_k_line('daily',
|
|
89
|
+
'',
|
|
90
|
+
'stock_bfq_daily',
|
|
91
|
+
None,
|
|
92
|
+
None)
|
|
@@ -106,6 +106,7 @@ def create_db_index(db_name):
|
|
|
106
106
|
|
|
107
107
|
if __name__ == '__main__':
|
|
108
108
|
sync_all_daily_data('daily', 'qfq', 'stock_qfq_daily', None, None)
|
|
109
|
+
sync_all_daily_data('daily', 'qfq', 'stock_qfq_weekly', None, None)
|
|
109
110
|
# sync_all_daily_data('weekly', 'qfq', 'stock_qfq_weekly', None, None)
|
|
110
111
|
# sync_all_daily_data('monthly', 'qfq', 'stock_qfq_monthly', None, None)
|
|
111
112
|
|
|
@@ -7,8 +7,10 @@ project_path = file_path[0:end]
|
|
|
7
7
|
sys.path.append(project_path)
|
|
8
8
|
from loguru import logger
|
|
9
9
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
10
|
+
|
|
10
11
|
mongodb_util = MongodbUtil('27017')
|
|
11
12
|
|
|
13
|
+
|
|
12
14
|
def create_db_index(str_day):
|
|
13
15
|
query_trade_day = {'_id': str_day}
|
|
14
16
|
is_trade_day = mongodb_util.exist_data_query('trade_date_list', query_trade_day)
|
|
@@ -19,8 +21,8 @@ def create_db_index(str_day):
|
|
|
19
21
|
mongodb_util.create_index('realtime_quotes_now_' + str_day, [("symbol", 1), ("number", 1)])
|
|
20
22
|
mongodb_util.create_index('realtime_quotes_now_' + str_day, [("str_now_date", 1)])
|
|
21
23
|
logger.info("创建索引成功:{}", str_day)
|
|
22
|
-
except BaseException:
|
|
23
|
-
logger.warning("创建索引异常:{}", )
|
|
24
|
+
except BaseException as e:
|
|
25
|
+
logger.warning("创建索引异常:{}", e)
|
|
24
26
|
|
|
25
27
|
|
|
26
28
|
if __name__ == '__main__':
|
|
@@ -6,12 +6,12 @@ end = file_path.index('mns') + 17
|
|
|
6
6
|
project_path = file_path[0:end]
|
|
7
7
|
sys.path.append(project_path)
|
|
8
8
|
|
|
9
|
-
import mns_common.component.
|
|
9
|
+
import mns_common.component.deal.deal_service_api as deal_service_api
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
## 自动一键打新
|
|
13
13
|
def auto_ipo_buy():
|
|
14
|
-
|
|
14
|
+
deal_service_api.auto_ipo_buy('easy_trader')
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
if __name__ == '__main__':
|
|
@@ -11,11 +11,13 @@ import mns_common.constant.db_name_constant as db_name_constant
|
|
|
11
11
|
import datetime
|
|
12
12
|
import mns_common.component.cache.cache_service as cache_service
|
|
13
13
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
14
|
-
import mns_common.component.
|
|
14
|
+
import mns_common.component.deal.deal_service_api as deal_service_api
|
|
15
15
|
from loguru import logger
|
|
16
16
|
from mns_common.utils.async_fun import async_fun
|
|
17
|
+
import mns_common.component.price.trade_price_service_api as trade_price_service_api
|
|
17
18
|
|
|
18
19
|
mongodb_util = MongodbUtil('27017')
|
|
20
|
+
from mns_common.constant.price_enum import PriceEnum
|
|
19
21
|
|
|
20
22
|
AUTO_SELL_KEY = "AUTO_SELL_KEY"
|
|
21
23
|
|
|
@@ -51,11 +53,11 @@ def sell_stock_detail(realtime_quotes_now_position, position_stock_df, str_day,
|
|
|
51
53
|
try:
|
|
52
54
|
|
|
53
55
|
symbol = stock_one.symbol
|
|
54
|
-
sell_price =
|
|
56
|
+
sell_price = trade_price_service_api.get_trade_price(symbol, PriceEnum.SEll_PRICE_LIMIT.price_code)
|
|
55
57
|
position_stock_df_one = position_stock_df.loc[position_stock_df['symbol'] == symbol]
|
|
56
58
|
available_position = list(position_stock_df_one['available_position'])[0]
|
|
57
59
|
if sell_signal(stock_one, now_date, position_stock_df_one):
|
|
58
|
-
sell_result =
|
|
60
|
+
sell_result = deal_service_api.trade_sell(symbol, sell_price, available_position)
|
|
59
61
|
if "message" in sell_result:
|
|
60
62
|
result_msg = sell_result['message']
|
|
61
63
|
if result_msg == 'success':
|
|
@@ -110,7 +112,7 @@ def update_position_status(symbol, sell_entrust_no, str_day):
|
|
|
110
112
|
import mns_common.api.em.east_money_stock_api as east_money_stock_api
|
|
111
113
|
|
|
112
114
|
if __name__ == '__main__':
|
|
113
|
-
sell_price_01 =
|
|
115
|
+
sell_price_01 = trade_price_service_api.get_trade_price('002336',PriceEnum.SEll_PRICE_LIMIT.price_code)
|
|
114
116
|
while True:
|
|
115
117
|
real_time_quotes_now = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
116
118
|
auto_sell_stock(real_time_quotes_now)
|
|
@@ -5,7 +5,7 @@ file_path = os.path.abspath(__file__)
|
|
|
5
5
|
end = file_path.index('mns') + 16
|
|
6
6
|
project_path = file_path[0:end]
|
|
7
7
|
sys.path.append(project_path)
|
|
8
|
-
import mns_common.component.
|
|
8
|
+
import mns_common.component.deal.deal_service_api as deal_service_api
|
|
9
9
|
import pandas as pd
|
|
10
10
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
11
11
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
@@ -23,7 +23,7 @@ def sync_position():
|
|
|
23
23
|
query_exist = {'str_day': str_day}
|
|
24
24
|
if mongodb_util.exist_data_query(db_name_constant.POSITION_STOCK, query_exist):
|
|
25
25
|
return None
|
|
26
|
-
position_list =
|
|
26
|
+
position_list = deal_service_api.get_position('easy_trader')
|
|
27
27
|
position_df = pd.DataFrame(position_list)
|
|
28
28
|
position_df = position_df.rename(columns={"明细": "detail",
|
|
29
29
|
"序号": "index",
|
|
@@ -52,14 +52,6 @@ realtime_quotes_now_zt_new_kc_open_field = ['_id',
|
|
|
52
52
|
'max_real_main_inflow_multiple', 'list_date',
|
|
53
53
|
'real_super_main_inflow_multiple', 'real_flow_mv',
|
|
54
54
|
'real_disk_diff_amount_exchange', 'no_open_data']
|
|
55
|
-
# kcx 高涨幅开盘数据同步
|
|
56
|
-
def realtime_quotes_now_zt_new_kc_open_sync():
|
|
57
|
-
realtime_quotes_now_zt_new_kc_open = mongodb_util.find_all_data('realtime_quotes_now_zt_new_kc_open')
|
|
58
|
-
realtime_quotes_now_zt_new_kc_open = realtime_quotes_now_zt_new_kc_open[realtime_quotes_now_zt_new_kc_open_field]
|
|
59
|
-
realtime_quotes_now_zt_new_kc_open = realtime_quotes_now_zt_new_kc_open.sort_values(by=['str_day'], ascending=False)
|
|
60
|
-
|
|
61
|
-
mongodb_util.insert_mongo(realtime_quotes_now_zt_new_kc_open, 'realtime_quotes_now_zt_new_kc_open_copy')
|
|
62
|
-
|
|
63
55
|
|
|
64
56
|
# query = {'$and': [{"_id": {'$lte': str_end}}, {"_id": {'$gte': '2022-04-25'}}]}
|
|
65
57
|
def sync_all_high_chg_data(str_end):
|
|
@@ -92,7 +84,7 @@ def fix_miss_data(str_end):
|
|
|
92
84
|
|
|
93
85
|
|
|
94
86
|
if __name__ == '__main__':
|
|
95
|
-
kcx_high_chg_open_data_sync.sync_all_kc_zt_data('2024-06-
|
|
87
|
+
kcx_high_chg_open_data_sync.sync_all_kc_zt_data('2024-06-19', None)
|
|
96
88
|
# sync_all_kc_zt_data('2023-08-16')
|
|
97
89
|
# sync_all_kc_zt_data('2023-07-07')
|
|
98
90
|
# realtime_quotes_now_zt_new_kc_open_sync()
|
|
@@ -17,6 +17,10 @@ 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
19
|
|
|
20
|
+
'''
|
|
21
|
+
东方财富涨停池
|
|
22
|
+
'''
|
|
23
|
+
|
|
20
24
|
mongodb_util = MongodbUtil('27017')
|
|
21
25
|
|
|
22
26
|
ZT_FIELD = ['_id', 'symbol', 'name', 'now_price', 'chg', 'first_closure_time',
|
|
@@ -128,7 +132,7 @@ def save_zt_info(str_day):
|
|
|
128
132
|
|
|
129
133
|
|
|
130
134
|
if __name__ == '__main__':
|
|
131
|
-
save_zt_info('2024-06-
|
|
135
|
+
save_zt_info('2024-06-21')
|
|
132
136
|
# from datetime import datetime
|
|
133
137
|
#
|
|
134
138
|
# if __name__ == '__main__':
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
file_path = os.path.abspath(__file__)
|
|
5
|
+
end = file_path.index('mns') + 17
|
|
6
|
+
project_path = file_path[0:end]
|
|
7
|
+
sys.path.append(project_path)
|
|
8
|
+
import mns_common.api.ths.zt.ths_stock_zt_pool_api as ths_stock_zt_pool_api
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
11
|
+
import pandas as pd
|
|
12
|
+
import mns_common.api.em.east_money_stock_api as east_money_stock_api
|
|
13
|
+
import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
|
|
14
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
15
|
+
from loguru import logger
|
|
16
|
+
import mns_common.api.akshare.k_line_api as k_line_api
|
|
17
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
18
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
19
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
20
|
+
|
|
21
|
+
mongodb_util = MongodbUtil('27017')
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def ths_zt_pool(str_day, real_time_quotes_all_stocks):
|
|
25
|
+
'''
|
|
26
|
+
获取请求头
|
|
27
|
+
:param str_day: 日期
|
|
28
|
+
:param real_time_quotes_all_stocks: 实时行情
|
|
29
|
+
:return:
|
|
30
|
+
'''
|
|
31
|
+
now_date = datetime.now()
|
|
32
|
+
now_day_str_day = now_date.strftime('%Y-%m-%d')
|
|
33
|
+
ths_zt_pool_df = ths_stock_zt_pool_api.get_zt_reason(str_day)
|
|
34
|
+
if data_frame_util.is_empty(ths_zt_pool_df):
|
|
35
|
+
return pd.DataFrame()
|
|
36
|
+
if str_day == now_day_str_day:
|
|
37
|
+
ths_zt_pool_df = merge_now_day_zt_info(ths_zt_pool_df, real_time_quotes_all_stocks)
|
|
38
|
+
else:
|
|
39
|
+
ths_zt_pool_df = merge_his_day_zt_info(ths_zt_pool_df, str_day)
|
|
40
|
+
|
|
41
|
+
return ths_zt_pool_df
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def merge_now_day_zt_info(ths_zt_pool_df, real_time_quotes_all_stocks):
|
|
45
|
+
if real_time_quotes_all_stocks is None:
|
|
46
|
+
real_time_quotes_all_stocks = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
47
|
+
real_time_quotes_all_stocks = real_time_quotes_all_stocks[['symbol', 'amount',
|
|
48
|
+
'exchange', 'flow_mv', 'total_mv']]
|
|
49
|
+
real_time_quotes_all_stocks_zt = real_time_quotes_all_stocks.loc[
|
|
50
|
+
real_time_quotes_all_stocks['symbol'].isin(ths_zt_pool_df['symbol'])]
|
|
51
|
+
|
|
52
|
+
query_field = {
|
|
53
|
+
"ths_concept_name": 1,
|
|
54
|
+
"ths_concept_code": 1,
|
|
55
|
+
"ths_concept_sync_day": 1,
|
|
56
|
+
"company_type": 1,
|
|
57
|
+
"concept_create_day": 1,
|
|
58
|
+
"first_sw_industry": 1,
|
|
59
|
+
"third_sw_industry": 1,
|
|
60
|
+
"industry": 1,
|
|
61
|
+
"list_date": 1,
|
|
62
|
+
}
|
|
63
|
+
query_field_key = str(query_field)
|
|
64
|
+
query_key = str({'symbol': {"$in": list(ths_zt_pool_df['symbol'])}})
|
|
65
|
+
company_df_zt = company_common_service_new_api.get_company_info_by_field(query_key, query_field_key)
|
|
66
|
+
|
|
67
|
+
company_df_zt = company_df_zt.set_index(['_id'], drop=True)
|
|
68
|
+
real_time_quotes_all_stocks_zt = real_time_quotes_all_stocks_zt.set_index(['symbol'], drop=True)
|
|
69
|
+
ths_zt_pool_df = ths_zt_pool_df.set_index(['symbol'], drop=False)
|
|
70
|
+
|
|
71
|
+
ths_zt_pool_df = pd.merge(ths_zt_pool_df, company_df_zt, how='outer',
|
|
72
|
+
left_index=True, right_index=True)
|
|
73
|
+
|
|
74
|
+
ths_zt_pool_df = pd.merge(ths_zt_pool_df, real_time_quotes_all_stocks_zt, how='outer',
|
|
75
|
+
left_index=True, right_index=True)
|
|
76
|
+
ths_zt_pool_df['amount_level'] = round(ths_zt_pool_df['amount'] / common_service_fun_api.HUNDRED_MILLION, 2)
|
|
77
|
+
ths_zt_pool_df = common_service_fun_api.classify_symbol(ths_zt_pool_df)
|
|
78
|
+
ths_zt_pool_df = common_service_fun_api.total_mv_classification(ths_zt_pool_df)
|
|
79
|
+
ths_zt_pool_df.fillna('', inplace=True)
|
|
80
|
+
if 'zt_flag' in ths_zt_pool_df.columns:
|
|
81
|
+
del ths_zt_pool_df['zt_flag']
|
|
82
|
+
if 'zt_tag' in ths_zt_pool_df.columns:
|
|
83
|
+
del ths_zt_pool_df['zt_tag']
|
|
84
|
+
|
|
85
|
+
return ths_zt_pool_df
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
# 历史数据merge
|
|
89
|
+
def merge_his_day_zt_info(ths_zt_pool_df, str_day):
|
|
90
|
+
'''
|
|
91
|
+
获取请求头
|
|
92
|
+
:param ths_zt_pool_df: 涨停df
|
|
93
|
+
:param str_day: 日期
|
|
94
|
+
:return:
|
|
95
|
+
'''
|
|
96
|
+
|
|
97
|
+
query_field = {
|
|
98
|
+
"ths_concept_name": 1,
|
|
99
|
+
"ths_concept_code": 1,
|
|
100
|
+
"ths_concept_sync_day": 1,
|
|
101
|
+
"company_type": 1,
|
|
102
|
+
"concept_create_day": 1,
|
|
103
|
+
"first_sw_industry": 1,
|
|
104
|
+
"third_sw_industry": 1,
|
|
105
|
+
"industry": 1,
|
|
106
|
+
"list_date": 1,
|
|
107
|
+
}
|
|
108
|
+
query_field_key = str(query_field)
|
|
109
|
+
query_key = str({'symbol': {"$in": list(ths_zt_pool_df['symbol'])}})
|
|
110
|
+
company_df_zt = company_common_service_new_api.get_company_info_by_field(query_key, query_field_key)
|
|
111
|
+
|
|
112
|
+
bfq_k_line_df = get_bfq_daily_line(ths_zt_pool_df, str_day)
|
|
113
|
+
bfq_k_line_df['total_mv'] = bfq_k_line_df['flow_mv']
|
|
114
|
+
|
|
115
|
+
company_df_zt = company_df_zt.set_index(['_id'], drop=True)
|
|
116
|
+
bfq_k_line_df = bfq_k_line_df.set_index(['symbol'], drop=True)
|
|
117
|
+
ths_zt_pool_df = ths_zt_pool_df.set_index(['symbol'], drop=False)
|
|
118
|
+
|
|
119
|
+
if 'chg' in ths_zt_pool_df.columns:
|
|
120
|
+
del ths_zt_pool_df['chg']
|
|
121
|
+
if 'now_price' in ths_zt_pool_df.columns:
|
|
122
|
+
del ths_zt_pool_df['now_price']
|
|
123
|
+
|
|
124
|
+
ths_zt_pool_df = pd.merge(ths_zt_pool_df, company_df_zt, how='outer',
|
|
125
|
+
left_index=True, right_index=True)
|
|
126
|
+
|
|
127
|
+
ths_zt_pool_df = pd.merge(ths_zt_pool_df, bfq_k_line_df, how='outer',
|
|
128
|
+
left_index=True, right_index=True)
|
|
129
|
+
ths_zt_pool_df = common_service_fun_api.classify_symbol(ths_zt_pool_df)
|
|
130
|
+
ths_zt_pool_df = common_service_fun_api.total_mv_classification(ths_zt_pool_df)
|
|
131
|
+
ths_zt_pool_df.fillna('', inplace=True)
|
|
132
|
+
if 'zt_flag' in ths_zt_pool_df.columns:
|
|
133
|
+
del ths_zt_pool_df['zt_flag']
|
|
134
|
+
if 'zt_tag' in ths_zt_pool_df.columns:
|
|
135
|
+
del ths_zt_pool_df['zt_tag']
|
|
136
|
+
|
|
137
|
+
return ths_zt_pool_df
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
# 获取不复权k线信息
|
|
141
|
+
def get_bfq_daily_line(ths_zt_pool_df, str_day):
|
|
142
|
+
query_k_line = {'symbol': {"$in": list(ths_zt_pool_df['symbol'])}, 'date': date_handle_util.no_slash_date(str_day)}
|
|
143
|
+
bfq_daily_line_df = mongodb_util.find_query_data('stock_bfq_daily', query_k_line)
|
|
144
|
+
if data_frame_util.is_not_empty(bfq_daily_line_df):
|
|
145
|
+
bfq_daily_line_df = bfq_daily_line_df[['amount', 'chg', 'close', 'exchange',
|
|
146
|
+
'symbol', 'amount_level',
|
|
147
|
+
'flow_mv', 'flow_mv_sp'
|
|
148
|
+
]]
|
|
149
|
+
bfq_daily_line_df = bfq_daily_line_df.rename(columns={"close": 'now_price'})
|
|
150
|
+
return bfq_daily_line_df
|
|
151
|
+
|
|
152
|
+
bfq_k_line_df = pd.DataFrame()
|
|
153
|
+
for zt_one in ths_zt_pool_df.itertuples():
|
|
154
|
+
try:
|
|
155
|
+
symbol = zt_one.symbol
|
|
156
|
+
bfq_daily_line_df = k_line_api.stock_zh_a_hist(symbol,
|
|
157
|
+
'daily',
|
|
158
|
+
date_handle_util.no_slash_date(str_day),
|
|
159
|
+
date_handle_util.no_slash_date(str_day),
|
|
160
|
+
'')
|
|
161
|
+
if data_frame_util.is_empty(bfq_daily_line_df):
|
|
162
|
+
continue
|
|
163
|
+
bfq_daily_line_df = bfq_daily_line_df[['amount', 'chg', 'close', 'exchange',
|
|
164
|
+
'symbol', 'amount_level',
|
|
165
|
+
'flow_mv', 'flow_mv_sp'
|
|
166
|
+
]]
|
|
167
|
+
bfq_daily_line_df = bfq_daily_line_df.rename(columns={"close": 'now_price'})
|
|
168
|
+
bfq_k_line_df = pd.concat([bfq_k_line_df, bfq_daily_line_df])
|
|
169
|
+
except BaseException as e:
|
|
170
|
+
logger.warning("同步不复权k线异常:{},{}", symbol, e)
|
|
171
|
+
|
|
172
|
+
return bfq_k_line_df
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def save_ths_zt_pool(ths_zt_pool_df, str_day):
|
|
176
|
+
ths_zt_pool_df = ths_zt_pool_df[[
|
|
177
|
+
"symbol",
|
|
178
|
+
"name",
|
|
179
|
+
"chg",
|
|
180
|
+
"connected_boards_numbers",
|
|
181
|
+
"statistics",
|
|
182
|
+
"statistics_detail",
|
|
183
|
+
"first_closure_time",
|
|
184
|
+
"last_closure_time",
|
|
185
|
+
"zt_detail",
|
|
186
|
+
"zt_reason",
|
|
187
|
+
"closure_volume",
|
|
188
|
+
"closure_funds",
|
|
189
|
+
"closure_funds_per_amount",
|
|
190
|
+
"closure_funds_per_flow_mv",
|
|
191
|
+
"frying_plates_numbers",
|
|
192
|
+
"zt_type",
|
|
193
|
+
"market_code",
|
|
194
|
+
"str_day",
|
|
195
|
+
"industry",
|
|
196
|
+
"first_sw_industry",
|
|
197
|
+
"third_sw_industry",
|
|
198
|
+
"ths_concept_name",
|
|
199
|
+
"ths_concept_code",
|
|
200
|
+
"ths_concept_sync_day",
|
|
201
|
+
"list_date",
|
|
202
|
+
"company_type",
|
|
203
|
+
"amount",
|
|
204
|
+
"now_price",
|
|
205
|
+
"exchange",
|
|
206
|
+
"amount_level",
|
|
207
|
+
"flow_mv",
|
|
208
|
+
"flow_mv_sp",
|
|
209
|
+
"total_mv",
|
|
210
|
+
"classification",
|
|
211
|
+
"total_mv_sp",
|
|
212
|
+
"flow_mv_level"
|
|
213
|
+
]]
|
|
214
|
+
ths_zt_pool_df['_id'] = ths_zt_pool_df['symbol'] + '_' + ths_zt_pool_df['str_day']
|
|
215
|
+
ths_zt_pool_df = ths_zt_pool_df.sort_values(by=['connected_boards_numbers'], ascending=False)
|
|
216
|
+
|
|
217
|
+
# 将日期数值转换为日期时间格式
|
|
218
|
+
ths_zt_pool_df['list_date_01'] = pd.to_datetime(ths_zt_pool_df['list_date'], format='%Y%m%d')
|
|
219
|
+
str_day_date = date_handle_util.str_to_date(str_day, '%Y-%m-%d')
|
|
220
|
+
# 计算日期差值 距离现在上市时间
|
|
221
|
+
ths_zt_pool_df['diff_days'] = ths_zt_pool_df.apply(
|
|
222
|
+
lambda row: (str_day_date - row['list_date_01']).days, axis=1)
|
|
223
|
+
del ths_zt_pool_df['list_date_01']
|
|
224
|
+
|
|
225
|
+
mongodb_util.save_mongo(ths_zt_pool_df, db_name_constant.THS_ZT_POOL)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
if __name__ == '__main__':
|
|
229
|
+
trade_date = '2024-06-21'
|
|
230
|
+
zt_df = ths_zt_pool(trade_date, None)
|
|
231
|
+
save_ths_zt_pool(zt_df, trade_date)
|
|
232
|
+
# while True:
|
|
233
|
+
# query = {"$and": [{'_id': {"$gte": '2013-07-04'}}, {'_id': {"$lte": '2019-07-04'}}]}
|
|
234
|
+
#
|
|
235
|
+
# trade_date_list = mongodb_util.find_query_data('trade_date_list', query)
|
|
236
|
+
# trade_date_list = trade_date_list.sort_values(by=['trade_date'], ascending=False)
|
|
237
|
+
# for trade_one in trade_date_list.itertuples():
|
|
238
|
+
# try:
|
|
239
|
+
# trade_date = trade_one.trade_date
|
|
240
|
+
# zt_df = ths_zt_pool(trade_date, None)
|
|
241
|
+
# # zt_df = mongodb_util.find_query_data(db_name_constant.THS_ZT_POOL, query={"str_day": trade_date})
|
|
242
|
+
# save_ths_zt_pool(zt_df, trade_date)
|
|
243
|
+
# logger.info("同步到日期:{}", trade_date)
|
|
244
|
+
# except BaseException as e:
|
|
245
|
+
# logger.warning("同步涨停到日期:{},{}", trade_one.trade_date, e)
|
|
@@ -23,7 +23,7 @@ import mns_scheduler.big_deal.ths_big_deal_sync as ths_big_deal_sync_api
|
|
|
23
23
|
import mns_scheduler.zt.open_data.kcx_high_chg_open_data_sync as kcx_high_chg_open_data_sync
|
|
24
24
|
import mns_scheduler.zt.export.export_kcx_high_chg_open_data_to_excel as export_kcx_high_chg_open_data_to_excel
|
|
25
25
|
import mns_scheduler.zt.connected_boards.zt_five_boards_sync_api as zt_five_boards_sync_api
|
|
26
|
-
import mns_scheduler.zt.zt_pool.
|
|
26
|
+
import mns_scheduler.zt.zt_pool.em_zt_pool_sync_api as em_zt_pool_sync_api
|
|
27
27
|
import mns_scheduler.k_line.clean.k_line_info_clean_task as k_line_info_clean_service
|
|
28
28
|
import mns_scheduler.concept.clean.ths_concept_clean_api as ths_concept_choose_api
|
|
29
29
|
import mns_common.api.em.east_money_stock_gdfx_free_top_10_api as east_money_stock_gdfx_free_top_10_api
|
|
@@ -47,6 +47,7 @@ import mns_scheduler.risk.self.wei_pan_stock_api as wei_pan_stock_api
|
|
|
47
47
|
import mns_scheduler.risk.transactions.transactions_check_api as transactions_check_api
|
|
48
48
|
import mns_scheduler.concept.ths.sync_new_index.sync_ths_concept_new_index_api as sync_ths_concept_new_index_api
|
|
49
49
|
import mns_scheduler.company_info.clean.company_info_clean_api as company_info_clean_api
|
|
50
|
+
import mns_scheduler.zt.zt_pool.ths_zt_pool_sync_api as ths_zt_pool_sync_api
|
|
50
51
|
|
|
51
52
|
|
|
52
53
|
# 同步交易日期任务完成
|
|
@@ -148,8 +149,10 @@ def sync_stock_zt_pool():
|
|
|
148
149
|
str_day = now_date.strftime('%Y-%m-%d')
|
|
149
150
|
if trade_date_common_service_api.is_trade_day(str_day):
|
|
150
151
|
logger.info('同步当天涨停池股开始')
|
|
151
|
-
|
|
152
|
-
zt_five_boards_sync_api.update_five_connected_boards_task(
|
|
152
|
+
em_stock_zt_pool = em_zt_pool_sync_api.save_zt_info(str_day)
|
|
153
|
+
zt_five_boards_sync_api.update_five_connected_boards_task(em_stock_zt_pool)
|
|
154
|
+
logger.info('同步ths股票涨停池')
|
|
155
|
+
ths_zt_pool_sync_api.ths_zt_pool(str_day, None)
|
|
153
156
|
logger.info('同步当天涨停池股票完成')
|
|
154
157
|
|
|
155
158
|
|
|
@@ -27,15 +27,15 @@ mns_scheduler/concept/common/detaill/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
|
|
|
27
27
|
mns_scheduler/concept/common/detaill/ths_concept_detail_api.py,sha256=tRuSkET-lw1M7rHDImrIM_1X-uMhxq_zF_d3FX1DoUc,9378
|
|
28
28
|
mns_scheduler/concept/ths/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
29
29
|
mns_scheduler/concept/ths/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
30
|
-
mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=
|
|
30
|
+
mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py,sha256=C1FYg93i5ImhYHyPzphCL1epOVYpAuPCSbejHJ2GQDU,7413
|
|
31
31
|
mns_scheduler/concept/ths/common/ths_concept_update_common_api.py,sha256=4BQT3A9t-nDIyCpILgRZF7ZOgK1oabp-gJl5nyWvKWc,4418
|
|
32
32
|
mns_scheduler/concept/ths/sync_new_index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
33
33
|
mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py,sha256=9ol2cvxSO2Ot4Z5fmlo9tUPFe6WwsuVX_H9ogtv3QrI,7841
|
|
34
34
|
mns_scheduler/concept/ths/update_concept_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
35
|
-
mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=
|
|
35
|
+
mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py,sha256=wlsr70rcS-uAH6b8NXPbA-wG37saeIQ0FIg8vSSTXQA,1920
|
|
36
36
|
mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py,sha256=HVqDSBruORebtiliKps2swJo_GNg_8mqT0r9cZX6sj8,8839
|
|
37
37
|
mns_scheduler/db/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
38
|
-
mns_scheduler/db/col_move_service.py,sha256=
|
|
38
|
+
mns_scheduler/db/col_move_service.py,sha256=VSGJROyErfytjGzSlhyTdH6z3ayHG5nFfJk8qjdpJhE,4057
|
|
39
39
|
mns_scheduler/db/db_status.py,sha256=K1jtYIGZzDV6knpoJLLnXEhN3tyziJp_zY2gSfguHCA,747
|
|
40
40
|
mns_scheduler/dt/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
41
41
|
mns_scheduler/dt/stock_dt_pool_sync.py,sha256=5ivRUOnFtOapZniwTbujf1lVq3y4btm2Cmd5R6JJAVo,3466
|
|
@@ -64,7 +64,8 @@ mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py,sha25
|
|
|
64
64
|
mns_scheduler/k_line/hot_stocks/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
65
65
|
mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py,sha256=whm-pYhAd_7OKurIw2cteBwWse5vVXS88lcrTbbcSaE,2628
|
|
66
66
|
mns_scheduler/k_line/sync/__init__.py,sha256=ffZXFCLFdIwOsbxnw__u1MbQYh9yz7Bs8UMP6VF0X2M,161
|
|
67
|
-
mns_scheduler/k_line/sync/
|
|
67
|
+
mns_scheduler/k_line/sync/bfq_k_line_sync.py,sha256=i2NNdp4uVa-kiqQvOaY6odd8-DmQtlejeMXeVklKOIs,4067
|
|
68
|
+
mns_scheduler/k_line/sync/daily_week_month_line_sync.py,sha256=_UKJuV7fb3XND0BBR2wIcnOMJJrXlIwBbIXn9GErB8Y,5777
|
|
68
69
|
mns_scheduler/k_line/test/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
69
70
|
mns_scheduler/k_line/test/k_line_info_clean_his_data.py,sha256=V-J4kWl6Mq8Tri3G_ySoFhPBLx3YDC8QIaWaHZ1SdC8,1151
|
|
70
71
|
mns_scheduler/kpl/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
@@ -81,7 +82,7 @@ mns_scheduler/lhb/stock_lhb_sync_service.py,sha256=NIW0jX23N1dCEdsrKwt7MyzXSfhU7
|
|
|
81
82
|
mns_scheduler/open/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
82
83
|
mns_scheduler/open/sync_one_day_open_data_to_db_service.py,sha256=4JAVQPcg8su86Bt18r7qTAToIwFeyUi8YodtqCtGbwo,3203
|
|
83
84
|
mns_scheduler/real_time/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
84
|
-
mns_scheduler/real_time/realtime_quotes_now_create_db_index.py,sha256=
|
|
85
|
+
mns_scheduler/real_time/realtime_quotes_now_create_db_index.py,sha256=ytGtRVGc6Alf9F2m4EUvjcSq8LlGYg8acVQdJO_lMoI,1076
|
|
85
86
|
mns_scheduler/real_time/realtime_quotes_now_sync.py,sha256=tXZUU9SLwM80YQv473i-uVw1w_lClTMFaO-uo4jERTI,9669
|
|
86
87
|
mns_scheduler/risk/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
87
88
|
mns_scheduler/risk/financial_report_risk_check_api.py,sha256=BPkMZ7aINfOFPswIV115kFUhyt0j7dLyA755QEDl-So,1648
|
|
@@ -101,9 +102,9 @@ mns_scheduler/risk/test/fix_blask_list.py,sha256=jjLhhIWH1L4CgNp2jQ_HAHbC3wVgeX1
|
|
|
101
102
|
mns_scheduler/risk/transactions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
102
103
|
mns_scheduler/risk/transactions/transactions_check_api.py,sha256=_VOiUyIPyTGbcrbuxzJnp1KiLdKBJsRS584f-jqHXA0,6682
|
|
103
104
|
mns_scheduler/trade/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
104
|
-
mns_scheduler/trade/auto_ipo_buy_api.py,sha256=
|
|
105
|
-
mns_scheduler/trade/auto_sell_service_api.py,sha256=
|
|
106
|
-
mns_scheduler/trade/sync_position_api.py,sha256=
|
|
105
|
+
mns_scheduler/trade/auto_ipo_buy_api.py,sha256=jVe5ZiXwzkDy_j_4X4rUamSzJpmzhV16lNKwbeWgpQw,386
|
|
106
|
+
mns_scheduler/trade/auto_sell_service_api.py,sha256=b-4xmW6W6cd6dMuLPD7ZJu3tUtchMcUG-p7wOMm_RRY,4640
|
|
107
|
+
mns_scheduler/trade/sync_position_api.py,sha256=deeOySGWsUbTiM2S0bb5wCSjtC59gdmwwjVZsCf3Wn4,2748
|
|
107
108
|
mns_scheduler/zb/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
108
109
|
mns_scheduler/zb/stock_zb_pool_sync.py,sha256=ky3CNDzpjB6C_frCf4YGNXdidnUo-uUUKsJpY62P4Bk,1936
|
|
109
110
|
mns_scheduler/zt/__init__.py,sha256=Rzolrn2R5RZIj-eOmu9KcL6oZBY9Wjz_uBFXPlzirQc,1641
|
|
@@ -117,14 +118,15 @@ mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py,sha256=HtQGi
|
|
|
117
118
|
mns_scheduler/zt/open_data/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
118
119
|
mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py,sha256=Em_UyMG-sEobSi6fe83KiMQHfCV9ak817fhOmb9oXNU,12175
|
|
119
120
|
mns_scheduler/zt/script/__init__.py,sha256=wEg73KlZo-dU0yKGwpA1C2y6LZm4IBb94tNda1tqLeg,163
|
|
120
|
-
mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py,sha256=
|
|
121
|
-
mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=
|
|
121
|
+
mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py,sha256=IG_eVSfKnnAukH3DIZjLrTvTxX5AJAnikbiOS5TTkS8,5573
|
|
122
|
+
mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=yK38xJtG8jvtzaFflLLtMWxQd1HN9y0DR9edl6DC0XE,1685
|
|
122
123
|
mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
123
|
-
mns_scheduler/zt/zt_pool/
|
|
124
|
+
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=YV0-9m6Rpy_KNDch6Esj83F4kt1fTqF-Y0wMZBPSEGg,7642
|
|
125
|
+
mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=Xx_R_WujCtV_p4k1eKaYPshQVpErtegub2OyIOBxzUw,10338
|
|
124
126
|
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
125
|
-
mns_scheduler/zz_task/data_sync_task.py,sha256=
|
|
127
|
+
mns_scheduler/zz_task/data_sync_task.py,sha256=1wFYn_REhNof8NJadIPOCCYiKYfIoDLw4BKEqiQ5eB4,17619
|
|
126
128
|
mns_scheduler/zz_task/sync_realtime_quotes_task.py,sha256=AMTdeyZ-eGaVpZjggKTPr818FFYkRihY3nAvH5Je2A0,941
|
|
127
|
-
mns_scheduler-1.1.1.
|
|
128
|
-
mns_scheduler-1.1.1.
|
|
129
|
-
mns_scheduler-1.1.1.
|
|
130
|
-
mns_scheduler-1.1.1.
|
|
129
|
+
mns_scheduler-1.1.1.3.dist-info/METADATA,sha256=z4G0FF-kAWxEcUMPd0S8R0Pwxac51HU6uSqVWEAVHD4,64
|
|
130
|
+
mns_scheduler-1.1.1.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
131
|
+
mns_scheduler-1.1.1.3.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
132
|
+
mns_scheduler-1.1.1.3.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|