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