mns-scheduler 1.3.1.6__py3-none-any.whl → 1.3.1.8__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/company_info/em_stock_info/sync_em_stock_info_sync.py +5 -4
- mns_scheduler/trade/auto_login/trader_auto_service.py +1 -1
- mns_scheduler/trade/sync_position_api.py +2 -2
- mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +9 -7
- mns_scheduler/zz_task/data_sync_task.py +2 -43
- {mns_scheduler-1.3.1.6.dist-info → mns_scheduler-1.3.1.8.dist-info}/METADATA +1 -1
- {mns_scheduler-1.3.1.6.dist-info → mns_scheduler-1.3.1.8.dist-info}/RECORD +9 -55
- mns_scheduler/baidu/__init__.py +0 -7
- mns_scheduler/baidu/baidu_yun_pan_handle_service.py +0 -122
- mns_scheduler/extraIncome/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/common/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/common/db_create_index.py +0 -9
- mns_scheduler/extraIncome/a_stock/one_minute/common/symbol_handle_util.py +0 -41
- mns_scheduler/extraIncome/a_stock/one_minute/etf/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/etf/etf_one_minute_sync_task.py +0 -87
- mns_scheduler/extraIncome/a_stock/one_minute/index/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/index/main_index_sync_task.py +0 -74
- mns_scheduler/extraIncome/a_stock/one_minute/kzz/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/kzz/kzz_one_minute_sync_task.py +0 -87
- mns_scheduler/extraIncome/a_stock/one_minute/one_minute_sync_task.py +0 -34
- mns_scheduler/extraIncome/a_stock/one_minute/stock/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/stock/stock_one_minute_sync_task.py +0 -89
- mns_scheduler/extraIncome/a_stock/one_minute/upload/__init__.py +0 -7
- mns_scheduler/extraIncome/a_stock/one_minute/upload/etf_upload_to_baidu_task.py +0 -95
- mns_scheduler/extraIncome/a_stock/one_minute/upload/index_upload_to_baidu_task.py +0 -87
- mns_scheduler/extraIncome/a_stock/one_minute/upload/kzz_upload_to_baidu_task.py +0 -95
- mns_scheduler/extraIncome/a_stock/one_minute/upload/stock_upload_to_baidu_task.py +0 -85
- mns_scheduler/extraIncome/hk/__init__.py +0 -7
- mns_scheduler/extraIncome/hk/hk_stock_qfq_daily_k_line.py +0 -102
- mns_scheduler/extraIncome/us/__init__.py +0 -7
- mns_scheduler/extraIncome/us/daily/__init__.py +0 -7
- mns_scheduler/extraIncome/us/daily/us_stock_qfq_daily_k_line.py +0 -103
- mns_scheduler/extraIncome/us/one_minute/__init__.py +0 -7
- mns_scheduler/extraIncome/us/one_minute/api/__init__.py +0 -0
- mns_scheduler/extraIncome/us/one_minute/api/alpha_vantage_api.py +0 -34
- mns_scheduler/extraIncome/us/one_minute/api/em_us_one_minute_api.py +0 -139
- mns_scheduler/extraIncome/us/one_minute/api/stock_etf_info_api.py +0 -68
- mns_scheduler/extraIncome/us/one_minute/api/y_finance_api.py +0 -63
- mns_scheduler/extraIncome/us/one_minute/etf/__init__.py +0 -7
- mns_scheduler/extraIncome/us/one_minute/stock/__init__.py +0 -7
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/__init__.py +0 -7
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/__init__.py +0 -11
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/down_load_ETF_his_2024.py +0 -152
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/handle_down_load_fail_ETF.py +0 -67
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/__init__.py +0 -7
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_01.py +0 -203
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_02.py +0 -202
- mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_2025.py +0 -144
- mns_scheduler/extraIncome/us/one_minute/stock/now/__init__.py +0 -7
- mns_scheduler/extraIncome/us/one_minute/stock/now/us_etf_one_minute_sync.py +0 -52
- mns_scheduler/extraIncome/us/one_minute/stock/now/us_stock_one_minute_sync.py +0 -141
- {mns_scheduler-1.3.1.6.dist-info → mns_scheduler-1.3.1.8.dist-info}/WHEEL +0 -0
- {mns_scheduler-1.3.1.6.dist-info → mns_scheduler-1.3.1.8.dist-info}/top_level.txt +0 -0
|
@@ -68,7 +68,8 @@ def sync_all_em_stock_info():
|
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
if __name__ == '__main__':
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
em_us_stock_info
|
|
74
|
-
|
|
71
|
+
sync_all_em_stock_info()
|
|
72
|
+
# em_cookie = cookie_info_service.get_em_cookie()
|
|
73
|
+
# em_us_stock_info = east_money_stock_us_api.get_us_stock_real_time_quotes(em_cookie, None)
|
|
74
|
+
# em_us_stock_info['_id'] = em_us_stock_info['symbol']
|
|
75
|
+
# mongodb_util.save_mongo(em_us_stock_info, db_name_constant.EM_US_STOCK_INFO)
|
|
@@ -21,8 +21,8 @@ def sync_position():
|
|
|
21
21
|
now_date = datetime.datetime.now()
|
|
22
22
|
str_day = now_date.strftime('%Y-%m-%d')
|
|
23
23
|
query_exist = {'str_day': str_day}
|
|
24
|
-
if mongodb_util.exist_data_query(db_name_constant.POSITION_STOCK, query_exist):
|
|
25
|
-
|
|
24
|
+
# if mongodb_util.exist_data_query(db_name_constant.POSITION_STOCK, query_exist):
|
|
25
|
+
# return None
|
|
26
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",
|
|
@@ -64,7 +64,8 @@ def save_zt_info(str_day):
|
|
|
64
64
|
stock_em_zt_pool_df_data = common_service_fun_api.symbol_amount_simple(stock_em_zt_pool_df_data.copy())
|
|
65
65
|
|
|
66
66
|
stock_em_zt_pool_df_data = company_common_service_api.amendment_industry(stock_em_zt_pool_df_data.copy())
|
|
67
|
-
|
|
67
|
+
# 主线标记 复盘用
|
|
68
|
+
stock_em_zt_pool_df_data['main_line'] = '无'
|
|
68
69
|
# 上个交易交易日涨停股票
|
|
69
70
|
last_trade_day_zt_df = zt_common_service_api.get_last_trade_day_zt(str_day)
|
|
70
71
|
|
|
@@ -129,8 +130,6 @@ def save_zt_info(str_day):
|
|
|
129
130
|
|
|
130
131
|
stock_em_zt_pool_df_data['str_day'] = str_day
|
|
131
132
|
stock_em_zt_pool_df_data['_id'] = stock_em_zt_pool_df_data['symbol'] + "_" + str_day
|
|
132
|
-
# 主线标记 复盘用
|
|
133
|
-
stock_em_zt_pool_df_data['main_line'] = '无'
|
|
134
133
|
|
|
135
134
|
stock_em_zt_pool_df_data = stock_em_zt_pool_df_data[ZT_FIELD]
|
|
136
135
|
|
|
@@ -152,16 +151,19 @@ def save_zt_info(str_day):
|
|
|
152
151
|
|
|
153
152
|
# 设置连板数目
|
|
154
153
|
def set_connected_boards_numbers(stock_em_zt_pool_df_data, symbol, last_trade_day_zt_df):
|
|
155
|
-
|
|
154
|
+
connected_boards_df_copy = last_trade_day_zt_df.loc[
|
|
156
155
|
last_trade_day_zt_df['symbol'].isin(stock_em_zt_pool_df_data['symbol'])]
|
|
157
|
-
|
|
156
|
+
connected_boards_df = connected_boards_df_copy.copy()
|
|
158
157
|
connected_boards_df['connected_boards_numbers'] = connected_boards_df['connected_boards_numbers'] + 1
|
|
159
158
|
|
|
160
159
|
connected_boards_df_one = connected_boards_df.loc[connected_boards_df['symbol'] == symbol]
|
|
161
160
|
if data_frame_util.is_not_empty(connected_boards_df_one):
|
|
162
|
-
|
|
161
|
+
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == symbol, 'connected_boards_numbers'] = \
|
|
163
162
|
list(connected_boards_df_one['connected_boards_numbers'])[0]
|
|
164
163
|
|
|
164
|
+
stock_em_zt_pool_df_data.loc[stock_em_zt_pool_df_data['symbol'] == symbol, 'main_line'] = \
|
|
165
|
+
list(connected_boards_df_one['main_line'])[0]
|
|
166
|
+
|
|
165
167
|
return stock_em_zt_pool_df_data
|
|
166
168
|
|
|
167
169
|
|
|
@@ -220,7 +222,7 @@ def sync_miss_zt_data(stock_em_zt_pool_df_data, str_day):
|
|
|
220
222
|
|
|
221
223
|
|
|
222
224
|
if __name__ == '__main__':
|
|
223
|
-
save_zt_info('2025-05-
|
|
225
|
+
save_zt_info('2025-05-14')
|
|
224
226
|
# from datetime import datetime
|
|
225
227
|
#
|
|
226
228
|
# if __name__ == '__main__':
|
|
@@ -62,13 +62,6 @@ import mns_scheduler.trade.tfp.stock_tfp_info_sync as stock_tfp_info_sync
|
|
|
62
62
|
import mns_scheduler.industry.ths.ths_industry_sync_service as ths_industry_sync_service
|
|
63
63
|
import mns_scheduler.k_line.year_quarter.year_quarter_line_sync as year_quarter_line_sync
|
|
64
64
|
import mns_common.component.task.real_time_data_sync_check as real_time_data_sync_check
|
|
65
|
-
import mns_scheduler.extraIncome.a_stock.one_minute.one_minute_sync_task as one_minute_sync_task
|
|
66
|
-
import mns_scheduler.extraIncome.hk.hk_stock_qfq_daily_k_line as hk_stock_qfq_daily_k_line
|
|
67
|
-
import mns_scheduler.extraIncome.us.daily.us_stock_qfq_daily_k_line as us_stock_qfq_daily_k_line
|
|
68
|
-
import mns_scheduler.extraIncome.a_stock.one_minute.upload.stock_upload_to_baidu_task as stock_upload_to_baidu_task
|
|
69
|
-
import mns_scheduler.extraIncome.a_stock.one_minute.upload.etf_upload_to_baidu_task as etf_upload_to_baidu_task
|
|
70
|
-
import mns_scheduler.extraIncome.a_stock.one_minute.upload.kzz_upload_to_baidu_task as kzz_upload_to_baidu_task
|
|
71
|
-
import mns_scheduler.extraIncome.a_stock.one_minute.upload.index_upload_to_baidu_task as index_upload_to_baidu_task
|
|
72
65
|
|
|
73
66
|
|
|
74
67
|
# 同步交易日期任务完成
|
|
@@ -432,12 +425,6 @@ def sync_ths_industry_info():
|
|
|
432
425
|
logger.info("同步同花顺行业信息完成")
|
|
433
426
|
|
|
434
427
|
|
|
435
|
-
# 同步1分钟交易数据
|
|
436
|
-
def sync_one_minute_data():
|
|
437
|
-
logger.info("同步1分钟交易数据")
|
|
438
|
-
one_minute_sync_task.sync_one_minute_data()
|
|
439
|
-
|
|
440
|
-
|
|
441
428
|
# 同步年线数据
|
|
442
429
|
def sync_year_k_line():
|
|
443
430
|
logger.info("同步年线数据")
|
|
@@ -449,37 +436,12 @@ def sync_all_em_stock_info():
|
|
|
449
436
|
sync_em_stock_info_sync.sync_all_em_stock_info()
|
|
450
437
|
|
|
451
438
|
|
|
452
|
-
# 同步外快收入数据
|
|
453
|
-
def sync_extra_income_data():
|
|
454
|
-
# 上传A股一分钟数据到百度网盘
|
|
455
|
-
stock_upload_to_baidu_task.upload_stock_to_baidu()
|
|
456
|
-
# 上传ETF一分钟数据到百度网盘
|
|
457
|
-
etf_upload_to_baidu_task.upload_etf_to_baidu()
|
|
458
|
-
# 上传可转债一分钟数据到百度网盘
|
|
459
|
-
kzz_upload_to_baidu_task.upload_kzz_to_baidu()
|
|
460
|
-
# 上传主要指数一分钟数据到百度网盘
|
|
461
|
-
index_upload_to_baidu_task.upload_index_to_baidu()
|
|
462
|
-
|
|
463
|
-
# hk前复权k线数据
|
|
464
|
-
hk_stock_qfq_daily_k_line.hk_stock_daily_qfq_sync()
|
|
465
|
-
# us前复权k线数据
|
|
466
|
-
us_stock_qfq_daily_k_line.us_stock_daily_qfq_sync()
|
|
467
|
-
|
|
468
|
-
|
|
469
439
|
# # 定义BlockingScheduler
|
|
470
440
|
blockingScheduler = BlockingScheduler()
|
|
471
441
|
|
|
472
442
|
# 同步东方财富a,etf,kzz,us,hk信息
|
|
473
443
|
blockingScheduler.add_job(sync_all_em_stock_info, 'cron', hour='07', minute='31')
|
|
474
444
|
blockingScheduler.add_job(sync_all_em_stock_info, 'cron', hour='15', minute='20')
|
|
475
|
-
# 同步外快收入数据
|
|
476
|
-
blockingScheduler.add_job(
|
|
477
|
-
sync_extra_income_data,
|
|
478
|
-
'cron',
|
|
479
|
-
day_of_week='sat,sun', # 周六和周日
|
|
480
|
-
hour='07,18', # 16点和21点
|
|
481
|
-
minute='37' # 37分
|
|
482
|
-
)
|
|
483
445
|
|
|
484
446
|
# 开盘前同步当天交易需要的k线数据
|
|
485
447
|
blockingScheduler.add_job(sync_today_trade_k_line_info, 'cron', hour='07', minute='50')
|
|
@@ -541,12 +503,12 @@ blockingScheduler.add_job(update_one_symbol_all_concepts, 'cron', hour='12', min
|
|
|
541
503
|
blockingScheduler.add_job(col_data_move, 'cron', hour='15', minute='06')
|
|
542
504
|
|
|
543
505
|
# 更新当天涨停股票池
|
|
544
|
-
blockingScheduler.add_job(sync_stock_zt_pool, 'cron', hour='15,19', minute='
|
|
506
|
+
blockingScheduler.add_job(sync_stock_zt_pool, 'cron', hour='15,19', minute='10')
|
|
545
507
|
|
|
546
508
|
# todo 需要前后顺序执行
|
|
547
509
|
# todo 当日k线信息
|
|
548
510
|
# 同步一天k线 涨停 数据
|
|
549
|
-
blockingScheduler.add_job(sync_daily_data_info, 'cron', hour='
|
|
511
|
+
blockingScheduler.add_job(sync_daily_data_info, 'cron', hour='16,20', minute='11')
|
|
550
512
|
|
|
551
513
|
# (前复权--月k线)
|
|
552
514
|
blockingScheduler.add_job(stock_sync_qfq_monthly, 'cron', hour='15,18', minute='35')
|
|
@@ -569,9 +531,6 @@ blockingScheduler.add_job(sync_financial_report_task, 'cron', hour='17', minute=
|
|
|
569
531
|
# 同步同花顺行业信息
|
|
570
532
|
blockingScheduler.add_job(sync_ths_industry_info, 'cron', hour='17,22', minute='38')
|
|
571
533
|
|
|
572
|
-
# 同步一分钟交易数据
|
|
573
|
-
blockingScheduler.add_job(sync_one_minute_data, 'cron', hour='17,22', minute='55')
|
|
574
|
-
|
|
575
534
|
# 更新开盘啦指数历史指数
|
|
576
535
|
blockingScheduler.add_job(sync_kpl_best_his_quotes, 'cron', hour='18,22', minute='25')
|
|
577
536
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
mns_scheduler/__init__.py,sha256=_nhtk1b00OsMAiqRATNrb3HD44RmgjSG5jqS-QLNMrQ,130
|
|
2
|
-
mns_scheduler/baidu/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
3
|
-
mns_scheduler/baidu/baidu_yun_pan_handle_service.py,sha256=aUW85TV4taC4VHELskMLIRXYiDJHiy1wBJKTNz3mxuk,3320
|
|
4
2
|
mns_scheduler/big_deal/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
5
3
|
mns_scheduler/big_deal/ths_big_deal_sync.py,sha256=c3VmLEbEBB3uoQTFZ2HyOtijAiyVRP6wVgNgBS9EuVk,4744
|
|
6
4
|
mns_scheduler/company_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
@@ -16,7 +14,7 @@ mns_scheduler/company_info/constant/company_constant_data.py,sha256=0qhRXLASsQlY
|
|
|
16
14
|
mns_scheduler/company_info/de_list_stock/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
17
15
|
mns_scheduler/company_info/de_list_stock/de_list_stock_service.py,sha256=QNtKc1ZI6xHjupcxbOBN7fBhi6oAGtL7X1TQZVzfpnk,1993
|
|
18
16
|
mns_scheduler/company_info/em_stock_info/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
19
|
-
mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py,sha256=
|
|
17
|
+
mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py,sha256=hf4Qw618J7SnMJ0qMl6yEcub37oyvCj9oY3u-0nqNWY,3477
|
|
20
18
|
mns_scheduler/company_info/remark/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
21
19
|
mns_scheduler/company_info/remark/company_remark_info_sync.py,sha256=L8wC8LU7-GYZb1TyKLjODJURROOEO4izZBxnWEM7Ahc,2334
|
|
22
20
|
mns_scheduler/concept/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
@@ -53,50 +51,6 @@ mns_scheduler/debt/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUc
|
|
|
53
51
|
mns_scheduler/debt/kzz_bond_info_sync.py,sha256=FOefhRDqSN1YRqY6drCN3p6PgzVD_isWQ15l9OllCGI,1346
|
|
54
52
|
mns_scheduler/dt/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
55
53
|
mns_scheduler/dt/stock_dt_pool_sync.py,sha256=5ivRUOnFtOapZniwTbujf1lVq3y4btm2Cmd5R6JJAVo,3466
|
|
56
|
-
mns_scheduler/extraIncome/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
57
|
-
mns_scheduler/extraIncome/a_stock/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
58
|
-
mns_scheduler/extraIncome/a_stock/one_minute/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
59
|
-
mns_scheduler/extraIncome/a_stock/one_minute/one_minute_sync_task.py,sha256=X4zC2VsTvxnOArGLwCsBs9a-XwtxtMQ4nqL6binxHp4,1589
|
|
60
|
-
mns_scheduler/extraIncome/a_stock/one_minute/common/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
61
|
-
mns_scheduler/extraIncome/a_stock/one_minute/common/db_create_index.py,sha256=WhCAaLNrrc4nuGpa_GW6qrWyml6I-Fk4E2jJRSbUUZw,323
|
|
62
|
-
mns_scheduler/extraIncome/a_stock/one_minute/common/symbol_handle_util.py,sha256=cq1LVCx-an2CuRbLl3CBpgOltUx3AyMrQ4Qf1vd9VIQ,1275
|
|
63
|
-
mns_scheduler/extraIncome/a_stock/one_minute/etf/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
64
|
-
mns_scheduler/extraIncome/a_stock/one_minute/etf/etf_one_minute_sync_task.py,sha256=NAgnTNcUuDDnw6cUJzICCfS2hxvQiOcRggrEutYElSc,3707
|
|
65
|
-
mns_scheduler/extraIncome/a_stock/one_minute/index/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
66
|
-
mns_scheduler/extraIncome/a_stock/one_minute/index/main_index_sync_task.py,sha256=kbhzbRHKGO97m4hmWVKTMKMl_DOk3m0P0xVM_yBHSL0,2665
|
|
67
|
-
mns_scheduler/extraIncome/a_stock/one_minute/kzz/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
68
|
-
mns_scheduler/extraIncome/a_stock/one_minute/kzz/kzz_one_minute_sync_task.py,sha256=Qo7ITX-kGj_TEQve7A6Zjs8WDSyCguuGpk2dN0gCxiM,3707
|
|
69
|
-
mns_scheduler/extraIncome/a_stock/one_minute/stock/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
70
|
-
mns_scheduler/extraIncome/a_stock/one_minute/stock/stock_one_minute_sync_task.py,sha256=O-iDs9IZnimdC00hZOc7T35pWmgzvDCx4lh8nooFS1k,4592
|
|
71
|
-
mns_scheduler/extraIncome/a_stock/one_minute/upload/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
72
|
-
mns_scheduler/extraIncome/a_stock/one_minute/upload/etf_upload_to_baidu_task.py,sha256=Vy8IbF4KnWd7kxSnBvtWIlxl-VsbYb6FqZ6rzGh3I1Y,3659
|
|
73
|
-
mns_scheduler/extraIncome/a_stock/one_minute/upload/index_upload_to_baidu_task.py,sha256=9uVWKlsy2bXR0Vz5IjtnpN8N81kOzK9BDVWPGgjHb0A,2640
|
|
74
|
-
mns_scheduler/extraIncome/a_stock/one_minute/upload/kzz_upload_to_baidu_task.py,sha256=tNy3LB6TmC4JdQ9GHlZidmqTWH-WC83zil0NBvVpJ4U,3672
|
|
75
|
-
mns_scheduler/extraIncome/a_stock/one_minute/upload/stock_upload_to_baidu_task.py,sha256=7ihM6-n3uWjGxlMsL0WNyMTbWW85bdtz9MLHKO8LtoI,3801
|
|
76
|
-
mns_scheduler/extraIncome/hk/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
77
|
-
mns_scheduler/extraIncome/hk/hk_stock_qfq_daily_k_line.py,sha256=R20XnJKaHaManU28_mo7fwDwmLwnF1GKfo_ccjU5Ydw,4236
|
|
78
|
-
mns_scheduler/extraIncome/us/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
79
|
-
mns_scheduler/extraIncome/us/daily/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
80
|
-
mns_scheduler/extraIncome/us/daily/us_stock_qfq_daily_k_line.py,sha256=QToKweEXKZMGOxfC4ua2n-ZKmQ-vssdX8iilLOZspKA,4234
|
|
81
|
-
mns_scheduler/extraIncome/us/one_minute/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
82
|
-
mns_scheduler/extraIncome/us/one_minute/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
-
mns_scheduler/extraIncome/us/one_minute/api/alpha_vantage_api.py,sha256=tMywgIs47_mJbEES7lhl3WTYoQbZzpJh4EW7_yiWhmk,899
|
|
84
|
-
mns_scheduler/extraIncome/us/one_minute/api/em_us_one_minute_api.py,sha256=0sW473oQgohr17SSCCSvWZ84TLUVJep8JcSv-z0E0YQ,5198
|
|
85
|
-
mns_scheduler/extraIncome/us/one_minute/api/stock_etf_info_api.py,sha256=jBw-EUU4YKYyMx04RiiJXRXM5ATwkuVJjsu7K8KTsZI,2538
|
|
86
|
-
mns_scheduler/extraIncome/us/one_minute/api/y_finance_api.py,sha256=Y1QklHaxUgf5Q_79t-QIvvUcj18koYMVh-AFUTRa4_g,2139
|
|
87
|
-
mns_scheduler/extraIncome/us/one_minute/etf/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
88
|
-
mns_scheduler/extraIncome/us/one_minute/stock/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
89
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
90
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/__init__.py,sha256=sb7uvmLWbASPFK0DTXcid92WM4ApnTnjTM9_60_sTdA,255
|
|
91
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/down_load_ETF_his_2024.py,sha256=DkzyISWT0jTiTfvkXHvXSB0rqx9iTSFcg7RjVD51uBo,5816
|
|
92
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/handle_down_load_fail_ETF.py,sha256=yv5BYVQ4P046mX_U1592vkIVKYOgEb_8HYeVdpr65rQ,2530
|
|
93
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
94
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_01.py,sha256=s5CM1yAyuLxjpXUvTmJoCOOEx0Qgu3ashEVGgh-bMS0,6918
|
|
95
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_02.py,sha256=oW2GvJVSFl2CWhfcXy_iKIUM_J3EGzmnWrzu_R409tk,6855
|
|
96
|
-
mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_2025.py,sha256=1HyYBAWatjXsWwPDxuC36ONO6RQNUJeLt8E4c-8aaWA,5310
|
|
97
|
-
mns_scheduler/extraIncome/us/one_minute/stock/now/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
98
|
-
mns_scheduler/extraIncome/us/one_minute/stock/now/us_etf_one_minute_sync.py,sha256=HHrICmSiDMmDBjF_7rcai4u383c0O1zc12gGjMHwqAg,2045
|
|
99
|
-
mns_scheduler/extraIncome/us/one_minute/stock/now/us_stock_one_minute_sync.py,sha256=jvD4QeNRrUyR3gnfAZxZuiJscqEdKkxebSD_li2-l_0,5658
|
|
100
54
|
mns_scheduler/finance/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
101
55
|
mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py,sha256=xcThdnFD5hGRkUsYpIgCi3GR_54_otQnurz-9pzHo9Y,19417
|
|
102
56
|
mns_scheduler/finance/em_financial_profit_sync_service_api.py,sha256=KWUfpDs_OuUPToEeoUScQuvYFQvszh5nQu3DVDONfHc,14514
|
|
@@ -168,9 +122,9 @@ mns_scheduler/self_choose/ths_self_choose_service.py,sha256=38pXivl0CPXkCJyu8_5_
|
|
|
168
122
|
mns_scheduler/trade/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
169
123
|
mns_scheduler/trade/auto_ipo_buy_api.py,sha256=jVe5ZiXwzkDy_j_4X4rUamSzJpmzhV16lNKwbeWgpQw,386
|
|
170
124
|
mns_scheduler/trade/auto_sell_service_api.py,sha256=A2RB3WFxVHqbNPaPvhIgO-3uaicFZVmBKUy2TsfMU90,4624
|
|
171
|
-
mns_scheduler/trade/sync_position_api.py,sha256=
|
|
125
|
+
mns_scheduler/trade/sync_position_api.py,sha256=ooIsuxPUBWIia-8W_Zx_JEbYULODAFi0tchPKqQCfnE,2752
|
|
172
126
|
mns_scheduler/trade/auto_login/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
173
|
-
mns_scheduler/trade/auto_login/trader_auto_service.py,sha256=
|
|
127
|
+
mns_scheduler/trade/auto_login/trader_auto_service.py,sha256=1cvKwbfAKmjG312aHLvMXVFs59y8Sg6WnDEWqS_nyMs,686
|
|
174
128
|
mns_scheduler/trade/balance/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
175
129
|
mns_scheduler/trade/balance/ths_account_balance_service.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
176
130
|
mns_scheduler/trade/task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
@@ -199,12 +153,12 @@ mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py,sha256=1pm16xy_DHgd
|
|
|
199
153
|
mns_scheduler/zt/script/sync_high_chg_pool_his_data.py,sha256=xzfjlwNqsiDQqkTTmaLlFRG0WwkOSYDI-1mw38Z_hNc,1685
|
|
200
154
|
mns_scheduler/zt/script/sync_now_higt_chg_zt.py,sha256=cArTHjZmnGJFEO6kAnva8rVOg9mV3vHIuwS-zg3BobM,1844
|
|
201
155
|
mns_scheduler/zt/zt_pool/__init__.py,sha256=Tyvi_iQlv3jz59EdH67Mycnt9CSixcWPQoJwu55bOq0,165
|
|
202
|
-
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=
|
|
156
|
+
mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py,sha256=LOEUyTA5g7N6FWxUpHWimWTeXiiMAnUdsYqhG4HpuOY,12154
|
|
203
157
|
mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py,sha256=u0IvwPuI2hnjTOrwwe8EhBAMv8NbQTENpRbb-_5lDlM,9803
|
|
204
158
|
mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py,sha256=caW-MuF0RFLavJZafeLDYQ29-GxwGsmr5YVrN4lost8,2135
|
|
205
159
|
mns_scheduler/zz_task/__init__.py,sha256=QWBdZwBCvQw8aS4hnL9_pg3U3ZiNLUXzlImyy9WhUcI,163
|
|
206
|
-
mns_scheduler/zz_task/data_sync_task.py,sha256=
|
|
207
|
-
mns_scheduler-1.3.1.
|
|
208
|
-
mns_scheduler-1.3.1.
|
|
209
|
-
mns_scheduler-1.3.1.
|
|
210
|
-
mns_scheduler-1.3.1.
|
|
160
|
+
mns_scheduler/zz_task/data_sync_task.py,sha256=NU39f18zafhPARFxl6Z18l20Obi89sOaOdoPJ_dZhFc,23126
|
|
161
|
+
mns_scheduler-1.3.1.8.dist-info/METADATA,sha256=Y_3Xf86D9YiCjh9nvRbeQfPaQKRzNalnnbG_NPsJBWQ,64
|
|
162
|
+
mns_scheduler-1.3.1.8.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
163
|
+
mns_scheduler-1.3.1.8.dist-info/top_level.txt,sha256=PXQDFBGR1pWmsUbH5yiLAh71P5HZODTRED0zJ8CCgOc,14
|
|
164
|
+
mns_scheduler-1.3.1.8.dist-info/RECORD,,
|
mns_scheduler/baidu/__init__.py
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
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 sys
|
|
9
|
-
import os
|
|
10
|
-
import json
|
|
11
|
-
import pandas as pd
|
|
12
|
-
|
|
13
|
-
file_path = os.path.abspath(__file__)
|
|
14
|
-
end = file_path.index('mns') + 17
|
|
15
|
-
project_path = file_path[0:end]
|
|
16
|
-
sys.path.append(project_path)
|
|
17
|
-
from bypy import ByPy
|
|
18
|
-
from loguru import logger
|
|
19
|
-
import subprocess
|
|
20
|
-
import re
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
def upload_to_baidu(file_name, folder_name, data_df):
|
|
24
|
-
upload_path_temp = fr'D:\upload_temp\{file_name}.csv'
|
|
25
|
-
bp = ByPy()
|
|
26
|
-
|
|
27
|
-
data_df.to_csv(upload_path_temp, index=False, encoding='gbk')
|
|
28
|
-
|
|
29
|
-
# 上传临时文件到百度云
|
|
30
|
-
remote_path = f'/{folder_name}/{file_name}.csv'
|
|
31
|
-
result = bp.upload(upload_path_temp, remote_path)
|
|
32
|
-
if result == 0:
|
|
33
|
-
logger.info("上传成功:{}", file_name)
|
|
34
|
-
else:
|
|
35
|
-
logger.error("上传失败:{}", file_name)
|
|
36
|
-
del_local_file(upload_path_temp)
|
|
37
|
-
return result
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def del_local_file(local_file_path):
|
|
41
|
-
try:
|
|
42
|
-
os.remove(local_file_path)
|
|
43
|
-
except Exception as e:
|
|
44
|
-
print(f"删除文件时出错: {e}")
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
def mkdir_baidu_new_folder(remote_path):
|
|
48
|
-
bp = ByPy()
|
|
49
|
-
try:
|
|
50
|
-
# 调用 mkdir 方法创建文件夹
|
|
51
|
-
result = bp.mkdir(remote_path)
|
|
52
|
-
|
|
53
|
-
if result == 0:
|
|
54
|
-
logger.info("成功创建文件夹:{}", remote_path)
|
|
55
|
-
else:
|
|
56
|
-
logger.error("创建文件夹失败:{}", result)
|
|
57
|
-
|
|
58
|
-
except Exception as e:
|
|
59
|
-
logger.error("创建文件夹失败:{}", e)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def del_baidu_old_folder(remote_path):
|
|
63
|
-
bp = ByPy()
|
|
64
|
-
try:
|
|
65
|
-
# 调用 mkdir 方法创建文件夹
|
|
66
|
-
result = bp.delete(remote_path)
|
|
67
|
-
|
|
68
|
-
if result == 0:
|
|
69
|
-
logger.info("成功删除文件夹:{}", remote_path)
|
|
70
|
-
else:
|
|
71
|
-
logger.error("删除文件夹失败:{}", result)
|
|
72
|
-
|
|
73
|
-
except Exception as e:
|
|
74
|
-
logger.error("删除文件夹失败:{}", e)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
def get_file_folder(path):
|
|
78
|
-
result = subprocess.run(
|
|
79
|
-
['bypy', 'list', path],
|
|
80
|
-
capture_output=True,
|
|
81
|
-
text=True,
|
|
82
|
-
check=True,
|
|
83
|
-
encoding='utf-8'
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
# 假设 result 是 subprocess.run 的返回结果
|
|
87
|
-
stdout = result.stdout
|
|
88
|
-
|
|
89
|
-
# 正则表达式匹配文件行
|
|
90
|
-
pattern = re.compile(
|
|
91
|
-
r'^[FD]\s+(\S+)\s+(\d+)\s+(\d{4}-\d{2}-\d{2},\s\d{2}:\d{2}:\d{2})\s+([a-zA-Z0-9]{32})$',
|
|
92
|
-
re.IGNORECASE
|
|
93
|
-
)
|
|
94
|
-
|
|
95
|
-
data = []
|
|
96
|
-
for line in stdout.split('\n'):
|
|
97
|
-
line = line.strip()
|
|
98
|
-
if not line:
|
|
99
|
-
continue
|
|
100
|
-
match = pattern.match(line)
|
|
101
|
-
if match:
|
|
102
|
-
filename, size, mod_time, hash_val = match.groups()
|
|
103
|
-
# 处理时间格式:替换逗号为空格
|
|
104
|
-
mod_time = mod_time.replace(', ', ' ')
|
|
105
|
-
data.append({
|
|
106
|
-
'name': filename,
|
|
107
|
-
'size': int(size),
|
|
108
|
-
'update_time': mod_time,
|
|
109
|
-
'hash_value': hash_val
|
|
110
|
-
})
|
|
111
|
-
|
|
112
|
-
# 创建 DataFrame 并转换时间类型
|
|
113
|
-
df = pd.DataFrame(data)
|
|
114
|
-
if not df.empty:
|
|
115
|
-
df['update_time'] = pd.to_datetime(df['update_time'], format='%Y-%m-%d %H:%M:%S')
|
|
116
|
-
|
|
117
|
-
return df
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
if __name__ == '__main__':
|
|
121
|
-
folder_name1 = '/A股/1分钟/2025/4'
|
|
122
|
-
get_file_folder(folder_name1)
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
def create_index(db_util, col_name):
|
|
2
|
-
index_create = [('symbol', 1), ('time', 1)]
|
|
3
|
-
db_util.create_index(col_name, index_create)
|
|
4
|
-
index_create_01 = [('time', 1)]
|
|
5
|
-
db_util.create_index(col_name, index_create_01)
|
|
6
|
-
index_create_02 = [('symbol', 1)]
|
|
7
|
-
db_util.create_index(col_name, index_create_02)
|
|
8
|
-
|
|
9
|
-
|
|
@@ -1,41 +0,0 @@
|
|
|
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.constant.extra_income_db_name as extra_income_db_name
|
|
9
|
-
import pandas as pd
|
|
10
|
-
from mns_common.db.v2.MongodbUtilV2 import MongodbUtilV2
|
|
11
|
-
|
|
12
|
-
mongodbUtilV2_27019 = MongodbUtilV2('27019', extra_income_db_name.EXTRA_INCOME)
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def symbol_add_prefix(symbol):
|
|
16
|
-
symbol_simple = symbol[0:6]
|
|
17
|
-
suffix = symbol[7:9]
|
|
18
|
-
if suffix in ['SH']:
|
|
19
|
-
return '1.' + symbol_simple
|
|
20
|
-
elif suffix in ['SZ']:
|
|
21
|
-
return '0.' + symbol_simple
|
|
22
|
-
elif suffix in ['BJ']:
|
|
23
|
-
return '0.' + symbol_simple
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
# col_name 保存数据的结婚
|
|
27
|
-
def save_fail_data(now_day, symbol_prefix, col_name):
|
|
28
|
-
fail_dict = {'begin_date': now_day,
|
|
29
|
-
'end_date': now_day,
|
|
30
|
-
'symbol': symbol_prefix,
|
|
31
|
-
'col_name': col_name,
|
|
32
|
-
'type': 'kzz',
|
|
33
|
-
'sync_day': now_day,
|
|
34
|
-
'valid': True,
|
|
35
|
-
}
|
|
36
|
-
fail_df = pd.DataFrame(fail_dict, index=[1])
|
|
37
|
-
mongodbUtilV2_27019.insert_mongo(fail_df, extra_income_db_name.ONE_MINUTE_SYNC_FAIL)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if __name__ == '__main__':
|
|
41
|
-
symbol_add_prefix('000001.SZ')
|
|
@@ -1,87 +0,0 @@
|
|
|
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
|
-
|
|
9
|
-
import mns_common.component.em.em_stock_info_api as em_stock_info_api
|
|
10
|
-
from loguru import logger
|
|
11
|
-
import time
|
|
12
|
-
import mns_common.utils.data_frame_util as data_frame_util
|
|
13
|
-
from mns_common.db.MongodbUtil import MongodbUtil
|
|
14
|
-
import mns_scheduler.extraIncome.a_stock.one_minute.common.symbol_handle_util as symbol_handle_util
|
|
15
|
-
from mns_common.db.v2.MongodbUtilV2 import MongodbUtilV2
|
|
16
|
-
import mns_scheduler.extraIncome.a_stock.one_minute.common.db_create_index as db_create_index
|
|
17
|
-
import mns_common.constant.extra_income_db_name as extra_income_db_name
|
|
18
|
-
import mns_common.api.k_line.stock_minute_data_api as stock_minute_data_api
|
|
19
|
-
from datetime import datetime
|
|
20
|
-
|
|
21
|
-
mongodb_util_27017 = MongodbUtil('27017')
|
|
22
|
-
mongodbUtilV2_27019 = MongodbUtilV2('27019', extra_income_db_name.EXTRA_INCOME)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def sync_etf_one_minute(data_tag):
|
|
26
|
-
etf_real_time_quotes = em_stock_info_api.get_etf_info()
|
|
27
|
-
etf_real_time_quotes = classify_symbol(etf_real_time_quotes)
|
|
28
|
-
etf_real_time_quotes['symbol'] = etf_real_time_quotes.apply(
|
|
29
|
-
lambda row: row['symbol'] + '.SZ' if row['classification'] in ['S', 'C']
|
|
30
|
-
else row['symbol'] + '.BJ' if row['classification'] in ['X']
|
|
31
|
-
else row['symbol'] + '.SH',
|
|
32
|
-
axis=1
|
|
33
|
-
)
|
|
34
|
-
# 假设数字格式为 YYYYMMDD
|
|
35
|
-
# debt_real_time_quotes['list_date'] = pd.to_datetime(debt_real_time_quotes['list_date'],
|
|
36
|
-
# format='%Y%m%d').dt.strftime('%Y-%m-%d')
|
|
37
|
-
|
|
38
|
-
etf_real_time_quotes = etf_real_time_quotes.loc[etf_real_time_quotes['amount'] != 0]
|
|
39
|
-
|
|
40
|
-
now_date = datetime.now()
|
|
41
|
-
now_day = now_date.strftime('%Y-%m-%d')
|
|
42
|
-
year = now_date.strftime('%Y')
|
|
43
|
-
col_name = extra_income_db_name.ONE_MINUTE_K_LINE_BFQ_ETF + '_' + str(year)
|
|
44
|
-
# 创建索引
|
|
45
|
-
db_create_index.create_index(mongodbUtilV2_27019, col_name)
|
|
46
|
-
|
|
47
|
-
for stock_one in etf_real_time_quotes.itertuples():
|
|
48
|
-
|
|
49
|
-
symbol = stock_one.symbol
|
|
50
|
-
symbol_prefix = symbol_handle_util.symbol_add_prefix(symbol)
|
|
51
|
-
try:
|
|
52
|
-
one_min_df = stock_minute_data_api.get_minute_data(symbol_prefix, now_day, now_day, '1', '')
|
|
53
|
-
one_min_df['symbol'] = symbol
|
|
54
|
-
one_min_df['_id'] = one_min_df['symbol'] + '_' + one_min_df['time']
|
|
55
|
-
if data_frame_util.is_empty(one_min_df) or one_min_df.shape[0] < 241:
|
|
56
|
-
symbol_handle_util.save_fail_data(now_day, symbol_prefix, col_name)
|
|
57
|
-
logger.error("当前ETF分钟数据同步异常:{}", symbol)
|
|
58
|
-
continue
|
|
59
|
-
else:
|
|
60
|
-
del one_min_df['ava_price']
|
|
61
|
-
if data_tag:
|
|
62
|
-
mongodbUtilV2_27019.insert_mongo(one_min_df, col_name)
|
|
63
|
-
else:
|
|
64
|
-
mongodbUtilV2_27019.save_mongo(one_min_df, col_name)
|
|
65
|
-
except BaseException as e:
|
|
66
|
-
time.sleep(2)
|
|
67
|
-
symbol_handle_util.save_fail_data(now_day, symbol_prefix, col_name)
|
|
68
|
-
logger.error("同步ETF分钟数据出现异常:{},{},{}", e, symbol, now_day)
|
|
69
|
-
logger.info("同步完ETF分钟数据:{},{}", stock_one.symbol, stock_one.name)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def classify_symbol(etf_real_time_quotes):
|
|
73
|
-
etf_real_time_quotes['classification'] = etf_real_time_quotes['market'].apply(
|
|
74
|
-
lambda market: classify_symbol_one(market))
|
|
75
|
-
return etf_real_time_quotes
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
# 单个股票分类
|
|
79
|
-
def classify_symbol_one(market):
|
|
80
|
-
if market == 0:
|
|
81
|
-
return 'S'
|
|
82
|
-
else:
|
|
83
|
-
return 'H'
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if __name__ == '__main__':
|
|
87
|
-
sync_etf_one_minute("2025-03-17", "2025-03-17")
|