From deb26c8b90f9d67c340b3a757740085ac8dd5743 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期三, 09 十月 2024 00:32:20 +0800
Subject: [PATCH] 订阅特殊量/目标代码扫入板块修改/

---
 l2/l2_data_manager_new.py |  195 ++----------------------------------------------
 1 files changed, 10 insertions(+), 185 deletions(-)

diff --git a/l2/l2_data_manager_new.py b/l2/l2_data_manager_new.py
index f95763f..67bb17a 100644
--- a/l2/l2_data_manager_new.py
+++ b/l2/l2_data_manager_new.py
@@ -331,10 +331,20 @@
             if cancel_result[0]:
                 L2TradeDataProcessor.cancel_buy(code, f"F鎾�:{cancel_result[1]}",
                                                 cancel_type=trade_constant.CANCEL_TYPE_F)
+                return
             else:
                 l2_log.f_cancel_debug(code, f"鑾峰彇鐪熷疄鎴愪氦浣嶇殑F鎾ゆ湭鐢熸晥锛歿cancel_result[1]}")
         except Exception as e:
             logger_debug.exception(e)
+        # 鍒ゆ柇涓庢墽琛屼綅缃殑闂撮殧鏃堕棿
+        if order_begin_pos.mode != OrderBeginPosInfo.MODE_RADICAL:
+            # 闈炴壂鍏ヤ笅鍗曡鍒ゆ柇鎵ц浣嶇疆涓庣湡瀹炰笅鍗曚綅鐨勯棿闅旀椂闂�
+            total_datas = local_today_datas.get(code)
+            if tool.trade_time_sub_with_ms(L2DataUtil.get_time_with_ms(total_datas[index]["val"]), L2DataUtil.get_time_with_ms(total_datas[order_begin_pos.buy_exec_index]["val"])) > 2000:
+                L2TradeDataProcessor.cancel_buy(code, f"鐪熷疄涓嬪崟浣�({index})涓庢墽琛屼綅({order_begin_pos.buy_exec_index})鐩稿樊2s浠ヤ笂",
+                                                cancel_type=trade_constant.CANCEL_TYPE_F)
+                return
+
 
     # 澶勭悊鍗庨懌L2鏁版嵁
     @classmethod
@@ -1961,191 +1971,6 @@
                 continue
             findexes.add(index)
         return findexes
