From 02b181bca1baa294dba3b183d6e09c23cddf0ad1 Mon Sep 17 00:00:00 2001
From: admin <admin@example.com>
Date: 星期二, 15 四月 2025 13:44:41 +0800
Subject: [PATCH] 1.修改买入策略中空数据BUG 2.涨跌统计因子实时计算结果打印 3.板块强度数据打印时间至收盘

---
 strategy/market_sentiment_analysis.py |   96 +++++++++++++++++++++++++----------------------
 1 files changed, 51 insertions(+), 45 deletions(-)

diff --git a/strategy/market_sentiment_analysis.py b/strategy/market_sentiment_analysis.py
index 490817b..ae5f034 100644
--- a/strategy/market_sentiment_analysis.py
+++ b/strategy/market_sentiment_analysis.py
@@ -420,32 +420,32 @@
 
 
 # ====================== 鏁版嵁棰勫鐞� ======================
-def preprocess_data(data):
-    """
-    棰勫鐞嗗師濮嬫暟鎹細
-    1. 杞崲鎵�鏈夋暟鍊煎瓧娈典负鏁存暟
-    2. 瑙f瀽娑ㄨ穼鍒嗗竷(ZSZDFB)涓烘暣鏁板垪琛�
-    3. 鍒嗙娑ㄨ穼骞呭垎甯冩暟鎹�
-    """
-    processed = {}
-
-    # 閫氱敤瀛楁绫诲瀷杞崲
-    for key, value in data.items():
-        if isinstance(value, str) and value.isdigit():  # 澶勭悊瀛楃涓叉暟瀛�
-            processed[key] = int(value)
-        elif key == 'ZSZDFB':  # 鐗规畩澶勭悊娑ㄨ穼鍒嗗竷
-            # 杩囨护绌哄�煎苟杞崲涓烘暣鏁板垪琛�
-            processed[key] = [int(x) for x in value.strip(',').split(',')]
-        else:
-            processed[key] = value  # 淇濈暀鍘熷绫诲瀷
-
-    # 鍒嗙娑ㄨ穼骞呭垎甯冩暟鎹紙绀轰緥鍒掑垎锛屽叿浣撳尯闂撮渶纭锛�
-    # 鍋囪ZSZDFB瀵瑰簲浠�-10%鍒�10%鐨�18涓尯闂村垎甯冿紙鏍规嵁鏁版嵁闀垮害鎺ㄦ祴锛�
-    processed['price_distribution'] = {
-        'bins': list(range(-10, 11)),  # 鐢熸垚-10鍒�10鐨勬暣鏁板尯闂存爣璇�
-        'counts': processed['ZSZDFB']
-    }
-    return processed
+# def preprocess_data(data):
+#     """
+#     棰勫鐞嗗師濮嬫暟鎹細
+#     1. 杞崲鎵�鏈夋暟鍊煎瓧娈典负鏁存暟
+#     2. 瑙f瀽娑ㄨ穼鍒嗗竷(ZSZDFB)涓烘暣鏁板垪琛�
+#     3. 鍒嗙娑ㄨ穼骞呭垎甯冩暟鎹�
+#     """
+#     processed = {}
+#
+#     # 閫氱敤瀛楁绫诲瀷杞崲
+#     for key, value in data.items():
+#         if isinstance(value, str) and value.isdigit():  # 澶勭悊瀛楃涓叉暟瀛�
+#             processed[key] = int(value)
+#         elif key == 'ZSZDFB':  # 鐗规畩澶勭悊娑ㄨ穼鍒嗗竷
+#             # 杩囨护绌哄�煎苟杞崲涓烘暣鏁板垪琛�
+#             processed[key] = [int(x) for x in value.strip(',').split(',')]
+#         else:
+#             processed[key] = value  # 淇濈暀鍘熷绫诲瀷
+#
+#     # 鍒嗙娑ㄨ穼骞呭垎甯冩暟鎹紙绀轰緥鍒掑垎锛屽叿浣撳尯闂撮渶纭锛�
+#     # 鍋囪ZSZDFB瀵瑰簲浠�-10%鍒�10%鐨�18涓尯闂村垎甯冿紙鏍规嵁鏁版嵁闀垮害鎺ㄦ祴锛�
+#     processed['price_distribution'] = {
+#         'bins': list(range(-10, 11)),  # 鐢熸垚-10鍒�10鐨勬暣鏁板尯闂存爣璇�
+#         'counts': processed['ZSZDFB']
+#     }
+#     return processed
 
 
 # data = preprocess_data(raw_data)
@@ -625,6 +625,10 @@
                     connecting_board_height = data_cache.real_time_market_sentiment_dirt.get('lbgd', None)  # 杩炴澘楂樺害
                     # 鑾峰彇甯傚満鎯呯华-娑ㄨ穼缁熻
                     data_cache.rise_and_fall_statistics_dirt = kpl_api.getMarketFelling()  # 娑ㄨ穼缁熻瀛楀吀
