mns-scheduler 1.0.9.0__tar.gz → 1.0.9.2__tar.gz
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-1.0.9.0 → mns-scheduler-1.0.9.2}/PKG-INFO +1 -1
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/db/col_move_service.py +5 -5
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +2 -1
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/financial/net_assets_check_api.py +2 -2
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/financial/profit_income_check_api.py +2 -2
- mns-scheduler-1.0.9.2/mns_scheduler/risk/transactions/transactions_check_api.py +165 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zz_task/data_sync_task.py +4 -1
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler.egg-info/SOURCES.txt +1 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/setup.py +1 -1
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/README.md +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/app/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/em/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/wen_cai/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/big_deal/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/company_info/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/company_info/company_constant_data.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/company_info/company_info_sync_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/company_info/de_list_stock_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/clean/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/common/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/db/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/dt/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/finance_common_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/sync_financial_report_service_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/test/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/test/fix_blask_list.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/hk/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/api/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/sync/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/test/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/lhb/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/open/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/real_time/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/compliance/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/financial/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/major_violations/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/self/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/transactions/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/trade/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/trade/sync_position_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zb/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/export/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/high_chg/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/open_data/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/script/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/zt_pool/zt_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zz_task/__init__.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/setup.cfg +0 -0
|
@@ -109,8 +109,8 @@ def db_import_col(db, col):
|
|
|
109
109
|
|
|
110
110
|
# -u "username" -p "password"
|
|
111
111
|
if __name__ == '__main__':
|
|
112
|
-
sync_col_move('2024-05-28')
|
|
113
|
-
sync_col_move('2024-05-30')
|
|
114
|
-
sync_col_move('2024-05-31')
|
|
115
|
-
sync_col_move('2024-06-
|
|
116
|
-
sync_col_move('2024-06-
|
|
112
|
+
# sync_col_move('2024-05-28')
|
|
113
|
+
# sync_col_move('2024-05-30')
|
|
114
|
+
# sync_col_move('2024-05-31')
|
|
115
|
+
sync_col_move('2024-06-11')
|
|
116
|
+
sync_col_move('2024-06-12')
|
|
@@ -22,6 +22,7 @@ def annual_report_audit_check(new_report_df, period_time):
|
|
|
22
22
|
opinion_type = list(new_report_one_df['OPINION_TYPE'])[0]
|
|
23
23
|
symbol = list(new_report_one_df['SECURITY_CODE'])[0]
|
|
24
24
|
name = list(new_report_one_df['SECURITY_NAME_ABBR'])[0]
|
|
25
|
+
notice_date = list(new_report_one_df['NOTICE_DATE'])[0]
|
|
25
26
|
now_date = datetime.now()
|
|
26
27
|
str_day = now_date.strftime('%Y-%m-%d')
|
|
27
28
|
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
@@ -33,7 +34,7 @@ def annual_report_audit_check(new_report_df, period_time):
|
|
|
33
34
|
symbol,
|
|
34
35
|
name,
|
|
35
36
|
str_day,
|
|
36
|
-
|
|
37
|
+
notice_date,
|
|
37
38
|
'年报审计有问题:' + "[" + str(opinion_type) + "]",
|
|
38
39
|
'年报审计有问题',
|
|
39
40
|
'',
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/financial/net_assets_check_api.py
RENAMED
|
@@ -31,7 +31,7 @@ def net_assets_check(report_type, new_report_df, period_time):
|
|
|
31
31
|
str_day = now_date.strftime('%Y-%m-%d')
|
|
32
32
|
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
33
33
|
id_key = symbol + "_" + period_time + "_" + BlackClassify.FINANCIAL_PROBLEM_DEBT.level_code
|
|
34
|
-
|
|
34
|
+
notice_date = list(new_report_one_df['NOTICE_DATE'])[0]
|
|
35
35
|
query_company = {'_id': symbol, 'industry': {'$in': EXCLUDE_INDUSTRY}}
|
|
36
36
|
if mongodb_util.exist_data_query(db_name_constant.COMPANY_INFO, query_company):
|
|
37
37
|
return None
|
|
@@ -41,7 +41,7 @@ def net_assets_check(report_type, new_report_df, period_time):
|
|
|
41
41
|
symbol,
|
|
42
42
|
name,
|
|
43
43
|
str_day,
|
|
44
|
-
|
|
44
|
+
notice_date,
|
|
45
45
|
'负债过高:' + "[" + str(
|
|
46
46
|
liability_ratio) + "]" + "," + "净资产:"
|
|
47
47
|
+ str(round(net_asset / common_service_fun_api.HUNDRED_MILLION,
|
|
@@ -26,7 +26,7 @@ def profit_income_check(new_report_df, period_time, report_type):
|
|
|
26
26
|
now_date = datetime.now()
|
|
27
27
|
str_day = now_date.strftime('%Y-%m-%d')
|
|
28
28
|
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
29
|
-
|
|
29
|
+
notice_date = list(new_report_one_df['NOTICE_DATE'])[0]
|
|
30
30
|
if report_type == db_name_constant.EM_STOCK_PROFIT:
|
|
31
31
|
# 利润总额 净利润 扣除非经常性损益后的净利润 三者最小为负
|
|
32
32
|
# 利润总额
|
|
@@ -63,7 +63,7 @@ def profit_income_check(new_report_df, period_time, report_type):
|
|
|
63
63
|
symbol,
|
|
64
64
|
name,
|
|
65
65
|
str_day,
|
|
66
|
-
|
|
66
|
+
notice_date,
|
|
67
67
|
'年报:利润:' + '[' + str(min_profit) + '万]' + '收入:' + str(
|
|
68
68
|
total_operate_income) + '[' + '亿元]--' + '触发退市风险',
|
|
69
69
|
'年报:利润:' + '[' + str(min_profit) + '万]' + '收入:' + str(
|
|
@@ -0,0 +1,165 @@
|
|
|
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
|
+
import mns_common.api.em.east_money_stock_api as east_money_stock_api
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
import mns_common.component.self_choose.black_list_service_api as black_list_service_api
|
|
11
|
+
import mns_common.component.trade_date.trade_date_common_service_api as trade_date_common_service_api
|
|
12
|
+
from loguru import logger
|
|
13
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
14
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
15
|
+
import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
|
|
16
|
+
from mns_common.constant.black_list_classify_enum import BlackClassify
|
|
17
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
18
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
19
|
+
|
|
20
|
+
mongodb_util = MongodbUtil('27017')
|
|
21
|
+
|
|
22
|
+
# 主板 市值最小值 6亿 20个交易日低于5亿退市
|
|
23
|
+
MAIN_MARKET_MIN_MV = 600000000
|
|
24
|
+
|
|
25
|
+
# 创业 科创 北交所 市值最小值 4亿 20个交易日低于3亿退市
|
|
26
|
+
SUB_MARKET_MIN_MV = 400000000
|
|
27
|
+
|
|
28
|
+
# 最小面值 20个交易日低于1元退市
|
|
29
|
+
MIN_NOW_PRICE = 1.5
|
|
30
|
+
|
|
31
|
+
# 主板 120个交易日 参考600万 成交量低于500万股
|
|
32
|
+
MAIN_MARKET_MIN_VOLUME = 6000000
|
|
33
|
+
|
|
34
|
+
# 科创 创业 120个交易日 参考300万 成交量低于200万股
|
|
35
|
+
SUB_MARKET_MIN_VOLUME = 3000000
|
|
36
|
+
|
|
37
|
+
# 北交所 120个交易日 参考150万 成交量低于100万股
|
|
38
|
+
BJS_MARKET_MIN_VOLUME = 1500000
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def transactions_check_task():
|
|
42
|
+
real_time_quotes_now = east_money_stock_api.get_real_time_quotes_all_stocks()
|
|
43
|
+
real_time_quotes_now = common_service_fun_api.classify_symbol(real_time_quotes_now)
|
|
44
|
+
real_time_quotes_now = common_service_fun_api.exclude_ts_symbol(real_time_quotes_now)
|
|
45
|
+
|
|
46
|
+
de_list_symbol = company_common_service_new_api.get_de_list_company()
|
|
47
|
+
|
|
48
|
+
real_time_quotes_now = real_time_quotes_now.loc[~(real_time_quotes_now['symbol'].isin(de_list_symbol))]
|
|
49
|
+
|
|
50
|
+
query = {"up_level_code": BlackClassify.TRANSACTIONS.level_code}
|
|
51
|
+
tag = mongodb_util.remove_data(query, db_name_constant.SELF_BLACK_STOCK)
|
|
52
|
+
success = tag.acknowledged
|
|
53
|
+
if success:
|
|
54
|
+
|
|
55
|
+
for stock_one in real_time_quotes_now.itertuples():
|
|
56
|
+
try:
|
|
57
|
+
total_mv_check(stock_one)
|
|
58
|
+
now_price_check(stock_one)
|
|
59
|
+
volume_check(stock_one)
|
|
60
|
+
except BaseException as e:
|
|
61
|
+
logger.error("交易风险校验异常:{},{}", e, stock_one.symbol)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
# 总市值check
|
|
65
|
+
def total_mv_check(stock_one):
|
|
66
|
+
classification = stock_one.classification
|
|
67
|
+
total_mv = stock_one.total_mv
|
|
68
|
+
now_date = datetime.now()
|
|
69
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
70
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
71
|
+
key_id = stock_one.symbol + "_" + BlackClassify.MV_RISK.level_code
|
|
72
|
+
tag = False
|
|
73
|
+
if classification in ['S', 'H'] and total_mv < MAIN_MARKET_MIN_MV:
|
|
74
|
+
tag = True
|
|
75
|
+
elif classification in ['K', 'C', "X"] and total_mv < SUB_MARKET_MIN_MV:
|
|
76
|
+
tag = True
|
|
77
|
+
|
|
78
|
+
if tag:
|
|
79
|
+
black_list_service_api.save_black_stock(
|
|
80
|
+
key_id,
|
|
81
|
+
stock_one.symbol,
|
|
82
|
+
stock_one.name,
|
|
83
|
+
str_day,
|
|
84
|
+
str_now_date,
|
|
85
|
+
BlackClassify.MV_RISK.level_name + ":" + str(
|
|
86
|
+
round(total_mv / common_service_fun_api.HUNDRED_MILLION, 2)) + "亿",
|
|
87
|
+
BlackClassify.MV_RISK.level_name + ":" + str(
|
|
88
|
+
round(total_mv / common_service_fun_api.HUNDRED_MILLION, 2)) + "亿",
|
|
89
|
+
"",
|
|
90
|
+
BlackClassify.MV_RISK.up_level_code,
|
|
91
|
+
BlackClassify.MV_RISK.up_level_name,
|
|
92
|
+
BlackClassify.MV_RISK.level_code,
|
|
93
|
+
BlackClassify.MV_RISK.level_name,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
# 当前面值check
|
|
98
|
+
def now_price_check(stock_one):
|
|
99
|
+
now_price = stock_one.now_price
|
|
100
|
+
now_date = datetime.now()
|
|
101
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
102
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
103
|
+
key_id = stock_one.symbol + "_" + BlackClassify.CLOSE_PRICE_RISK.level_code
|
|
104
|
+
if now_price < MIN_NOW_PRICE:
|
|
105
|
+
black_list_service_api.save_black_stock(
|
|
106
|
+
key_id,
|
|
107
|
+
stock_one.symbol,
|
|
108
|
+
stock_one.name,
|
|
109
|
+
str_day,
|
|
110
|
+
str_now_date,
|
|
111
|
+
BlackClassify.CLOSE_PRICE_RISK.level_name + ":当前价格" + str(now_price),
|
|
112
|
+
BlackClassify.CLOSE_PRICE_RISK.level_name + ":当前价格" + str(now_price),
|
|
113
|
+
"",
|
|
114
|
+
BlackClassify.CLOSE_PRICE_RISK.up_level_code,
|
|
115
|
+
BlackClassify.CLOSE_PRICE_RISK.up_level_name,
|
|
116
|
+
BlackClassify.CLOSE_PRICE_RISK.level_code,
|
|
117
|
+
BlackClassify.CLOSE_PRICE_RISK.level_name,
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
#
|
|
122
|
+
def volume_check(stock_one):
|
|
123
|
+
now_date = datetime.now()
|
|
124
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
125
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
126
|
+
trade_date_120 = trade_date_common_service_api.get_before_trade_date(str_day, 120)
|
|
127
|
+
query = {'date': {"$gte": date_handle_util.no_slash_date(trade_date_120)}, 'symbol': stock_one.symbol}
|
|
128
|
+
stock_qfq_daily_df = mongodb_util.find_query_data(db_name_constant.STOCK_QFQ_DAILY, query)
|
|
129
|
+
if stock_qfq_daily_df.shape[0] < 120:
|
|
130
|
+
return
|
|
131
|
+
# volume 单位是100股
|
|
132
|
+
sum_volume = sum(stock_qfq_daily_df['volume']) * 100
|
|
133
|
+
key_id = stock_one.symbol + "_" + BlackClassify.AMOUNT_RISK.level_code
|
|
134
|
+
tag = False
|
|
135
|
+
classification = stock_one.classification
|
|
136
|
+
if classification in ['S', 'H'] and sum_volume < MAIN_MARKET_MIN_VOLUME:
|
|
137
|
+
tag = True
|
|
138
|
+
|
|
139
|
+
elif classification in ['K', 'C'] and sum_volume < SUB_MARKET_MIN_VOLUME:
|
|
140
|
+
tag = True
|
|
141
|
+
|
|
142
|
+
elif classification in ['X'] and sum_volume < BJS_MARKET_MIN_VOLUME:
|
|
143
|
+
tag = True
|
|
144
|
+
|
|
145
|
+
if tag:
|
|
146
|
+
black_list_service_api.save_black_stock(
|
|
147
|
+
key_id,
|
|
148
|
+
stock_one.symbol,
|
|
149
|
+
stock_one.name,
|
|
150
|
+
str_day,
|
|
151
|
+
str_now_date,
|
|
152
|
+
BlackClassify.AMOUNT_RISK.level_name + ":120个交易日成交量:" + str(
|
|
153
|
+
round(sum_volume / common_service_fun_api.TEN_THOUSAND), 0) + "万股",
|
|
154
|
+
BlackClassify.AMOUNT_RISK.level_name + ":120个交易日成交量:" + str(
|
|
155
|
+
round(sum_volume / common_service_fun_api.TEN_THOUSAND), 0) + "万股",
|
|
156
|
+
"",
|
|
157
|
+
BlackClassify.AMOUNT_RISK.up_level_code,
|
|
158
|
+
BlackClassify.AMOUNT_RISK.up_level_name,
|
|
159
|
+
BlackClassify.AMOUNT_RISK.level_code,
|
|
160
|
+
BlackClassify.AMOUNT_RISK.level_name,
|
|
161
|
+
)
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
if __name__ == '__main__':
|
|
165
|
+
transactions_check_task()
|
|
@@ -46,6 +46,7 @@ import mns_scheduler.open.sync_one_day_open_data_to_db_service as sync_one_day_o
|
|
|
46
46
|
import mns_scheduler.zt.high_chg.sync_high_chg_pool_service as sync_high_chg_pool_service
|
|
47
47
|
import mns_scheduler.zt.high_chg.sync_high_chg_real_time_quotes_service as sync_high_chg_real_time_quotes_service
|
|
48
48
|
import mns_scheduler.risk.self.wei_pan_stock_api as wei_pan_stock_api
|
|
49
|
+
import mns_scheduler.risk.transactions.transactions_check_api as transactions_check_api
|
|
49
50
|
|
|
50
51
|
|
|
51
52
|
# 同步交易日期任务完成
|
|
@@ -325,13 +326,15 @@ def sync_kpl_best_his_quotes():
|
|
|
325
326
|
logger.info('同步开盘啦当日精选指数行情数据任务完成')
|
|
326
327
|
|
|
327
328
|
|
|
328
|
-
#
|
|
329
|
+
# 同步高风险的股票
|
|
329
330
|
def sync_new_high_risk_stocks():
|
|
330
331
|
logger.info('同步被立案调查的股票')
|
|
331
332
|
register_and_investigate_stock_sync_api.sync_new_high_risk_stocks()
|
|
332
333
|
reason_detail = '微盘股拉黑'
|
|
333
334
|
concept_code_wei_pan = '883418'
|
|
334
335
|
wei_pan_stock_api.add_concept_to_lack_list(concept_code_wei_pan, reason_detail)
|
|
336
|
+
logger.info('同步交易类风险的股票')
|
|
337
|
+
transactions_check_api.transactions_check_task()
|
|
335
338
|
|
|
336
339
|
|
|
337
340
|
# 同步互动回答
|
|
@@ -99,6 +99,7 @@ mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py
|
|
|
99
99
|
mns_scheduler/risk/self/__init__.py
|
|
100
100
|
mns_scheduler/risk/self/wei_pan_stock_api.py
|
|
101
101
|
mns_scheduler/risk/transactions/__init__.py
|
|
102
|
+
mns_scheduler/risk/transactions/transactions_check_api.py
|
|
102
103
|
mns_scheduler/trade/__init__.py
|
|
103
104
|
mns_scheduler/trade/auto_ipo_buy_api.py
|
|
104
105
|
mns_scheduler/trade/auto_sell_service_api.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/app/ths_new_concept_sync_app.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/em/em_new_concept_his_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/em/em_new_concept_sync_web.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/company_info/company_constant_data.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/company_info/company_info_sync_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/company_info/de_list_stock_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/clean/kpl_concept_clean_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/clean/ths_concept_clean_api.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/common/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/concept/ths/sync_new_index/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/finance/test/fix_blask_list.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/hk/hk_company_info_sync_service_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/irm/stock_irm_cninfo_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/daily/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/k_line_info_clean_task.py
RENAMED
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/k_line/clean/week_month/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/index/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/symbol/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/kpl/selection/total/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/real_time/realtime_quotes_now_sync.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/major_violations/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/risk/self/wei_pan_stock_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/trade/auto_sell_service_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/connected_boards/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zt/zt_pool/zt_pool_sync_api.py
RENAMED
|
File without changes
|
|
File without changes
|
{mns-scheduler-1.0.9.0 → mns-scheduler-1.0.9.2}/mns_scheduler/zz_task/sync_realtime_quotes_task.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|