-
-    # 缁熻涔板叆鍑�涔伴噺锛屼笉璁$畻鍦ㄤ拱鍏ヤ俊鍙蜂箣鍓嶇殑涔版挙鍗�
-    @classmethod
-    def __sum_buy_num_for_order_3(cls, code, compute_start_index, compute_end_index, origin_num, origin_count,
-                                  threshold_money, buy_single_index, max_num_set, at_limit_up=False):
-        _start_time = t.time()
-        total_datas = local_today_datas[code]
-        # is_first_code = gpcode_manager.FirstCodeManager().is_in_first_record_cache(code)
-
-        buy_nums = origin_num
-        buy_count = origin_count
-        limit_up_price = gpcode_manager.get_limit_up_price(code)
-        if limit_up_price is None:
-            raise Exception("娑ㄥ仠浠锋棤娉曡幏鍙�")
-        limit_up_price = float(limit_up_price)
-
-        threshold_num = None
-        # 澶х洰鏍囨墜鏁帮紙婊¤冻杩欎釜灏变笉闇�瑕佺湅瀹夊叏绗旀暟锛�
-        threshold_max_num = None
-
-        # 鐩爣璁㈠崟鏁伴噺
-        threshold_count = cls.__l2PlaceOrderParamsManagerDict[code].get_safe_count()
-
-        # 鏈�澶ч棿闅旀椂闂磎s
-        max_space_time_ms = cls.__l2PlaceOrderParamsManagerDict[code].get_time_range() * 1000
-
-        # ----------------璋冩暣鏉夸笂涓嬪崟鐨刴鍊间笌瀹夊叏绗旀暟----------------
-        if at_limit_up:
-            # 鏉夸笂涔帮紝鑾峰彇鏈�杩戜竴娆¢棯鐢典笅鍗曠殑鎬诲崠棰�
-            sell_data = cls.__latest_fast_place_order_info_dict.get(code)
-            if sell_data:
-                # 鏈夎繃闂數涓嬪崟
-                # 鎬诲崠鐨勪竴鍗婁綔涓簃鍊�
-                threshold_num = int(sell_data[1] / (limit_up_price * 100)) // 2
-                threshold_max_num = 1
-            #  淇″彿涓轰箣鍓嶆湁寰呮垚浜ょ殑澶у崟锛堜笉鏄鍦ㄦ垚浜わ級
-            trade_index, is_default = cls.__TradeBuyQueue.get_traded_index(code)
-            if not is_default and trade_index is not None:
-                temp_big_num = int(30000 / limit_up_price)
-                for i in range(trade_index + 1, buy_single_index):
-                    data = total_datas[i]
-                    val = data['val']
-                    if not L2DataUtil.is_limit_up_price_buy(val):
-                        continue
-                        # 鍒ゆ柇鏄惁鏈夊ぇ鍗曟湭鎴愪氦
-                    if temp_big_num > val["num"]:
-                        continue
-
-                    left_count = l2_data_source_util.L2DataSourceUtils.get_limit_up_buy_no_canceled_count_v2(code,
-                                                                                                             data[
-                                                                                                                 "index"],
-                                                                                                             total_datas,
-                                                                                                             local_today_canceled_buyno_map.get(
-                                                                                                                 code))
-                    if left_count > 0:
-                        # 瀹夊叏绗旀暟涓庡泭鎷椂闂磋寖鍥翠慨鏀�
-                        threshold_count = 3
-                        max_space_time_ms = 9 * 1000
-                        break
-
-        if not threshold_num:
-            # 鐩爣鎵嬫暟
-            threshold_num = round(threshold_money / (limit_up_price * 100))
-        if not threshold_max_num:
-            threshold_max_num = int(threshold_num * 1.2)
-
-        # place_order_count = trade_data_manager.PlaceOrderCountManager().get_place_order_count(code)
-
-        # buy_single_time_seconds = L2DataUtil.get_time_as_second(total_datas[buy_single_index]["val"]["time"])
-
-        # 鍙互瑙﹀彂涔帮紝褰撴湁娑ㄥ仠涔颁俊鍙锋椂鎵嶄細瑙﹀彂涔�
-        trigger_buy = True
-
-        # 濡傛灉澶у崟鍚湁鐜囧ぇ浜�50%锛屽垯鏃堕棿鍥婃嫭鑼冨洿鎻愰珮鍒�3s
-        if max_num_set and origin_count:
-            if len(max_num_set) / origin_count > 0.5:
-                max_space_time_ms = 3 * 1000
-
-        # 鏈�澶т拱閲�
-        max_buy_num = 0
-        max_buy_num_set = set(max_num_set)
-
-        # 闇�瑕佺殑鏈�灏忓ぇ鍗曠瑪鏁�
-        big_num_count = cls.__l2PlaceOrderParamsManagerDict[code].get_big_num_count()
-
-        # 杈冨ぇ鍗曠殑鎵嬫暟
-        bigger_num = round(5000 / limit_up_price)
-
-        not_buy_msg = ""
-        is_ge_code = tool.is_ge_code(code)
-        for i in range(compute_start_index, compute_end_index + 1):
-            data = total_datas[i]
-            _val = total_datas[i]["val"]
-            trigger_buy = False
-            # 蹇呴』涓鸿繛缁�2绉掑唴鐨勬暟鎹�
-            if L2DataUtil.time_sub_as_ms(_val, total_datas[buy_single_index]["val"]) > max_space_time_ms:
-                cls.__TradePointManager.delete_buy_point(code)
-                if i == compute_end_index:
-                    # 鏁版嵁澶勭悊瀹屾瘯
-                    return None, buy_nums, buy_count, None, max_buy_num_set, f"銆恵i}銆戜俊鍙蜂笉杩炵画锛屽泭鎷椂闂�-{max_space_time_ms}ms"
-                else:
-                    # 璁$畻涔板叆淇″彿锛屼笉鑳藉悓涓�鏃堕棿寮�濮嬭绠�
-                    for ii in range(buy_single_index + 1, compute_end_index + 1):
-                        if total_datas[buy_single_index]["val"]["time"] != total_datas[ii]["val"]["time"]:
-                            return None, buy_nums, buy_count, ii, max_buy_num_set, f"銆恵i}銆戜俊鍙蜂笉杩炵画锛屽泭鎷椂闂�-{max_space_time_ms}ms"
-            # 娑ㄥ仠涔�
-            if L2DataUtil.is_limit_up_price_buy(_val):
-                if l2_data_util.is_big_money(_val, is_ge_code):
-                    max_buy_num_set.add(i)
-                if _val["num"] >= bigger_num:
-                    trigger_buy = True
-                    # 鍙粺璁�59涓囦互涓婄殑閲戦
-                    buy_nums += int(_val["num"]) * int(total_datas[i]["re"])
-                    buy_count += int(total_datas[i]["re"])
-                    if (buy_nums >= threshold_num and buy_count >= threshold_count) or buy_nums >= threshold_max_num:
-                        l2_log.info(code, logger_l2_trade_buy,
-                                    f"{code}鑾峰彇鍒颁拱鍏ユ墽琛岀偣锛歿i} 缁熻绾拱鎵嬫暟锛歿buy_nums} 鐩爣绾拱鎵嬫暟锛歿threshold_num}/{threshold_max_num} 缁熻绾拱鍗曟暟锛歿buy_count} 鐩爣绾拱鍗曟暟锛歿threshold_count}, 澶у崟鏁伴噺锛歿len(max_buy_num_set)}")
-            elif L2DataUtil.is_limit_up_price_buy_cancel(_val):
-                if _val["num"] >= bigger_num:
-                    # 鍙粺璁�59涓囦互涓婄殑閲戦
-                    # 娑ㄥ仠涔版挙
-                    # 鍒ゆ柇涔板叆浣嶇疆鏄惁鍦ㄤ拱鍏ヤ俊鍙蜂箣鍓�
-                    buy_index = l2_data_source_util.L2DataSourceUtils.get_buy_index_with_cancel_data_v2(total_datas[i],
-                                                                                                        local_today_buyno_map.get(
-                                                                                                            code))
-                    if buy_index is not None:
-                        # 鎵惧埌涔版挙鏁版嵁鐨勪拱鍏ョ偣
-                        if buy_index >= buy_single_index:
-                            buy_nums -= int(_val["num"]) * int(data["re"])
-                            buy_count -= int(data["re"])
-                            # 澶у崟鎾ら攢
-                            max_buy_num_set.discard(buy_index)
-                            l2_log.buy_debug(code, "{}鏁版嵁鍦ㄤ拱鍏ヤ俊鍙蜂箣鍚� 鎾や拱绾拱鎵嬫暟锛歿} 鐩爣鎵嬫暟锛歿}", i, buy_nums, threshold_num)
-                        else:
-                            l2_log.buy_debug(code, "{}鏁版嵁鍦ㄤ拱鍏ヤ俊鍙蜂箣鍓嶏紝涔板叆浣嶏細{}", i, buy_index)
-                            if total_datas[buy_single_index]["val"]["time"] == total_datas[buy_index]["val"]["time"]:
-                                # 鍚屼竴绉�,褰撲綔涔板叆淇″彿涔嬪悗澶勭悊
-                                buy_nums -= int(_val["num"]) * int(data["re"])
-                                buy_count -= int(data["re"])
-                                # 澶у崟鎾ら攢
-                                max_buy_num_set.discard(buy_index)
-                                l2_log.buy_debug(code, "{}鏁版嵁涔板叆浣嶄笌棰勪及涔板叆浣嶅湪鍚屼竴绉�", i)
-                    else:
-                        # 鏈壘鍒颁拱鎾ゆ暟鎹殑涔板叆鐐�
-                        l2_log.buy_debug(code, "鏈壘鍒颁拱鎾ゆ暟鎹殑涔板叆鐐�: 浣嶇疆-{} 鏁版嵁-{}", i, data)
-                        buy_nums -= int(_val["num"]) * int(total_datas[i]["re"])
-                        buy_count -= int(total_datas[i]["re"])
-            l2_log.buy_debug(code, "浣嶇疆-{}锛屾�绘墜鏁帮細{}锛岀洰鏍囨墜鏁帮細{}", i,
-                             buy_nums, threshold_num)
-
-            max_buy_num_set_count = 0
-            max_buy_num_set = cls.__filter_not_deal_indexes(code, max_buy_num_set)
-            for i1 in max_buy_num_set:
-                max_buy_num_set_count += total_datas[i1]["re"]
-
-            if buy_nums < threshold_num:
-                not_buy_msg = f"銆恵i}銆戠函涔伴涓嶈冻锛寋buy_nums}/{threshold_num}"
-                continue
-
-            if buy_count < threshold_count:
-                not_buy_msg = f"銆恵i}銆戝畨鍏ㄧ瑪鏁颁笉澶燂紝{buy_count}/{threshold_count}"
-                continue
-
-            if not trigger_buy:
-                not_buy_msg = f"銆恵i}銆戞病鏈変拱鍗曡Е鍙�"
-                continue
-
-            if max_buy_num_set_count < big_num_count:
-                not_buy_msg = f"銆恵i}銆戝ぇ鍗曟暟閲忎笉瓒筹紝{max_buy_num_set_count}/{big_num_count}"
-                continue
-
-            try:
-                info = cls.__trade_log_placr_order_info_dict[code]
-                info.set_trade_factor(threshold_money, threshold_count, list(max_buy_num_set))
-            except Exception as e:
-                async_log_util.error(logger_l2_error, f"璁板綍浜ゆ槗鍥犲瓙鍑洪敊锛歿str(e)}")
-
-            return i, buy_nums, buy_count, None, max_buy_num_set, "鍙互涓嬪崟"
-
-        l2_log.buy_debug(code, "灏氭湭鑾峰彇鍒颁拱鍏ユ墽琛岀偣锛岃捣濮嬭绠椾綅缃細{} 缁熻绾拱鎵嬫暟锛歿} 鐩爣绾拱鎵嬫暟锛歿}  缁熻绾拱鍗曟暟锛歿} 鐩爣绾拱鍗曟暟锛歿} 澶у崟鏁伴噺锛歿} 鐩爣澶у崟鏁伴噺锛歿}",
-                         compute_start_index,
-                         buy_nums,
-                         threshold_num, buy_count, threshold_count, max_buy_num_set_count, big_num_count)
-
-        return None, buy_nums, buy_count, None, max_buy_num_set, not_buy_msg
 
     # 杩斿洖(涔板叆鎵ц鐐�, 鎬绘墜, 鎬荤瑪鏁�, 浠庢柊璁$畻璧风偣, 绾拱棰濋槇鍊�)
     # 璁$畻蹇�熶拱鍏�

--
Gitblit v1.8.0