From f03eb72394a3fac097bb3ab1f956a83f99f7bd0e Mon Sep 17 00:00:00 2001 From: Administrator <admin@example.com> Date: 星期四, 03 十一月 2022 17:11:37 +0800 Subject: [PATCH] 优化撤单与动态m值计算 --- server.py | 72 ++++++++++++++---------------------- 1 files changed, 28 insertions(+), 44 deletions(-) diff --git a/server.py b/server.py index 58df57b..e150884 100644 --- a/server.py +++ b/server.py @@ -45,8 +45,6 @@ class MyBaseRequestHandle(socketserver.BaseRequestHandler): - reset_code_dict = {} - set_operate_code_state_dict = {} l2_data_error_dict = {} last_trade_delegate_data = None buy1_volumn_manager = THSBuy1VolumnManager() @@ -73,7 +71,7 @@ data = sk.recv(102400) if len(data) == 0: # print("瀹㈡埛绔柇寮�杩炴帴") - break; + break _str = str(data, encoding="gbk") if len(_str) > 0: # print("缁撴灉锛�",_str) @@ -82,57 +80,41 @@ if type == 0: try: + origin_start_time = round(time.time() * 1000) __start_time = round(time.time() * 1000) - _start_time = round(time.time() * 1000) # level2鐩樺彛鏁版嵁 day, client, channel, code, capture_time, process_time, datas, origin_datas = l2_data_manager.parseL2Data( _str) # 10ms鐨勭綉缁滀紶杈撳欢鏃� capture_timestamp = __start_time - process_time - 10 + __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, + "鎴浘鏃堕棿锛歿} 鏁版嵁瑙f瀽鏃堕棿".format(process_time)) - __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, "鏁版嵁瑙f瀽鏃堕棿") - # try: - # self.pipe_ui.send( - # json.dumps({"type": "l2_data_notify", "data": {"count": len(datas), "code": code}})) - # except: - # pass - - # 杩囨椂 淇濆瓨l2鎴浘鏃堕棿 - # TradeCancelDataManager.save_l2_capture_time(client, channel, code, capture_time) cid, pid = gpcode_manager.get_listen_code_pos(code) + + __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, + "l2鑾峰彇浠g爜浣嶇疆鑰楁椂") # 鍒ゆ柇鐩爣浠g爜浣嶇疆鏄惁涓庝笂浼犳暟鎹綅缃竴鑷� if cid is not None and pid is not None and client == int(cid) and channel == int(pid): try: - # print("L2鏁版嵁鎺ュ彈",day,code,len(datas)) - # 鏌ヨ - code_ = gpcode_manager.get_listen_code_by_pos(client, channel) - if code_ != code: - key = "{}-{}-{}".format(client, channel, code) - - # 闂撮殧2s - if key not in self.reset_code_dict or round( - time.time() * 1000) - self.reset_code_dict[key] > 2000: - - self.l2CodeOperate.set_operate_code_state(client, channel, 0) - self.reset_code_dict[key] = round(time.time() * 1000) - if code_ is None: - code_ = "" - if tool.is_trade_time(): - self.l2CodeOperate.repaire_operate(int(client), int(channel), code_) - else: - key = "{}-{}".format(client, channel) - if key not in self.set_operate_code_state_dict or round( - time.time() * 1000) - self.set_operate_code_state_dict[key] > 1000: - self.set_operate_code_state_dict[key] = round(time.time() * 1000) - self.l2CodeOperate.set_operate_code_state(client, channel, 1) - - __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, - "l2鏁版嵁姝g‘鎬у垽鏂椂闂�") + # 鏍¢獙瀹㈡埛绔唬鐮� + l2_code_operate.verify_with_l2_data_pos_info(code, client, channel) + __start_time = round(time.time() * 1000) if gpcode_manager.is_listen(code): + __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, + "l2澶栭儴鏁版嵁棰勫鐞嗚�楁椂") l2_data_manager_new.L2TradeDataProcessor.process(code, datas, capture_timestamp) + __start_time = l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, + "l2鏁版嵁鏈夋晥澶勭悊澶栭儴鑰楁椂", + False) # 淇濆瓨鍘熷鏁版嵁鏁伴噺 l2_data_util.save_l2_latest_data_number(code, len(origin_datas)) + if round(time.time() * 1000) - __start_time > 20: + l2_data_log.l2_time(code, round(time.time() * 1000) - __start_time, + "寮傛淇濆瓨鍘熷鏁版嵁鏉℃暟鑰楁椂", + False) + except l2_data_manager.L2DataException as l: # 鍗曚环涓嶇 if l.get_code() == l2_data_manager.L2DataException.CODE_PRICE_ERROR: @@ -155,8 +137,9 @@ __end_time = round(time.time() * 1000) # 鍙褰曞ぇ浜�40ms鐨勬暟鎹� - if __end_time - __start_time > 40: - l2_data_log.l2_time(code, round(time.time() * 1000) - _start_time, "l2鏁版嵁澶勭悊鎬昏�楁椂", + if __end_time - origin_start_time > 100: + l2_data_log.l2_time(code, round(time.time() * 1000) - origin_start_time, + "l2鏁版嵁澶勭悊鎬昏�楁椂", True) except Exception as e: logging.exception(e) @@ -171,8 +154,7 @@ # 鑾峰彇鍩烘湰淇℃伅 code_datas = juejin.JueJinManager.get_gp_latest_info(code_list) gpcode_manager.set_gp_list(code_datas) - # 閲嶆柊璁㈤槄 - self.server.pipe_juejin.send(json.dumps({"type": "resub"})) + # 鍚屾鍚岃姳椤虹洰鏍囦唬鐮� t1 = threading.Thread(target=lambda: sync_target_codes_to_ths()) t1.setDaemon(True) @@ -257,11 +239,13 @@ seconds = seconds - seconds % 3 time_ = tool.time_seconds_format(seconds) # 淇濆瓨鏁版嵁 - need_sync = self.buy1_volumn_manager.save(code, time_, volumn,price) + need_sync, need_cancel, cancel_msg = self.buy1_volumn_manager.save(code, time_, volumn, + price) + if need_cancel: + l2_data_manager_new.L2TradeDataProcessor.cancel_buy(code, cancel_msg) if need_sync: # 鍚屾鏁版嵁 l2_data_manager.L2LimitUpMoneyStatisticUtil.verify_num(code, volumn, time_) - elif type == 30: # 蹇冭烦淇℃伅 -- Gitblit v1.8.0