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