From b9dcb0b8ef3501395d4a2624c2adcf09d725e09c Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期一, 31 七月 2023 16:08:59 +0800 Subject: [PATCH] 增加些实时参数的缓存 --- server.py | 191 ----------------------------------------------- 1 files changed, 2 insertions(+), 189 deletions(-) diff --git a/server.py b/server.py index ea01df5..fa44666 100644 --- a/server.py +++ b/server.py @@ -12,7 +12,7 @@ from utils import alert_util, data_process, global_util, ths_industry_util, tool, import_util, socket_util from code_attribute import code_volumn_manager, code_nature_analyse, global_data_loader, gpcode_manager, \ - gpcode_first_screen_manager + gpcode_first_screen_manager, first_target_code_data_processor import constant from user import authority import inited_data @@ -275,197 +275,10 @@ raise Exception('鏈埌鎺ュ彈鏃堕棿') # 棣栨澘浠g爜 dataList, is_add = data_process.parseGPCode(_str) - print("棣栨澘浠g爜鏁伴噺锛�", len(dataList)) - limit_up_price_dict = {} - temp_codes = [] - codes = [] - tick_datas = [] - if dataList: - for data in dataList: - code = data["code"] - codes.append(code) - - # ---鏌ヨ鎯充拱鍗曪紝濡傛灉娌℃湁鍦ㄥ垪琛ㄤ腑灏遍渶瑕佸己琛屽姞鍏ュ垪琛� - want_codes = gpcode_manager.WantBuyCodesManager.list_code() - if want_codes: - # 娌℃湁鍦ㄧ幇浠烽噰闆嗕腑鐨勬兂涔颁唬鐮� - diff_codes = set(want_codes) - set(codes) - if diff_codes: - zyltgb_list = [] - for code in diff_codes: - # 鏌ヨ鏄惁鍦↙2鐜颁环涓� - if code in self.__l2_current_price_data: - item = self.__l2_current_price_data.get(code) - codes.append(code) - dataList.append(item) - # 淇濆瓨鑷敱娴侀�氳偂鏈� - zyltgb_list.append( - {"code": code, "zyltgb": item["zyltgb"], "zyltgb_unit": item["zyltgbUnit"]}) - else: - # 鑾峰彇娑ㄥ仠浠� - _limit_up_price = gpcode_manager.get_limit_up_price(code) - if not _limit_up_price: - inited_data.re_set_price_pres([code], True) - # 鍐嶆鑾峰彇娑ㄥ仠浠� - _limit_up_price = gpcode_manager.get_limit_up_price(code) - if _limit_up_price: - # 鎴愬姛鑾峰彇鍒颁簡娑ㄥ仠浠凤紝鏋勯�犺櫄鎷熺殑鐜颁环淇℃伅 - codes.append(code) - dataList.append({"code": code, "price": f"{_limit_up_price}", "volume": "0", - "volumeUnit": 0, "time": "00:00:00", "zyltgb": "100", - "zyltgbUnit": 0}) - # 寮哄埗鏇存柊鑷敱娴侀�氳偂鏈� - if zyltgb_list: - ZYLTGBUtil.save_list(zyltgb_list) - # 灏嗕繚瀛樼殑鏁版嵁鏇存柊鍒板唴瀛樹腑 - for z in zyltgb_list: - val = ZYLTGBUtil.get(z["code"]) - if val: - global_util.zyltgb_map[z["code"]] = val - - # ---淇濆瓨鏈瓫閫夌殑棣栨澘浠g爜 - new_add_codes = gpcode_first_screen_manager.set_target_no_screen_codes(codes) - # 淇濆瓨鑷敱娴侀�氳偂鏈� - if dataList: - zyltgb_list = [] - for data in dataList: - code = data["code"] - if code in global_util.zyltgb_map: - continue - zyltgb_list.append( - {"code": code, "zyltgb": data["zyltgb"], "zyltgb_unit": data["zyltgbUnit"]}) - if zyltgb_list: - ZYLTGBUtil.save_list(zyltgb_list) - global_data_loader.load_zyltgb() - - bad_codes = set() - - # 鑾峰彇鏄ㄦ棩鏀剁洏浠� - for code in codes: - # 濡傛灉娑ㄥ仠浠锋槸绌哄�煎氨闇�瑕佽缃槰鏃ユ敹鐩樹环鏍� - if gpcode_manager.get_limit_up_price(code) is None: - inited_data.re_set_price_pres([code], True) - - # 鏉垮潡鍏抽敭瀛楀噯澶� - for code in codes: - if self.__CodesPlateKeysManager.get_history_limit_up_reason(code) is None: - self.__CodesPlateKeysManager.set_history_limit_up_reason(code, - KPLLimitUpDataRecordManager.get_latest_blocks_set( - code)) - if self.__CodesPlateKeysManager.get_blocks(code) is None: - try: - results = kpl_api.getStockIDPlate(code) - bs = [r[1] for r in results] - self.__CodesPlateKeysManager.set_blocks(code, bs) - except Exception as e: - logging.exception(e) - pass - - # 鑾峰彇60澶╂渶澶ц褰� - for code in codes: - need_get_volumn = False - if code not in global_util.max60_volumn or global_util.max60_volumn.get(code) is None: - need_get_volumn = True - if not need_get_volumn and code_nature_analyse.CodeNatureRecordManager.get_nature( - code) is None: - need_get_volumn = True - if need_get_volumn: - volumes_data = inited_data.get_volumns_by_code(code, 150) - volumes = inited_data.parse_max_volume(volumes_data[:90], - code_nature_analyse.is_new_top( - gpcode_manager.get_limit_up_price(code), - volumes_data[:90])) - logger_first_code_record.info("{} 鑾峰彇鍒伴鏉�60澶╂渶澶ч噺锛歿}", code, volumes) - code_volumn_manager.set_histry_volumn(code, volumes[0], volumes[1], volumes[2]) - # 鍒ゆ柇K绾垮舰鎬� - is_has_k_format, msg = code_nature_analyse.is_has_k_format( - gpcode_manager.get_limit_up_price(code), volumes_data) - if not is_has_k_format: - logger_first_code_record.info("{}棣栨澘K绾垮舰鎬佷笉濂�,{}", code, msg) - # 鑲℃�т笉濂斤紝灏变笉瑕佸姞鍏� - bad_codes.add(code) - # 鍔犲叆绂佹浜ゆ槗浠g爜 - l2_trade_util.forbidden_trade(code) - code_nature_analyse.set_record_datas(code, - gpcode_manager.get_limit_up_price(code), - volumes_data) - gpcode_manager.FirstCodeManager.add_record(codes) - # 鍒濆鍖栨澘鍧椾俊鎭� - for code in codes: - block_info.init_code(code) - - if new_add_codes: - gpcode_manager.set_first_gp_codes_with_data(HistoryKDatasUtils.get_gp_latest_info(codes, - fields="symbol,sec_name,sec_type,sec_level")) - # 鍔犲叆棣栨澘鍘嗗彶璁板綍 - - logger_first_code_record.info("鏂板棣栨澘锛歿}", new_add_codes) - - # 绉婚櫎浠g爜 - listen_codes = gpcode_manager.get_listen_codes() - for lc in listen_codes: - if not gpcode_manager.is_in_gp_pool(lc): - # 绉婚櫎浠g爜 - l2_code_operate.L2CodeOperate.get_instance().add_operate(0, lc, "浠g爜琚Щ闄�") - - # 淇濆瓨鐜颁环 - if dataList: - for data in dataList: - code = data["code"] - codes.append(code) - limit_up_price = gpcode_manager.get_limit_up_price(code) - if limit_up_price is not None: - limit_up_price_dict[code] = limit_up_price - else: - temp_codes.append(code) - tick_datas.append({"code": code, "price": data["price"], "volume": data["volume"], - "volumeUnit": data["volumeUnit"]}) - # 鑾峰彇娑ㄥ仠浠� - if temp_codes: - # 鑾峰彇娑ㄥ仠浠� - inited_data.re_set_price_pres(temp_codes) - # 閲嶆柊鑾峰彇娑ㄥ仠浠� - for code in temp_codes: - limit_up_price = gpcode_manager.get_limit_up_price(code) - if limit_up_price is not None: - limit_up_price_dict[code] = limit_up_price + tick_datas = first_target_code_data_processor.process_first_codes_datas(dataList) # 淇濆瓨鐜颁环 self.first_tick_datas.clear() self.first_tick_datas.extend(tick_datas) - - # 棣栨澘鏁版嵁鍔犲伐 - prices = [] - for data in dataList: - code = data["code"] - price = data["price"] - limit_up_time = data["time"] - if limit_up_time == "00:00:00": - limit_up_time = None - if code not in limit_up_price_dict: - continue - is_limit_up = abs(float(limit_up_price_dict[code]) - float(price)) < 0.01 - # 绾犳鏁版嵁 - if is_limit_up and limit_up_time is None: - limit_up_time = tool.get_now_time_str() - if is_limit_up: - # 鍔犲叆棣栨澘娑ㄥ仠 - gpcode_manager.FirstCodeManager.add_limited_up_record([code]) - pricePre = gpcode_manager.get_price_pre(code) - if pricePre is None: - inited_data.re_set_price_pres([code]) - - rate = round((float(price) - pricePre) * 100 / pricePre, 1) - prices.append( - {"code": code, "time": limit_up_time, "rate": rate, - "limit_up": is_limit_up}) - if code in new_add_codes: - if is_limit_up: - place_order_count = trade_data_manager.placeordercountmanager.get_place_order_count( - code) - if place_order_count == 0: - trade_data_manager.placeordercountmanager.place_order(code) - - gpcode_first_screen_manager.process_ticks(prices) except Exception as e: logging.exception(e) finally: -- Gitblit v1.8.0