mns-scheduler 1.3.1.7__tar.gz → 1.4.6.4__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.4.6.4/PKG-INFO +3 -0
- mns_scheduler-1.4.6.4/mns_scheduler/auto_da_ban/auto_da_ban_service.py +89 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/company_info/clean/company_info_clean_api.py +38 -17
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/common/company_common_query_service.py +45 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/company_info/constant/company_constant_data.py +62 -49
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/em_stock_info/clean_em_us_hk_stock_info.py +30 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +141 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/sync/__init__.py +7 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/sync/company_info_set_service.py +208 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/sync/sync_company_info_task.py +203 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/task/__init__.py +7 -0
- mns-scheduler-1.3.1.7/mns_scheduler/company_info/announce/company_announce_sync_service.py → mns_scheduler-1.4.6.4/mns_scheduler/company_info/task/company_announce_info_task.py +30 -13
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/task/company_base_info_task.py +64 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/task/company_business_info_task.py +177 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/task/company_hold_info_task.py +66 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/task/company_industry_info_task.py +167 -0
- mns_scheduler-1.4.6.4/mns_scheduler/company_info/task/company_total_task.py +69 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/clean/ths_concept_clean_api.py +3 -6
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/ths/common/ths_concept_sync_common_api.py +3 -3
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/ths/update_concept_info/sync_one_symbol_all_concepts_api.py +1 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/sync/remote_data_sync_to_local.py +46 -8
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/sync/sync_hui_ce_test_data.py +15 -4
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/sync/sync_hui_ce_test_data_01.py +3 -2
- mns_scheduler-1.4.6.4/mns_scheduler/finance/em/__init__.py +7 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/finance → mns_scheduler-1.4.6.4/mns_scheduler/finance/em}/em_financial_asset_liability_sync_service_api.py +1 -1
- {mns-scheduler-1.3.1.7/mns_scheduler/finance → mns_scheduler-1.4.6.4/mns_scheduler/finance/em}/em_financial_profit_sync_service_api.py +5 -3
- mns-scheduler-1.3.1.7/mns_scheduler/finance/sync_financial_report_service_api.py → mns_scheduler-1.4.6.4/mns_scheduler/finance/sync_financial_report_service_task.py +79 -26
- mns_scheduler-1.4.6.4/mns_scheduler/finance/xue_qiu/__init__.py +7 -0
- mns_scheduler-1.4.6.4/mns_scheduler/finance/xue_qiu/down_load_xueqiu_report_api.py +77 -0
- mns_scheduler-1.4.6.4/mns_scheduler/finance/xue_qiu/sync_xue_qiu_fiance_data.py +161 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/irm/api/sh_stock_sns_sse_info_api.py +7 -57
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/irm/api/sz_stock_sns_sse_info_api.py +14 -25
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/irm/stock_irm_cninfo_service.py +40 -28
- mns_scheduler-1.4.6.4/mns_scheduler/irm/stock_question_id_service.py +169 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/clean/k_line_info_clean_task.py +8 -2
- mns_scheduler-1.4.6.4/mns_scheduler/k_line/common/__init__.py +7 -0
- mns_scheduler-1.4.6.4/mns_scheduler/k_line/common/k_line_common_api.py +188 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/month_week_daily/bfq_k_line_sync.py +12 -32
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/month_week_daily/daily_week_month_line_sync.py +6 -13
- mns_scheduler-1.4.6.4/mns_scheduler/k_line/sync_status/__init__.py +7 -0
- mns_scheduler-1.4.6.4/mns_scheduler/k_line/sync_status/k_line_sync_status_check.py +54 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/year_quarter/year_quarter_line_sync.py +16 -9
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/kpl/selection/symbol/sync_best_choose_symbol.py +1 -2
- mns_scheduler-1.4.6.4/mns_scheduler/kpl/selection/symbol/sync_kpl_concept_symbol_choose_reason_api.py +108 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/kpl/selection/total/sync_kpl_best_total_sync_api.py +5 -0
- mns_scheduler-1.4.6.4/mns_scheduler/kpl/theme/__init__.py +7 -0
- mns_scheduler-1.4.6.4/mns_scheduler/kpl/theme/kpl_theme_sync_service.py +231 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/compliance/undisclosed_annual_report_api.py +1 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/transactions/transactions_check_api.py +1 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/self_choose/ths_self_choose_service.py +64 -34
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/trade/auto_login/trader_auto_service.py +6 -3
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/trade/sync_position_api.py +38 -5
- mns_scheduler-1.4.6.4/mns_scheduler/trade/task/trader_task_service.py +76 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/trade/tfp/stock_tfp_info_sync.py +4 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zb/stock_zb_pool_sync.py +1 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/script/kcx_high_chg_open_his_data_handle.py +1 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/script/sync_high_chg_pool_his_data.py +1 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/script/sync_now_higt_chg_zt.py +4 -3
- mns_scheduler-1.4.6.4/mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +358 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/zt_pool/ths_zt_pool_sync_api.py +33 -80
- mns_scheduler-1.4.6.4/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +79 -0
- mns_scheduler-1.4.6.4/mns_scheduler/zz_task/compensation/compensate_task.py +161 -0
- mns_scheduler-1.4.6.4/mns_scheduler/zz_task/compensation/compensate_task_one_day.py +142 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zz_task/data_sync_task.py +105 -115
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4/mns_scheduler.egg-info}/PKG-INFO +1 -1
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler.egg-info/SOURCES.txt +35 -70
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/setup.py +2 -2
- mns-scheduler-1.3.1.7/mns_scheduler/baidu/baidu_yun_pan_handle_service.py +0 -122
- mns-scheduler-1.3.1.7/mns_scheduler/big_deal/ths_big_deal_sync.py +0 -98
- mns-scheduler-1.3.1.7/mns_scheduler/company_info/base/sync_company_base_info_api.py +0 -445
- mns-scheduler-1.3.1.7/mns_scheduler/company_info/base/sync_company_hold_info_api.py +0 -40
- mns-scheduler-1.3.1.7/mns_scheduler/company_info/em_stock_info/sync_em_stock_info_sync.py +0 -74
- mns-scheduler-1.3.1.7/mns_scheduler/company_info/remark/company_remark_info_sync.py +0 -46
- mns-scheduler-1.3.1.7/mns_scheduler/debt/kzz_bond_info_sync.py +0 -33
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/common/db_create_index.py +0 -9
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/common/symbol_handle_util.py +0 -41
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/etf/etf_one_minute_sync_task.py +0 -87
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/index/main_index_sync_task.py +0 -74
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/kzz/kzz_one_minute_sync_task.py +0 -87
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/one_minute_sync_task.py +0 -34
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/stock/stock_one_minute_sync_task.py +0 -89
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/upload/etf_upload_to_baidu_task.py +0 -95
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/upload/index_upload_to_baidu_task.py +0 -87
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/upload/kzz_upload_to_baidu_task.py +0 -95
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/upload/stock_upload_to_baidu_task.py +0 -85
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/hk/hk_stock_qfq_daily_k_line.py +0 -102
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/daily/us_stock_qfq_daily_k_line.py +0 -103
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/api/alpha_vantage_api.py +0 -34
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/api/em_us_one_minute_api.py +0 -139
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/api/stock_etf_info_api.py +0 -68
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/api/y_finance_api.py +0 -63
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/__init__.py +0 -11
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/down_load_ETF_his_2024.py +0 -152
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/etf/handle_down_load_fail_ETF.py +0 -67
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/fail/handle_fail_data.py +0 -161
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/rename/rename_stock.py +0 -18
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_01.py +0 -203
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_02.py +0 -202
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock/down_load_stock_his_2025.py +0 -144
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/now/us_etf_one_minute_sync.py +0 -52
- mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/now/us_stock_one_minute_sync.py +0 -141
- mns-scheduler-1.3.1.7/mns_scheduler/k_line/clean/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/k_line/clean/daily/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/k_line/clean/week_month/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/k_line/hot_stocks/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/k_line/test/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/k_line/year_quarter/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/kpl/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/kpl/selection/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/kpl/selection/index/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/kpl/selection/symbol/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/kpl/selection/total/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/lhb/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/open/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/risk/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/risk/test/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/self_choose/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/trade/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/trade/auto_login/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/trade/balance/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/trade/task/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/trade/task/trader_task_service.py +0 -48
- mns-scheduler-1.3.1.7/mns_scheduler/trade/tfp/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/us/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/us/baidu_yun_pan_handle_service.py +0 -91
- mns-scheduler-1.3.1.7/mns_scheduler/us/k_line.py +0 -91
- mns-scheduler-1.3.1.7/mns_scheduler/us/us_company_info_sync_service_api.py +0 -39
- mns-scheduler-1.3.1.7/mns_scheduler/zt/high_chg/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/zt/script/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler/zt/zt_pool/em_zt_pool_sync_api.py +0 -245
- mns-scheduler-1.3.1.7/mns_scheduler/zt/zt_pool/update_null_zt_reason_api.py +0 -47
- mns-scheduler-1.3.1.7/mns_scheduler/zz_task/__init__.py +0 -7
- mns-scheduler-1.3.1.7/mns_scheduler.egg-info/PKG-INFO +0 -3
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/README.md +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/fail → mns_scheduler-1.4.6.4/mns_scheduler/auto_da_ban}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/baidu → mns_scheduler-1.4.6.4/mns_scheduler/company_info}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/big_deal → mns_scheduler-1.4.6.4/mns_scheduler/company_info/clean}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/rename → mns_scheduler-1.4.6.4/mns_scheduler/company_info/common}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info → mns_scheduler-1.4.6.4/mns_scheduler/company_info/constant}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info/announce → mns_scheduler-1.4.6.4/mns_scheduler/company_info/de_list_stock}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/company_info/de_list_stock/de_list_stock_service.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info/base → mns_scheduler-1.4.6.4/mns_scheduler/company_info/em_stock_info}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info/clean → mns_scheduler-1.4.6.4/mns_scheduler/concept}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info/constant → mns_scheduler-1.4.6.4/mns_scheduler/concept/clean}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/clean/kpl_concept_clean_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info/de_list_stock → mns_scheduler-1.4.6.4/mns_scheduler/concept/ths}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info/em_stock_info → mns_scheduler-1.4.6.4/mns_scheduler/concept/ths/common}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/ths/common/ths_concept_update_common_api.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/ths/detaill/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/ths/detaill/ths_concept_detail_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/company_info/remark → mns_scheduler-1.4.6.4/mns_scheduler/concept/ths/sync_new_index}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/ths/sync_new_index/sync_ths_concept_new_index_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/concept → mns_scheduler-1.4.6.4/mns_scheduler/concept/ths/update_concept_info}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/concept/ths/update_concept_info/sync_one_concept_all_symbols_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/concept/clean → mns_scheduler-1.4.6.4/mns_scheduler/db}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/col_move_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/db_status.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/concept/ths → mns_scheduler-1.4.6.4/mns_scheduler/db/script}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/col_move_script.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/concept/ths/common → mns_scheduler-1.4.6.4/mns_scheduler/db/script/db_move}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/db_move/col_move_one_service.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/concept/ths/sync_new_index → mns_scheduler-1.4.6.4/mns_scheduler/db/script/sync}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/sync/local_mongo_util.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/sync/remote_mongo_util.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/concept/ths/update_concept_info → mns_scheduler-1.4.6.4/mns_scheduler/db/script/update}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/db/script/update/update_col_field.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/db → mns_scheduler-1.4.6.4/mns_scheduler/dt}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/dt/stock_dt_pool_sync.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/db/script → mns_scheduler-1.4.6.4/mns_scheduler/finance}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/finance → mns_scheduler-1.4.6.4/mns_scheduler/finance/em}/finance_common_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/db/script/db_move → mns_scheduler-1.4.6.4/mns_scheduler/hk}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/hk/hk_company_info_sync_service_api.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/hk/hk_industry_info_sync_service_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/db/script/sync → mns_scheduler-1.4.6.4/mns_scheduler/industry}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/db/script/update → mns_scheduler-1.4.6.4/mns_scheduler/industry/ths}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/industry/ths/ths_industry_index_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/industry/ths/ths_industry_sync_service.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/debt → mns_scheduler-1.4.6.4/mns_scheduler/irm}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/dt → mns_scheduler-1.4.6.4/mns_scheduler/irm/api}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome → mns_scheduler-1.4.6.4/mns_scheduler/k_line/clean}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock → mns_scheduler-1.4.6.4/mns_scheduler/k_line/clean/daily}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/clean/daily/daily_k_line_clean_common_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/clean/daily/daily_k_line_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/clean/k_line_info_clean_impl.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute → mns_scheduler-1.4.6.4/mns_scheduler/k_line/clean/week_month}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/clean/week_month/normal_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/clean/week_month/sub_new_week_month_k_line_service.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/common → mns_scheduler-1.4.6.4/mns_scheduler/k_line/hot_stocks}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/hot_stocks/recent_hot_stocks_clean_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/month_week_daily/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/etf → mns_scheduler-1.4.6.4/mns_scheduler/k_line/test}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/k_line/test/k_line_info_clean_his_data.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/index → mns_scheduler-1.4.6.4/mns_scheduler/k_line/year_quarter}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/kzz → mns_scheduler-1.4.6.4/mns_scheduler/kpl}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/stock → mns_scheduler-1.4.6.4/mns_scheduler/kpl/selection}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/a_stock/one_minute/upload → mns_scheduler-1.4.6.4/mns_scheduler/kpl/selection/index}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/kpl/selection/index/sync_best_choose_his_index.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/kpl/selection/index/sync_best_choose_index.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/hk → mns_scheduler-1.4.6.4/mns_scheduler/kpl/selection/symbol}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us → mns_scheduler-1.4.6.4/mns_scheduler/kpl/selection/total}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/daily → mns_scheduler-1.4.6.4/mns_scheduler/lhb}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/lhb/stock_lhb_sync_service.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute → mns_scheduler-1.4.6.4/mns_scheduler/open}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/open/sync_one_day_open_data_to_db_service.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/etf → mns_scheduler-1.4.6.4/mns_scheduler/risk}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/api → mns_scheduler-1.4.6.4/mns_scheduler/risk/compliance}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/risk/compliance → mns_scheduler-1.4.6.4/mns_scheduler/risk/financial}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/financial/annual_report_audit_check_api.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/financial/net_assets_check_api.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/financial/profit_income_check_api.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/financial/stock_equity_mortgage_check_api.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/financial_report_risk_check_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/risk/financial → mns_scheduler-1.4.6.4/mns_scheduler/risk/major_violations}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/major_violations/register_and_investigate_stock_sync_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/risk/major_violations → mns_scheduler-1.4.6.4/mns_scheduler/risk/self}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/self/wei_pan_stock_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock → mns_scheduler-1.4.6.4/mns_scheduler/risk/test}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/risk/test/fix_blask_list.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/risk/self → mns_scheduler-1.4.6.4/mns_scheduler/risk/transactions}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load → mns_scheduler-1.4.6.4/mns_scheduler/self_choose}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/down_load/stock → mns_scheduler-1.4.6.4/mns_scheduler/trade}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/trade/auto_ipo_buy_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/extraIncome/us/one_minute/stock/now → mns_scheduler-1.4.6.4/mns_scheduler/trade/auto_login}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/trade/auto_sell_service_api.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/finance → mns_scheduler-1.4.6.4/mns_scheduler/trade/balance}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/trade/balance/ths_account_balance_service.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/hk → mns_scheduler-1.4.6.4/mns_scheduler/trade/task}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/industry → mns_scheduler-1.4.6.4/mns_scheduler/trade/tfp}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zb/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/connected_boards/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/connected_boards/zt_five_boards_sync_api.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/export/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/export/export_kcx_high_chg_open_data_to_excel.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/industry/ths → mns_scheduler-1.4.6.4/mns_scheduler/zt/high_chg}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/high_chg/sync_high_chg_pool_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/high_chg/sync_high_chg_real_time_quotes_service.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/open_data/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/open_data/kcx_high_chg_open_data_sync.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/irm → mns_scheduler-1.4.6.4/mns_scheduler/zt/script}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/script/fix_error_deal_day.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler/zt/zt_pool/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/irm/api → mns_scheduler-1.4.6.4/mns_scheduler/zz_task}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7/mns_scheduler/risk/transactions → mns_scheduler-1.4.6.4/mns_scheduler/zz_task/compensation}/__init__.py +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler.egg-info/dependency_links.txt +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/mns_scheduler.egg-info/top_level.txt +0 -0
- {mns-scheduler-1.3.1.7 → mns_scheduler-1.4.6.4}/setup.cfg +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
file_path = os.path.abspath(__file__)
|
|
6
|
+
end = file_path.index('mns') + 16
|
|
7
|
+
project_path = file_path[0:end]
|
|
8
|
+
sys.path.append(project_path)
|
|
9
|
+
|
|
10
|
+
from mns_common.db.MongodbUtil import MongodbUtil
|
|
11
|
+
import mns_common.constant.db_name_constant as db_name_constant
|
|
12
|
+
import mns_common.utils.data_frame_util as data_frame_util
|
|
13
|
+
import mns_common.component.deal.deal_service_api as deal_service_api
|
|
14
|
+
from loguru import logger
|
|
15
|
+
from mns_common.utils.async_fun import async_fun
|
|
16
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
17
|
+
import mns_common.utils.date_handle_util as date_handle_util
|
|
18
|
+
import pandas as pd
|
|
19
|
+
|
|
20
|
+
mongodb_util = MongodbUtil('27017')
|
|
21
|
+
from datetime import datetime
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def auto_da_ban_task():
|
|
25
|
+
logger.info("打板任务启动")
|
|
26
|
+
while True:
|
|
27
|
+
try:
|
|
28
|
+
now_date = datetime.now()
|
|
29
|
+
now_str_day = now_date.strftime('%Y-%m-%d')
|
|
30
|
+
if bool(1 - date_handle_util.is_trade_date(now_str_day)):
|
|
31
|
+
logger.info("非交易日不执行:{}", now_str_day)
|
|
32
|
+
break
|
|
33
|
+
else:
|
|
34
|
+
# 执行打板任务
|
|
35
|
+
auto_da_ban()
|
|
36
|
+
except BaseException as e:
|
|
37
|
+
logger.error("自动打板定时任务异常:{}", e)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def auto_da_ban():
|
|
41
|
+
now_date = datetime.now()
|
|
42
|
+
now_str_day = now_date.strftime('%Y-%m-%d')
|
|
43
|
+
over_night_da_ban_list = query_over_night_da_ban_list(now_str_day)
|
|
44
|
+
if data_frame_util.is_empty(over_night_da_ban_list):
|
|
45
|
+
return None
|
|
46
|
+
for stock_one in over_night_da_ban_list.itertuples():
|
|
47
|
+
try:
|
|
48
|
+
symbol = stock_one.symbol
|
|
49
|
+
buy_price = stock_one.zt_price
|
|
50
|
+
buy_volume = stock_one.buy_volume
|
|
51
|
+
xia_dan_to_qmt(symbol, buy_price, buy_volume, now_str_day)
|
|
52
|
+
except BaseException as e:
|
|
53
|
+
logger.error("隔夜委托出现异常:{},{}", symbol, e)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def xia_dan_to_qmt(symbol, buy_price, buy_volume, str_day):
|
|
57
|
+
symbol_prefix = common_service_fun_api.add_after_prefix_one(symbol)
|
|
58
|
+
|
|
59
|
+
deal_service_api.trade_buy(symbol_prefix, buy_price, buy_volume, 'qmt')
|
|
60
|
+
|
|
61
|
+
# 异步更新信息
|
|
62
|
+
handle_async_msg(str_day, symbol, symbol_prefix)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
@async_fun
|
|
66
|
+
def handle_async_msg(str_day, symbol, symbol_prefix):
|
|
67
|
+
order_list = deal_service_api.query_orders('qmt')
|
|
68
|
+
order_list_df = pd.DataFrame(order_list)
|
|
69
|
+
# order_status ==57 费单
|
|
70
|
+
success_order_df = order_list_df.loc[
|
|
71
|
+
(order_list_df['stock_code'] == symbol_prefix) & (order_list_df['order_status'] != 57)]
|
|
72
|
+
# 多委托几个
|
|
73
|
+
time.sleep(1)
|
|
74
|
+
# 委托成功 更新状态
|
|
75
|
+
if data_frame_util.is_not_empty(success_order_df):
|
|
76
|
+
logger.info("隔夜委托成功:{}", symbol)
|
|
77
|
+
query = {"str_day": str_day, "symbol": symbol}
|
|
78
|
+
new_values = {"$set": {"valid": False}}
|
|
79
|
+
mongodb_util.update_many(query, new_values, db_name_constant.OVER_NIGHT_DA_BAN)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def query_over_night_da_ban_list(str_day):
|
|
83
|
+
query = {"str_day": str_day, "valid": True}
|
|
84
|
+
return mongodb_util.find_query_data(db_name_constant.OVER_NIGHT_DA_BAN, query)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
if __name__ == '__main__':
|
|
88
|
+
while True:
|
|
89
|
+
auto_da_ban()
|
|
@@ -12,25 +12,28 @@ from loguru import logger
|
|
|
12
12
|
import mns_scheduler.company_info.constant.company_constant_data as company_constant_data
|
|
13
13
|
import mns_common.constant.db_name_constant as db_name_constant
|
|
14
14
|
import mns_scheduler.concept.ths.detaill.ths_concept_detail_api as ths_concept_detail_api
|
|
15
|
-
import mns_scheduler.company_info.
|
|
15
|
+
import mns_scheduler.company_info.common.company_common_query_service as company_common_query_service
|
|
16
|
+
import mns_scheduler.company_info.sync.sync_company_info_task as sync_company_info_task
|
|
16
17
|
import mns_common.utils.data_frame_util as data_frame_util
|
|
17
|
-
|
|
18
|
-
mongodb_util = MongodbUtil('27017')
|
|
19
18
|
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
20
19
|
import mns_common.component.company.company_common_service_api as company_common_service_api
|
|
21
20
|
|
|
21
|
+
mongodb_util = MongodbUtil('27017')
|
|
22
|
+
|
|
22
23
|
|
|
23
24
|
# 修改行业信息
|
|
24
|
-
def clean_company_info(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
def clean_company_info(symbol_list):
|
|
26
|
+
create_company_info_index()
|
|
27
|
+
|
|
28
|
+
if len(symbol_list) > 0:
|
|
29
|
+
query = {"symbol": {"$in": symbol_list}}
|
|
30
|
+
company_info_temp_df = mongodb_util.find_query_data(db_name_constant.COMPANY_INFO_TEMP, query)
|
|
28
31
|
else:
|
|
29
|
-
|
|
32
|
+
company_info_temp_df = mongodb_util.find_query_data(db_name_constant.COMPANY_INFO_TEMP, {})
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
company_info_temp_df = company_constant_data.fix_second_industry(company_info_temp_df)
|
|
32
35
|
|
|
33
|
-
company_info =
|
|
36
|
+
company_info = company_info_temp_df.set_index(['second_sw_industry'], drop=False)
|
|
34
37
|
|
|
35
38
|
# 修改行业名称
|
|
36
39
|
del company_info['industry']
|
|
@@ -47,7 +50,7 @@ def clean_company_info(symbol):
|
|
|
47
50
|
company_info['company_type'] = company_info['business_nature']
|
|
48
51
|
|
|
49
52
|
# 将list_date列中的所有NaN值设置为99990909
|
|
50
|
-
company_info.fillna({'list_date':
|
|
53
|
+
company_info.fillna({'list_date': 19890604}, inplace=True)
|
|
51
54
|
|
|
52
55
|
# 将日期数值转换为日期时间格式
|
|
53
56
|
company_info['list_date_01'] = pd.to_datetime(company_info['list_date'], format='%Y%m%d')
|
|
@@ -69,7 +72,7 @@ def clean_company_info(symbol):
|
|
|
69
72
|
sub_stock = ths_concept_detail_api.get_ths_concept_detail('885598', None)
|
|
70
73
|
sub_stock_symbol_list = list(sub_stock['symbol'])
|
|
71
74
|
except BaseException as e:
|
|
72
|
-
logger.error("出现异常:{},
|
|
75
|
+
logger.error("出现异常:{},", e)
|
|
73
76
|
query = {'concept_code': 885598}
|
|
74
77
|
ths_stock_concept_detail = mongodb_util.find_query_data(db_name_constant.THS_STOCK_CONCEPT_DETAIL, query)
|
|
75
78
|
sub_stock_symbol_list = list(ths_stock_concept_detail['symbol'])
|
|
@@ -83,6 +86,9 @@ def clean_company_info(symbol):
|
|
|
83
86
|
if data_frame_util.is_not_empty(ths_stock_industry_detail_df):
|
|
84
87
|
ths_stock_industry_detail_df = ths_stock_industry_detail_df[
|
|
85
88
|
['symbol', 'ths_industry_name', 'ths_industry_code']]
|
|
89
|
+
|
|
90
|
+
ths_stock_industry_detail_df = ths_stock_industry_detail_df.loc[
|
|
91
|
+
ths_stock_industry_detail_df['symbol'].isin(list(company_info['symbol']))]
|
|
86
92
|
ths_stock_industry_detail_df = ths_stock_industry_detail_df.set_index(['symbol'], drop=True)
|
|
87
93
|
company_info = company_info.set_index(['_id'], drop=False)
|
|
88
94
|
company_info = pd.merge(company_info, ths_stock_industry_detail_df, how='outer',
|
|
@@ -93,11 +99,13 @@ def clean_company_info(symbol):
|
|
|
93
99
|
else:
|
|
94
100
|
company_info['ths_industry_code'] = '0'
|
|
95
101
|
company_info['ths_industry_name'] = '异常'
|
|
102
|
+
company_info.dropna(subset=['symbol'], axis=0, inplace=True)
|
|
103
|
+
company_info.dropna(subset=['_id'], axis=0, inplace=True)
|
|
96
104
|
mongodb_util.save_mongo(company_info, db_name_constant.COMPANY_INFO)
|
|
97
105
|
# 保存历史数据
|
|
98
106
|
save_company_info_his(company_info)
|
|
99
107
|
except BaseException as e:
|
|
100
|
-
logger.error("出现异常:{}
|
|
108
|
+
logger.error("出现异常:{}", e)
|
|
101
109
|
|
|
102
110
|
return company_info
|
|
103
111
|
|
|
@@ -117,17 +125,30 @@ def save_company_info_his(company_info_df):
|
|
|
117
125
|
|
|
118
126
|
# 更新新上市公司信息
|
|
119
127
|
def new_company_info_update():
|
|
120
|
-
east_money_stock_info =
|
|
128
|
+
east_money_stock_info = company_common_query_service.get_company_info()
|
|
121
129
|
new_stock = common_service_fun_api.get_new_stock(east_money_stock_info.copy())
|
|
122
130
|
for company_one in new_stock.itertuples():
|
|
123
131
|
try:
|
|
124
|
-
|
|
125
|
-
clean_company_info(company_one.symbol)
|
|
132
|
+
sync_company_info_task.sync_company_base_info([company_one.symbol])
|
|
133
|
+
clean_company_info([company_one.symbol])
|
|
126
134
|
|
|
127
135
|
except BaseException as e:
|
|
128
136
|
logger.error("出现异常:{}", e)
|
|
129
137
|
company_common_service_api.company_info_industry_cache_clear
|
|
130
138
|
|
|
131
139
|
|
|
140
|
+
def create_company_info_index():
|
|
141
|
+
mongodb_util.create_index('company_info',
|
|
142
|
+
[("classification", 1)])
|
|
143
|
+
mongodb_util.create_index('company_info',
|
|
144
|
+
[("industry", 1)])
|
|
145
|
+
mongodb_util.create_index('company_info',
|
|
146
|
+
[("flow_mv", 1)])
|
|
147
|
+
mongodb_util.create_index('company_info',
|
|
148
|
+
[("list_date", 1)])
|
|
149
|
+
mongodb_util.create_index('company_info',
|
|
150
|
+
[("symbol", 1)])
|
|
151
|
+
|
|
152
|
+
|
|
132
153
|
if __name__ == '__main__':
|
|
133
|
-
clean_company_info(
|
|
154
|
+
clean_company_info(["688795"])
|
|
@@ -0,0 +1,45 @@
|
|
|
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.em.em_stock_info_api as em_stock_info_api
|
|
9
|
+
import mns_common.component.company.company_common_service_api as company_common_service_api
|
|
10
|
+
import mns_common.component.common_service_fun_api as common_service_fun_api
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def get_company_info():
|
|
14
|
+
em_company_info_df = em_stock_info_api.get_a_stock_info()
|
|
15
|
+
em_company_info_df = em_company_info_df[['symbol',
|
|
16
|
+
'name',
|
|
17
|
+
"now_price",
|
|
18
|
+
'total_mv',
|
|
19
|
+
'flow_mv',
|
|
20
|
+
'pe_ttm',
|
|
21
|
+
'sz_sh',
|
|
22
|
+
'area',
|
|
23
|
+
'pb',
|
|
24
|
+
'list_date',
|
|
25
|
+
'ROE',
|
|
26
|
+
'total_share',
|
|
27
|
+
'flow_share',
|
|
28
|
+
'industry',
|
|
29
|
+
'amount',
|
|
30
|
+
"hk_stock_code",
|
|
31
|
+
"hk_stock_name",
|
|
32
|
+
'concept']]
|
|
33
|
+
|
|
34
|
+
em_company_info_df = em_company_info_df.sort_values(by=['list_date'], ascending=False)
|
|
35
|
+
|
|
36
|
+
de_listed_stock_list = company_common_service_api.get_de_list_company()
|
|
37
|
+
em_company_info_df = em_company_info_df.loc[~(
|
|
38
|
+
em_company_info_df['symbol'].isin(de_listed_stock_list))]
|
|
39
|
+
em_company_info_df = common_service_fun_api.exclude_ts_symbol(em_company_info_df)
|
|
40
|
+
|
|
41
|
+
return em_company_info_df
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
if __name__ == '__main__':
|
|
45
|
+
get_company_info()
|
|
@@ -14,49 +14,59 @@ mongodb_util = MongodbUtil('27017')
|
|
|
14
14
|
|
|
15
15
|
# 修改行业分类的股票
|
|
16
16
|
def get_fix_symbol_industry():
|
|
17
|
-
return pd.DataFrame([
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
17
|
+
return pd.DataFrame([
|
|
18
|
+
['688480', '赛恩斯', '760103', '环境治理'],
|
|
19
|
+
|
|
20
|
+
['603260', '合盛硅业', '220316', '有机硅'],
|
|
21
|
+
['300559', '佳发教育', '461102', '培训教育'],
|
|
22
|
+
|
|
23
|
+
['600338', '西藏珠峰', '240303', '铅锌'],
|
|
24
|
+
|
|
25
|
+
['688507', '索辰科技', '710402', '横向通用软件'],
|
|
26
|
+
['301387', '光大同创', '270504', '消费电子零部件及组装'],
|
|
27
|
+
['300295', '三六五网', '430301', '物业管理'],
|
|
28
|
+
['300947', '德必集团', '430301', '物业管理'],
|
|
29
|
+
['300483', '首华燃气', '410301', '燃气Ⅲ'],
|
|
30
|
+
['300215', '电科院', '410110', '电能综合服务'],
|
|
31
|
+
# 持有上海微电子装备有限公司10%的股份 国产光刻机 主要炒作在芯片概念 不在房地产
|
|
32
|
+
|
|
33
|
+
['300836', '佰奥智能', '640701', '机器人'],
|
|
34
|
+
['300293', '蓝英装备', '640701', '机器人'],
|
|
35
|
+
['301112', '信邦智能', '640704', '其他自动化设备'],
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
['000670', '盈方微', '270401', '其他电子'],
|
|
40
|
+
|
|
41
|
+
['300803', '指南针', '490101', '证券'],
|
|
42
|
+
['300085', '银之杰', '490101', '证券'],
|
|
43
|
+
['300380', '安硕信息', '490101', '证券'],
|
|
44
|
+
['600446', '金证股份', '490101', '证券'],
|
|
45
|
+
['688318', '财富趋势', '490101', '证券'],
|
|
46
|
+
['600570', '恒生电子', '490101', '证券'],
|
|
47
|
+
['837592', '华信永道', '490101', '证券'],
|
|
48
|
+
['830799', '艾融软件', '490101', '证券'],
|
|
49
|
+
['300033', '同花顺', '490101', '证券'],
|
|
50
|
+
['300399', '天利科技', '490201', '保险'],
|
|
51
|
+
|
|
52
|
+
['002131', '利欧股份', '720501', '营销代理'],
|
|
53
|
+
|
|
54
|
+
['300042', '朗科科技', '270108', '半导体设备'],
|
|
55
|
+
# EDA软件
|
|
56
|
+
['301269', '华大九天', '270108', '半导体设备'],
|
|
57
|
+
['688206', '概伦电子', '270108', '半导体设备'],
|
|
58
|
+
['301095', '广立微', '270108', '半导体设备'],
|
|
59
|
+
['600895', '张江高科', '270108', '半导体设备'],
|
|
60
|
+
|
|
61
|
+
['688630', '芯碁微装', '270108', '半导体设备'],
|
|
62
|
+
['001309', '德明利', '270104', '数字芯片设计'],
|
|
63
|
+
['688795', '摩尔线程', '270104', '数字芯片设计'],
|
|
64
|
+
|
|
65
|
+
],
|
|
66
|
+
columns=['symbol',
|
|
67
|
+
'name',
|
|
68
|
+
'new_industry_code', # 三级行业代码
|
|
69
|
+
'new_industry'])
|
|
60
70
|
|
|
61
71
|
|
|
62
72
|
# 修改二级行业分类的股票
|
|
@@ -401,12 +411,12 @@ def find_sw_third_industry(new_third_industry_code):
|
|
|
401
411
|
# 修改行业信息
|
|
402
412
|
def fix_industry_data(new_third_industry_code, company_info):
|
|
403
413
|
sw_industry = find_sw_third_industry(new_third_industry_code)
|
|
404
|
-
company_info['first_sw_industry'] = sw_industry
|
|
405
|
-
company_info['first_industry_code'] = sw_industry
|
|
406
|
-
company_info['second_sw_industry'] = sw_industry
|
|
407
|
-
company_info['second_industry_code'] = sw_industry
|
|
408
|
-
company_info['third_sw_industry'] = sw_industry
|
|
409
|
-
company_info['third_industry_code'] = sw_industry
|
|
414
|
+
company_info['first_sw_industry'] = list(sw_industry['first_sw_industry'])[0]
|
|
415
|
+
company_info['first_industry_code'] = list(sw_industry['industry_code'])[0]
|
|
416
|
+
company_info['second_sw_industry'] = list(sw_industry['second_sw_industry'])[0]
|
|
417
|
+
company_info['second_industry_code'] = list(sw_industry['second_industry_code'])[0]
|
|
418
|
+
company_info['third_sw_industry'] = list(sw_industry['third_sw_industry'])[0]
|
|
419
|
+
company_info['third_industry_code'] = list(sw_industry['industry_code'])[0]
|
|
410
420
|
return company_info
|
|
411
421
|
|
|
412
422
|
|
|
@@ -443,6 +453,9 @@ def filed_sort(company_info):
|
|
|
443
453
|
"final_controller_name",
|
|
444
454
|
"final_controller_rate",
|
|
445
455
|
"mv_circulation_ratio",
|
|
456
|
+
'qfii_type',
|
|
457
|
+
'qfii_number',
|
|
458
|
+
'share_holder_sync_day',
|
|
446
459
|
"flow_mv_sp",
|
|
447
460
|
"total_mv_sp",
|
|
448
461
|
"now_price",
|
|
@@ -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)
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
|
|
4
|
+
file_path = os.path.abspath(__file__)
|
|
5
|
+
end = file_path.index('mns') + 17
|
|
6
|
+
project_path = file_path[0:end]
|
|
7
|
+
sys.path.append(project_path)
|
|
8
|
+
|
|
9
|
+
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
|
+
import mns_common.component.cookie.cookie_info_service as cookie_info_service
|
|
14
|
+
import mns_common.api.em.real_time.east_money_stock_us_api as east_money_stock_us_api
|
|
15
|
+
import mns_common.api.em.real_time.east_money_debt_api as east_money_debt_api
|
|
16
|
+
import mns_common.api.em.real_time.east_money_etf_api as east_money_etf_api
|
|
17
|
+
import mns_common.api.em.real_time.east_money_stock_hk_api as east_money_stock_hk_api
|
|
18
|
+
import mns_common.api.em.real_time.east_money_stock_hk_gtt_api as east_money_stock_hk_gtt_api
|
|
19
|
+
import mns_common.api.em.real_time.east_money_stock_a_v2_api as east_money_stock_a_v2_api
|
|
20
|
+
|
|
21
|
+
mongodb_util = MongodbUtil('27017')
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def sync_all_em_stock_info():
|
|
25
|
+
logger.info("同步东方财富a,etf,kzz,us,hk,信息开始")
|
|
26
|
+
# 同步东方财富A股股票信息
|
|
27
|
+
sync_stock_info()
|
|
28
|
+
# 同步东方财富A股可转债信息
|
|
29
|
+
sync_kzz_info()
|
|
30
|
+
# 同步东方财富A股ETF信息
|
|
31
|
+
sync_etf_info()
|
|
32
|
+
# 同步东方财富港股信息
|
|
33
|
+
sync_hk_stock_info()
|
|
34
|
+
# 同步东方财富港股通信息
|
|
35
|
+
sync_hk_ggt_stock_info()
|
|
36
|
+
# 同步东方财富美股信息
|
|
37
|
+
sync_us_stock_info()
|
|
38
|
+
|
|
39
|
+
logger.info("同步东方财富a,etf,kzz,us,hk,信息完成")
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
# 同步东方财富A股可转债信息
|
|
43
|
+
def sync_kzz_info():
|
|
44
|
+
now_date = datetime.now()
|
|
45
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
46
|
+
logger.error("同步东方财富可转债信息")
|
|
47
|
+
try:
|
|
48
|
+
em_kzz_info = east_money_debt_api.get_kzz_real_time_quotes(30, 6)
|
|
49
|
+
em_kzz_info['_id'] = em_kzz_info['symbol']
|
|
50
|
+
em_kzz_info['sync_time'] = str_now_date
|
|
51
|
+
em_kzz_info = em_kzz_info.fillna(0)
|
|
52
|
+
mongodb_util.save_mongo(em_kzz_info, extra_income_db_name.EM_KZZ_INFO)
|
|
53
|
+
except BaseException as e:
|
|
54
|
+
logger.error("同步东方财富可转债信息异常:{}", e)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
# 同步东方财富A股ETF信息
|
|
58
|
+
def sync_etf_info():
|
|
59
|
+
now_date = datetime.now()
|
|
60
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
61
|
+
logger.error("同步东方财富ETF信息")
|
|
62
|
+
try:
|
|
63
|
+
em_etf_info = east_money_etf_api.get_etf_real_time_quotes(30, 6)
|
|
64
|
+
em_etf_info['_id'] = em_etf_info['symbol']
|
|
65
|
+
em_etf_info['sync_time'] = str_now_date
|
|
66
|
+
em_etf_info = em_etf_info.fillna(0)
|
|
67
|
+
mongodb_util.save_mongo(em_etf_info, extra_income_db_name.EM_ETF_INFO)
|
|
68
|
+
except BaseException as e:
|
|
69
|
+
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
# 同步东方财富A股股票信息
|
|
73
|
+
def sync_stock_info():
|
|
74
|
+
now_date = datetime.now()
|
|
75
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
76
|
+
logger.error("同步东方财富股票信息")
|
|
77
|
+
try:
|
|
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)
|
|
83
|
+
except BaseException as e:
|
|
84
|
+
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
# 同步东方财富港股信息
|
|
88
|
+
def sync_hk_stock_info():
|
|
89
|
+
now_date = datetime.now()
|
|
90
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
91
|
+
logger.error("同步东方财富港股信息")
|
|
92
|
+
|
|
93
|
+
em_cookie = cookie_info_service.get_em_cookie()
|
|
94
|
+
|
|
95
|
+
try:
|
|
96
|
+
em_hk_info = east_money_stock_hk_api.get_hk_real_time_quotes(30, em_cookie)
|
|
97
|
+
em_hk_info['_id'] = em_hk_info['symbol']
|
|
98
|
+
em_hk_info['sync_time'] = str_now_date
|
|
99
|
+
em_hk_info = em_hk_info.fillna(0)
|
|
100
|
+
mongodb_util.save_mongo(em_hk_info, extra_income_db_name.EM_HK_STOCK_INFO)
|
|
101
|
+
except BaseException as e:
|
|
102
|
+
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# 同步东方财富港股通信息
|
|
106
|
+
def sync_hk_ggt_stock_info():
|
|
107
|
+
now_date = datetime.now()
|
|
108
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
109
|
+
logger.error("同步东方财富港股信息")
|
|
110
|
+
em_cookie = cookie_info_service.get_em_cookie()
|
|
111
|
+
|
|
112
|
+
try:
|
|
113
|
+
em_hk_gtt_info = east_money_stock_hk_gtt_api.get_ggt_real_time_quotes(em_cookie, 30, 6)
|
|
114
|
+
em_hk_gtt_info['_id'] = em_hk_gtt_info['symbol']
|
|
115
|
+
em_hk_gtt_info['sync_time'] = str_now_date
|
|
116
|
+
em_hk_gtt_info = em_hk_gtt_info.fillna(0)
|
|
117
|
+
mongodb_util.save_mongo(em_hk_gtt_info, extra_income_db_name.EM_HK_GGT_STOCK_INFO)
|
|
118
|
+
except BaseException as e:
|
|
119
|
+
logger.error("同步东方财富ETF信息异常:{}", e)
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
# 同步东方财富美股信息 todo 增加稳定接口
|
|
123
|
+
def sync_us_stock_info():
|
|
124
|
+
now_date = datetime.now()
|
|
125
|
+
str_now_date = now_date.strftime('%Y-%m-%d %H:%M:%S')
|
|
126
|
+
logger.error("同步东方财富美股信息")
|
|
127
|
+
em_cookie = cookie_info_service.get_em_cookie()
|
|
128
|
+
us_stock_info = east_money_stock_us_api.get_us_real_time_quotes(30, em_cookie)
|
|
129
|
+
us_stock_info['_id'] = us_stock_info['symbol']
|
|
130
|
+
us_stock_info['sync_time'] = str_now_date
|
|
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)
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
if __name__ == '__main__':
|
|
137
|
+
sync_all_em_stock_info()
|
|
138
|
+
# em_cookie = cookie_info_service.get_em_cookie()
|
|
139
|
+
# em_us_stock_info = east_money_stock_us_api.get_us_stock_real_time_quotes(em_cookie, None)
|
|
140
|
+
# em_us_stock_info['_id'] = em_us_stock_info['symbol']
|
|
141
|
+
# mongodb_util.save_mongo(em_us_stock_info, db_name_constant.EM_US_STOCK_INFO)
|