mns-scheduler 1.3.2.4__tar.gz → 1.3.2.6__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.3.2.4 → mns-scheduler-1.3.2.6}/PKG-INFO +1 -1
- mns-scheduler-1.3.2.6/mns_scheduler/k_line/common/__init__.py +7 -0
- mns-scheduler-1.3.2.6/mns_scheduler/k_line/common/k_line_common_api.py +144 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +12 -32
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py +4 -11
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +16 -9
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py +4 -3
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +30 -77
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zz_task/data_sync_task.py +3 -3
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler.egg-info/PKG-INFO +1 -1
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler.egg-info/SOURCES.txt +2 -4
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/setup.py +1 -1
- mns-scheduler-1.3.2.4/mns_scheduler/us/baidu_yun_pan_handle_service.py +0 -91
- mns-scheduler-1.3.2.4/mns_scheduler/us/k_line.py +0 -91
- mns-scheduler-1.3.2.4/mns_scheduler/us/us_company_info_sync_service_api.py +0 -39
- mns-scheduler-1.3.2.4/mns_scheduler/zz_task/__init__.py +0 -7
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/README.md +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/big_deal/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/announce/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/announce/company_announce_sync_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/base/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/base/sync_company_base_info_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/base/sync_company_hold_info_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/clean/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/clean/company_info_clean_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/constant/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/constant/company_constant_data.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/de_list_stock/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/em_stock_info/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/remark/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/company_info/remark/company_remark_info_sync.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/clean/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/clean/ths_concept_clean_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/common/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/detaill/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/sync_new_index/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/update_concept_info/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/col_move_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/col_move_script.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/db_move/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/db_move/col_move_one_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/sync/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/sync/local_mongo_util.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/sync/remote_data_sync_to_local.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/sync/remote_mongo_util.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/update/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/db/script/update/update_col_field.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/debt/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/debt/kzz_bond_info_sync.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/dt/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/finance/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/finance/em_financial_asset_liability_sync_service_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/finance/em_financial_profit_sync_service_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/finance/finance_common_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/finance/sync_financial_report_service_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/hk/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/hk/hk_industry_info_sync_service_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/industry/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/industry/ths/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/industry/ths/ths_industry_index_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/industry/ths/ths_industry_sync_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/irm/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/irm/api/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/irm/stock_irm_cninfo_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/daily/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/week_month/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/hot_stocks/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/month_week_daily/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/test/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/k_line/year_quarter/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/index/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/symbol/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/total/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/lhb/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/open/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/compliance/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/financial/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/major_violations/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/self/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/test/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/transactions/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/risk/transactions/transactions_check_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/self_choose/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/self_choose/ths_self_choose_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/auto_login/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/auto_login/trader_auto_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/balance/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/balance/ths_account_balance_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/sync_position_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/task/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/task/trader_task_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/tfp/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/trade/tfp/stock_tfp_info_sync.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zb/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zb/stock_zb_pool_sync.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/export/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
- {mns-scheduler-1.3.2.4/mns_scheduler/us → mns-scheduler-1.3.2.6/mns_scheduler/zt/high_chg}/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/open_data/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
- {mns-scheduler-1.3.2.4/mns_scheduler/zt/high_chg → mns-scheduler-1.3.2.6/mns_scheduler/zt/script}/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/script/fix_error_deal_day.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +0 -0
- {mns-scheduler-1.3.2.4/mns_scheduler/zt/script → mns-scheduler-1.3.2.6/mns_scheduler/zz_task}/__init__.py +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/setup.cfg +0 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
import pandas as pd
|
|
5
|
+
|
|
6
|
+
file_path = os.path.abspath(__file__)
|
|
7
|
+
end = file_path.index('mns') + 16
|
|
8
|
+
project_path = file_path[0:end]
|
|
9
|
+
sys.path.append(project_path)
|
|
10
|
+
import mns_common.api.akshare.k_line_api as k_line_api
|
|
11
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
12
|
+
import mns_common.api.xueqiu.xue_qiu_k_line_api as xue_qiu_k_line_api
|
|
13
|
+
import mns_common.component.cookie.cookie_info_service as cookie_info_service
|
|
14
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
15
|
+
from datetime import datetime, timedelta
|
|
16
|
+
from mns_common.component.exception.ExceptionMonitor import exception_counter
|
|
17
|
+
import mns_common.api.msg.push_msg_api as push_msg_api
|
|
18
|
+
import numpy as np
|
|
19
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
20
|
+
from loguru import logger
|
|
21
|
+
|
|
22
|
+
source_type = 'xue_qiu'
|
|
23
|
+
# source_type = 'em'
|
|
24
|
+
error_no = 1
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# 自定义报警处理函数
|
|
28
|
+
def custom_alert(current: int, threshold: int):
|
|
29
|
+
push_msg_api.push_msg_to_wechat('获取k线数据异常', "当前次数:" + str(current) + "阈值:" + str(threshold))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_k_line_common_adapter(symbol, period, hq, end_date):
|
|
33
|
+
global error_no
|
|
34
|
+
df = pd.DataFrame()
|
|
35
|
+
try:
|
|
36
|
+
if source_type == 'em':
|
|
37
|
+
df = get_em_k_line_api(symbol, period, hq, end_date)
|
|
38
|
+
elif source_type == 'xue_qiu':
|
|
39
|
+
df = get_xueqiu_k_line_api(symbol, period, hq, end_date)
|
|
40
|
+
if data_frame_util.is_empty(df):
|
|
41
|
+
error_no = error_no + 1
|
|
42
|
+
except BaseException as e:
|
|
43
|
+
logger.error("获取k线异常:{}", e)
|
|
44
|
+
error_no = error_no + 1
|
|
45
|
+
if error_no == 1000:
|
|
46
|
+
push_msg_api.push_msg_to_wechat('获取k线数据异常', "当前次数:" + str(error_no))
|
|
47
|
+
return df
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# 应用带参数的装饰器
|
|
51
|
+
# @exception_counter(
|
|
52
|
+
# threshold=1500,
|
|
53
|
+
# alert_handler=custom_alert,
|
|
54
|
+
# auto_reset=False
|
|
55
|
+
# )
|
|
56
|
+
def get_em_k_line_api(symbol, period, hq, end_date):
|
|
57
|
+
# 检查symbol是否以'6'开头
|
|
58
|
+
if symbol.startswith('6'):
|
|
59
|
+
symbol_a = '1.' + symbol
|
|
60
|
+
else:
|
|
61
|
+
symbol_a = '0.' + symbol
|
|
62
|
+
stock_hfq_df = k_line_api.stock_zh_a_hist(symbol=symbol_a,
|
|
63
|
+
period=period,
|
|
64
|
+
start_date=date_handle_util.no_slash_date('1990-12-19'),
|
|
65
|
+
end_date=date_handle_util.no_slash_date(end_date),
|
|
66
|
+
adjust=hq)
|
|
67
|
+
|
|
68
|
+
stock_hfq_df.rename(columns={"日期": "date", "开盘": "open",
|
|
69
|
+
"收盘": "close", "最高": "high",
|
|
70
|
+
"最低": "low", "成交量": "volume",
|
|
71
|
+
"成交额": "amount", "振幅": "pct_chg",
|
|
72
|
+
"涨跌幅": "chg", "涨跌额": "change",
|
|
73
|
+
"换手率": "exchange"}, inplace=True)
|
|
74
|
+
stock_hfq_df['symbol'] = symbol
|
|
75
|
+
stock_hfq_df['_id'] = symbol + '-' + stock_hfq_df['date']
|
|
76
|
+
return stock_hfq_df
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
# period : year quarter month week day
|
|
80
|
+
# hq: qfq:before ,hfq:after, bfq:normal
|
|
81
|
+
|
|
82
|
+
def get_xueqiu_k_line_api(symbol, period, hq, end_date):
|
|
83
|
+
if hq == 'qfq':
|
|
84
|
+
adjust = 'before'
|
|
85
|
+
elif hq == 'hfq':
|
|
86
|
+
adjust = 'after'
|
|
87
|
+
else:
|
|
88
|
+
adjust = 'normal'
|
|
89
|
+
|
|
90
|
+
period_time = 'day'
|
|
91
|
+
if period == 'daily':
|
|
92
|
+
period_time = 'day'
|
|
93
|
+
elif period == 'weekly':
|
|
94
|
+
period_time = 'week'
|
|
95
|
+
elif period == 'monthly':
|
|
96
|
+
period_time = 'month'
|
|
97
|
+
|
|
98
|
+
cookie = cookie_info_service.get_xue_qiu_cookie()
|
|
99
|
+
symbol_pre_fix = common_service_fun_api.add_pre_prefix_one(symbol)
|
|
100
|
+
dt = datetime.strptime(end_date, '%Y-%m-%d')
|
|
101
|
+
dt += timedelta(days=1)
|
|
102
|
+
timestamp = str(int(dt.timestamp() * 1000)) # 转换为毫秒
|
|
103
|
+
stock_k_line_df = xue_qiu_k_line_api.get_xue_qiu_k_line(symbol_pre_fix, period_time,
|
|
104
|
+
cookie, timestamp, adjust)
|
|
105
|
+
|
|
106
|
+
stock_k_line_df['pct_chg'] = round(abs(stock_k_line_df['high'] - stock_k_line_df['low'] / stock_k_line_df['high']),
|
|
107
|
+
2)
|
|
108
|
+
stock_k_line_df.rename(columns={"chg": "change",
|
|
109
|
+
"percent": "chg",
|
|
110
|
+
"str_day": "date",
|
|
111
|
+
"market_capital": "flow_mv",
|
|
112
|
+
"turnoverrate": "exchange"}, inplace=True)
|
|
113
|
+
stock_k_line_df = stock_k_line_df[[
|
|
114
|
+
"date",
|
|
115
|
+
"open",
|
|
116
|
+
"close",
|
|
117
|
+
"high",
|
|
118
|
+
"low",
|
|
119
|
+
"volume",
|
|
120
|
+
"amount",
|
|
121
|
+
"pct_chg",
|
|
122
|
+
"chg",
|
|
123
|
+
"change",
|
|
124
|
+
"exchange"
|
|
125
|
+
]]
|
|
126
|
+
stock_k_line_df['symbol'] = symbol
|
|
127
|
+
stock_k_line_df['date'] = stock_k_line_df['date'].str.replace('-', '')
|
|
128
|
+
stock_k_line_df['_id'] = symbol + '-' + stock_k_line_df['date']
|
|
129
|
+
stock_k_line_df['last_price'] = round(((stock_k_line_df['close']) / (1 + stock_k_line_df['chg'] / 100)), 2)
|
|
130
|
+
stock_k_line_df['max_chg'] = round(
|
|
131
|
+
((stock_k_line_df['high'] - stock_k_line_df['last_price']) / stock_k_line_df['last_price']) * 100, 2)
|
|
132
|
+
stock_k_line_df['amount_level'] = round((stock_k_line_df['amount'] / common_service_fun_api.HUNDRED_MILLION), 2)
|
|
133
|
+
stock_k_line_df['flow_mv'] = round(stock_k_line_df['amount'] * 100 / stock_k_line_df['exchange'], 2)
|
|
134
|
+
stock_k_line_df['flow_mv_sp'] = round(stock_k_line_df['flow_mv'] / common_service_fun_api.HUNDRED_MILLION, 2)
|
|
135
|
+
|
|
136
|
+
stock_k_line_df.replace([np.inf, -np.inf], 0, inplace=True)
|
|
137
|
+
stock_k_line_df.fillna(0, inplace=True)
|
|
138
|
+
return stock_k_line_df
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
if __name__ == '__main__':
|
|
142
|
+
while True:
|
|
143
|
+
test_df = get_k_line_common_adapter('000001', 'day', 'qfq', '2025-05-25')
|
|
144
|
+
print(test_df)
|
|
@@ -9,44 +9,24 @@ sys.path.append(project_path)
|
|
|
9
9
|
from loguru import logger
|
|
10
10
|
import mns_common.component.em.em_stock_info_api as em_stock_info_api
|
|
11
11
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
12
|
-
import mns_common.utils.date_handle_util as date_handle_util
|
|
13
12
|
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
14
|
-
import
|
|
13
|
+
import mns_scheduler.k_line.common.k_line_common_api as k_line_common_api
|
|
15
14
|
import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
|
|
16
15
|
|
|
16
|
+
|
|
17
|
+
|
|
17
18
|
mongodb_util = MongodbUtil('27017')
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
def sync_bfq_k_line_data(period='daily',
|
|
21
22
|
hq='hfq',
|
|
22
23
|
hq_col='stock_hfq_daily',
|
|
23
|
-
end_date='
|
|
24
|
+
end_date='2222-01-01',
|
|
24
25
|
symbol=None):
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
symbol_a = '0.' + symbol
|
|
30
|
-
stock_hfq_df = k_line_api.stock_zh_a_hist(symbol=symbol_a, period=period,
|
|
31
|
-
start_date=date_handle_util.no_slash_date('1990-12-19'),
|
|
32
|
-
end_date=date_handle_util.no_slash_date(end_date),
|
|
33
|
-
adjust=hq)
|
|
34
|
-
|
|
35
|
-
stock_hfq_df.rename(columns={"日期": "date", "开盘": "open",
|
|
36
|
-
"收盘": "close", "最高": "high",
|
|
37
|
-
"最低": "low", "成交量": "volume",
|
|
38
|
-
"成交额": "amount", "振幅": "pct_chg",
|
|
39
|
-
"涨跌幅": "chg", "涨跌额": "change",
|
|
40
|
-
"换手率": "exchange"}, inplace=True)
|
|
41
|
-
|
|
42
|
-
stock_hfq_df['symbol'] = symbol
|
|
43
|
-
stock_hfq_df['_id'] = stock_hfq_df['symbol'] + '-' + stock_hfq_df['date']
|
|
44
|
-
stock_hfq_df['last_price'] = round(((stock_hfq_df['close']) / (1 + stock_hfq_df['chg'] / 100)), 2)
|
|
45
|
-
stock_hfq_df['max_chg'] = round(
|
|
46
|
-
((stock_hfq_df['high'] - stock_hfq_df['last_price']) / stock_hfq_df['last_price']) * 100, 2)
|
|
47
|
-
stock_hfq_df['amount_level'] = round((stock_hfq_df['amount'] / common_service_fun_api.HUNDRED_MILLION), 2)
|
|
48
|
-
stock_hfq_df['flow_mv'] = round(stock_hfq_df['amount'] * 100 / stock_hfq_df['exchange'], 2)
|
|
49
|
-
stock_hfq_df['flow_mv_sp'] = round(stock_hfq_df['flow_mv'] / common_service_fun_api.HUNDRED_MILLION, 2)
|
|
26
|
+
|
|
27
|
+
stock_hfq_df = k_line_common_api.get_k_line_common_adapter(symbol, period, hq, end_date)
|
|
28
|
+
|
|
29
|
+
|
|
50
30
|
|
|
51
31
|
classification = common_service_fun_api.classify_symbol_one(symbol)
|
|
52
32
|
stock_hfq_df['classification'] = classification
|
|
@@ -60,7 +40,7 @@ def sync_all_bfq_k_line(period='daily',
|
|
|
60
40
|
hq='hfq',
|
|
61
41
|
hq_col='stock_hfq_daily',
|
|
62
42
|
end_date='22220101',
|
|
63
|
-
symbol=
|
|
43
|
+
symbol='300085'):
|
|
64
44
|
real_time_quotes_now_es = em_stock_info_api.get_a_stock_info()
|
|
65
45
|
|
|
66
46
|
symbol_list = list(real_time_quotes_now_es['symbol'])
|
|
@@ -91,7 +71,7 @@ def insert_data(stock_hfq_df, hq_col, symbol):
|
|
|
91
71
|
|
|
92
72
|
if __name__ == '__main__':
|
|
93
73
|
sync_all_bfq_k_line('daily',
|
|
94
|
-
'',
|
|
74
|
+
'qfq',
|
|
95
75
|
'stock_bfq_daily',
|
|
96
|
-
|
|
97
|
-
|
|
76
|
+
'2025-05-25',
|
|
77
|
+
'000001')
|
|
@@ -9,11 +9,9 @@ sys.path.append(project_path)
|
|
|
9
9
|
from loguru import logger
|
|
10
10
|
import mns_common.component.em.em_stock_info_api as em_stock_info_api
|
|
11
11
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
12
|
-
import mns_common.utils.date_handle_util as date_handle_util
|
|
13
12
|
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
14
|
-
import mns_common.api.akshare.k_line_api as k_line_api
|
|
15
13
|
import mns_scheduler.k_line.clean.daily.daily_k_line_clean_common_service as daily_k_line_clean_common_service
|
|
16
|
-
|
|
14
|
+
import mns_scheduler.k_line.common.k_line_common_api as k_line_common_api
|
|
17
15
|
mongodb_util = MongodbUtil('27017')
|
|
18
16
|
|
|
19
17
|
|
|
@@ -21,14 +19,9 @@ mongodb_util = MongodbUtil('27017')
|
|
|
21
19
|
|
|
22
20
|
def save_one_symbol(symbol, period, end_date, hq, hq_col, real_time_quotes_now):
|
|
23
21
|
# 检查symbol是否以'6'开头
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
symbol_a = '0.' + symbol
|
|
28
|
-
stock_hfq_df = k_line_api.stock_zh_a_hist(symbol=symbol_a, period=period,
|
|
29
|
-
start_date=date_handle_util.no_slash_date('1990-12-19'),
|
|
30
|
-
end_date=date_handle_util.no_slash_date(end_date),
|
|
31
|
-
adjust=hq)
|
|
22
|
+
|
|
23
|
+
stock_hfq_df = k_line_common_api.get_k_line_common_adapter(symbol, period, hq, end_date)
|
|
24
|
+
|
|
32
25
|
real_time_quotes_now_one = real_time_quotes_now.loc[real_time_quotes_now['symbol'] == symbol]
|
|
33
26
|
stock_hfq_df.rename(columns={"日期": "date", "开盘": "open",
|
|
34
27
|
"收盘": "close", "最高": "high",
|
|
@@ -12,27 +12,34 @@ from mns_common.db.MongodbUtil import MongodbUtil
|
|
|
12
12
|
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
13
13
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
14
14
|
import mns_common.api.xueqiu.xue_qiu_k_line_api as xue_qiu_k_line_api
|
|
15
|
+
import mns_common.component.cookie.cookie_info_service as cookie_info_service
|
|
16
|
+
from datetime import datetime
|
|
17
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
15
18
|
|
|
16
19
|
mongodb_util = MongodbUtil('27017')
|
|
17
20
|
|
|
18
21
|
|
|
19
22
|
def sync_year_k_line():
|
|
20
|
-
|
|
23
|
+
timestamp = str(int(datetime.now().timestamp() * 1000))
|
|
24
|
+
|
|
21
25
|
col_name = db_name_constant.STOCK_QFQ_YEAR
|
|
22
26
|
real_time_quotes_all_stocks_df = em_stock_info_api.get_a_stock_info()
|
|
23
27
|
real_time_quotes_all_stocks_df = common_service_fun_api.classify_symbol(real_time_quotes_all_stocks_df)
|
|
28
|
+
real_time_quotes_all_stocks_df = common_service_fun_api.add_pre_prefix(real_time_quotes_all_stocks_df)
|
|
24
29
|
for stock_one in real_time_quotes_all_stocks_df.itertuples():
|
|
25
30
|
symbol = stock_one.symbol
|
|
26
31
|
try:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
symbol_prefix = stock_one.symbol_prefix
|
|
33
|
+
|
|
34
|
+
year_k_line_df_copy = xue_qiu_k_line_api.get_xue_qiu_k_line(symbol_prefix, 'year',
|
|
35
|
+
cookie_info_service.get_xue_qiu_cookie(),
|
|
36
|
+
timestamp,
|
|
37
|
+
'before')
|
|
38
|
+
if data_frame_util.is_empty(year_k_line_df_copy):
|
|
39
|
+
logger.warning("返回数据为空:{}", symbol)
|
|
40
|
+
continue
|
|
34
41
|
|
|
35
|
-
year_k_line_df =
|
|
42
|
+
year_k_line_df = year_k_line_df_copy.copy()
|
|
36
43
|
year_k_line_df = year_k_line_df[[
|
|
37
44
|
'volume',
|
|
38
45
|
'open',
|
{mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py
RENAMED
|
@@ -19,13 +19,14 @@ def sync_now_day_high_chg():
|
|
|
19
19
|
real_time_quotes_now_es = em_stock_info_api.get_a_stock_info()
|
|
20
20
|
real_time_quotes_now_es_high_chg = real_time_quotes_now_es.loc[
|
|
21
21
|
real_time_quotes_now_es['chg'] > common_service_fun_api.ZT_CHG]
|
|
22
|
+
now_date = datetime.now()
|
|
23
|
+
|
|
24
|
+
str_now_day = now_date.strftime('%Y-%m-%d')
|
|
22
25
|
# 同步qfq k线
|
|
23
|
-
daily_week_month_line_sync.sync_all_daily_data('daily', 'qfq', 'stock_qfq_daily',
|
|
26
|
+
daily_week_month_line_sync.sync_all_daily_data('daily', 'qfq', 'stock_qfq_daily', str_now_day,
|
|
24
27
|
list(real_time_quotes_now_es_high_chg['symbol']))
|
|
25
28
|
|
|
26
|
-
now_date = datetime.now()
|
|
27
29
|
|
|
28
|
-
str_now_day = now_date.strftime('%Y-%m-%d')
|
|
29
30
|
# 同步当前涨停
|
|
30
31
|
em_zt_pool_sync_api.save_zt_info(str_now_day)
|
|
31
32
|
|
{mns-scheduler-1.3.2.4 → mns-scheduler-1.3.2.6}/mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py
RENAMED
|
@@ -13,11 +13,12 @@ import mns_common.component.em.em_stock_info_api as em_stock_info_api
|
|
|
13
13
|
import mns_common.component.company.company_common_service_new_api as company_common_service_new_api
|
|
14
14
|
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
15
15
|
from loguru import logger
|
|
16
|
+
import mns_scheduler.k_line.common.k_line_common_api as k_line_common_api
|
|
16
17
|
import mns_common.api.akshare.k_line_api as k_line_api
|
|
17
18
|
import mns_common.utils.date_handle_util as date_handle_util
|
|
18
19
|
from mns_common.db.MongodbUtil import MongodbUtil
|
|
19
20
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
20
|
-
import
|
|
21
|
+
import mns_scheduler.k_line.common.k_line_common_api as k_line_common_api
|
|
21
22
|
|
|
22
23
|
mongodb_util = MongodbUtil('27017')
|
|
23
24
|
|
|
@@ -32,56 +33,14 @@ def ths_zt_pool(str_day, real_time_quotes_all_stocks):
|
|
|
32
33
|
now_date = datetime.now()
|
|
33
34
|
now_day_str_day = now_date.strftime('%Y-%m-%d')
|
|
34
35
|
ths_zt_pool_df = ths_stock_zt_pool_api.get_zt_reason(str_day)
|
|
35
|
-
|
|
36
|
+
ths_zt_pool_df_copy = ths_zt_pool_df.copy()
|
|
37
|
+
|
|
38
|
+
if data_frame_util.is_empty(ths_zt_pool_df_copy):
|
|
36
39
|
return pd.DataFrame()
|
|
37
40
|
if str_day == now_day_str_day:
|
|
38
|
-
ths_zt_pool_df =
|
|
41
|
+
ths_zt_pool_df = merge_his_day_zt_info(ths_zt_pool_df_copy, str_day)
|
|
39
42
|
else:
|
|
40
|
-
ths_zt_pool_df = merge_his_day_zt_info(
|
|
41
|
-
|
|
42
|
-
return ths_zt_pool_df
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
def merge_now_day_zt_info(ths_zt_pool_df, real_time_quotes_all_stocks):
|
|
46
|
-
if real_time_quotes_all_stocks is None:
|
|
47
|
-
real_time_quotes_all_stocks = em_stock_info_api.get_a_stock_info()
|
|
48
|
-
real_time_quotes_all_stocks = real_time_quotes_all_stocks[['symbol', 'amount',
|
|
49
|
-
'exchange', 'flow_mv', 'total_mv']]
|
|
50
|
-
real_time_quotes_all_stocks_zt = real_time_quotes_all_stocks.loc[
|
|
51
|
-
real_time_quotes_all_stocks['symbol'].isin(ths_zt_pool_df['symbol'])]
|
|
52
|
-
|
|
53
|
-
query_field = {
|
|
54
|
-
"ths_concept_name": 1,
|
|
55
|
-
"ths_concept_code": 1,
|
|
56
|
-
"ths_concept_sync_day": 1,
|
|
57
|
-
"company_type": 1,
|
|
58
|
-
"concept_create_day": 1,
|
|
59
|
-
"first_sw_industry": 1,
|
|
60
|
-
"third_sw_industry": 1,
|
|
61
|
-
"industry": 1,
|
|
62
|
-
"list_date": 1,
|
|
63
|
-
}
|
|
64
|
-
query_field_key = str(query_field)
|
|
65
|
-
query_key = str({'symbol': {"$in": list(ths_zt_pool_df['symbol'])}})
|
|
66
|
-
company_df_zt = company_common_service_new_api.get_company_info_by_field(query_key, query_field_key)
|
|
67
|
-
|
|
68
|
-
company_df_zt = company_df_zt.set_index(['_id'], drop=True)
|
|
69
|
-
real_time_quotes_all_stocks_zt = real_time_quotes_all_stocks_zt.set_index(['symbol'], drop=True)
|
|
70
|
-
ths_zt_pool_df = ths_zt_pool_df.set_index(['symbol'], drop=False)
|
|
71
|
-
|
|
72
|
-
ths_zt_pool_df = pd.merge(ths_zt_pool_df, company_df_zt, how='outer',
|
|
73
|
-
left_index=True, right_index=True)
|
|
74
|
-
|
|
75
|
-
ths_zt_pool_df = pd.merge(ths_zt_pool_df, real_time_quotes_all_stocks_zt, how='outer',
|
|
76
|
-
left_index=True, right_index=True)
|
|
77
|
-
ths_zt_pool_df['amount_level'] = round(ths_zt_pool_df['amount'] / common_service_fun_api.HUNDRED_MILLION, 2)
|
|
78
|
-
ths_zt_pool_df = common_service_fun_api.classify_symbol(ths_zt_pool_df)
|
|
79
|
-
ths_zt_pool_df = common_service_fun_api.total_mv_classification(ths_zt_pool_df)
|
|
80
|
-
ths_zt_pool_df.fillna('', inplace=True)
|
|
81
|
-
if 'zt_flag' in ths_zt_pool_df.columns:
|
|
82
|
-
del ths_zt_pool_df['zt_flag']
|
|
83
|
-
if 'zt_tag' in ths_zt_pool_df.columns:
|
|
84
|
-
del ths_zt_pool_df['zt_tag']
|
|
43
|
+
ths_zt_pool_df = merge_his_day_zt_info(ths_zt_pool_df_copy, str_day)
|
|
85
44
|
|
|
86
45
|
return ths_zt_pool_df
|
|
87
46
|
|
|
@@ -142,40 +101,33 @@ def merge_his_day_zt_info(ths_zt_pool_df, str_day):
|
|
|
142
101
|
def get_bfq_daily_line(ths_zt_pool_df, str_day):
|
|
143
102
|
query_k_line = {'symbol': {"$in": list(ths_zt_pool_df['symbol'])}, 'date': date_handle_util.no_slash_date(str_day)}
|
|
144
103
|
bfq_daily_line_df = mongodb_util.find_query_data('stock_bfq_daily', query_k_line)
|
|
145
|
-
if
|
|
104
|
+
if bfq_daily_line_df.shape[0] < ths_zt_pool_df.shape[0]:
|
|
146
105
|
bfq_daily_line_df = bfq_daily_line_df[['amount', 'chg', 'close', 'exchange',
|
|
147
106
|
'symbol', 'amount_level',
|
|
148
107
|
'flow_mv', 'flow_mv_sp'
|
|
149
108
|
]]
|
|
150
109
|
bfq_daily_line_df = bfq_daily_line_df.rename(columns={"close": 'now_price'})
|
|
151
110
|
return bfq_daily_line_df
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
try:
|
|
111
|
+
else:
|
|
112
|
+
bfq_k_line_df = pd.DataFrame()
|
|
113
|
+
for zt_one in ths_zt_pool_df.itertuples():
|
|
156
114
|
symbol = zt_one.symbol
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
bfq_daily_line_df = bfq_daily_line_df.rename(columns={"close": 'now_price'})
|
|
174
|
-
bfq_k_line_df = pd.concat([bfq_k_line_df, bfq_daily_line_df])
|
|
175
|
-
except BaseException as e:
|
|
176
|
-
logger.warning("同步不复权k线异常:{},{}", symbol, e)
|
|
177
|
-
|
|
178
|
-
return bfq_k_line_df
|
|
115
|
+
try:
|
|
116
|
+
|
|
117
|
+
bfq_daily_line_df = k_line_common_api.get_k_line_common_adapter(symbol, 'daily', '', str_day)
|
|
118
|
+
|
|
119
|
+
if data_frame_util.is_empty(bfq_daily_line_df):
|
|
120
|
+
continue
|
|
121
|
+
bfq_daily_line_df = bfq_daily_line_df[['amount', 'chg', 'close', 'exchange',
|
|
122
|
+
'symbol', 'amount_level',
|
|
123
|
+
'flow_mv', 'flow_mv_sp'
|
|
124
|
+
]]
|
|
125
|
+
bfq_daily_line_df = bfq_daily_line_df.rename(columns={"close": 'now_price'})
|
|
126
|
+
bfq_k_line_df = pd.concat([bfq_k_line_df, bfq_daily_line_df])
|
|
127
|
+
except BaseException as e:
|
|
128
|
+
logger.warning("同步不复权k线异常:{},{}", symbol, e)
|
|
129
|
+
bfq_k_line_df = bfq_k_line_df.loc[bfq_k_line_df['date'] == date_handle_util.no_slash_date(str_day)]
|
|
130
|
+
return bfq_k_line_df
|
|
179
131
|
|
|
180
132
|
|
|
181
133
|
def save_ths_zt_pool(ths_zt_pool_df, str_day):
|
|
@@ -236,5 +188,6 @@ if __name__ == '__main__':
|
|
|
236
188
|
# zt_df = ths_zt_pool(trade_date, None)
|
|
237
189
|
# save_ths_zt_pool(zt_df, trade_date)
|
|
238
190
|
trade_date = '2025-04-18'
|
|
239
|
-
|
|
240
|
-
|
|
191
|
+
ths_zt_pool_df_test = ths_zt_pool(trade_date, None)
|
|
192
|
+
get_bfq_daily_line(ths_zt_pool_df_test, trade_date)
|
|
193
|
+
save_ths_zt_pool(ths_zt_pool_df_test, trade_date)
|
|
@@ -96,7 +96,7 @@ def stock_sync_qfq_weekly():
|
|
|
96
96
|
str_now_date = now_date.strftime('%Y-%m-%d')
|
|
97
97
|
if date_handle_util.last_day_of_week(now_date):
|
|
98
98
|
logger.info('同步每周行情数据(前复权):' + str_now_date)
|
|
99
|
-
daily_week_month_line_sync_api.sync_all_daily_data('weekly', 'qfq', 'stock_qfq_weekly',
|
|
99
|
+
daily_week_month_line_sync_api.sync_all_daily_data('weekly', 'qfq', 'stock_qfq_weekly', str_now_date)
|
|
100
100
|
|
|
101
101
|
|
|
102
102
|
# # 定时同步每周交易行情数据(前复权)
|
|
@@ -106,7 +106,7 @@ def stock_sync_qfq_monthly():
|
|
|
106
106
|
if date_handle_util.last_day_month(now_date):
|
|
107
107
|
logger.info('同步每周行情数据(前复权):' + str_now_date)
|
|
108
108
|
daily_week_month_line_sync_api.sync_all_daily_data('monthly', 'qfq', 'stock_qfq_monthly',
|
|
109
|
-
|
|
109
|
+
str_now_date)
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
# 当天实时数据备份
|
|
@@ -138,7 +138,7 @@ def stock_daily_sync_qfq():
|
|
|
138
138
|
str_now_date = now_date.strftime('%Y-%m-%d')
|
|
139
139
|
logger.info('同步每日行情数据(前复权):' + str_now_date)
|
|
140
140
|
daily_week_month_line_sync_api.sync_all_daily_data('daily',
|
|
141
|
-
'qfq', 'stock_qfq_daily',
|
|
141
|
+
'qfq', 'stock_qfq_daily', str_now_date)
|
|
142
142
|
|
|
143
143
|
|
|
144
144
|
# 同步当日k c x 高涨幅数据
|
|
@@ -84,6 +84,8 @@ mns_scheduler/k_line/clean/daily/daily_k_line_service.py
|
|
|
84
84
|
mns_scheduler/k_line/clean/week_month/__init__.py
|
|
85
85
|
mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py
|
|
86
86
|
mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py
|
|
87
|
+
mns_scheduler/k_line/common/__init__.py
|
|
88
|
+
mns_scheduler/k_line/common/k_line_common_api.py
|
|
87
89
|
mns_scheduler/k_line/hot_stocks/__init__.py
|
|
88
90
|
mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py
|
|
89
91
|
mns_scheduler/k_line/month_week_daily/__init__.py
|
|
@@ -137,10 +139,6 @@ mns_scheduler/trade/task/__init__.py
|
|
|
137
139
|
mns_scheduler/trade/task/trader_task_service.py
|
|
138
140
|
mns_scheduler/trade/tfp/__init__.py
|
|
139
141
|
mns_scheduler/trade/tfp/stock_tfp_info_sync.py
|
|
140
|
-
mns_scheduler/us/__init__.py
|
|
141
|
-
mns_scheduler/us/baidu_yun_pan_handle_service.py
|
|
142
|
-
mns_scheduler/us/k_line.py
|
|
143
|
-
mns_scheduler/us/us_company_info_sync_service_api.py
|
|
144
142
|
mns_scheduler/zb/__init__.py
|
|
145
143
|
mns_scheduler/zb/stock_zb_pool_sync.py
|
|
146
144
|
mns_scheduler/zt/__init__.py
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
import os
|
|
3
|
-
|
|
4
|
-
file_path = os.path.abspath(__file__)
|
|
5
|
-
end = file_path.index('mns') + 17
|
|
6
|
-
project_path = file_path[0:end]
|
|
7
|
-
sys.path.append(project_path)
|
|
8
|
-
from bypy import ByPy
|
|
9
|
-
from mns_common.db.MongodbUtil import MongodbUtil
|
|
10
|
-
import tempfile
|
|
11
|
-
from loguru import logger
|
|
12
|
-
import akshare as ak
|
|
13
|
-
|
|
14
|
-
mongodb_util = MongodbUtil('27017')
|
|
15
|
-
|
|
16
|
-
import subprocess
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def get_file_list(path):
|
|
20
|
-
"""
|
|
21
|
-
获取百度网盘指定路径下的文件列表
|
|
22
|
-
:param path: 百度网盘中的路径,例如 '/我的资源'
|
|
23
|
-
:return: 文件列表
|
|
24
|
-
"""
|
|
25
|
-
try:
|
|
26
|
-
# 调用 bypy list 命令
|
|
27
|
-
result = subprocess.run(['bypy', 'list', path], capture_output=True, text=True, check=True, encoding='utf-8')
|
|
28
|
-
|
|
29
|
-
# 输出结果
|
|
30
|
-
if result.returncode == 0:
|
|
31
|
-
file_list = result.stdout.splitlines() # 按行分割结果
|
|
32
|
-
return file_list
|
|
33
|
-
else:
|
|
34
|
-
logger.error("获取文件路径异常:{}", result.stderr)
|
|
35
|
-
return []
|
|
36
|
-
except subprocess.CalledProcessError as e:
|
|
37
|
-
logger.error("获取文件路径异常:{}", e)
|
|
38
|
-
return []
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
def upload_to_baidu(file_name, folder_name, data_df):
|
|
42
|
-
bp = ByPy()
|
|
43
|
-
file_name = file_name + '.csv'
|
|
44
|
-
with tempfile.NamedTemporaryFile(mode='w', suffix='.csv', delete=False) as temp_file:
|
|
45
|
-
data_df.to_csv(temp_file, index=False)
|
|
46
|
-
temp_file_path = temp_file.name # 获取临时文件的路径
|
|
47
|
-
|
|
48
|
-
# 上传临时文件到百度云
|
|
49
|
-
remote_path = f'/{folder_name}/{file_name}'
|
|
50
|
-
result = bp.upload(temp_file_path, remote_path)
|
|
51
|
-
if result == 0:
|
|
52
|
-
logger.info("上传成功:{}", file_name)
|
|
53
|
-
else:
|
|
54
|
-
logger.error("上传失败:{}", file_name)
|
|
55
|
-
return result
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def mkdir_baidu_new_folder(remote_path):
|
|
59
|
-
bp = ByPy()
|
|
60
|
-
try:
|
|
61
|
-
# 调用 mkdir 方法创建文件夹
|
|
62
|
-
result = bp.mkdir(remote_path)
|
|
63
|
-
|
|
64
|
-
if result == 0:
|
|
65
|
-
logger.info("成功创建文件夹:{}", remote_path)
|
|
66
|
-
else:
|
|
67
|
-
logger.error("创建文件夹失败:{}", result)
|
|
68
|
-
|
|
69
|
-
except Exception as e:
|
|
70
|
-
logger.error("创建文件夹失败:{}", e)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def del_baidu_old_folder(remote_path):
|
|
74
|
-
bp = ByPy()
|
|
75
|
-
try:
|
|
76
|
-
# 调用 mkdir 方法创建文件夹
|
|
77
|
-
result = bp.delete(remote_path)
|
|
78
|
-
|
|
79
|
-
if result == 0:
|
|
80
|
-
logger.info("成功删除文件夹:{}", remote_path)
|
|
81
|
-
else:
|
|
82
|
-
logger.error("删除文件夹失败:{}", result)
|
|
83
|
-
|
|
84
|
-
except Exception as e:
|
|
85
|
-
logger.error("删除文件夹失败:{}", e)
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if __name__ == '__main__':
|
|
89
|
-
folder_name1 = '/美股/不复权日线'
|
|
90
|
-
mkdir_baidu_new_folder(folder_name1)
|
|
91
|
-
list_df = get_file_list('/bypy/美股')
|