Administrator
3 天以前 949ed0f2fc25ae461faa77a4409893b796d02c4b
只订阅加想的票
6个文件已修改
163 ■■■■■ 已修改文件
code_attribute/gpcode_manager.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/place_order_single_data_manager.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/data_server.py 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
servers/huaxin_trade_server.py 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/auto_add_want_buy_strategy.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/current_price_process_manager.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
code_attribute/gpcode_manager.py
@@ -214,7 +214,7 @@
@tool.singleton
class HumanRemoveForbiddenManager:
    """
    认为移黑管理
    人为移黑管理
    """
    __db = 0
    redisManager = redis_manager.RedisManager(0)
l2/place_order_single_data_manager.py
@@ -309,7 +309,7 @@
        """
        设置最近成交的涨停卖被动成交数据
        @param code: 代码
        @param data: L2逐笔成交数据  数据格式:(data['SecurityID'], data['TradePrice'], data['TradeVolume'],
        @param fdata: L2逐笔成交数据  数据格式:(data['SecurityID'], data['TradePrice'], data['TradeVolume'],
        #           data['OrderTime'], data['MainSeq'], data['SubSeq'], data['BuyNo'],
        #           data['SellNo'], data['ExecType'])
        @param big_active_buy_order_datas: 大主动买单数据:[[买单号,当前成交股数, 当前成交金额, 开始时间, 结束时间],....]
servers/data_server.py
@@ -1096,7 +1096,7 @@
                                if current_delegates:
                                    for c in current_delegates:
                                        if int(c["direction"]) != huaxin_util.TORA_TSTP_D_Buy:
                                                continue
                                            continue
                                        codes_set.add(c["securityID"])
                                if code not in codes_set:
                                    # 没有挂单
@@ -1126,69 +1126,74 @@
            response_data = json.dumps({"code": 0, "data": fdata})
        elif url.path == "/get_want_buy_detail_list":
            # 获取想买单详细信息
            history_limit_up_datas = LimitUpDataConstant.history_limit_up_datas
            codes = set()
            if history_limit_up_datas:
                codes |= set([x[3] for x in history_limit_up_datas])
            want_codes = gpcode_manager.WantBuyCodesManager().list_code_cache()
            if want_codes:
                codes |= want_codes
            # 拉取涨停时间
            # 拉取最近成交信息
            fdatas = []
            yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
            for code in codes:
                # (代码,名称,涨停时间,涨幅,现手,自由市值,现价)
                data = [code, gpcode_manager.get_code_name(code)]
                limit_up_time = LimitUpDataConstant.get_first_limit_up_time(code)
                limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
                data.append(limit_up_time)
                pre_close_price = CodePrePriceManager().get_price_pre_cache(code)
                latest_transaction_data = HuaXinTransactionDatasProcessor.get_latest_transaction_data(code)
                # 获取L1数据
                price = L1DataManager.get_l1_current_price(code)
                if price:
                    data.append(round((price - pre_close_price) * 100 / pre_close_price, 2))
                else:
                    data.append("--")
                zylt_volume = global_util.zylt_volume_map.get(code)
                zyltgb = zylt_volume * limit_up_price
                if latest_transaction_data:
                    data.append((latest_transaction_data[2]//100, latest_transaction_data[6] - latest_transaction_data[7]))
                else:
                    data.append(("--", 0))
                data.append(output_util.money_desc(zyltgb) if zyltgb else '--')
                if price:
                    data.append(price)
                else:
                    data.append("--")
                # 是否是想买单
                data.append(1 if code in want_codes else 0)
                # 显示代码板块身位
                block_rank_info = None
                # 获取当前板块
                try:
                    if limit_up_time:
                        # 涨停过的数据才有身位
                        blocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(code)
                        if blocks:
                            blocks_info=[]
                            for b in blocks:
                                info = radical_buy_data_manager.RadicalBuyBlockManager.get_history_index(code,b, yesterday_codes)
                                blocks_info.append((b,info[0],info[2]))
                            max_info = max(blocks_info, key= lambda x:x[2])
                            block_rank_info = max_info
                except:
                    pass
                data.append(block_rank_info)
                fdatas.append(data)
            fdatas.sort(key=lambda x: x[2] if x[2] else time.time())
            response_data = json.dumps({"code": 0, "data": fdatas})
            try:
                history_limit_up_datas = LimitUpDataConstant.history_limit_up_datas
                codes = set()
                if history_limit_up_datas:
                    codes |= set([x[3] for x in history_limit_up_datas])
                want_codes = gpcode_manager.WantBuyCodesManager().list_code_cache()
                if want_codes:
                    codes |= want_codes
                # 拉取涨停时间
                # 拉取最近成交信息
                fdatas = []
                yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
                for code in codes:
                    try:
                        if code in yesterday_codes:
                            continue
                        # (代码,名称,涨停时间,涨幅,现手,自由市值,现价)
                        data = [code, gpcode_manager.get_code_name(code)]
                        limit_up_time = LimitUpDataConstant.get_first_limit_up_time(code)
                        limit_up_price = gpcode_manager.get_limit_up_price_as_num(code)
                        data.append(limit_up_time)
                        pre_close_price = CodePrePriceManager().get_price_pre_cache(code)
                        latest_transaction_data = HuaXinTransactionDatasProcessor.get_latest_transaction_data(code)
                        # 获取L1数据
                        price = L1DataManager.get_l1_current_price(code)
                        if price:
                            data.append(round((price - pre_close_price) * 100 / pre_close_price, 2))
                        else:
                            data.append("--")
                        zylt_volume = global_util.zylt_volume_map.get(code)
                        zyltgb = zylt_volume * limit_up_price
                        if latest_transaction_data:
                            data.append(
                                (latest_transaction_data[2] // 100, latest_transaction_data[6] - latest_transaction_data[7]))
                        else:
                            data.append(("--", 0))
                        data.append(output_util.money_desc(zyltgb) if zyltgb else '--')
                        if price:
                            data.append(price)
                        else:
                            data.append("--")
                        # 是否是想买单
                        data.append(1 if code in want_codes else 0)
                        # 显示代码板块身位
                        block_rank_info = None
                        # 获取当前板块
                        try:
                            if limit_up_time:
                                # 涨停过的数据才有身位
                                blocks = LimitUpCodesBlockRecordManager().get_radical_buy_blocks(code)
                                if blocks:
                                    blocks_info = []
                                    for b in blocks:
                                        info = radical_buy_data_manager.RadicalBuyBlockManager.get_history_index(code, b,
                                                                                                                 yesterday_codes)
                                        blocks_info.append((b, info[0], info[2]))
                                    max_info = max(blocks_info, key=lambda x: x[2])
                                    block_rank_info = max_info
                        except:
                            pass
                        data.append(block_rank_info)
                        fdatas.append(data)
                    except Exception as e1:
                        logger_debug.exception(e1)
                fdatas.sort(key=lambda x: x[2] if x[2] else time.time())
                response_data = json.dumps({"code": 0, "data": fdatas})
            except Exception as e:
                logger_debug.exception(e)
        async_log_util.info(logger_request_api, f"结束请求{tool.get_thread_id()}-{url}")
        self.send_response(200)
        # 发给请求客户端的响应数据
servers/huaxin_trade_server.py
@@ -665,6 +665,14 @@
    __radical_buy_by_blocks_result_cache = {}
    def OnTradeSingle(self, code, big_buy_order_count, _type, data):
        """
        最近涨停卖被吃掉
        @param code:
        @param big_buy_order_count:
        @param _type:
        @param data:
        @return:
        """
        # 暂时不处理
        if True:
            return
trade/auto_add_want_buy_strategy.py
@@ -55,7 +55,8 @@
                continue
            if code in yesterday_codes:
                continue
            if l2_trade_util.is_in_forbidden_trade_codes(code):
            if gpcode_manager.HumanForbiddenManager().is_in_cache(code):
                # 人为拉黑的不加想
                continue
            if gpcode_manager.WantBuyCodesManager().is_in_cache(code):
                continue
@@ -80,15 +81,15 @@
            if max_price > limit_up_price:
                # 非15日突破
                continue
            volumes = init_data_util.parse_max_volume_new(code, volumes_data)
            max_volume, max_volume_day = init_data_util.parse_max_volume_in_days(volumes_data, days_count)
            # volumes = init_data_util.parse_max_volume_new(code, volumes_data)
            # max_volume, max_volume_day = init_data_util.parse_max_volume_in_days(volumes_data, days_count)
            # 最大量,今日量
            today_volume = CodeVolumeManager().get_today_volumn_cache(code)
            if today_volume / max_volume < 0.3:
                continue
            # today_volume = CodeVolumeManager().get_today_volumn_cache(code)
            # if today_volume / max_volume < 0.3:
            #     continue
            logger_debug.info("自动加想")
            gpcode_manager.WantBuyCodesManager().add_code(code)
            trade_record_log_util.add_want_buy(code, "自动加")
        except Exception as e:
            logger_debug.exception(e)
            logger_debug.error(f"代码:{code}")
            logger_debug.error(f"代码:{code}")
trade/current_price_process_manager.py
@@ -51,6 +51,9 @@
        # 高位板
    if code in yesterday_limit_up_codes:
        return -1
    if not gpcode_manager.WantBuyCodesManager().is_in_cache(code):
        # 只订阅加想的票
        return -1
        # 黑名单
    trade_state = trade_manager.CodesTradeStateManager().get_trade_state_cache(code)
    # 处于委托状态的必须订阅