From e9ad6f3b408d2841812e13fe2ccb9572c9c0ec15 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 16 四月 2024 14:38:55 +0800
Subject: [PATCH] 上证安全笔数限制
---
l2/l2_data_source_util.py | 68 ++++++++++++++++++++++++++++-----
1 files changed, 57 insertions(+), 11 deletions(-)
diff --git a/l2/l2_data_source_util.py b/l2/l2_data_source_util.py
index 85893f6..dab8a19 100644
--- a/l2/l2_data_source_util.py
+++ b/l2/l2_data_source_util.py
@@ -2,6 +2,7 @@
L2鏁版嵁婧簮
"""
import constant
+from log_module.log import logger_l2_error
from utils import tool
@@ -65,7 +66,7 @@
for bd in buy_datas:
# 鏍规嵁璁㈠崟鍙峰仛鍖归厤
if bd["val"]["orderNo"] == cancel_data["val"]["orderNo"]:
- return bd
+ return bd["index"]
return None
# 鍚岃姳椤烘笭閬撶殑L2锛屾牴鎹拱鎾ゆ暟鎹煡鎵句拱鍏ユ暟鎹�
@@ -124,15 +125,25 @@
def get_buy_index_with_cancel_data(cls, code, cancel_data, local_today_num_operate_map):
key = "{}-{}-{}".format(cancel_data["val"]["num"], "1", cancel_data["val"]["price"])
cancel_datas = local_today_num_operate_map.get(key)
- try:
- cancel_datas.sort(key=lambda t: t["index"])
- except Exception as e:
- print("娴嬭瘯")
- for item in cancel_datas:
- # 鎻愬墠鍋氳绠�
- cls.__get_buy_index_with_cancel_data(code, item, local_today_num_operate_map)
+ if cancel_datas:
+ try:
+ cancel_datas.sort(key=lambda t: t["index"])
+ except Exception as e:
+ print("娴嬭瘯")
+ for item in cancel_datas:
+ # 鎻愬墠鍋氳绠�
+ cls.__get_buy_index_with_cancel_data(code, item, local_today_num_operate_map)
return cls.__get_buy_index_with_cancel_data(code, cancel_data, local_today_num_operate_map)
+
+ # 鏍规嵁涔版挙鏁版嵁璁$畻涔板叆鏁版嵁锛堝崕閼師鐢烲2鏁版嵁閫傜敤锛�
+ @classmethod
+ def get_buy_index_with_cancel_data_v2(cls, cancel_data, buyno_map):
+ order_no = str(cancel_data["val"]["orderNo"])
+ buy_data = buyno_map.get(order_no)
+ if buy_data:
+ return buy_data["index"]
+ return None
# 鑾峰彇娌℃挙鐨勭瑪鏁�
@classmethod
@@ -140,8 +151,8 @@
data = None
try:
data = total_data[index]
- except:
- print("")
+ except Exception as e:
+ logger_l2_error.error(f"鏈壘鍒颁拱鍏ョ储寮曞搴旂殑鏁版嵁锛歩ndex-{index} total_data闀垮害-{len(total_data) if total_data else 0} 閿欒鍘熷洜锛歿str(e)}")
val = data["val"]
# 鍒ゆ柇褰撳墠涔版槸鍚﹀凡缁忎拱鎾�
cancel_datas = local_today_num_operate_map.get(
@@ -149,7 +160,6 @@
canceled = False
if cancel_datas:
for cancel_data in cancel_datas:
-
buy_index = cls.get_buy_index_with_cancel_data(code, cancel_data, local_today_num_operate_map)
if buy_index == index:
canceled = True
@@ -162,6 +172,42 @@
return count
return 0
+ # 鑾峰彇娌℃挙鐨勭瑪鏁�
+
+ # 鑾峰彇娑ㄥ仠涔版病鏈夋挙鍗曠殑鏁伴噺
+ @classmethod
+ def get_limit_up_buy_no_canceled_count_v2(cls, code, index, total_data, canceled_buyno_map):
+ data = None
+ try:
+ data = total_data[index]
+ except Exception as e:
+ logger_l2_error.error(
+ f"鏈壘鍒颁拱鍏ョ储寮曞搴旂殑鏁版嵁锛歩ndex-{index} total_data闀垮害-{len(total_data) if total_data else 0} 閿欒鍘熷洜锛歿str(e)}")
+ val = data["val"]
+ order_no = str(val["orderNo"])
+ canceled_data = canceled_buyno_map.get(order_no)
+ if canceled_data:
+ return data["re"] - canceled_data["re"]
+ else:
+ return data["re"]
+
+ @classmethod
+ def get_limit_up_buy_canceled_data_v2(cls, code, index, total_data, canceled_buyno_map):
+ data = None
+ try:
+ data = total_data[index]
+ except Exception as e:
+ logger_l2_error.error(
+ f"鏈壘鍒颁拱鍏ョ储寮曞搴旂殑鏁版嵁锛歩ndex-{index} total_data闀垮害-{len(total_data) if total_data else 0} 閿欒鍘熷洜锛歿str(e)}")
+ val = data["val"]
+ order_no = str(val["orderNo"])
+ canceled_data = canceled_buyno_map.get(order_no)
+ if canceled_data:
+ return canceled_data
+ else:
+ return None
+
+
# if __name__ == "__main__":
# code = "000925"
# l2_data_util.load_l2_data(code)
--
Gitblit v1.8.0