mns-scheduler 1.4.5.6__tar.gz → 1.4.8.5__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.
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/PKG-INFO +1 -1
- mns_scheduler-1.4.8.5/mns_scheduler/company_info/em_stock_info/clean_em_us_hk_stock_info.py +30 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +17 -10
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py +62 -19
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/remote_data_sync_to_local.py +4 -5
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/sync_financial_report_service_task.py +15 -14
- mns_scheduler-1.4.5.6/mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py → mns_scheduler-1.4.8.5/mns_scheduler/finance/xue_qiu/sync_xue_qiu_finance_data.py +17 -7
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +1 -0
- mns_scheduler-1.4.8.5/mns_scheduler/kpl/theme/__init__.py +7 -0
- mns_scheduler-1.4.8.5/mns_scheduler/kpl/theme/kpl_theme_sync_service.py +258 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/self_choose/ths_self_choose_service.py +18 -2
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/tfp/stock_tfp_info_sync.py +27 -6
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zb/stock_zb_pool_sync.py +1 -1
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py +1 -1
- mns_scheduler-1.4.8.5/mns_scheduler/zt/zt_pool/em/__init__.py +7 -0
- mns_scheduler-1.4.5.6/mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py → mns_scheduler-1.4.8.5/mns_scheduler/zt/zt_pool/em/em_zt_pool_service.py +102 -210
- mns_scheduler-1.4.8.5/mns_scheduler/zt/zt_pool/em/em_zt_pool_sync_api.py +130 -0
- mns_scheduler-1.4.8.5/mns_scheduler/zt/zt_pool/ths/__init__.py +7 -0
- {mns_scheduler-1.4.5.6/mns_scheduler/zt/zt_pool → mns_scheduler-1.4.8.5/mns_scheduler/zt/zt_pool/ths}/ths_zt_pool_sync_api.py +7 -3
- mns_scheduler-1.4.8.5/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +79 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/compensation/compensate_task.py +8 -8
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/compensation/compensate_task_one_day.py +11 -11
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/data_sync_task.py +54 -22
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/SOURCES.txt +9 -3
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/setup.py +1 -1
- mns_scheduler-1.4.5.6/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +0 -61
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/README.md +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/auto_da_ban/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/auto_da_ban/auto_da_ban_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/clean/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/clean/company_info_clean_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/common/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/common/company_common_query_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/constant/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/constant/company_constant_data.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/de_list_stock/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/em_stock_info/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/sync/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/sync/company_info_set_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/sync/sync_company_info_task.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_announce_info_task.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_base_info_task.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_business_info_task.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_hold_info_task.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_industry_info_task.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/company_info/task/company_total_task.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/clean/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/common/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/detaill/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/col_move_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/db_status.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/col_move_script.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/db_move/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/db_move/col_move_one_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/local_mongo_util.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/remote_mongo_util.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/update/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/db/script/update/update_col_field.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/dt/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/em_financial_asset_liability_sync_service_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/em_financial_profit_sync_service_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/em/finance_common_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/xue_qiu/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/hk/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/hk/hk_industry_info_sync_service_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/ths/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/ths/ths_industry_index_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/industry/ths/ths_industry_sync_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/api/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/irm/stock_question_id_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/common/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/common/k_line_common_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/month_week_daily/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/sync_status/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/test/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/year_quarter/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/lhb/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/open/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/compliance/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/major_violations/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/self/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/test/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/transactions/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/self_choose/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_login/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_login/trader_auto_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/balance/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/balance/ths_account_balance_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/sync_position_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/task/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/task/trader_task_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/trade/tfp/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zb/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/export/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/high_chg/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/open_data/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/fix_error_deal_day.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/zz_task/compensation/__init__.py +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/setup.cfg +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
|
|
9
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
10
|
+
from loguru import logger
|
|
11
|
+
from datetime import datetime
|
|
12
|
+
import mns_common.constant.extra_income_db_name as extra_income_db_name
|
|
13
|
+
|
|
14
|
+
mongodb_util = MongodbUtil('27017')
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def clean_us_stock_concept_industry():
|
|
18
|
+
em_us_stock_info_df = mongodb_util.find_all_data(extra_income_db_name.EM_US_STOCK_INFO)
|
|
19
|
+
return em_us_stock_info_df
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
if __name__ == '__main__':
|
|
23
|
+
em_us_stock_info_test_df = clean_us_stock_concept_industry()
|
|
24
|
+
em_us_stock_info_test_industry_df = em_us_stock_info_test_df.loc[em_us_stock_info_test_df['industry'] != '-']
|
|
25
|
+
|
|
26
|
+
em_us_stock_info_test_no_industry_df = em_us_stock_info_test_df.loc[em_us_stock_info_test_df['industry'] == '-']
|
|
27
|
+
em_us_stock_info_test_no_industry_df = em_us_stock_info_test_no_industry_df.sort_values(by=['flow_mv'],
|
|
28
|
+
ascending=False)
|
|
29
|
+
|
|
30
|
+
print(em_us_stock_info_test_industry_df)
|
|
@@ -23,8 +23,8 @@ mongodb_util = MongodbUtil('27017')
|
|
|
23
23
|
|
|
24
24
|
def sync_all_em_stock_info():
|
|
25
25
|
logger.info("同步东方财富a,etf,kzz,us,hk,信息开始")
|
|
26
|
-
# 同步东方财富A股股票信息
|
|
27
|
-
sync_stock_info()
|
|
26
|
+
# # 同步东方财富A股股票信息
|
|
27
|
+
# sync_stock_info()
|
|
28
28
|
# 同步东方财富A股可转债信息
|
|
29
29
|
sync_kzz_info()
|
|
30
30
|
# 同步东方财富A股ETF信息
|
|
@@ -34,7 +34,7 @@ def sync_all_em_stock_info():
|
|
|
34
34
|
# 同步东方财富港股通信息
|
|
35
35
|
sync_hk_ggt_stock_info()
|
|
36
36
|
# 同步东方财富美股信息
|
|
37
|
-
sync_us_stock_info()
|
|
37
|
+
# sync_us_stock_info()
|
|
38
38
|
|
|
39
39
|
logger.info("同步东方财富a,etf,kzz,us,hk,信息完成")
|
|
40
40
|
|
|
@@ -48,6 +48,7 @@ def sync_kzz_info():
|
|
|
48
48
|
em_kzz_info = east_money_debt_api.get_kzz_real_time_quotes(30, 6)
|
|
49
49
|
em_kzz_info['_id'] = em_kzz_info['symbol']
|
|
50
50
|
em_kzz_info['sync_time'] = str_now_date
|
|
51
|
+
em_kzz_info = em_kzz_info.fillna(0)
|
|
51
52
|
mongodb_util.save_mongo(em_kzz_info, extra_income_db_name.EM_KZZ_INFO)
|
|
52
53
|
except BaseException as e:
|
|
53
54
|
logger.error("同步东方财富可转债信息异常:{}", e)
|
|
@@ -62,6 +63,7 @@ def sync_etf_info():
|
|
|
62
63
|
em_etf_info = east_money_etf_api.get_etf_real_time_quotes(30, 6)
|
|
63
64
|
em_etf_info['_id'] = em_etf_info['symbol']
|
|
64
65
|
em_etf_info['sync_time'] = str_now_date
|
|
66
|
+
em_etf_info = em_etf_info.fillna(0)
|
|
65
67
|
mongodb_util.save_mongo(em_etf_info, extra_income_db_name.EM_ETF_INFO)
|
|
66
68
|
except BaseException as e:
|
|
67
69
|
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
@@ -73,10 +75,11 @@ def sync_stock_info():
|
|
|
73
75
|
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
74
76
|
logger.error("同步东方财富股票信息")
|
|
75
77
|
try:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
78
|
+
em_stock_info = east_money_stock_a_v2_api.get_stock_real_time_quotes(60)
|
|
79
|
+
em_stock_info['_id'] = em_stock_info['symbol']
|
|
80
|
+
em_stock_info['sync_time'] = str_now_date
|
|
81
|
+
em_stock_info = em_stock_info.fillna(0)
|
|
82
|
+
mongodb_util.save_mongo(em_stock_info, extra_income_db_name.EM_A_STOCK_INFO)
|
|
80
83
|
except BaseException as e:
|
|
81
84
|
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
82
85
|
|
|
@@ -93,6 +96,7 @@ def sync_hk_stock_info():
|
|
|
93
96
|
em_hk_info = east_money_stock_hk_api.get_hk_real_time_quotes(30, em_cookie)
|
|
94
97
|
em_hk_info['_id'] = em_hk_info['symbol']
|
|
95
98
|
em_hk_info['sync_time'] = str_now_date
|
|
99
|
+
em_hk_info = em_hk_info.fillna(0)
|
|
96
100
|
mongodb_util.save_mongo(em_hk_info, extra_income_db_name.EM_HK_STOCK_INFO)
|
|
97
101
|
except BaseException as e:
|
|
98
102
|
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
@@ -109,6 +113,7 @@ def sync_hk_ggt_stock_info():
|
|
|
109
113
|
em_hk_gtt_info = east_money_stock_hk_gtt_api.get_ggt_real_time_quotes(em_cookie, 30, 6)
|
|
110
114
|
em_hk_gtt_info['_id'] = em_hk_gtt_info['symbol']
|
|
111
115
|
em_hk_gtt_info['sync_time'] = str_now_date
|
|
116
|
+
em_hk_gtt_info = em_hk_gtt_info.fillna(0)
|
|
112
117
|
mongodb_util.save_mongo(em_hk_gtt_info, extra_income_db_name.EM_HK_GGT_STOCK_INFO)
|
|
113
118
|
except BaseException as e:
|
|
114
119
|
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
@@ -120,14 +125,16 @@ def sync_us_stock_info():
|
|
|
120
125
|
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
121
126
|
logger.error("同步东方财富美股信息")
|
|
122
127
|
em_cookie = cookie_info_service.get_em_cookie()
|
|
123
|
-
us_stock_info = east_money_stock_us_api.
|
|
128
|
+
us_stock_info = east_money_stock_us_api.get_us_real_time_quotes(30, em_cookie)
|
|
124
129
|
us_stock_info['_id'] = us_stock_info['symbol']
|
|
125
130
|
us_stock_info['sync_time'] = str_now_date
|
|
126
|
-
|
|
131
|
+
|
|
132
|
+
us_stock_info = us_stock_info.fillna(0)
|
|
133
|
+
mongodb_util.save_mongo(us_stock_info, extra_income_db_name.US_STOCK_INFO_EM)
|
|
127
134
|
|
|
128
135
|
|
|
129
136
|
if __name__ == '__main__':
|
|
130
|
-
|
|
137
|
+
sync_all_em_stock_info()
|
|
131
138
|
# em_cookie = cookie_info_service.get_em_cookie()
|
|
132
139
|
# em_us_stock_info = east_money_stock_us_api.get_us_stock_real_time_quotes(em_cookie, None)
|
|
133
140
|
# em_us_stock_info['_id'] = em_us_stock_info['symbol']
|
{mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/concept/clean/ths_concept_clean_api.py
RENAMED
|
@@ -13,7 +13,7 @@ from loguru import logger
|
|
|
13
13
|
import mns_common.component.company.company_common_service_api as company_common_service_api
|
|
14
14
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
15
15
|
import mns_common.component.concept.ths_concept_common_service_api as ths_concept_common_service_api
|
|
16
|
-
import mns_common.
|
|
16
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
17
17
|
|
|
18
18
|
mongodb_util = MongodbUtil('27017')
|
|
19
19
|
|
|
@@ -102,32 +102,75 @@ def update_null_name():
|
|
|
102
102
|
ths_concept_list = ths_concept_list.sort_values(by=['_id'], ascending=False)
|
|
103
103
|
|
|
104
104
|
for concept_one in ths_concept_list.itertuples():
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
try:
|
|
106
|
+
concept_code = concept_one.symbol
|
|
107
|
+
name = concept_one.name
|
|
108
|
+
exist_url = concept_one.url
|
|
109
|
+
|
|
110
|
+
if bool(1 - is_valid_name(name)):
|
|
111
|
+
# 更新空字符串
|
|
112
|
+
update_one_ths_concept_name(concept_code)
|
|
113
|
+
time.sleep(10)
|
|
114
|
+
|
|
115
|
+
if exist_url == '' or pd.isna(exist_url):
|
|
116
|
+
url = 'http://q.10jqka.com.cn/thshy/detail/code/' + str(concept_code)
|
|
117
|
+
str_now_time = concept_one.str_day + " " + "00:00:00"
|
|
118
|
+
query_concept = {"symbol": concept_code}
|
|
119
|
+
new_values = {'$set': {"url": url, "str_now_time": str_now_time}}
|
|
120
|
+
mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
|
|
121
|
+
except BaseException as e:
|
|
122
|
+
logger.error("更新空字符串名字异常:{},{}", concept_code, str(e))
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# 更新一个概念 空字符串
|
|
126
|
+
def update_one_ths_concept_name(concept_code):
|
|
127
|
+
concept_name = ths_concept_index_web.get_concept_name(concept_code)
|
|
128
|
+
query_concept = {"symbol": concept_code}
|
|
129
|
+
new_values = {'$set': {"name": concept_name}}
|
|
130
|
+
mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
|
|
131
|
+
|
|
132
|
+
new_values_detail = {'$set': {"concept_name": concept_name}}
|
|
108
133
|
|
|
109
|
-
|
|
110
|
-
concept_name = ths_concept_index_web.get_concept_name(concept_code)
|
|
111
|
-
query_concept = {"symbol": concept_code}
|
|
112
|
-
new_values = {'$set': {"name": concept_name}}
|
|
113
|
-
mongodb_util.update_one_query(query_concept, new_values, 'ths_concept_list')
|
|
134
|
+
query_concept_detail = {"concept_code": concept_code}
|
|
114
135
|
|
|
115
|
-
|
|
136
|
+
mongodb_util.update_many(query_concept_detail, new_values_detail, 'ths_stock_concept_detail')
|
|
116
137
|
|
|
117
|
-
query_concept_detail = {"concept_code": concept_code}
|
|
118
138
|
|
|
119
|
-
|
|
120
|
-
|
|
139
|
+
# 更新ths 详情里面空名称的数据
|
|
140
|
+
def query_ths_detail_null_name():
|
|
141
|
+
query = {"$or": [{"concept_name": ""},
|
|
142
|
+
{"concept_name": " "},
|
|
143
|
+
{"concept_name": {"$exists": False}}]}
|
|
144
|
+
|
|
145
|
+
ths_stock_concept_detail_list_df = mongodb_util.find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query)
|
|
146
|
+
if data_frame_util.is_empty(ths_stock_concept_detail_list_df):
|
|
147
|
+
return
|
|
148
|
+
null_concept_code_list = set(ths_stock_concept_detail_list_df['concept_code'])
|
|
149
|
+
for null_concept_code in null_concept_code_list:
|
|
150
|
+
try:
|
|
151
|
+
update_one_ths_concept_name(null_concept_code)
|
|
152
|
+
except BaseException as e:
|
|
153
|
+
logger.error("更新空字符串名字异常:{},{}", null_concept_code, str(e))
|
|
154
|
+
|
|
121
155
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
156
|
+
def is_valid_name(name):
|
|
157
|
+
"""
|
|
158
|
+
接口专用:判断name是否为有效非空值
|
|
159
|
+
:param name: 待判断的变量(字符串/NaN/None/任意类型)
|
|
160
|
+
:return: 布尔值 True=有效非空,False=空/空格/NaN/无效
|
|
161
|
+
"""
|
|
162
|
+
# 1. 判断是否为 NaN(浮点型,且自身不等于自身)
|
|
163
|
+
if isinstance(name, float) and name != name:
|
|
164
|
+
return False
|
|
165
|
+
# 2. 判断是否为 None / 空字符串 / 纯空格字符串
|
|
166
|
+
if not name or not str(name).strip():
|
|
167
|
+
return False
|
|
168
|
+
# 3. 以上都不满足 → 有效非空值
|
|
169
|
+
return True
|
|
128
170
|
|
|
129
171
|
|
|
130
172
|
if __name__ == '__main__':
|
|
173
|
+
query_ths_detail_null_name()
|
|
131
174
|
# update_one_concept_relevance_industry(886095)
|
|
132
175
|
update_null_name()
|
|
133
176
|
logger.info("开始")
|
|
@@ -96,11 +96,10 @@ def sync_open_data():
|
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
if __name__ == '__main__':
|
|
99
|
-
sync_zt_data('
|
|
100
|
-
sync_zt_data('
|
|
101
|
-
sync_zt_data('
|
|
102
|
-
sync_zt_data('
|
|
103
|
-
sync_zt_data('2025-12-26')
|
|
99
|
+
sync_zt_data('2026-01-15')
|
|
100
|
+
sync_zt_data('2026-01-14')
|
|
101
|
+
sync_zt_data('2026-01-13')
|
|
102
|
+
sync_zt_data('2026-01-12')
|
|
104
103
|
remote_data()
|
|
105
104
|
# sync_zt_data('2025-08-26')
|
|
106
105
|
# sync_zt_data('2025-08-25')
|
|
@@ -17,7 +17,7 @@ import mns_scheduler.risk.financial_report_risk_check_api as financial_report_ri
|
|
|
17
17
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
18
18
|
import mns_scheduler.finance.em.finance_common_api as finance_common_api
|
|
19
19
|
import mns_scheduler.risk.compliance.undisclosed_annual_report_api as undisclosed_annual_report_api
|
|
20
|
-
import mns_scheduler.finance.xue_qiu.
|
|
20
|
+
import mns_scheduler.finance.xue_qiu.sync_xue_qiu_finance_data as sync_xue_qiu_fiance_data
|
|
21
21
|
|
|
22
22
|
mongodb_util = MongodbUtil('27017')
|
|
23
23
|
|
|
@@ -30,24 +30,25 @@ mongodb_util = MongodbUtil('27017')
|
|
|
30
30
|
# 3季报:每年10月1日--10月31日
|
|
31
31
|
# 4季报(年报) :每年1月1日--4月30日
|
|
32
32
|
|
|
33
|
-
def sync_financial_report():
|
|
33
|
+
def sync_financial_report(symbol_list):
|
|
34
34
|
now_date = datetime.now()
|
|
35
35
|
now_year = now_date.year
|
|
36
36
|
now_month = now_date.month
|
|
37
37
|
sync_time = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
38
38
|
|
|
39
39
|
if now_month in [1, 2, 3, 4]:
|
|
40
|
-
sync_xue_qiu_fiance_data.
|
|
40
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year - 1) + '年报', symbol_list)
|
|
41
41
|
|
|
42
42
|
# 年报
|
|
43
43
|
period = 4
|
|
44
44
|
period_time = str(now_year - 1) + "-12-31 00:00:00"
|
|
45
|
+
# 东财财报
|
|
45
46
|
sync_em_profit_report(period_time, sync_time, period)
|
|
46
47
|
sync_em_asset_liability_report(period_time, sync_time, period)
|
|
47
48
|
|
|
48
49
|
# 一季报
|
|
49
50
|
if now_month == 4:
|
|
50
|
-
sync_xue_qiu_fiance_data.
|
|
51
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '一季报', symbol_list)
|
|
51
52
|
|
|
52
53
|
period = 1
|
|
53
54
|
period_time = str(now_year) + "-03-31 00:00:00"
|
|
@@ -58,7 +59,7 @@ def sync_financial_report():
|
|
|
58
59
|
|
|
59
60
|
# 二季报
|
|
60
61
|
elif now_month in [7, 8]:
|
|
61
|
-
sync_xue_qiu_fiance_data.
|
|
62
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '中报', symbol_list)
|
|
62
63
|
|
|
63
64
|
period = 2
|
|
64
65
|
period_time = str(now_year) + "-06-30 00:00:00"
|
|
@@ -69,7 +70,7 @@ def sync_financial_report():
|
|
|
69
70
|
|
|
70
71
|
# 三季报
|
|
71
72
|
elif now_month == 10:
|
|
72
|
-
sync_xue_qiu_fiance_data.
|
|
73
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '三季报', symbol_list)
|
|
73
74
|
|
|
74
75
|
period = 3
|
|
75
76
|
period_time = str(now_year) + "-09-30 00:00:00"
|
|
@@ -78,8 +79,8 @@ def sync_financial_report():
|
|
|
78
79
|
|
|
79
80
|
elif now_month == 5:
|
|
80
81
|
|
|
81
|
-
sync_xue_qiu_fiance_data.
|
|
82
|
-
sync_xue_qiu_fiance_data.
|
|
82
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year - 1) + '年报', symbol_list)
|
|
83
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '一季报', symbol_list)
|
|
83
84
|
|
|
84
85
|
# 补偿年报和一季度,出不了报告的
|
|
85
86
|
miss_period_04 = 4
|
|
@@ -94,7 +95,7 @@ def sync_financial_report():
|
|
|
94
95
|
sync_em_asset_liability_report(period_time_01, sync_time, period_01)
|
|
95
96
|
|
|
96
97
|
elif now_month == 9:
|
|
97
|
-
sync_xue_qiu_fiance_data.
|
|
98
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '中报', symbol_list)
|
|
98
99
|
|
|
99
100
|
# 补偿二季度
|
|
100
101
|
period_02 = 2
|
|
@@ -103,14 +104,13 @@ def sync_financial_report():
|
|
|
103
104
|
sync_em_asset_liability_report(period_time_02, sync_time, period_02)
|
|
104
105
|
|
|
105
106
|
elif now_month in [11, 12]:
|
|
106
|
-
sync_xue_qiu_fiance_data.
|
|
107
|
+
sync_xue_qiu_fiance_data.sync_xue_qiu_each_period_report(str(now_year) + '三季报', symbol_list)
|
|
107
108
|
|
|
108
109
|
# 补偿三季度
|
|
109
110
|
period_03 = 3
|
|
110
111
|
period_time_03 = str(now_year) + "-09-30 00:00:00"
|
|
111
112
|
sync_em_profit_report(period_time_03, sync_time, period_03)
|
|
112
113
|
sync_em_asset_liability_report(period_time_03, sync_time, period_03)
|
|
113
|
-
|
|
114
114
|
# 未出报告check
|
|
115
115
|
undisclosed_annual_report_api.un_disclosed_report_check(sync_time, now_year, period, period_time)
|
|
116
116
|
# 新股或者未出报告的
|
|
@@ -122,8 +122,8 @@ def sync_em_asset_liability_report(period_time, sync_time, period):
|
|
|
122
122
|
un_report_asset_df = finance_common_api.find_un_report_symbol(period_time,
|
|
123
123
|
db_name_constant.EM_STOCK_ASSET_LIABILITY)
|
|
124
124
|
for un_report_asset_one in un_report_asset_df.itertuples():
|
|
125
|
+
symbol = un_report_asset_one.symbol
|
|
125
126
|
try:
|
|
126
|
-
symbol = un_report_asset_one.symbol
|
|
127
127
|
new_asset_df = em_financial_asset_liability_sync_service_api.get_em_asset_liability_api(symbol)
|
|
128
128
|
# 负债比
|
|
129
129
|
new_asset_df['liability_ratio'] = round(
|
|
@@ -147,8 +147,9 @@ def sync_em_asset_liability_report(period_time, sync_time, period):
|
|
|
147
147
|
def sync_em_profit_report(period_time, sync_time, period):
|
|
148
148
|
un_report_profit_df = finance_common_api.find_un_report_symbol(period_time, db_name_constant.EM_STOCK_PROFIT)
|
|
149
149
|
for un_report_profit_one in un_report_profit_df.itertuples():
|
|
150
|
+
symbol = un_report_profit_one.symbol
|
|
150
151
|
try:
|
|
151
|
-
|
|
152
|
+
|
|
152
153
|
new_profit_df = em_financial_profit_sync_service_api.get_em_profit_api(symbol)
|
|
153
154
|
if data_frame_util.is_empty(new_profit_df):
|
|
154
155
|
continue
|
|
@@ -168,8 +169,8 @@ def sync_miss_report(sync_time):
|
|
|
168
169
|
query = {"total_operate_income": 0}
|
|
169
170
|
un_report_company_info = mongodb_util.find_query_data(db_name_constant.COMPANY_INFO, query)
|
|
170
171
|
for un_report_one in un_report_company_info.itertuples():
|
|
172
|
+
symbol = un_report_one.symbol
|
|
171
173
|
try:
|
|
172
|
-
symbol = un_report_one.symbol
|
|
173
174
|
new_profit_df = em_financial_profit_sync_service_api.get_em_profit_api(symbol)
|
|
174
175
|
if data_frame_util.is_empty(new_profit_df):
|
|
175
176
|
continue
|
|
@@ -25,8 +25,12 @@ mongodb_util_27017 = MongodbUtil('27017')
|
|
|
25
25
|
# cash_flow 现金流量
|
|
26
26
|
# balance 资产负债
|
|
27
27
|
# 同步所有股票 报表
|
|
28
|
-
def sync_all_stocks_report():
|
|
28
|
+
def sync_all_stocks_report(symbol_list):
|
|
29
29
|
em_a_stock_info_df = em_stock_info_api.get_a_stock_info()
|
|
30
|
+
# 代码列表不为空的时候
|
|
31
|
+
if len(symbol_list) > 0:
|
|
32
|
+
em_a_stock_info_df = em_a_stock_info_df.loc[em_a_stock_info_df['symbol'].isin(symbol_list)]
|
|
33
|
+
|
|
30
34
|
em_a_stock_info_df = common_service_fun_api.add_pre_prefix(em_a_stock_info_df)
|
|
31
35
|
# 或等效写法 df['A'].str[0:6]
|
|
32
36
|
|
|
@@ -35,7 +39,10 @@ def sync_all_stocks_report():
|
|
|
35
39
|
xue_qiu_cookie = cookie_info_service.get_xue_qiu_cookie()
|
|
36
40
|
report_type_list = ['income', 'balance', 'cash_flow']
|
|
37
41
|
for stock_one in em_a_stock_info_df.itertuples():
|
|
38
|
-
fail_list = save_one_symbol_data(stock_one, report_type_list,
|
|
42
|
+
fail_list = save_one_symbol_data(stock_one, report_type_list,
|
|
43
|
+
xue_qiu_cookie, True,
|
|
44
|
+
fail_list, '',
|
|
45
|
+
False)
|
|
39
46
|
|
|
40
47
|
handle_number = 0
|
|
41
48
|
# 处理失败的
|
|
@@ -49,10 +56,11 @@ def sync_all_stocks_report():
|
|
|
49
56
|
|
|
50
57
|
|
|
51
58
|
def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag, fail_list, report_name, check_exist):
|
|
59
|
+
symbol = stock_one.symbol
|
|
52
60
|
try:
|
|
53
61
|
symbol_prefix = stock_one.symbol_prefix
|
|
54
62
|
name = stock_one.name
|
|
55
|
-
|
|
63
|
+
|
|
56
64
|
for report_type in report_type_list:
|
|
57
65
|
if report_type == 'income':
|
|
58
66
|
col_name = extra_income_db_name.XUE_QIU_LRB_INCOME
|
|
@@ -60,6 +68,8 @@ def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag,
|
|
|
60
68
|
col_name = extra_income_db_name.XUE_QIU_ASSET_DEBT
|
|
61
69
|
elif report_type == 'cash_flow':
|
|
62
70
|
col_name = extra_income_db_name.XUE_QIU_CASH_FLOW
|
|
71
|
+
else:
|
|
72
|
+
col_name = extra_income_db_name.XUE_QIU_LRB_INCOME
|
|
63
73
|
if check_exist:
|
|
64
74
|
query_exist = {'symbol': symbol, 'report_name': report_name}
|
|
65
75
|
# 存在数据 不在同步
|
|
@@ -130,10 +140,10 @@ def save_one_symbol_data(stock_one, report_type_list, xue_qiu_cookie, save_tag,
|
|
|
130
140
|
return fail_list
|
|
131
141
|
|
|
132
142
|
|
|
133
|
-
def
|
|
143
|
+
def sync_xue_qiu_each_period_report(report_name, symbol_list):
|
|
134
144
|
em_a_stock_info_df = em_stock_info_api.get_a_stock_info()
|
|
135
|
-
if
|
|
136
|
-
em_a_stock_info_df = em_a_stock_info_df.loc[em_a_stock_info_df['symbol']
|
|
145
|
+
if len(symbol_list) > 0:
|
|
146
|
+
em_a_stock_info_df = em_a_stock_info_df.loc[em_a_stock_info_df['symbol'].isin(symbol_list)]
|
|
137
147
|
em_a_stock_info_df = common_service_fun_api.add_pre_prefix(em_a_stock_info_df)
|
|
138
148
|
# 或等效写法 df['A'].str[0:6]
|
|
139
149
|
|
|
@@ -158,4 +168,4 @@ def sync_xue_qiu_very_period_report(report_name, symbol):
|
|
|
158
168
|
|
|
159
169
|
|
|
160
170
|
if __name__ == '__main__':
|
|
161
|
-
sync_all_stocks_report()
|
|
171
|
+
sync_all_stocks_report([])
|
{mns_scheduler-1.4.5.6 → mns_scheduler-1.4.8.5}/mns_scheduler/k_line/clean/k_line_info_clean_task.py
RENAMED
|
@@ -116,6 +116,7 @@ def multi_threaded_k_line_sync(str_day):
|
|
|
116
116
|
# 将list_date列中的所有NaN值设置为19890604
|
|
117
117
|
real_time_quotes_now['list_date'].fillna(19890604, inplace=True)
|
|
118
118
|
real_time_quotes_now['list_date'] = real_time_quotes_now['list_date'].replace(99990909, 19890604)
|
|
119
|
+
real_time_quotes_now['list_date'] = real_time_quotes_now['list_date'].replace(0, 19890604)
|
|
119
120
|
|
|
120
121
|
# 将日期数值转换为日期时间格式
|
|
121
122
|
real_time_quotes_now['list_date_01'] = pd.to_datetime(real_time_quotes_now['list_date'], format='%Y%m%d')
|