+                    # 娑ㄨ穼缁熻鍥犲瓙璁$畻
+                    factors = calculate_factors(data_cache.rise_and_fall_statistics_dirt)
+                    # 娑ㄨ穼缁熻鐢熸垚淇″彿
+                    signals = generate_signals(factors)
                     limit_up_numbers = data_cache.rise_and_fall_statistics_dirt.get('ZT', None)  # 娑ㄥ仠瀹舵暟
                     actual_limit_up_numbers = data_cache.rise_and_fall_statistics_dirt.get('SJZT', None)  # 瀹為檯娑ㄥ仠瀹舵暟
                     ST_limit_up_numbers = data_cache.rise_and_fall_statistics_dirt.get('STZT', None)  # ST娑ㄥ仠瀹舵暟
@@ -648,17 +652,18 @@
                         logger.info(
                             f"涓婃定瀹舵暟锛歿rise_numbers}锛屼笅璺屽鏁帮細{fall_numbers}锛屽疄闄呮定鍋滃鏁帮細{actual_limit_up_numbers}锛屽疄闄呰穼鍋滃鏁帮細{actual_limit_down_numbers}")
                         logger.info(f"娑ㄨ穼缁熻瀛楀吀{data_cache.rise_and_fall_statistics_dirt}")
+                        logger.info(f"娑ㄨ穼缁熻鍥犲瓙鐨勮绠�={factors}")
 
-                    # 浣庤糠鎯呯华姣斾緥
-                    low_emotion_mood_ratio = 1
+                    # 鐞嗘兂浜ゆ槗琛屾儏鍒嗘暟銆愯瘎浼板綋鍓嶈鎯呮槸鍚︽湁鍒╀簬浣庡惛绛栫暐鍙栧緱鏇撮珮鎶撴澘鐜囩殑鍒嗘暟锛堟槸鍚︽槸鐞嗘兂鐨勪氦鏄撹鎯咃級銆�
+                    ideal_trading_market_score = 1
                     # 33鍒嗘槸涓袱绾у垎鍖栭樁姊笉濂斤紝鐩墠涓嶅ソ鎷挎崗锛屾殏鏃朵笉鐢�
                     # if data_cache.real_time_market_strong <= 33:
                     if data_cache.real_time_market_strong < 30:
                         # 濡傛灉澶х洏缁煎悎寮哄害鍒嗘暟灏忎簬30锛屽皢浣庤糠鎯呯华鍒嗘暟姣斾緥璁剧疆涓�0.01锛屽彲鐢ㄨ祫閲戠缉灏忎竴鐧惧��
-                        low_emotion_mood_ratio = 0.01
+                        ideal_trading_market_score = 0.01
                         if data_cache.real_time_market_strong <= 10:
-                            low_emotion_mood_ratio = 0
-                    logger.info(f"鏋佺浣庤糠鎯呯华姣斾緥===={low_emotion_mood_ratio * 100}%")
+                            ideal_trading_market_score = 0
+                    logger.info(f"鐞嗘兂浜ゆ槗琛屾儏鍒嗘暟===={ideal_trading_market_score * 100}%")
 
                     data_cache.index_trend_expectation_score = index_trend_expectation()
                     logger.info(f"澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟==={data_cache.index_trend_expectation_score}鍒�")
@@ -668,26 +673,27 @@
 
                     # 鑾峰彇璁$畻浠婂ぉ鏂板鐨勬寔浠撴暟閲�
                     addition_position_number = len(data_cache.addition_position_symbols_set)
-                    # 瀹氫箟涓�涓粖鏃ョ殑鍓╀綑鏂板鎸佷粨鏁伴噺鐨勫彉閲�
+                    # 瀹氫箟涓�涓粖鏃ョ殑鍓╀綑鏂板鎸佷粨鏁伴噺鐨勫彉閲� 銆愮洰鍓嶇瓥鐣ラ粯璁や竴鏃ヤ笁浠� 鎵�浠ヨ缃父閲�3銆�
                     Unfinished_opening_plan_number = 3 - addition_position_number
                     logger.info(f"浠婃棩鐨勫墿浣欐柊澧炴寔浠撴暟閲�==={Unfinished_opening_plan_number}")
                     usefulMoney = data_cache.account_finance_dict[0].get('usefulMoney', 0)
                     logger.info(f"璐︽埛鍙敤璧勯噾==={usefulMoney}鍏�")
