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