Administrator
8 天以前 a1ecd205cc8ba08985a1ba88f9dbde3b124e5e0b
cancel_strategy/s_l_h_cancel_strategy.py
@@ -1671,10 +1671,11 @@
        # 真实下单位之前的手数
        before_nums_info = []
        before_canceled_nums_info = []
        dealing_info = HuaXinBuyOrderManager.get_dealing_order_info(code)
        for wi in watch_indexes:
            data = total_data[wi]
            val = data["val"]
            cancel_data = L2DataComputeUtil.is_canceled(code, wi, total_data, canceled_buyno_map, trade_index,
            cancel_data = L2DataComputeUtil.is_canceled(code, wi, total_data, canceled_buyno_map, dealing_info[0] if dealing_info else None,
                                                        deal_order_nos)
            if str(wi) in after_place_order_index_dict:
                # 真实下单位置之后的按照权重比例来计算
@@ -1695,7 +1696,8 @@
        rate = round(canceled_num / total_num, 3)
        return rate, canceled_data_indexes, (before_nums_info, before_canceled_nums_info)
    def __compute_need_cancel(self, code, buy_exec_index, start_index, end_index, total_data, is_first_code, force_compute=False):
    def __compute_need_cancel(self, code, buy_exec_index, start_index, end_index, total_data, is_first_code,
                              force_compute=False):
        """
        L后撤单;
        撤单计算规则:计算撤单比例时,将真实下单位置之后的数据按权重(离下单位最近的权重越大)加入分子,不加入分母(总囊括手数)计算
@@ -1769,7 +1771,7 @@
                    need_compute = True
                    break
        if force_compute:
            need_compute=True
            need_compute = True
        if need_compute:
            # =====计算本批次大卖单成交量====
            sell_nos = set()
@@ -1782,17 +1784,17 @@
                        sell_nos.add(d[0])
                        total_sell_nums += d[1]
                # 获取正在成交的大卖单
                dealing_sell_order_info=HuaXinSellOrderStatisticManager.get_dealing_order_info(code)
                if dealing_sell_order_info and dealing_sell_order_info[2]>=299e4:
                dealing_sell_order_info = HuaXinSellOrderStatisticManager.get_dealing_order_info(code)
                if dealing_sell_order_info and dealing_sell_order_info[2] >= 299e4:
                    total_sell_nums += dealing_sell_order_info[1]
                total_sell_nums=total_sell_nums//100
                total_sell_nums = total_sell_nums // 100
            except Exception as e:
                l2_log.l_cancel_debug(code, f"计算总卖大单出错:{str(e)}")
            # 计算撤单比例
            watch_indexes_list = list(watch_indexes)
            watch_indexes_list.sort()
            canceled_num = total_sell_nums # 将成交的大卖单计入已撤金额
            canceled_num = total_sell_nums  # 将成交的大卖单计入已撤金额
            # 记录撤单索引
            canceled_indexes = []
@@ -1807,8 +1809,9 @@
            # 如果撤单比例设置为100%就不需要计算下单位后面的订单
            need_compute_after = abs(thresh_hold_rate - 1.00) > 0.0001
            dealing_info = HuaXinBuyOrderManager.get_dealing_order_info(code)
            for wi in watch_indexes:
                cancel_data = L2DataComputeUtil.is_canceled(code, wi, total_data, canceled_buyno_map, trade_index,
                cancel_data = L2DataComputeUtil.is_canceled(code, wi, total_data, canceled_buyno_map, dealing_info[0] if dealing_info else None,
                                                            deal_order_nos)
                if cancel_data:
                    if str(wi) in after_place_order_index_dict:
@@ -1966,7 +1969,7 @@
        @return: 是否可撤单, 撤单数据
        """
        if not deal_order_list:
            return False
            return False,''
        # 添加成交量
        if code not in self.__total_big_sell_order_list_cache:
            self.__total_big_sell_order_list_cache[code] = []
@@ -1974,7 +1977,8 @@
        # 计算是否可撤单
        total_datas = local_today_datas.get(code)
        return self.__compute_need_cancel(code, 0, total_datas[-1]["index"], total_datas[-1]["index"], total_datas, True, force_compute=True)
        return self.__compute_need_cancel(code, 0, total_datas[-1]["index"], total_datas[-1]["index"], total_datas,
                                          True, force_compute=True)
    # L后是否还有可能撤单
    def __is_l_down_can_cancel(self, code, buy_exec_index):