| | |
| | | # 计算每个键(每个幅段)的值占总和的百分比 |
| | | 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) |
| | |
| | | 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): |
| | |
| | | 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']}") |
| | | |