import threading from code_attribute.code_data_util import ZYLTGBUtil from huaxin_client import l1_subscript_codes_manager from third_data import history_k_data_util, kpl_api from utils import tool def update_all_zylt_volumes(): """ 更新所有目标代码的自由流通股本 @return: """ # 判断当前是否是交易日 previous_trading_date = history_k_data_util.HistoryKDatasUtils.get_previous_trading_date(tool.get_now_date_str()) if history_k_data_util.HistoryKDatasUtils.get_next_trading_date(previous_trading_date) != tool.get_now_date_str(): # 非交易日 return 0 def update_zylt_volume(codes): # 获取最近的价格 price_datas = history_k_data_util.JueJinApi.get_gp_current_info(codes, "symbol,price") price_dict = {x['symbol'].split(".")[1]: x['price'] for x in price_datas} for code in price_dict: try: zylt = kpl_api.getZYLTAmount(code) ZYLTGBUtil.save_volume(code, int(zylt / price_dict[code])) except: pass # 刷新目标代码的自由流通量 codes_sh, codes_sz = l1_subscript_codes_manager.get_codes(False) codes = set() if codes_sh: for code_byte in codes_sh: codes.add(code_byte.decode()) for code_byte in codes_sz: codes.add(code_byte.decode()) updated_codes = ZYLTGBUtil.get_today_updated_volume_codes() codes = codes - set(updated_codes) threading.Thread(target=lambda: update_zylt_volume(codes), daemon=True).start() return len(codes) if __name__ == "__main__": # previous_trading_date = history_k_data_util.HistoryKDatasUtils.get_previous_trading_date(tool.get_now_date_str()) # if history_k_data_util.HistoryKDatasUtils.get_next_trading_date(previous_trading_date) != tool.get_now_date_str(): # print("非交易日") # else: # print("交易日") # zylt = kpl_api.getZYLTAmount("000333") # print(zylt) update_all_zylt_volumes() input()