From c93b33fad085dea5182d16332d19b8de9f091f66 Mon Sep 17 00:00:00 2001 From: admin <admin@example.com> Date: 星期四, 17 四月 2025 18:18:01 +0800 Subject: [PATCH] 涨跌分布信号+2 --- strategy/market_sentiment_analysis.py | 37 +++++++++++++++++++++++-------------- 1 files changed, 23 insertions(+), 14 deletions(-) diff --git a/strategy/market_sentiment_analysis.py b/strategy/market_sentiment_analysis.py index 691591c..3e6ec7f 100644 --- a/strategy/market_sentiment_analysis.py +++ b/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']}") -- Gitblit v1.8.0