Administrator
2023-07-26 2eb8d411b868dc45bbc88b6ea9c8c3af730eb962
bug修复
3个文件已修改
28 ■■■■■ 已修改文件
l2/l2_data_manager_new.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/code_plate_key_manager.py 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/kpl_block_util.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
l2/l2_data_manager_new.py
@@ -854,7 +854,9 @@
        # 判断板块
        plate_can_buy, msg = CodePlateKeyBuyManager.can_buy(code,
                                                            kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas,
                                                            kpl_data_manager.KPLLimitUpDataRecordManager.total_datas,block_info.get_before_blocks_dict())
                                                            kpl_data_manager.get_current_limit_up_data_records(1),
                                                            kpl_data_manager.KPLLimitUpDataRecordManager.total_datas,
                                                            block_info.get_before_blocks_dict())
        if not plate_can_buy:
            return False, True, msg
        return True, False, msg
third_data/code_plate_key_manager.py
@@ -363,8 +363,10 @@
    # current_limit_up_datas: 今日实时涨停
    # latest_2_day_limit_up_datas:最近2天的实时涨停(不含今日)
    # limit_up_record_datas:今日历史涨停
    # yesterday_current_limit_up_codes : 昨日涨停代码
    # before_blocks_dict:历史涨停原因
    @classmethod
    def get_can_buy_block(cls, code, current_limit_up_datas, limit_up_record_datas,
    def get_can_buy_block(cls, code, current_limit_up_datas, limit_up_record_datas,yesterday_current_limit_up_codes,
                          before_blocks_dict):
        # 加载涨停代码的目标板块
        def load_code_block():
@@ -408,9 +410,9 @@
        load_code_block()
        msg_list = []
        for block in keys:
            is_top_8_record, top_8_record = kpl_block_util.is_record_top_block(code, block, limit_up_record_datas, 8)
            is_top_8_record, top_8_record = kpl_block_util.is_record_top_block(code, block, limit_up_record_datas, yesterday_current_limit_up_codes,8)
            is_top_4_current, top_4_current = kpl_block_util.is_current_top_block(code, block, current_limit_up_datas,
                                                                                  4)
                                                                                  yesterday_current_limit_up_codes, 4)
            is_top_4 = is_top_8_record and is_top_4_current
            msg_list.append(f"\n实时top4: {top_4_current}(涨停数量:{len(current_limit_up_datas)})")
            msg_list.append(f"历史top8: {top_8_record}")
@@ -460,11 +462,12 @@
    # 是否可以下单
    # 返回:是否可以下单,消息,板块类型
    @classmethod
    def can_buy(cls, code, current_limit_up_datas, limit_up_record_datas, before_blocks_dict):
    def can_buy(cls, code, current_limit_up_datas, limit_up_record_datas, yesterday_current_limit_up_codes,before_blocks_dict):
        if constant.TEST:
            return True, "", cls.BLOCK_TYPE_NONE
        block, block_msg = cls.get_can_buy_block(code, current_limit_up_datas,
                                                 limit_up_record_datas, before_blocks_dict)
                                                 limit_up_record_datas,yesterday_current_limit_up_codes, before_blocks_dict)
        if block is None:
            return False, block_msg
third_data/kpl_block_util.py
@@ -87,12 +87,12 @@
    return False, block_codes_infos[:topn]
def is_record_top_block(code, block, limit_up_record_datas, topn):
def is_record_top_block(code, block, limit_up_record_datas,yesterday_current_limit_up_codes, topn):
    block_codes_infos = []
    limit_up_time = time.time()
    for k in limit_up_record_datas:
        # 剔除高位代码
        if k[12] != '首板':
        # 判断是否是首板
        if k[0] in yesterday_current_limit_up_codes:
            continue
        if k[3] != code:
@@ -104,11 +104,12 @@
    return __is_top_block(block, block_codes_infos, topn)
def is_current_top_block(code, block, current_limit_up_datas, topn):
def is_current_top_block(code, block, current_limit_up_datas, yesterday_current_limit_up_codes, topn):
    block_codes_infos = []
    limit_up_time = time.time()
    for k in current_limit_up_datas:
        if k[4] != '首板':
        # 判断是否是首板
        if k[0] in yesterday_current_limit_up_codes:
            continue
        if k[0] != code:
            block_codes_infos.append((k[0], k[5], int(k[2])))