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