涨跌分布信号BUG修复
有概念,有强度数量改回原值
开启实盘交易模式
3个文件已修改
31 ■■■■■ 已修改文件
constant.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/buying_strategy.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/market_sentiment_analysis.py 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
constant.py
@@ -83,4 +83,4 @@
SUBSCRIPT_L2_CODES = set()
# 是否是仿真交易
IS_SIMULATED_TRADE = True
IS_SIMULATED_TRADE = False
strategy/buying_strategy.py
@@ -353,7 +353,7 @@
                                        elif len(intersection_plate) > 0:
                                            logger_info(
                                                f"【不利】同概念只买一次,不买了,公司名称:{k_line_data[0]['sec_name']},重复相交概念==={intersection_plate}")
                                        elif data_cache.have_plate_buy_times >= 1:
                                        elif data_cache.have_plate_buy_times >= 3:
                                            logger_info(f"【不利】有概念买入已经 3 次了!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                        elif len(data_cache.addition_position_symbols_set) >= 3:
                                            logger_info(f"【不利】当日已经买了3只票!不买了!!公司名称:{k_line_data[0]['sec_name']},")
@@ -539,7 +539,7 @@
                                                        free_market_value == 0 or free_market_value == 0.0) and free_market_value < 6:
                                                    logger_info(
                                                        f"【不利】自由市值小于6亿!不买!! 公司名称:{k_line_data[0]['sec_name']},最新价: {current_price}")
                                                elif data_cache.have_strength_buy_times >= 3:
                                                elif data_cache.have_strength_buy_times >= 1:
                                                    logger_info(f"【不利】有强度买入 1 次了!不买了!!公司名称:{k_line_data[0]['sec_name']},")
                                                elif len(data_cache.addition_position_symbols_set) >= 3:
                                                    logger_info(f"【不利】当日已经买了3只票!不买了!!公司名称:{k_line_data[0]['sec_name']},")
strategy/market_sentiment_analysis.py
@@ -535,12 +535,19 @@
        rise_sum = sum(rise_dirt.values())
        # 计算上涨股票数量的和
        fall_sum = sum(fall_dirt.values())
        # 计算每个键(每个幅段)的值占总和的百分比
        percentages = {key: round((value / rise_and_fall_sum) * 100, 2) for key, value in rise_and_fall_dirt.items()}
        # # 计算每个键(每个涨幅段)的值占总和的百分比
        rise_percentages = {key: round((value / rise_sum) * 100, 2) for key, value in rise_dirt.items()}
        # # 计算每个键(每个涨幅段)的值占总和的百分比
        fall_percentages = {key: round((value / fall_sum) * 100, 2) for key, value in fall_dirt.items()}
        if rise_and_fall_sum != 0 or rise_sum != 0 or fall_sum != 0:
            # 计算每个键(每个幅段)的值占总和的百分比
            percentages = {key: round((value / rise_and_fall_sum) * 100, 2) for key, value in
                           rise_and_fall_dirt.items()}
            # # 计算每个键(每个涨幅段)的值占总和的百分比
            rise_percentages = {key: round((value / rise_sum) * 100, 2) for key, value in rise_dirt.items()}
            # # 计算每个键(每个涨幅段)的值占总和的百分比
            fall_percentages = {key: round((value / fall_sum) * 100, 2) for key, value in fall_dirt.items()}
        else:
            percentages = {}
            rise_percentages = {}
            fall_percentages = {}
        # 找到全幅段最大值对应的键
        max_key = max(rise_and_fall_dirt, key=rise_and_fall_dirt.get)
        # 找到全幅段最小值对应的键
@@ -678,7 +685,7 @@
                        logger.info(f"涨跌统计字典{data_cache.rise_and_fall_statistics_dirt}")
                        logger.info(f"涨跌统计因子的计算={factors}")
                        logger.info(f"涨跌统计生成信号={signals}")
                        logger.info("\n========== 关键指标 ==========")
                        logger.info("========== 关键指标 ==========")
                        logger.info(f"总股票数: {factors['total_stocks']}\n"
                                    f"涨跌比(BDR): {factors['rise_vs_fall']['rise_vs_fall_ratio']:.2f}\n"
                                    f"极端波动比例: {factors['sentiment']['extreme_ratio']:.2%}\n"
@@ -687,8 +694,8 @@
                                    f"市场情绪量化: {'积极' if factors['sentiment']['sign'] else '谨慎'}\n"
                                    f"上涨幅段最大:{factors['rise_vs_fall']['rise_max_key']}:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_max_key'])}%\n"
                                    f"下跌幅段最大:{factors['rise_vs_fall']['fall_max_key']}:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['fall_max_key'])}%\n"
                                    f"聚集区域:{factors['rise_vs_fall']['gather_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_gather_area'])}%\n"
                                    f"零散区域:{factors['rise_vs_fall']['scattered_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_scattered_area'])}%\n"
                                    f"聚集区域:{factors['rise_vs_fall']['gather_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['gather_area'])}%\n"
                                    f"零散区域:{factors['rise_vs_fall']['scattered_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['scattered_area'])}%\n"
                                    f"涨跌因子字典={factors['rise_vs_fall']}\n")
                        logger.info("\n========== 策略信号 ==========")
                        for i, signal in enumerate(signals, 1):