admin
2025-04-17 c93b33fad085dea5182d16332d19b8de9f091f66
涨跌分布信号+2
1个文件已修改
37 ■■■■■ 已修改文件
strategy/market_sentiment_analysis.py 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
strategy/market_sentiment_analysis.py
@@ -538,23 +538,28 @@
        # 计算每个键(每个幅段)的值占总和的百分比
        percentages = {key: round((value / rise_and_fall_sum) * 100, 2) for key, value in rise_and_fall_dirt.items()}
        # # 计算每个键(每个涨幅段)的值占总和的百分比
        # rise_percentages = {key: round((value / total_sum) * 100, 2) for key, value in rise_dirt.items()}
        rise_percentages = {key: round((value / rise_sum) * 100, 2) for key, value in rise_dirt.items()}
        # # 计算每个键(每个涨幅段)的值占总和的百分比
        # fall_percentages = {key: round((value / total_sum) * 100, 2) for key, value in fall_dirt.items()}
        # 找到最大值对应的键
        fall_percentages = {key: round((value / fall_sum) * 100, 2) for key, value in fall_dirt.items()}
        # 找到全幅段最大值对应的键
        max_key = max(rise_and_fall_dirt, key=rise_and_fall_dirt.get)
        # 找到最小值对应的键
        # 找到全幅段最小值对应的键
        min_key = min(rise_and_fall_dirt, key=rise_and_fall_dirt.get)
        # 找到上涨幅段最大值对应的键
        rise_max_key = max(rise_dirt, key=rise_dirt.get)
        # 找到下跌幅段最大值对应的键
        fall_max_key = max(fall_dirt, key=fall_dirt.get)
        # 涨跌比因子 ---------------------------------------------------
        factors['rise_vs_fall'] = {
            'rise_vs_fall_ratio': round(rise_sum / fall_sum, 2) if fall_sum > 0 else 0,  # 涨跌比
            'rise_gather_area': max_key,  # 找到最大值
            'rise_scattered_area': min_key,  # 找到最小值
            'gather_area': max_key,  # 找到全幅段最大值
            'scattered_area': min_key,  # 找到全幅段最小值
            'percentages': percentages,  # 全幅段的股票分布比例
            # 'rise_percentages': rise_percentages,  # 各个涨幅段的股票分布比例
            # 'fall_percentages': fall_percentages,  # 各个跌幅段的股票分布比例
            'rise_and_fall_sum': rise_and_fall_sum
            'rise_percentages': rise_percentages,  # 涨幅段的股票分布比例
            'fall_percentages': fall_percentages,  # 跌幅段的股票分布比例
            'rise_and_fall_sum': rise_and_fall_sum,
            'rise_max_key': rise_max_key,
            'fall_max_key': fall_max_key
        }
        # 按值排序并提取前三个键值对
        sorted_items = sorted(factors['rise_vs_fall']['percentages'].items(), key=lambda item: item[1], reverse=True)
@@ -680,8 +685,10 @@
                                    f"资金净流入(元): {round(factors['capital_flow']['net'] / 10000, 2)}万\n"
                                    f"涨停股占比: {factors['sentiment']['zt_ratio']:.2%}\n"
                                    f"市场情绪量化: {'积极' if factors['sentiment']['sign'] else '谨慎'}\n"
                                    f"聚集区域:{factors['rise_vs_fall']['rise_gather_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_gather_area'])}%\n"
                                    f"零散区域:{factors['rise_vs_fall']['rise_scattered_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_scattered_area'])}%\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']}\n")
                        logger.info("\n========== 策略信号 ==========")
                        for i, signal in enumerate(signals, 1):
@@ -770,8 +777,10 @@
    print(f"资金净流入(元): {round(factors['capital_flow']['net']/10000, 2)}万")
    print(f"涨停股占比: {factors['sentiment']['zt_ratio']:.2%}")
    print(f"聚集前三名情况字典=={factors['top_three']}")
    print(f"聚集区域:{factors['rise_vs_fall']['rise_gather_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_gather_area'])}%")
    print(f"零散区域:{factors['rise_vs_fall']['rise_scattered_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_scattered_area'])}%")
    print(f"上涨幅段最大:{factors['rise_vs_fall']['rise_max_key']}:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['rise_max_key'])}%")
    print(f"下跌幅段最大:{factors['rise_vs_fall']['fall_max_key']}:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['fall_max_key'])}%")
    print(f"聚集区域:{factors['rise_vs_fall']['gather_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['gather_area'])}%")
    print(f"零散区域:{factors['rise_vs_fall']['scattered_area']},聚集区域的比例值:{factors['rise_vs_fall']['percentages'].get(factors['rise_vs_fall']['scattered_area'])}%")
    print(f"市场情绪量化: {'积极' if factors['sentiment']['sign'] else '谨慎'}")
    print(f"涨跌因子字典={factors['rise_vs_fall']}")