Administrator
2025-03-27 4584d78cab92ae3bcb644d5adef68bea13def779
新题材买入修改/抛压打折修改
5个文件已修改
66 ■■■■■ 已修改文件
api/outside_api_command_callback.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
third_data/kpl_data_constant.py 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/new_block_processor.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_data_manager.py 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
trade/buy_radical/radical_buy_strategy.py 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/outside_api_command_callback.py
@@ -1075,7 +1075,7 @@
                                if referer_volume == today_volumn:
                                    expire_rate = "100%"
                                else:
                                    expire_rate = f"{round(100 * total_left_num * 100 / (referer_volume - today_volumn), 2)}%"
                                    expire_rate = f"{100 - round(100 * total_left_num * 100 / (referer_volume - today_volumn), 2)}%"
                            except:
                                pass
third_data/kpl_data_constant.py
@@ -77,6 +77,9 @@
    # 今日的新概念
    __new_blocks = set()
    # 代码的新题材
    __code_new_blocks = {}
    __instance = None
    __day = tool.get_now_date_str()
@@ -230,6 +233,10 @@
        if block in old_blocks:
            return False
        self.__new_blocks.add(block)
        if code not in self.__code_new_blocks:
            self.__code_new_blocks[code] = set()
        self.__code_new_blocks[code].add(block)
        old_blocks.add(block)
        trade_record_log_util.add_temp_special_codes(code, f"新题材辨识度:{block}")
        async_log_util.info(logger_debug, f"今日新增概念:{code} - {block}")
@@ -260,6 +267,15 @@
             return True
        return False
    def has_new_block(self, code):
        """
        是否有新题材
        @param code:
        @return:
        """
        if self.__code_new_blocks.get(code):
            return True
        return False
class TodayLimitUpReasonChangeManager:
trade/buy_radical/new_block_processor.py
@@ -34,9 +34,11 @@
    @param code:
    @return:
    """
    if BlockSpecialCodesManager().get_code_blocks(code):
    if LimitUpCodesBlockRecordManager().has_new_block(code):
        # 有新题材
        k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code)
        if k_format and k_format[1]:
            # 突破形态
            return False
    return True
trade/buy_radical/radical_buy_data_manager.py
@@ -29,6 +29,7 @@
from third_data.third_blocks_manager import BlockMapManager
from trade import trade_record_log_util, trade_data_manager, trade_manager, trade_constant
from trade.buy_money_count_setting import RadicalBuyBlockCodeCountManager
from trade.buy_radical import new_block_processor
from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager
from trade.trade_data_manager import RadicalBuyDealCodesManager
from utils import tool, global_util, trade_util
@@ -1391,6 +1392,36 @@
                        can_buy_blocks.add(b)
                    msges.append(f"【{b}】:{result[1]}")
                fmsges.append("首封板块辨识度判断##" + ",".join(msges))
        # 新题材只买前2
        if can_buy_blocks:
            msges.clear()
            # 判断代码是否破前高
            is_new_high = False
            k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code)
            if k_format and k_format[1]:
                # 突破形态
                is_new_high = True
            delete_blocks = set()
            for b in can_buy_blocks:
                # 板块
                if LimitUpCodesBlockRecordManager().is_new_block(b):
                    if not is_new_high:
                        msges.append(f"【{b}】:新题材没破前高")
                        delete_blocks.add(b)
                        continue
                    # 新题材只买前2
                    history_index, history_before_codes_info, limit_up_space_ge_60s_codes = cls.__get_history_index(
                        code, b,
                        yesterday_limit_up_codes)
                    if history_index > 1:
                        delete_blocks.add(b)
                        msges.append(f"【{b}】:新题材只买前2")
                        continue
            can_buy_blocks -= delete_blocks
            if msges:
                fmsges.append("新题材判断##" + ",".join(msges))
        # 判断板块是否不能买
        if can_buy_blocks:
            msges.clear()
trade/buy_radical/radical_buy_strategy.py
@@ -13,7 +13,7 @@
from log_module import async_log_util
from log_module.log import logger_l2_radical_buy, hx_logger_l2_transaction, logger_l2_not_buy_reasons
from third_data import kpl_data_manager
from third_data.kpl_data_constant import LimitUpDataConstant
from third_data.kpl_data_constant import LimitUpDataConstant, LimitUpCodesBlockRecordManager
from trade.buy_radical import radical_buy_data_manager
from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager
from trade.trade_data_manager import RadicalBuyDealCodesManager
@@ -171,11 +171,18 @@
        average_rate = Buy1PriceManager().get_average_rate(code)
        if average_rate is not None and average_rate < 0.07:
            average_big_order_money = 299 * 10000
        if average_big_order_money > left_limit_up_sell_money:
        threshold_left_sell_money = average_big_order_money
        # 如果是非新题材的首封: 2个大单的折扣
        if radical_buy_data_manager.is_first_limit_up_buy(code) and not LimitUpCodesBlockRecordManager().has_new_block(
                code):
            threshold_left_sell_money = average_big_order_money * 2
        if threshold_left_sell_money > left_limit_up_sell_money:
            # 剩余总卖小于均大单才能下单
            # 如果是深证且卖一大于5000w可不判断大单是否满足
            if tool.is_sz_code(code) and refer_sell_money >= 5e7:
                return BUY_MODE_DIRECT, f"剩余涨停总卖额-{left_limit_up_sell_money},均大单-{average_big_order_money}, 总抛压大({refer_sell_money})"
                return BUY_MODE_DIRECT, f"剩余涨停总卖额-{left_limit_up_sell_money},均大单-{average_big_order_money}, 剩余阈值-{threshold_left_sell_money}, 总抛压大({refer_sell_money})"
            else:
                # 判断大单是否满足
                total_lack_money_info = radical_buy_data_manager.get_total_deal_big_order_info(code,