Administrator
2024-06-25 6fb540dfb5912fc92dd9c4666c712fd2af02561b
已挂单的数据不能移除L2
2个文件已修改
46 ■■■■■ 已修改文件
huaxin_client/l2_data_manager.py 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/current_price_process_manager.py 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
huaxin_client/l2_data_manager.py
@@ -101,8 +101,9 @@
        #         log_queue.put_nowait(data)
        q: collections.deque = self.temp_order_queue_dict.get(code)
        q.append((data['SecurityID'], data['Price'], data['Volume'], data['Side'], data['OrderType'], data['OrderTime'],
                  data['MainSeq'], data['SubSeq'], data['OrderNO'], data['OrderStatus'], time.time(), start_time))
        if q is not None:
            q.append((data['SecurityID'], data['Price'], data['Volume'], data['Side'], data['OrderType'], data['OrderTime'],
                      data['MainSeq'], data['SubSeq'], data['OrderNO'], data['OrderStatus'], time.time(), start_time))
    # 添加逐笔成交
    def add_transaction_detail(self, data):
@@ -117,9 +118,10 @@
        #                           data['SellNo'], data['ExecType']))
        q: collections.deque = self.temp_transaction_queue_dict.get(code)
        q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
                  data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
                  data['SellNo'], data['ExecType']))
        if q is not None:
            q.append((data['SecurityID'], data['TradePrice'], data['TradeVolume'],
                      data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
                      data['SellNo'], data['ExecType']))
    def add_market_data(self, data):
        # 加入上传队列
trade/current_price_process_manager.py
@@ -48,12 +48,20 @@
            # 获取收盘价
            pricePre = gpcode_manager.CodePrePriceManager.get_price_pre_cache(code)
            if pricePre is not None:
                # 是否是想买单
                is_want_buy = code in want_codes
                trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code)
                # 如果当前清单处于委托状态就不能移除
                if trade_state == trade_constant.TRADE_STATE_BUY_PLACE_ORDER or trade_state == trade_constant.TRADE_STATE_BUY_DELEGATED:
                    is_want_buy = True
                rate = round((price - pricePre) * 100 / pricePre, 2)
                if first_codes and code in first_codes:
                    rate = rate / 2
                if rate >= 0 and not trade_manager.ForbiddenBuyCodeByScoreManager().is_in_cache(code):
                    # 暂存涨幅为正的代码
                    _code_list.append((rate, code, 1 if code in want_codes else 0))
                    _code_list.append((rate, code, 1 if is_want_buy else 0))
                elif is_want_buy:
                    _code_list.append((rate, code, 1 if is_want_buy else 0))
                else:
                    # 暂存涨幅为负的代码
                    _delete_list.append((rate, code, 0))
@@ -75,30 +83,8 @@
        # -------------------------------处理交易位置分配---------------------------------
        # 排序
        new_code_list = sorted(_code_list, key=lambda e: (e.__getitem__(2), e.__getitem__(0)), reverse=True)
        if constant.L2_SOURCE_TYPE == constant.L2_SOURCE_TYPE_THS:
            # 预填充下单代码
            _buy_win_codes = []
            for d in new_code_list:
                _buy_win_codes.append(d[1])
            for d in _delete_list:
                _buy_win_codes.append(d[1])
            try:
                if not constant.API_TRADE_ENABLE and trade_gui is not None:
                    trade_gui.THSBuyWinManagerNew.fill_codes(_buy_win_codes)
            except Exception as e:
                logging.exception(e)
                pass
        # -------------------------------处理L2监听---------------------------------
        max_count = 0
        if constant.L2_SOURCE_TYPE == constant.L2_SOURCE_TYPE_THS:
            client_ids = client_manager.getValidL2Clients()
            # 最多填充的代码数量
            max_count = len(client_ids) * constant.L2_CODE_COUNT_PER_DEVICE
            if max_count == 0:
                max_count = constant.L2_CODE_COUNT_PER_DEVICE
        else:
            max_count = constant.HUAXIN_L2_MAX_CODES_COUNT
        max_count = constant.HUAXIN_L2_MAX_CODES_COUNT
        _delete_list = []
        for item in new_code_list: