From 86e0061f9cf211b98252a9e6b71d6c9801e4a16b Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期日, 18 十二月 2022 18:08:03 +0800 Subject: [PATCH] 撤单策略再次修改 --- server.py | 73 ++++++++++++++++++++++++++++++------ 1 files changed, 60 insertions(+), 13 deletions(-) diff --git a/server.py b/server.py index 0a1a589..e00cf8c 100644 --- a/server.py +++ b/server.py @@ -31,8 +31,9 @@ import l2_code_operate from code_data_util import ZYLTGBUtil -from log import logger_l2_error, logger_device, logger_trade_delegate, logger_buy_1_volumn_record -from trade_queue_manager import THSBuy1VolumnManager, Buy1PriceManager +from log import logger_l2_error, logger_device, logger_trade_delegate, logger_buy_1_volumn_record, \ + logger_l2_trade_queue, logger_l2_latest_data +from trade_queue_manager import THSBuy1VolumnManager, Buy1PriceManager, thsl2tradequeuemanager class MyTCPServer(socketserver.TCPServer): @@ -50,8 +51,12 @@ l2_data_error_dict = {} last_trade_delegate_data = None buy1_volumn_manager = THSBuy1VolumnManager() + ths_l2_trade_queue_manager = thsl2tradequeuemanager() + latest_buy1_volumn_dict = {} buy1_price_manager = Buy1PriceManager() + l2_trade_queue_time_dict = {} + l2_save_time_dict = {} def setup(self): super().setup() # 鍙互涓嶈皟鐢ㄧ埗绫荤殑setup()鏂规硶锛岀埗绫荤殑setup鏂规硶浠�涔堥兘娌″仛 @@ -90,8 +95,14 @@ # level2鐩樺彛鏁版嵁 day, client, channel, code, capture_time, process_time, datas, origin_datas = l2_data_manager.parseL2Data( _str) + # 闂撮殧1s淇濆瓨涓�鏉2鐨勬渶鍚庝竴鏉℃暟鎹� + if code not in self.l2_save_time_dict or origin_start_time - self.l2_save_time_dict[code] >= 1000 and len(datas) > 0: + self.l2_save_time_dict[code] = origin_start_time + logger_l2_latest_data.info("{}#{}#{}", code, capture_time, datas[-1]) + # 10ms鐨勭綉缁滀紶杈撳欢鏃� capture_timestamp = __start_time - process_time - 10 + # print("鎴浘鏃堕棿锛�", process_time) __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, "鎴浘鏃堕棿锛歿} 鏁版嵁瑙f瀽鏃堕棿".format(process_time)) @@ -149,23 +160,26 @@ logging.exception(e) elif type == 1: # 璁剧疆鑲$エ浠g爜 - data_list = data_process.parseGPCode(_str) + data_list, is_add = data_process.parseGPCode(_str) ZYLTGBUtil.save_list(data_list) code_list = [] for data in data_list: code_list.append(data["code"]) - # 鑾峰彇鍩烘湰淇℃伅 code_datas = juejin.JueJinManager.get_gp_latest_info(code_list) - gpcode_manager.set_gp_list(code_datas) + if is_add: + gpcode_manager.add_gp_list(code_datas) + else: + gpcode_manager.set_gp_list(code_datas) - # 鍚屾鍚岃姳椤虹洰鏍囦唬鐮� - t1 = threading.Thread(target=lambda: sync_target_codes_to_ths()) - t1.setDaemon(True) - t1.start() + if not is_add: + # 鍚屾鍚岃姳椤虹洰鏍囦唬鐮� + t1 = threading.Thread(target=lambda: sync_target_codes_to_ths()) + t1.setDaemon(True) + t1.start() elif type == 2: # 娑ㄥ仠浠g爜 - dataList = data_process.parseGPCode(_str) + dataList, is_add = data_process.parseGPCode(_str) # 璁剧疆娑ㄥ仠鏃堕棿 gpcode_manager.set_limit_up_list(dataList) # 淇濆瓨鍒板唴瀛樹腑 @@ -184,8 +198,8 @@ continue # 鑾峰彇鏄惁鏈夋定鍋滄椂闂� - if limit_up_time_manager.get_limit_up_time(d["code"]) is None: - limit_up_time_manager.save_limit_up_time(d["code"], d["time"]) + # if limit_up_time_manager.get_limit_up_time(d["code"]) is None: + # limit_up_time_manager.save_limit_up_time(d["code"], d["time"]) elif type == 3: # 浜ゆ槗鎴愬姛淇℃伅 @@ -223,6 +237,32 @@ money = datas["money"] # TODO瀛樺叆缂撳瓨鏂囦欢 trade_manager.set_available_money(client, money) + # l2浜ゆ槗闃熷垪 + elif type == 10: + # 鍙敤閲戦 + datas = data_process.parseData(_str) + channel = datas["channel"] + code = datas["code"] + data = datas["data"] + buy_time = data["buyTime"] + buy_one_price = data["buyOnePrice"] + buy_one_volumn = data["buyOneVolumn"] + # 淇濆瓨鏈�杩戠殑璁板綍 + if self.ths_l2_trade_queue_manager.save_recod(code, data): + if buy_time != "00:00:00": + logger_l2_trade_queue.info("{}-{}", code, data) + need_sync, need_cancel, cancel_msg = self.buy1_volumn_manager.save(code, buy_time, + int(buy_one_volumn), + buy_one_price) + if need_cancel: + l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, cancel_msg) + if need_sync: + # 鍚屾鏁版嵁 + l2_data_manager_new.L2LimitUpMoneyStatisticUtil.verify_num(code, int(buy_one_volumn), + buy_time) + # print(buy_time, buy_one_price, buy_one_volumn) + + # print("L2涔板崠闃熷垪",datas) elif type == 20: # 鐧诲綍 data = data_process.parse(_str)["data"] @@ -287,6 +327,12 @@ l2_clients = authority.get_l2_clients() if client_id in l2_clients: alert_util.alarm() + elif type == 60: + # 蹇冭烦淇℃伅 + data = data_process.parse(_str)["data"] + client_id = data["client"] + print("L2鑷惎鍔ㄦ垚鍔�", client_id) + # print("蹇冭烦锛�", client_id) sk.send(return_str.encode()) @@ -368,6 +414,7 @@ if __name__ == "__main__": try: - repair_ths_main_site(2) + thsl2tradequeuemanager().test() + # repair_ths_main_site(2) except Exception as e: print(str(e)) -- Gitblit v1.8.0