From 3ec79004bd769828c8dc18ed35280f81cfb473ff Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期三, 08 二月 2023 19:30:45 +0800
Subject: [PATCH] 交易结果整理

---
 l2/transaction_progress.py |   48 +++++++++++++++++++++++++++++++++---------------
 1 files changed, 33 insertions(+), 15 deletions(-)

diff --git a/l2/transaction_progress.py b/l2/transaction_progress.py
index 6d570b6..cca3926 100644
--- a/l2/transaction_progress.py
+++ b/l2/transaction_progress.py
@@ -9,6 +9,7 @@
 from db import redis_manager
 import tool
 import l2.l2_data_util
+from log import logger_l2_trade_buy_queue
 
 
 class TradeBuyQueue:
@@ -33,17 +34,18 @@
         val = json.loads(val)
         return val[0], [1]
 
-    def __save_buy_progress_index(self, code, index):
+    def __save_buy_progress_index(self, code, index, is_default):
         key = "trade_buy_progress_index-{}".format(code)
-        self.__getRedis().setex(key, tool.get_expire(), index)
+        self.__getRedis().setex(key, tool.get_expire(), json.dumps((index, is_default)))
         # 杩斿洖鏁版嵁涓庢洿鏂版椂闂�
 
     def __get_buy_progress_index(self, code):
         key = "trade_buy_progress_index-{}".format(code)
         val = self.__getRedis().get(key)
         if val is None:
-            return None
-        return int(val)
+            return None, True
+        val = json.loads(val)
+        return int(val[0]), bool(val[1])
 
     # 鏈�杩戠殑闈炴定鍋滀拱1鐨勬椂闂�
     def __save_latest_not_limit_up_time(self, code, time_str):
@@ -67,7 +69,9 @@
         self.last_buy_queue_data[code] = queues
         min_num = round(constant.L2_MIN_MONEY / (limit_up_price * 100))
         num_list = []
-        for num in queues:
+        # 蹇界暐绗竴鏉℃暟鎹�
+        for i in range(1, len(queues)):
+            num = queues[i]
             if num > min_num:
                 num_list.append(num)
         # 淇濆瓨鍒楄〃
@@ -78,21 +82,35 @@
     def save_traded_index(self, code, buy1_price, buyQueueBig):
         total_datas = l2.l2_data_util.local_today_datas.get(code)
         today_num_operate_map = l2.l2_data_util.local_today_num_operate_map.get(code)
-        index = l2.l2_data_util.L2TradeQueueUtils.find_traded_progress_index(buy1_price, total_datas,
-                                                                             today_num_operate_map, buyQueueBig,self.__get_latest_not_limit_up_time(code))
-        if index is not None:
-            # 淇濆瓨鎴愪氦杩涘害
-            self.__save_buy_progress_index(code, index)
-            return index
+        for i in range(0, len(buyQueueBig)):
+            buyQueueBigTemp = buyQueueBig[i:]
+            if i > 0 and len(buyQueueBigTemp) < 2:
+                # 宸茬粡鎵ц杩囦竴娆★紝涓旀暟鎹噺灏忎簬2鏉″氨缁堟璁$畻
+                break
+
+            last_index, is_default = self.get_traded_index(code)
+
+            index = l2.l2_data_util.L2TradeQueueUtils.find_traded_progress_index(buy1_price, total_datas,
+                                                                                 today_num_operate_map, buyQueueBigTemp,
+                                                                                 (
+                                                                                     last_index if last_index is not is_default else 0),
+                                                                                 self.__get_latest_not_limit_up_time(
+                                                                                     code))
+            if index is not None:
+                logger_l2_trade_buy_queue.info(f"纭畾浜ゆ槗杩涘害锛歝ode-{code} index-{index}")
+                # 淇濆瓨鎴愪氦杩涘害
+                self.__save_buy_progress_index(code, index, False)
+                return index
         return None
 
     # 鑾峰彇鎴愪氦杩涘害绱㈠紩
     def get_traded_index(self, code):
-        index = self.__get_buy_progress_index(code)
-        return index
+        index, is_default = self.__get_buy_progress_index(code)
+        return index, is_default
+
+    def set_default_traded_index(self, code, index):
+        self.__save_buy_progress_index(code, index, True)
 
 
 if __name__ == '__main':
-
-
     pass

--
Gitblit v1.8.0