mns-scheduler 1.0.8.7__tar.gz → 1.0.9.0__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.8.7 → mns-scheduler-1.0.9.0}/PKG-INFO +1 -1
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/sync_financial_report_service_api.py +5 -5
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/test/fix_blask_list.py +3 -5
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -16
- mns-scheduler-1.0.9.0/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +28 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/compliance/__init__.py +0 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +65 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/financial/__init__.py +0 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/financial/annual_report_audit_check_api.py +43 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/financial/net_assets_check_api.py +54 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/financial/profit_income_check_api.py +75 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +1 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/financial_report_risk_check_api.py +42 -0
- mns-scheduler-1.0.9.0/mns_scheduler/risk/major_violations/__init__.py +0 -0
- {mns-scheduler-1.0.8.7/mns_scheduler/risk → mns-scheduler-1.0.9.0/mns_scheduler/risk/major_violations}/register_and_investigate_stock_sync_api.py +10 -6
- mns-scheduler-1.0.9.0/mns_scheduler/risk/self/__init__.py +0 -0
- {mns-scheduler-1.0.8.7/mns_scheduler/risk → mns-scheduler-1.0.9.0/mns_scheduler/risk/self}/wei_pan_stock_api.py +7 -1
- mns-scheduler-1.0.9.0/mns_scheduler/risk/transactions/__init__.py +0 -0
- mns-scheduler-1.0.9.0/mns_scheduler/zt/script/__init__.py +7 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zz_task/data_sync_task.py +6 -5
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler.egg-info/SOURCES.txt +15 -4
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/setup.py +1 -1
- mns-scheduler-1.0.8.7/mns_scheduler/finance/financial_high_risk_stock_clean_service_api.py +0 -202
- mns-scheduler-1.0.8.7/mns_scheduler/risk/stock_equity_mortgage_sync_api.py +0 -32
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/README.md +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/app/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/app/ths_new_concept_sync_app.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/em/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/em/em_new_concept_his_sync.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/em/em_new_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/em/em_new_concept_sync_web.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/wen_cai/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/backup/wen_cai/wen_cai_concept_sync.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/big_deal/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/company_info/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/company_info/company_constant_data.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/company_info/company_info_sync_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/company_info/de_list_stock_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/clean/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/common/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_by_ak_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/sync_new_index/sync_ths_new_concept_by_web_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/db/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/db/col_move_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/dt/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/finance_common_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/test/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/hk/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/irm/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/irm/api/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/sync/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/sync/daily_week_month_line_sync.py +0 -0
- {mns-scheduler-1.0.8.7/mns_scheduler/lhb → mns-scheduler-1.0.9.0/mns_scheduler/k_line/test}/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
- {mns-scheduler-1.0.8.7/mns_scheduler/open → mns-scheduler-1.0.9.0/mns_scheduler/lhb}/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
- {mns-scheduler-1.0.8.7/mns_scheduler/risk → mns-scheduler-1.0.9.0/mns_scheduler/open}/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/real_time/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/real_time/realtime_quotes_now_create_db_index.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/real_time/realtime_quotes_now_sync.py +0 -0
- {mns-scheduler-1.0.8.7/mns_scheduler/zt/script → mns-scheduler-1.0.9.0/mns_scheduler/risk}/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/trade/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/trade/sync_position_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zb/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/export/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/high_chg/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/open_data/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zt/zt_pool/zt_pool_sync_api.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zz_task/__init__.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/zz_task/sync_realtime_quotes_task.py +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/setup.cfg +0 -0
|
@@ -13,10 +13,10 @@ from mns_common.db.MongodbUtil import MongodbUtil
|
|
|
13
13
|
from loguru import logger
|
|
14
14
|
import \
|
|
15
15
|
mns_scheduler.finance.em_financial_asset_liability_sync_service_api as em_financial_asset_liability_sync_service_api
|
|
16
|
-
import mns_scheduler.
|
|
16
|
+
import mns_scheduler.risk.financial_report_risk_check_api as financial_report_risk_check_api
|
|
17
17
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
18
18
|
import mns_scheduler.finance.finance_common_api as finance_common_api
|
|
19
|
-
|
|
19
|
+
import mns_scheduler.risk.compliance.undisclosed_annual_report_api as undisclosed_annual_report_api
|
|
20
20
|
mongodb_util = MongodbUtil('27017')
|
|
21
21
|
|
|
22
22
|
|
|
@@ -59,7 +59,7 @@ def sync_financial_report():
|
|
|
59
59
|
sync_profit_report(period_time, sync_time, period)
|
|
60
60
|
sync_asset_liability_report(period_time, sync_time, period)
|
|
61
61
|
# 未出报告check
|
|
62
|
-
|
|
62
|
+
undisclosed_annual_report_api.un_disclosed_report_check(sync_time, now_year, period, period_time)
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
# 同步资产表
|
|
@@ -81,7 +81,7 @@ def sync_asset_liability_report(period_time, sync_time, period):
|
|
|
81
81
|
mongodb_util.insert_mongo(new_asset_df, db_name_constant.EM_STOCK_ASSET_LIABILITY)
|
|
82
82
|
|
|
83
83
|
# 年报审核
|
|
84
|
-
|
|
84
|
+
financial_report_risk_check_api.financial_report_check(new_asset_df, period_time, period,
|
|
85
85
|
db_name_constant.EM_STOCK_ASSET_LIABILITY)
|
|
86
86
|
|
|
87
87
|
except Exception as e:
|
|
@@ -103,7 +103,7 @@ def sync_profit_report(period_time, sync_time, period):
|
|
|
103
103
|
mongodb_util.insert_mongo(new_profit_df, db_name_constant.EM_STOCK_PROFIT)
|
|
104
104
|
|
|
105
105
|
# 年报审核
|
|
106
|
-
|
|
106
|
+
financial_report_risk_check_api.financial_report_check(new_profit_df, period_time,
|
|
107
107
|
period, db_name_constant.EM_STOCK_PROFIT)
|
|
108
108
|
except Exception as e:
|
|
109
109
|
logger.error("同步利润表异常:{},{},{}", symbol, period_time, e)
|
{mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/finance/test/fix_blask_list.py
RENAMED
|
@@ -6,13 +6,11 @@ end = file_path.index('mns') + 16
|
|
|
6
6
|
project_path = file_path[0:end]
|
|
7
7
|
sys.path.append(project_path)
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
11
10
|
|
|
12
11
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
13
12
|
|
|
14
|
-
import mns_scheduler.
|
|
15
|
-
|
|
13
|
+
import mns_scheduler.risk.financial_report_risk_check_api as financial_report_risk_check_api
|
|
16
14
|
|
|
17
15
|
mongodb_util = MongodbUtil('27017')
|
|
18
16
|
|
|
@@ -28,8 +26,8 @@ def fix_profit_black_list():
|
|
|
28
26
|
em_stock_one_df = em_stock_profit_df_list.loc[
|
|
29
27
|
em_stock_profit_df_list['SECURITY_CODE'] == em_stock_one.SECURITY_CODE]
|
|
30
28
|
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
financial_report_risk_check_api.financial_report_check(em_stock_one_df, period_time, period,
|
|
30
|
+
report_type)
|
|
33
31
|
|
|
34
32
|
|
|
35
33
|
if __name__ == '__main__':
|
{mns-scheduler-1.0.8.7 → mns-scheduler-1.0.9.0}/mns_scheduler/k_line/clean/k_line_info_clean_task.py
RENAMED
|
@@ -176,19 +176,3 @@ def create_k_line_index():
|
|
|
176
176
|
mongodb_util.create_index('k_line_info', [("str_day", 1), ("symbol", 1)])
|
|
177
177
|
|
|
178
178
|
|
|
179
|
-
def clean_history_data():
|
|
180
|
-
query = {"$and": [{"trade_date": {"$gte": '2023-11-06'}}, {"trade_date": {"$lte": '2023-11-16'}}]}
|
|
181
|
-
trade_date_list_df = mongodb_util.find_query_data('trade_date_list', query)
|
|
182
|
-
trade_date_list_df = trade_date_list_df.sort_values(by=['trade_date'], ascending=False)
|
|
183
|
-
for trade_data_one in trade_date_list_df.itertuples():
|
|
184
|
-
try:
|
|
185
|
-
sync_k_line_info_task(trade_data_one.trade_date)
|
|
186
|
-
logger.info("清洗数据到:{}", trade_data_one.trade_date)
|
|
187
|
-
except BaseException as e:
|
|
188
|
-
logger.error("发生异常:{},{}", trade_data_one.trade_date, e)
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if __name__ == '__main__':
|
|
192
|
-
sync_k_line_info("2024-06-03", None)
|
|
193
|
-
# clean_history_data()
|
|
194
|
-
# sync_k_line_info("2023-12-22")
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
9
|
+
from loguru import logger
|
|
10
|
+
import mns_scheduler.k_line.clean.k_line_info_clean_task as k_line_info_clean_task
|
|
11
|
+
|
|
12
|
+
mongodb_util = MongodbUtil('27017')
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def clean_history_data():
|
|
16
|
+
query = {"$and": [{"trade_date": {"$gte": '2023-11-06'}}, {"trade_date": {"$lte": '2024-05-29'}}]}
|
|
17
|
+
trade_date_list_df = mongodb_util.find_query_data('trade_date_list', query)
|
|
18
|
+
trade_date_list_df = trade_date_list_df.sort_values(by=['trade_date'], ascending=False)
|
|
19
|
+
for trade_data_one in trade_date_list_df.itertuples():
|
|
20
|
+
try:
|
|
21
|
+
k_line_info_clean_task.sync_k_line_info_task(trade_data_one.trade_date)
|
|
22
|
+
logger.info("清洗数据到:{}", trade_data_one.trade_date)
|
|
23
|
+
except BaseException as e:
|
|
24
|
+
logger.error("发生异常:{},{}", trade_data_one.trade_date, e)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
if __name__ == '__main__':
|
|
28
|
+
clean_history_data()
|
|
File without changes
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
import mns_common.component.self_choose.black_list_service_api as black_list_service_api
|
|
3
|
+
import mns_scheduler.finance.finance_common_api as finance_common_api
|
|
4
|
+
from loguru import logger
|
|
5
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
6
|
+
import mns_common.component.trade_date.trade_date_common_service_api as trade_date_common_service_api
|
|
7
|
+
import pandas as pd
|
|
8
|
+
from mns_common.constant.black_list_classify_enum import BlackClassify
|
|
9
|
+
import mns_common.component.company.company_common_service_api as company_common_service_api
|
|
10
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
11
|
+
|
|
12
|
+
# 最迟出报告的交易天数
|
|
13
|
+
LATE_REPORT_DAYS = 3
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# 未出财报检查
|
|
17
|
+
def un_disclosed_report_check(sync_time, now_year, period, period_time):
|
|
18
|
+
un_report_asset_df = finance_common_api.find_un_report_symbol(period_time,
|
|
19
|
+
db_name_constant.EM_STOCK_ASSET_LIABILITY)
|
|
20
|
+
un_report_profit_df = finance_common_api.find_un_report_symbol(period_time,
|
|
21
|
+
db_name_constant.EM_STOCK_PROFIT)
|
|
22
|
+
un_report_df = pd.concat([un_report_asset_df, un_report_profit_df])
|
|
23
|
+
if period == 4 or period == 1:
|
|
24
|
+
last_report_day = str(now_year) + "-05-01"
|
|
25
|
+
elif period == 2:
|
|
26
|
+
last_report_day = str(now_year) + "-07-01"
|
|
27
|
+
elif period == 3:
|
|
28
|
+
last_report_day = str(now_year) + "-10-01"
|
|
29
|
+
max_report_day = trade_date_common_service_api.get_before_trade_date(last_report_day, LATE_REPORT_DAYS)
|
|
30
|
+
all_company_info = company_common_service_api.get_company_info_industry_list_date()
|
|
31
|
+
if max_report_day >= sync_time:
|
|
32
|
+
|
|
33
|
+
for un_asset_one in un_report_df.itertuples():
|
|
34
|
+
symbol = un_asset_one.symbol
|
|
35
|
+
company_info_one = all_company_info.loc[all_company_info['_id'] == symbol]
|
|
36
|
+
list_date = list(company_info_one['list_date'])[0]
|
|
37
|
+
list_date = str(list_date)
|
|
38
|
+
list_date_time = date_handle_util.add_date_day(list_date[0:8], 0)
|
|
39
|
+
list_date_str = list_date_time.strftime('%Y-%m-%d')
|
|
40
|
+
if max_report_day < list_date_str:
|
|
41
|
+
continue
|
|
42
|
+
id_key = symbol + "_" + period_time + "_" + BlackClassify.UNDISCLOSED_REPORT.level_code
|
|
43
|
+
name = un_asset_one.name
|
|
44
|
+
now_date = datetime.now()
|
|
45
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
46
|
+
try:
|
|
47
|
+
|
|
48
|
+
black_list_service_api.save_black_stock(id_key,
|
|
49
|
+
symbol,
|
|
50
|
+
name,
|
|
51
|
+
str_day,
|
|
52
|
+
sync_time,
|
|
53
|
+
'未披露财务报告',
|
|
54
|
+
'未披露财务报告',
|
|
55
|
+
'',
|
|
56
|
+
BlackClassify.UNDISCLOSED_REPORT.up_level_code,
|
|
57
|
+
BlackClassify.UNDISCLOSED_REPORT.up_level_name,
|
|
58
|
+
BlackClassify.UNDISCLOSED_REPORT.level_code,
|
|
59
|
+
BlackClassify.UNDISCLOSED_REPORT.level_name)
|
|
60
|
+
except Exception as e:
|
|
61
|
+
logger.error("更新未出报告异常:{},{},{}", symbol, period_time, e)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
if __name__ == '__main__':
|
|
65
|
+
un_disclosed_report_check('2024-04-20', 2024, 4, '2023-12-31 00:00:00')
|
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
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.component.self_choose.black_list_service_api as black_list_service_api
|
|
9
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
10
|
+
from datetime import datetime
|
|
11
|
+
from mns_common.constant.black_list_classify_enum import BlackClassify
|
|
12
|
+
|
|
13
|
+
# 年报审计意见check
|
|
14
|
+
mongodb_util = MongodbUtil('27017')
|
|
15
|
+
# 审核标准意见
|
|
16
|
+
OPINION_TYPE = "标准无保留意见"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def annual_report_audit_check(new_report_df, period_time):
|
|
20
|
+
new_report_one_df = new_report_df.loc[new_report_df['REPORT_DATE'] == period_time]
|
|
21
|
+
# 审核意见
|
|
22
|
+
opinion_type = list(new_report_one_df['OPINION_TYPE'])[0]
|
|
23
|
+
symbol = list(new_report_one_df['SECURITY_CODE'])[0]
|
|
24
|
+
name = list(new_report_one_df['SECURITY_NAME_ABBR'])[0]
|
|
25
|
+
now_date = datetime.now()
|
|
26
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
27
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
28
|
+
|
|
29
|
+
# 年报有问题
|
|
30
|
+
if opinion_type != OPINION_TYPE:
|
|
31
|
+
id_key = symbol + "_" + period_time + "_" + BlackClassify.AUDIT_PROBLEM.level_code
|
|
32
|
+
black_list_service_api.save_black_stock(id_key,
|
|
33
|
+
symbol,
|
|
34
|
+
name,
|
|
35
|
+
str_day,
|
|
36
|
+
str_now_date,
|
|
37
|
+
'年报审计有问题:' + "[" + str(opinion_type) + "]",
|
|
38
|
+
'年报审计有问题',
|
|
39
|
+
'',
|
|
40
|
+
BlackClassify.AUDIT_PROBLEM.up_level_code,
|
|
41
|
+
BlackClassify.AUDIT_PROBLEM.up_level_name,
|
|
42
|
+
BlackClassify.AUDIT_PROBLEM.level_code,
|
|
43
|
+
BlackClassify.AUDIT_PROBLEM.level_name)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
import mns_common.component.self_choose.black_list_service_api as black_list_service_api
|
|
3
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
4
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
5
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
6
|
+
from mns_common.constant.black_list_classify_enum import BlackClassify
|
|
7
|
+
|
|
8
|
+
mongodb_util = MongodbUtil('27017')
|
|
9
|
+
# 最大负债比
|
|
10
|
+
MAX_LIABILITY_RATIO = 90
|
|
11
|
+
# 负载超过90%时候最小净资产
|
|
12
|
+
MIN_NET_ASSET = 1000000000
|
|
13
|
+
# 排除校验负债比的行业
|
|
14
|
+
EXCLUDE_INDUSTRY = ['保险', '银行', '证券']
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
# 负债比校验| 净资产check
|
|
18
|
+
def net_assets_check(report_type, new_report_df, period_time):
|
|
19
|
+
if report_type == db_name_constant.EM_STOCK_ASSET_LIABILITY:
|
|
20
|
+
new_report_df = new_report_df.sort_values(by=['REPORT_DATE'], ascending=False)
|
|
21
|
+
new_report_one_df = new_report_df.iloc[0:1]
|
|
22
|
+
# 负债比
|
|
23
|
+
liability_ratio = list(new_report_one_df['liability_ratio'])[0]
|
|
24
|
+
# 净资产
|
|
25
|
+
net_asset = round(list(new_report_one_df['TOTAL_ASSETS'])[0] - list(new_report_one_df['TOTAL_LIABILITIES'])[0],
|
|
26
|
+
2)
|
|
27
|
+
|
|
28
|
+
symbol = list(new_report_one_df['SECURITY_CODE'])[0]
|
|
29
|
+
name = list(new_report_one_df['SECURITY_NAME_ABBR'])[0]
|
|
30
|
+
now_date = datetime.now()
|
|
31
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
32
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
33
|
+
id_key = symbol + "_" + period_time + "_" + BlackClassify.FINANCIAL_PROBLEM_DEBT.level_code
|
|
34
|
+
|
|
35
|
+
query_company = {'_id': symbol, 'industry': {'$in': EXCLUDE_INDUSTRY}}
|
|
36
|
+
if mongodb_util.exist_data_query(db_name_constant.COMPANY_INFO, query_company):
|
|
37
|
+
return None
|
|
38
|
+
|
|
39
|
+
if liability_ratio >= MAX_LIABILITY_RATIO:
|
|
40
|
+
black_list_service_api.save_black_stock(id_key,
|
|
41
|
+
symbol,
|
|
42
|
+
name,
|
|
43
|
+
str_day,
|
|
44
|
+
str_now_date,
|
|
45
|
+
'负债过高:' + "[" + str(
|
|
46
|
+
liability_ratio) + "]" + "," + "净资产:"
|
|
47
|
+
+ str(round(net_asset / common_service_fun_api.HUNDRED_MILLION,
|
|
48
|
+
0)) + "亿",
|
|
49
|
+
'负债过高:' + "[" + str(liability_ratio) + "]",
|
|
50
|
+
'',
|
|
51
|
+
BlackClassify.FINANCIAL_PROBLEM_DEBT.up_level_code,
|
|
52
|
+
BlackClassify.FINANCIAL_PROBLEM_DEBT.up_level_name,
|
|
53
|
+
BlackClassify.FINANCIAL_PROBLEM_DEBT.level_code,
|
|
54
|
+
BlackClassify.FINANCIAL_PROBLEM_DEBT.level_name)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
from datetime import datetime
|
|
4
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
5
|
+
import mns_common.component.self_choose.black_list_service_api as black_list_service_api
|
|
6
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
7
|
+
from mns_common.constant.black_list_classify_enum import BlackClassify
|
|
8
|
+
|
|
9
|
+
file_path = os.path.abspath(__file__)
|
|
10
|
+
end = file_path.index('mns') + 16
|
|
11
|
+
project_path = file_path[0:end]
|
|
12
|
+
sys.path.append(project_path)
|
|
13
|
+
|
|
14
|
+
# 利润为负的时候最小营业收入 主板 3.2亿
|
|
15
|
+
MIN_INCOME_MAIN = 320000000
|
|
16
|
+
# 利润为负的时候最小营业收入 科创 创业 1.2亿
|
|
17
|
+
MIN_INCOME_SUB = 120000000
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# 营收利润check
|
|
21
|
+
|
|
22
|
+
def profit_income_check(new_report_df, period_time, report_type):
|
|
23
|
+
new_report_one_df = new_report_df.loc[new_report_df['REPORT_DATE'] == period_time]
|
|
24
|
+
symbol = list(new_report_one_df['SECURITY_CODE'])[0]
|
|
25
|
+
name = list(new_report_one_df['SECURITY_NAME_ABBR'])[0]
|
|
26
|
+
now_date = datetime.now()
|
|
27
|
+
str_day = now_date.strftime('%Y-%m-%d')
|
|
28
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
29
|
+
|
|
30
|
+
if report_type == db_name_constant.EM_STOCK_PROFIT:
|
|
31
|
+
# 利润总额 净利润 扣除非经常性损益后的净利润 三者最小为负
|
|
32
|
+
# 利润总额
|
|
33
|
+
total_profit = list(new_report_one_df['TOTAL_PROFIT'])[0]
|
|
34
|
+
# 净利润
|
|
35
|
+
net_profit = list(new_report_one_df['NETPROFIT'])[0]
|
|
36
|
+
# 营业利润
|
|
37
|
+
operate_profit = list(new_report_one_df['OPERATE_PROFIT'])[0]
|
|
38
|
+
# 持续经营净利润
|
|
39
|
+
continued_profit = list(new_report_one_df['CONTINUED_NETPROFIT'])[0]
|
|
40
|
+
# 归属于母公司股东的净利润
|
|
41
|
+
parent_profit = list(new_report_one_df['PARENT_NETPROFIT'])[0]
|
|
42
|
+
# 扣除非经常性损益后的净利润
|
|
43
|
+
deduct_parent_profit = list(new_report_one_df['DEDUCT_PARENT_NETPROFIT'])[0]
|
|
44
|
+
# 营业总收入
|
|
45
|
+
total_operate_income = list(new_report_one_df['TOTAL_OPERATE_INCOME'])[0]
|
|
46
|
+
if total_operate_income == 0:
|
|
47
|
+
# 营业收入
|
|
48
|
+
total_operate_income = list(new_report_one_df['OPERATE_INCOME'])[0]
|
|
49
|
+
|
|
50
|
+
# 最小利润收入
|
|
51
|
+
min_profit = min(total_profit, net_profit, operate_profit,
|
|
52
|
+
continued_profit, parent_profit, deduct_parent_profit)
|
|
53
|
+
if min_profit < 0:
|
|
54
|
+
|
|
55
|
+
classification = common_service_fun_api.classify_symbol_one(symbol)
|
|
56
|
+
if ((classification in ['S', 'H'] and total_operate_income < MIN_INCOME_MAIN)
|
|
57
|
+
| (classification in ['K', 'C'] and total_operate_income < MIN_INCOME_SUB)):
|
|
58
|
+
id_key = symbol + "_" + period_time + "_" + BlackClassify.FINANCIAL_PROBLEM_PROFIT.level_code
|
|
59
|
+
min_profit = round(min_profit / common_service_fun_api.TEN_THOUSAND, 1)
|
|
60
|
+
total_operate_income = round(total_operate_income / common_service_fun_api.HUNDRED_MILLION, 1)
|
|
61
|
+
|
|
62
|
+
black_list_service_api.save_black_stock(id_key,
|
|
63
|
+
symbol,
|
|
64
|
+
name,
|
|
65
|
+
str_day,
|
|
66
|
+
str_now_date,
|
|
67
|
+
'年报:利润:' + '[' + str(min_profit) + '万]' + '收入:' + str(
|
|
68
|
+
total_operate_income) + '[' + '亿元]--' + '触发退市风险',
|
|
69
|
+
'年报:利润:' + '[' + str(min_profit) + '万]' + '收入:' + str(
|
|
70
|
+
total_operate_income) + '[' + '亿元]--' + '触发退市风险',
|
|
71
|
+
'',
|
|
72
|
+
BlackClassify.FINANCIAL_PROBLEM_PROFIT.up_level_code,
|
|
73
|
+
BlackClassify.FINANCIAL_PROBLEM_PROFIT.up_level_name,
|
|
74
|
+
BlackClassify.FINANCIAL_PROBLEM_PROFIT.level_code,
|
|
75
|
+
BlackClassify.FINANCIAL_PROBLEM_PROFIT.level_name)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# 股权质押风险
|
|
@@ -0,0 +1,42 @@
|
|
|
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_scheduler.risk.financial.net_assets_check_api as net_assets_check_api
|
|
9
|
+
import mns_scheduler.risk.financial.annual_report_audit_check_api as annual_report_audit_check_api
|
|
10
|
+
import mns_scheduler.risk.financial.profit_income_check_api as profit_income_check_api
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# 1.无保留意见/标准报告:报告没问题。(没有发现造假,但也不能保证为真)
|
|
14
|
+
#
|
|
15
|
+
# 2.带强调事项段的无保留意见:报告没问题,但是有亏损获对其可持续经营有重大疑虑(可能造假,至少是在粉饰报表)
|
|
16
|
+
#
|
|
17
|
+
# 3.保留意见报告:有问题,财务造假
|
|
18
|
+
#
|
|
19
|
+
# 4.否定意见报告:有很大问题
|
|
20
|
+
#
|
|
21
|
+
# 5.无法表示意见报告:不让查
|
|
22
|
+
#
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
#### 退市新规 ####
|
|
26
|
+
# 1 股价类:连续20个交易日估价低于1元
|
|
27
|
+
# 2 市值类: 主板小于5亿、创业板3亿
|
|
28
|
+
# 3 财务类: (1) 利润总额 净利润 扣非净利润三者最小值为负 且营业收入小于3亿 创业板营业收入小于1元
|
|
29
|
+
# (2) 资不抵债
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
# 财报审核
|
|
33
|
+
def financial_report_check(new_report_df, period_time, period, report_type):
|
|
34
|
+
# 年报审核
|
|
35
|
+
if period == 4:
|
|
36
|
+
# 年报审计意见
|
|
37
|
+
annual_report_audit_check_api.annual_report_audit_check(new_report_df, period_time)
|
|
38
|
+
# 年报收入利润check
|
|
39
|
+
profit_income_check_api.profit_income_check(new_report_df, period_time, report_type)
|
|
40
|
+
|
|
41
|
+
# 负债过高
|
|
42
|
+
net_assets_check_api.net_assets_check(report_type, new_report_df, period_time)
|
|
File without changes
|
|
@@ -14,7 +14,7 @@ from loguru import logger
|
|
|
14
14
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
15
15
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
16
16
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
17
|
-
|
|
17
|
+
from mns_common.constant.black_list_classify_enum import BlackClassify
|
|
18
18
|
mongodb_util = MongodbUtil('27017')
|
|
19
19
|
|
|
20
20
|
|
|
@@ -62,7 +62,7 @@ def sync_all_investigate_stocks(page_size, search_key, begin_day, end_day):
|
|
|
62
62
|
|
|
63
63
|
# 立案调查的股票
|
|
64
64
|
def sync_new_high_risk_stocks():
|
|
65
|
-
before_days =
|
|
65
|
+
before_days = 500
|
|
66
66
|
const_num = 30
|
|
67
67
|
init_date = datetime.now()
|
|
68
68
|
str_day = init_date.strftime('%Y-%m-%d')
|
|
@@ -109,13 +109,17 @@ def sync_new_high_risk_stocks():
|
|
|
109
109
|
high_risk_stocks_one.announcementTitle,
|
|
110
110
|
high_risk_stocks_one.announcementTitle,
|
|
111
111
|
announce_url,
|
|
112
|
-
|
|
112
|
+
BlackClassify.MAJOR_VIOLATIONS.up_level_code,
|
|
113
|
+
BlackClassify.MAJOR_VIOLATIONS.up_level_name,
|
|
114
|
+
BlackClassify.REGISTER_INVESTIGATE.level_code,
|
|
115
|
+
BlackClassify.REGISTER_INVESTIGATE.level_name,
|
|
116
|
+
)
|
|
113
117
|
except Exception as e:
|
|
114
118
|
logger.error("保存风险警示股票异常:{},{}", symbol, e)
|
|
115
119
|
|
|
116
120
|
|
|
117
121
|
if __name__ == '__main__':
|
|
118
122
|
sync_new_high_risk_stocks()
|
|
119
|
-
result_df = sync_all_investigate_stocks(30, '立案', '2023-01-01', '2024-
|
|
120
|
-
result_df = result_df.sort_values(by=['announcementTime'], ascending=False)
|
|
121
|
-
print(result_df)
|
|
123
|
+
# result_df = sync_all_investigate_stocks(30, '立案', '2023-01-01', '2024-06-15')
|
|
124
|
+
# result_df = result_df.sort_values(by=['announcementTime'], ascending=False)
|
|
125
|
+
# print(result_df)
|
|
File without changes
|
|
@@ -11,6 +11,7 @@ import mns_common.component.self_choose.black_list_service_api as black_list_ser
|
|
|
11
11
|
from datetime import datetime
|
|
12
12
|
from loguru import logger
|
|
13
13
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
14
|
+
from mns_common.constant.black_list_classify_enum import BlackClassify
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
def add_concept_to_lack_list(concept_code, reason):
|
|
@@ -34,7 +35,12 @@ def add_concept_to_lack_list(concept_code, reason):
|
|
|
34
35
|
reason,
|
|
35
36
|
reason,
|
|
36
37
|
'',
|
|
37
|
-
|
|
38
|
+
BlackClassify.SELF_SHIELD_OTHER.up_level_code,
|
|
39
|
+
BlackClassify.SELF_SHIELD_OTHER.up_level_name,
|
|
40
|
+
BlackClassify.SELF_SHIELD_OTHER.level_code,
|
|
41
|
+
BlackClassify.SELF_SHIELD_OTHER.level_name,
|
|
42
|
+
|
|
43
|
+
)
|
|
38
44
|
except BaseException as e:
|
|
39
45
|
logger.error("概念拉黑异常:{}", e)
|
|
40
46
|
|
|
File without changes
|
|
@@ -6,7 +6,8 @@ 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_scheduler.risk.register_and_investigate_stock_sync_api
|
|
9
|
+
import mns_scheduler.risk.major_violations.register_and_investigate_stock_sync_api \
|
|
10
|
+
as register_and_investigate_stock_sync_api
|
|
10
11
|
from loguru import logger
|
|
11
12
|
from apscheduler.schedulers.blocking import BlockingScheduler
|
|
12
13
|
from datetime import datetime
|
|
@@ -44,7 +45,7 @@ import mns_scheduler.irm.stock_irm_cninfo_service as stock_irm_cninfo_service
|
|
|
44
45
|
import mns_scheduler.open.sync_one_day_open_data_to_db_service as sync_one_day_open_data_to_db_service
|
|
45
46
|
import mns_scheduler.zt.high_chg.sync_high_chg_pool_service as sync_high_chg_pool_service
|
|
46
47
|
import mns_scheduler.zt.high_chg.sync_high_chg_real_time_quotes_service as sync_high_chg_real_time_quotes_service
|
|
47
|
-
import mns_scheduler.risk.wei_pan_stock_api as wei_pan_stock_api
|
|
48
|
+
import mns_scheduler.risk.self.wei_pan_stock_api as wei_pan_stock_api
|
|
48
49
|
|
|
49
50
|
|
|
50
51
|
# 同步交易日期任务完成
|
|
@@ -97,7 +98,7 @@ def col_data_move():
|
|
|
97
98
|
logger.info('当天实时数据备份:{}', str_day)
|
|
98
99
|
if trade_date_common_service_api.is_trade_day(str_day):
|
|
99
100
|
mac_address = ip_util.get_mac_address()
|
|
100
|
-
if mac_address is not None and mac_address == ip_util.
|
|
101
|
+
if mac_address is not None and mac_address == ip_util.WINDOWS_MAC_ADDRESS_CD:
|
|
101
102
|
col_move_service.sync_col_move(str_day)
|
|
102
103
|
else:
|
|
103
104
|
# 删除最早一天数据
|
|
@@ -159,7 +160,7 @@ def sync_toady_stock_zt_pool():
|
|
|
159
160
|
# 同步高涨幅实时行情
|
|
160
161
|
sync_high_chg_real_time_quotes_service.sync_high_chg_real_time_quotes(str_day)
|
|
161
162
|
# 同步高涨幅列表
|
|
162
|
-
sync_high_chg_pool_service.sync_stock_high_chg_pool_list(str_day,None)
|
|
163
|
+
sync_high_chg_pool_service.sync_stock_high_chg_pool_list(str_day, None)
|
|
163
164
|
|
|
164
165
|
|
|
165
166
|
# 计算下一个交易日k线数据
|
|
@@ -426,4 +427,4 @@ print('定时任务启动成功')
|
|
|
426
427
|
blockingScheduler.start()
|
|
427
428
|
#
|
|
428
429
|
# if __name__ == '__main__':
|
|
429
|
-
#
|
|
430
|
+
# col_data_move()
|
|
@@ -43,7 +43,6 @@ mns_scheduler/finance/__init__.py
|
|
|
43
43
|
mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py
|
|
44
44
|
mns_scheduler/finance/em_financial_profit_sync_service_api.py
|
|
45
45
|
mns_scheduler/finance/finance_common_api.py
|
|
46
|
-
mns_scheduler/finance/financial_high_risk_stock_clean_service_api.py
|
|
47
46
|
mns_scheduler/finance/sync_financial_report_service_api.py
|
|
48
47
|
mns_scheduler/finance/test/__init__.py
|
|
49
48
|
mns_scheduler/finance/test/fix_blask_list.py
|
|
@@ -68,6 +67,8 @@ mns_scheduler/k_line/hot_stocks/__init__.py
|
|
|
68
67
|
mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py
|
|
69
68
|
mns_scheduler/k_line/sync/__init__.py
|
|
70
69
|
mns_scheduler/k_line/sync/daily_week_month_line_sync.py
|
|
70
|
+
mns_scheduler/k_line/test/__init__.py
|
|
71
|
+
mns_scheduler/k_line/test/k_line_info_clean_his_data.py
|
|
71
72
|
mns_scheduler/kpl/__init__.py
|
|
72
73
|
mns_scheduler/kpl/selection/__init__.py
|
|
73
74
|
mns_scheduler/kpl/selection/index/__init__.py
|
|
@@ -85,9 +86,19 @@ mns_scheduler/real_time/__init__.py
|
|
|
85
86
|
mns_scheduler/real_time/realtime_quotes_now_create_db_index.py
|
|
86
87
|
mns_scheduler/real_time/realtime_quotes_now_sync.py
|
|
87
88
|
mns_scheduler/risk/__init__.py
|
|
88
|
-
mns_scheduler/risk/
|
|
89
|
-
mns_scheduler/risk/
|
|
90
|
-
mns_scheduler/risk/
|
|
89
|
+
mns_scheduler/risk/financial_report_risk_check_api.py
|
|
90
|
+
mns_scheduler/risk/compliance/__init__.py
|
|
91
|
+
mns_scheduler/risk/compliance/undisclosed_annual_report_api.py
|
|
92
|
+
mns_scheduler/risk/financial/__init__.py
|
|
93
|
+
mns_scheduler/risk/financial/annual_report_audit_check_api.py
|
|
94
|
+
mns_scheduler/risk/financial/net_assets_check_api.py
|
|
95
|
+
mns_scheduler/risk/financial/profit_income_check_api.py
|
|
96
|
+
mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py
|
|
97
|
+
mns_scheduler/risk/major_violations/__init__.py
|
|
98
|
+
mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py
|
|
99
|
+
mns_scheduler/risk/self/__init__.py
|
|
100
|
+
mns_scheduler/risk/self/wei_pan_stock_api.py
|
|
101
|
+
mns_scheduler/risk/transactions/__init__.py
|
|
91
102
|
mns_scheduler/trade/__init__.py
|
|
92
103
|
mns_scheduler/trade/auto_ipo_buy_api.py
|
|
93
104
|
mns_scheduler/trade/auto_sell_service_api.py
|