-                    if Unfinished_opening_plan_number != 0:
-                        # 濡傛灉GUI鐪嬬洏涓婃病鏈夋墜鍔ㄨ缃叿浣撶殑涓嬪崟閲戦锛屽氨鎸夌収璇勫垎绛栫暐鐨勯噾棰濅笅鍗曪紝鍚﹀垯灏辨寜鐓UI璁剧疆鐨勯噾棰濅笅鍗曘��
-                        if data_cache.BUY_MONEY_PER_CODE < 0:
-                            # 鏍规嵁璐︽埛鍙敤閲戦 璁$畻浠婃棩璁″垝涓嬪崟閲戦
-                            # 璐︽埛鍙敤閲戦 榛樿涔樹互0.9锛屾案杩滅暀涓�鐐归挶锛屼竴鏂归潰涔熷啑浣欎竴浜涜绠楄宸�
-                            #  ((澶х洏缁煎悎寮哄害鍒嗘暟 + 澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟) * 0.01) * (璐︽埛鍙敤閲戦 * 0.9 * 鏋佺浣庤糠鎯呯华姣斾緥 / 浠婃棩鏈�澶ф柊澧炴寔浠撶エ鏁�)
-                            # data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + data_cache.index_trend_expectation_score) * 0.01) * (
-                            #                                                 usefulMoney * 0.9 * low_emotion_mood_ratio / Unfinished_opening_plan_number)
-                            data_cache.today_planned_order_amount = usefulMoney * 0.95 * low_emotion_mood_ratio / Unfinished_opening_plan_number
-                            logger.info(
-                                f"閲囩敤寮�浠撶瓥鐣ヨ绠楁柟寮�=銆嬩粖鏃ヨ鍒掍笅鍗曢噾棰�:{data_cache.today_planned_order_amount}锛�")
-                        else:
+                    # 濡傛灉涓�鏃ヤ笁浠撶殑璁″垝杩樻湭瀹屾垚 涓� 鏈缃繃寮�浠撹鍒掗噾棰�
+                    if Unfinished_opening_plan_number != 0 and data_cache.today_planned_order_amount <= 0:
+                        # 濡傛灉GUI鐪嬬洏鎵嬪姩璁剧疆浜嗗叿浣撶殑涓嬪崟閲戦銆恆ta_cache.BUY_MONEY_PER_CODE 涓粯璁ゅ�间负-1锛屽彧鏈夊綋GUI鐪嬬洏鎵嬪姩璁剧疆浜嗗苟鎻愪氦鎵嶄細>=0銆戯紝灏辨寜鐓UI璁剧疆鐨勯噾棰濅笅鍗曘�傚惁鍒欏氨鎸夌収璇勫垎绛栫暐鐨勯噾棰濅笅鍗曪紝
+                        if data_cache.BUY_MONEY_PER_CODE >= 0:
                             data_cache.today_planned_order_amount = data_cache.BUY_MONEY_PER_CODE
                             logger.info(f"閲囩敤GUI璁剧疆鏂瑰紡=銆嬩粖鏃ヨ鍒掍笅鍗曢噾棰�:{data_cache.today_planned_order_amount}")
-
+                        else:
+                            # 濡傛灉浠婃棩杩樻病鏈変竴涓柊澧炰粨浣嶏紝灏变笉鍋滆绠楁洿鏂拌鍒掗噾棰�
+                            if addition_position_number <= 0:
+                                # 鏍规嵁璐︽埛鍙敤閲戦 璁$畻浠婃棩璁″垝涓嬪崟閲戦
+                                # 璐︽埛鍙敤閲戦 榛樿涔樹互0.95锛屾案杩滅暀涓�鐐归挶锛屼竴鏂归潰涔熷啑浣欎竴浜涜绠楄宸�
+                                #  ((澶х洏缁煎悎寮哄害鍒嗘暟 + 澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟) * 0.01) * (璐︽埛鍙敤閲戦 * 0.9 * 鏋佺浣庤糠鎯呯华姣斾緥 / 浠婃棩鏈�澶ф柊澧炴寔浠撶エ鏁�)
+                                # data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + data_cache.index_trend_expectation_score) * 0.01) * (
+                                #                                                 usefulMoney * 0.9 * low_emotion_mood_ratio / Unfinished_opening_plan_number)
+                                data_cache.today_planned_order_amount = usefulMoney * 0.95 * ideal_trading_market_score / Unfinished_opening_plan_number
+                                logger.info(f"閲囩敤寮�浠撶瓥鐣ヨ绠楁柟寮�=銆嬩粖鏃ヨ鍒掍笅鍗曢噾棰�:{data_cache.today_planned_order_amount}")
         except Exception as error:
             logger_debug.exception(error)
             logger.error(f"瀹炴椂璁剧疆璁″垝鎸佷粨鏁伴噺 鍑芥暟鎶ラ敊: {error}")

--
Gitblit v1.8.0