From ff6d60a42364ba8e2d0d5cfb5504454bee8017ad Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 05 九月 2024 15:38:09 +0800
Subject: [PATCH] L2数据输出接口修改

---
 third_data/code_plate_key_manager.py |   51 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 48 insertions(+), 3 deletions(-)

diff --git a/third_data/code_plate_key_manager.py b/third_data/code_plate_key_manager.py
index 7449bfd..aa002dc 100644
--- a/third_data/code_plate_key_manager.py
+++ b/third_data/code_plate_key_manager.py
@@ -19,7 +19,7 @@
 from log_module import log, async_log_util
 from db import redis_manager_delegate as redis_manager
 
-from log_module.log import logger_kpl_block_can_buy
+from log_module.log import logger_kpl_block_can_buy, logger_debug
 from third_data.kpl_util import KPLPlatManager
 from trade import trade_manager, l2_trade_util, trade_constant
 
@@ -1060,6 +1060,46 @@
     婵�杩涗拱鏉垮潡绠$悊
     """
     __TargetCodePlateKeyManager = TargetCodePlateKeyManager()
+    # 涓婃鐨勬定鍋滀唬鐮�
+    __last_limit_up_codes = set()
+    # 璁板綍浠g爜鐨勬定鍋滄椂闂�
+    __limit_up_time_dict = {}
+    # 鐐告澘浠g爜鐨勬�绘定鍋滄椂闂�
+    __total_limit_up_space_dict = {}
+
+    # 褰撳墠娑ㄥ仠鐨勪唬鐮�
+    __current_limit_up_codes = set()
+
+    @classmethod
+    def set_current_limit_up_datas(cls, current_limit_up_datas):
+        # 鏌ヨ褰撳墠鐨勬定鍋滀唬鐮侀泦鍚�
+        codes = set([d[0] for d in current_limit_up_datas])
+        cls.__current_limit_up_codes = codes
+        try:
+            # 鐐告澘浠g爜
+            break_limit_up_codes = cls.__last_limit_up_codes - codes
+            # 鏂版定鍋滅殑浠g爜
+            new_limit_up_codes = codes - cls.__last_limit_up_codes
+            if new_limit_up_codes:
+                for code in new_limit_up_codes:
+                    if code not in cls.__limit_up_time_dict:
+                        cls.__limit_up_time_dict[code] = time.time()
+            if break_limit_up_codes:
+                # 璁板綍鎬绘定鍋滄椂闂�
+                for bc in break_limit_up_codes:
+                    if bc in cls.__limit_up_time_dict:
+                        space = tool.trade_time_sub(tool.get_now_time_str(),
+                                                    tool.to_time_str(cls.__limit_up_time_dict[bc]))
+                        if bc not in cls.__total_limit_up_space_dict:
+                            cls.__total_limit_up_space_dict[bc] = 0
+                        cls.__total_limit_up_space_dict[bc] = cls.__total_limit_up_space_dict[bc] + space
+                        logger_debug.info(f"鐐告澘浠g爜娑ㄥ仠鏃堕棿锛歿bc}-{cls.__total_limit_up_space_dict[bc]}")
+                        cls.__limit_up_time_dict.pop(bc)
+        except Exception as e:
+            logger_debug.exception(e)
+        finally:
+            cls.__last_limit_up_codes = codes
+        cls.compute_open_limit_up_code_dict_for_radical_buy(current_limit_up_datas)
 
     @classmethod
     def compute_open_limit_up_code_dict_for_radical_buy(cls, current_limit_up_datas):
@@ -1143,11 +1183,13 @@
         鑾峰彇鍘嗗彶娑ㄥ仠韬綅
         @param code:
         @param block:
-        @param current_limit_up_datas:
+        @param current_limit_up_datas: 鏄ㄦ棩娑ㄥ仠浠g爜
+        @param current_limit_up_codes: 鐩墠鐨勬定鍋滀唬鐮�
         @return:
         """
         history_index = 0
         block_codes_infos = []
+        # 寮�1鏃堕棿鑼冨洿
         timestamp_start, timestamp_end = kpl_block_util.open_limit_up_time_range
         limit_up_time = time.time()
         for k in LimitUpDataConstant.history_limit_up_datas:
@@ -1168,7 +1210,10 @@
             # 鍓旈櫎楂樹綅鏉�
             if _code in yesterday_limit_up_codes:
                 continue
-            # 浠g爜.娑ㄥ仠鏃堕棿
+            # 鍓旈櫎鐐告澘浠g爜鎸佺画娑ㄥ仠鏃堕棿灏忎簬1鍒嗛挓鐨勪唬鐮�
+            if _code not in cls.__current_limit_up_codes and _code in cls.__total_limit_up_space_dict and cls.__total_limit_up_space_dict[_code] < 60:
+                continue
+            # 浠g爜,娑ㄥ仠鏃堕棿
             block_codes_infos.append((_code, int(k[5])))
         block_codes_infos.append((code, limit_up_time))
         block_codes_infos.sort(key=lambda x: x[1])

--
Gitblit v1.8.0