From 70b51a2636858fb8cfbf39d3764d88d07286d8ad Mon Sep 17 00:00:00 2001
From: admin <admin@example.com>
Date: 星期二, 08 四月 2025 11:27:42 +0800
Subject: [PATCH] 增加并行数量

---
 strategy/kpl_api.py |  201 ++++++++++++++++++--------------------------------
 1 files changed, 73 insertions(+), 128 deletions(-)

diff --git a/strategy/kpl_api.py b/strategy/kpl_api.py
index e211e4f..cd91466 100644
--- a/strategy/kpl_api.py
+++ b/strategy/kpl_api.py
@@ -11,12 +11,12 @@
 
 import constant
 from log_module import async_log_util
-from log_module.log import logger_common, logger_kpl_jingxuan_in, logger_Overall_market_strength_score
+from log_module.log import logger_common, logger_kpl_jingxuan_in, logger_Overall_market_strength_score, \
+    logger_stock_of_markets_plate, logger_debug
 # import requests
 from strategy import data_cache
 from strategy import basic_methods
-from strategy.index_market_trend_strategy import index_trend_expectation
-
+from strategy.kpl_data_manager import KPLStockOfMarketsPlateLogManager
 from trade import middle_api_protocol
 from utils import hx_qc_value_util, tool
 
@@ -185,37 +185,60 @@
     return json.dumps({"errcode": 0, "list": fresults})
 
 
-# if __name__ == "__main__":
 
 
-# print(f"鎵撴澘鍒楄〃t(pidType)====={daBanList(2)}")
-# print(f"鑾峰彇涓偂浠g爜鐨勬澘鍧�==={getStockIDPlate('002766')}")
-# print((f"鑾峰彇涓偂浠g爜鐨勭簿閫夋澘鍧�==={getCodeJingXuanBlocks('002878')}"))
-# print(f"鑾峰彇璇ユ蹇典笅鐨勪釜鑲′唬鐮佸強鍏朵粬====={getCodesByPlate(885500)}")   銆娿�娿�娿�娿�娿�娿�娿�娿�娿��
-# print(f"鑾峰彇姒傚康涓殑鏉垮潡涓殑瀛愭澘鍧�====={json.loads(getSonPlate(801085))}")
+# 鑾峰彇娑ㄥ仠淇℃伅鏁版嵁
+def get_limit_up_info():
+    # 鑾峰彇娑ㄥ仠淇℃伅鍒楄〃
+    limit_up_info = json.loads(getLimitUpInfoNew())['list']
+    return limit_up_info
 
-# print(f"鑾峰彇姒傚康涓殑鏉垮潡寮哄害====={getSonPlate(getCodesByPlate(getCodeJingXuanBlocks('002452')[2][0]))}")
-# print(f"甯傚満琛屾儏-琛屼笟鏉垮潡 鏁�==={len(getMarketIndustryRealRankingInfo(True))}")
-# print(f"甯傚満琛屾儏-琛屼笟鏉垮潡==={json.loads(getMarketIndustryRealRankingInfo(True))}")
 
-# 杩斿洖鏍煎紡锛歔'鏉垮潡ID','鏉垮潡鍚嶇О','寮哄害','娑ㄥ箙','鏈煡','鎴愪氦棰�','''''''''寮哄害','鏈煡']
-# print(f"甯傚満琛屾儏-绮鹃�夋澘鍧� 鏁�==={getMarketJingXuanRealRankingInfo(True)}")
-# print(f"甯傚満琛屾儏-绮鹃�夋澘鍧�==={json.loads(getMarketJingXuanRealRankingInfo(True))}")
-# print(f"鑲$エ浠g爜锛歿Market_situation_selected_sectors_No1[0]}")
-# jingxuanbankuai = json.loads(getMarketJingXuanRealRankingInfo(True))
-# print(f"jingxuanbankuai==={type(jingxuanbankuai)}")
-# print(f"鏉垮潡浠g爜锛歿jingxuanbankuai['list'][0][0]}锛屾澘鍧楀悕绉帮細{jingxuanbankuai['list'][0][1]}锛屽己搴︼細{jingxuanbankuai['list'][0][2]}锛屾定骞咃細{jingxuanbankuai['list'][0][3]}锛屾湭鐭ワ細{jingxuanbankuai['list'][0][4]}锛屾垚浜ら锛歿round(jingxuanbankuai['list'][0][5]/100000000)}浜匡紝涓诲姏鍑�棰濓細{round(jingxuanbankuai['list'][0][6]/100000000,2)}浜匡紝涓讳拱锛歿round(jingxuanbankuai['list'][0][7]/100000000,2)}浜匡紝涓诲崠锛歿round(jingxuanbankuai['list'][0][8]/100000000,2)}浜匡紝鏈煡锛歿jingxuanbankuai['list'][0][9]}锛屾祦閫氬�硷細{round(jingxuanbankuai['list'][0][10]/100000000,2)}浜匡紝鏈煡/鎴栦负鏈�澶ф定璺屽箙锛歿round(jingxuanbankuai['list'][0][11],2)}锛屾湭鐭ワ細{round(jingxuanbankuai['list'][0][12]/100000000,2)}浜匡紝鎬诲競鍊硷細{round(jingxuanbankuai['list'][0][13]/100000000,2)}浜匡紝绗竴瀛e害鏈烘瀯鎸佷粨锛歿round(jingxuanbankuai['list'][0][14]/100000000,2)}浜匡紝鏈煡锛歿round(jingxuanbankuai['list'][0][15],2)}锛屾湭鐭ワ細{round(jingxuanbankuai['list'][0][16],2)}锛屽己搴︼細{round(jingxuanbankuai['list'][0][17],2)}")
-# # 閮ㄥ垎鏉垮潡娌℃湁瀛愭澘鍧�
-# print(f"鑾峰彇姒傚康涓殑鏉垮潡涓殑瀛愭澘鍧�====={json.loads(getSonPlate(801248))}")
+# 鑾峰彇甯傚満鎯呯华缁煎悎寮哄害銆愬畬鏁淬��
+def changeStatistics():
+    """
+    鑾峰彇甯傚満寮哄害
+    :return:
+    """
+    result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php",
+                            f"a=ChangeStatistics&apiv=w35&c=HomeDingPan&PhoneOSNew=1&UserID=0&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9774&VerSion=5.13.0.0&Token=0&")
+    # data = result.text
+    data = json.loads(result)
+    return data["info"][0]
 
-# print(f"鑷敱娴侀�氬競鍊�==={getZYLTAmount('603319')}")
-# print((f"鑾峰彇涓偂浠g爜鐨勭簿閫夋澘鍧楀垪琛�==={getCodeJingXuanBlocks('002452')}"))
-# print((f"鑾峰彇涓偂浠g爜鐨勭簿閫夌涓�鏉垮潡浠g爜==={getCodeJingXuanBlocks('002452')[0][0]}"))
-# print(f"鑾峰彇璇ユ蹇典笅鐨勪釜鑲′唬鐮佸強鍏朵粬====={json.loads(getCodesByPlate(getCodeJingXuanBlocks('002452')[0][0]))}")
-# print(f"鑾峰彇璇ユ蹇典笅鐨勪釜鑲′唬鐮佸強鍏朵粬dddddd====={json.loads(its_strongest_sector_situation)}")
-# print(f"娑ㄥ仠鍒楄〃鍙婃蹇垫澘鍧�={json.loads(getLimitUpInfoNew())['list']}")
 
-########################################################################################################################################################################################################################
+# 鑾峰彇甯傚満鎯呯华缁煎悎寮哄害
+def get_market_strong():
+    """
+    鑾峰彇甯傚満寮哄害
+    :return:
+    """
+    result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php",
+                            f"a=DiskReview&apiv=w35&c=HomeDingPan&VerSion=5.13.0.0&PhoneOSNew=1&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9773&")
+    data = json.loads(result)
+    return int(data["info"]["strong"])
+
+
+# 甯傚満鎯呯华--娑ㄨ穼缁熻
+# 鏁版嵁鏍煎紡锛�
+# SJZT:瀹為檯娑ㄥ仠  SJDT:瀹為檯璺屽仠 SZJS:娑ㄦ暟閲� ZT:娑ㄥ仠 DT:璺屽仠  XDJS:璺屾暟閲�  sign:浜烘皵姒傝堪
+def getMarketFelling():
+    result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php",
+                            f"a=ZhangFuDetail&apiv=w35&c=HomeDingPan&PhoneOSNew=1&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9774&VerSion=5.13.0.0&")
+    data = json.loads(result)
+    return data["info"]
+# market_strong = get_market_strong()
+# print(f"market_strong==={market_strong}")
+
+
+if __name__ == "__main__":
+    MarketFelling = getMarketFelling()
+    print(f"MarketFelling==={MarketFelling}")
+    changeStatistics = changeStatistics()
+    print(f"changeStatistics==={changeStatistics}")
+
+# --------------------------------------------------------------------------------------------------------------------------------------------------------------
+
 
 # 鑾峰彇琛屾儏绮鹃�夋澘鍧� 寮哄害鎺掑悕
 def get_market_sift_plate_its_stock_power():
@@ -226,20 +249,21 @@
     @dask.delayed
     def request_plate_codes(i):
         plate_name = i[1]
+        log_data = None
+        its_stock = json.loads(getCodesByPlate(i[0]))
+        now_time_str = tool.get_now_time_str()
+        if data_cache.OPENING_TIME < now_time_str < data_cache.NOON_MARKET_TIME:
+            log_data = {plate_name: its_stock['list']}
         # 灏濊瘯杩囨护鎺夋棤鎰忎箟鐨勬蹇垫澘鍧�(plate_name not in ['绉戝垱鏉�', '鍖椾氦鎵�', '娆℃柊鑲�', '鏃�', 'ST鏉垮潡', 'ST鎽樺附', '骞惰喘閲嶇粍', '鍥戒紒鏀归潻','瓒呰穼', '澹宠祫婧�', '鑲℃潈杞', '閫佽浆濉潈']) and '澧為暱' in plate_name
         if (plate_name not in ['绉戝垱鏉�', '鍖椾氦鎵�', '娆℃柊鑲�', '鏃�', 'ST鏉垮潡', 'ST鎽樺附', '骞惰喘閲嶇粍', '鍥戒紒鏀归潻', '瓒呰穼',
                                '澹宠祫婧�', '鑲℃潈杞', '閫佽浆濉潈']) or ('澧為暱' in plate_name):
+
             # print(f"{i[1]} 寮哄害:{i[2]}")
             # 閫氳繃鏉垮潡ID鑾峰彇鍏朵笅闈㈢殑涓偂寮哄害鍒楄〃
             # print(f"======={i[0]}=======")
-            its_stock = json.loads(getCodesByPlate(i[0]))
 
-            # print(f"its_stock['list']  ===  {its_stock['list']}")
-            # print(f"its_stock['list'][0]  ===  {its_stock['list'][0]}")
-            logger.info(f"its_stock['list']  ===銆嬨��  {its_stock['list']}")
-            # logger.info(f"its_stock['list'][0]  ===  {its_stock['list'][0]}")
-            its_stock_list_info = its_stock['list']
-            logger.info(f"its_stock_list_info==={its_stock_list_info}")
+            # its_stock_list_info = its_stock['list']
+            # logger.info(f"its_stock_list_info==={its_stock_list_info}")
             # 灏嗘澘鍧楀己搴︿笅闈㈠搴旂殑涓偂鍒楄〃鎵撳嵃鍒版棩蹇椾腑
             # for i in its_stock_list_info:
             #     if i[0] != 1:
@@ -256,14 +280,6 @@
             #             f"41鏈煡1鍊硷細{i[41]}锛岀涓夊搴︽満鏋勬寔浠撱�恠tr鏁版嵁鍕跨敤杩愮畻绗︺�戯細{i[42]}涓囷紝锛熷勾棰勬祴鍑�鍒╂鼎锛歿i[43]}锛屼笂骞撮娴嬪噣鍒╂鼎锛歿i[44]}锛屽勾鍐呴娴嬪噣鍒╂鼎锛歿i[45]}"
             #         )
 
-            # 鑾峰彇璇ユ蹇垫澘鍧楃殑鐨勫瓙鐗堝潡
-            # its_son_plate = json.loads(getSonPlate(i[0]))
-            # logger.info(f"its_son_plate=={its_son_plate['List']}")
-            # if its_son_plate['List'][0][2] > 0:
-            #     print(f"its_son_plate=={its_son_plate['List'][0]}")
-            # for son in its_son_plate['List']:
-            #     if son[2] > 0:
-            #         print(f"son===={son}")
             # 鍒濆鍖栬偂绁ㄥ己搴﹀垪琛�
             stock_power_list = []
             for s in its_stock['list']:
@@ -283,6 +299,7 @@
                 stock_power_item = {i[1]: stock_power_list}
                 # 骞舵洿鏂板埌绮鹃�夋澘鍧椾釜鑲″瓧鍏镐腑
                 market_sift_plate_stock_dict.update(stock_power_item)
+        return log_data
 
     data = (getMarketJingXuanRealRankingInfo())
     market_sift_plate = json.loads(data)
@@ -298,10 +315,19 @@
         for d in market_sift_plate['list']:
             ds.append(request_plate_codes(d))
         dask_result = batch_get_plate_codes(ds)
-        dask_result.compute()
+        compute_results = dask_result.compute()
+        log_datas = {}
+        for r in compute_results:
+            if not r:
+                continue
+            for b in r:
+                log_datas[b] = r[b]
         now_time = tool.get_now_time_str()
-        if data_cache.L1_DATA_START_TIME < now_time < data_cache.CLOSING_TIME:
-            logger.info(f"绮鹃�夋澘鍧楄偂绁ㄥ己搴︽暟鎹洿鏂� == {market_sift_plate_stock_dict}")
+        if data_cache.L1_DATA_START_TIME < now_time < data_cache.NOON_MARKET_TIME:
+            # logger.info(f"绮鹃�夋澘鍧楄偂绁ㄥ己搴︽暟鎹洿鏂� == {market_sift_plate_stock_dict}")
+            # 鍙湪鐩樹腑鏃堕棿鑾峰彇
+            KPLStockOfMarketsPlateLogManager().add_log(market_sift_plate['list'], log_datas)
+
     return market_sift_plate_stock_dict
 
 
@@ -323,32 +349,10 @@
                 callback(its_stock_power)
                 # print(f"绮鹃�夋澘鍧楁媺鍗囦釜鑲℃洿鏂�===={its_stock_power}")
         except Exception as e:
+            logger_debug.exception(e)
             logger.error(f"寮�鐩樺暒鏉垮潡寮哄害绾跨▼鎶ラ敊An error occurred: {e}")
         finally:
             time.sleep(2)
-
-
-# 鑾峰彇娑ㄥ仠淇℃伅鏁版嵁
-def get_limit_up_info():
-    # 鑾峰彇娑ㄥ仠淇℃伅鍒楄〃
-    limit_up_info = json.loads(getLimitUpInfoNew())['list']
-    return limit_up_info
-
-
-# 鑾峰彇甯傚満琛屾儏鎯呯华缁煎悎寮哄害
-def get_market_strong():
-    """
-    鑾峰彇甯傚満寮哄害
-    :return:
-    """
-    result = __base_request("https://apphwhq.longhuvip.com/w1/api/index.php",
-                            f"a=DiskReview&apiv=w35&c=HomeDingPan&VerSion=5.13.0.0&PhoneOSNew=1&DeviceID=d6f20ce9-fa08-31c9-a493-536ebb8e9773&")
-    data = json.loads(result)
-    return int(data["info"]["strong"])
-
-
-# market_strong = get_market_strong()
-# print(f"market_strong==={market_strong}")
 
 
 # 鑾峰彇娑ㄥ仠鏉垮潡鍚嶇О鍒楄〃骞跺瓨鍌ㄦ湰鍦扮殑鍑芥暟
@@ -736,68 +740,9 @@
     print(f"鍐欏叆绮鹃�夋澘鍧楁枃浠跺畬鎴愶紒::{now_time}")
 
 
-# 鑾峰彇瀹炴椂澶х洏琛屾儏鎯呯华缁煎悎寮哄害 [鍒嗘暟] 鍑芥暟 骞� 璁$畻褰撴棩璁″垝鎸佷粨鏁伴噺
-def get_real_time_market_strong():
-    while True:
-        try:
-            if data_cache.position_automatic_management_switch is True:
-                now_time = tool.get_now_time_str()
-                if data_cache.SERVER_RESTART_TIME < now_time < data_cache.UPDATE_DATA_TIME:
-                    # 鑾峰彇澶х洏缁煎悎寮哄害鍒嗘暟
-                    data_cache.real_time_market_strong = get_market_strong()
-                    # data_cache.time_sharing_market_strong_dirt = time_sharing_market_strong_dirt.update({now: data_cache.real_time_market_strong})
-                    # 璇ogger.info鐨勭殑鏃ュ織涓嶅啀闇�瑕佹墦鍗帮紝鍚庣画灏嗚浆鍏ュ埌GUI瀹㈡埛绔笂鐩存帴鏄剧ず锛岃鏁版嵁鐨勬墦鍗颁氦鐢变笅鏂圭殑鎵撳嵃鏈哄埗寮傛鎵ц鍗曠嫭瀛樺偍锛屼互渚垮悗缁彲瑙嗗寲鍛堢幇鍚庤繘琛屾洿楂樻晥鐨勬暟鎹垎鏋�
-                    # logger.info(f"澶х洏琛屾儏鎯呯华缁煎悎寮哄害 [鍒嗘暟]==={data_cache.real_time_market_strong}鍒�")
-                    # 澶х洏缁煎悎寮哄害鍒嗘暟 鐨� 寮傛鏃ュ織
-                    # logger_Overall_market_strength_score.info(data_cache.real_time_market_strong)
-                    async_log_util.info(logger_Overall_market_strength_score, f"{data_cache.real_time_market_strong}")
-
-                    usefulMoney = data_cache.account_finance_dict[0].get('usefulMoney', 0)
-                    logger.info(f"璐︽埛鍙敤璧勯噾==={usefulMoney}鍏�")
-                    # 浣庤糠鎯呯华姣斾緥
-                    low_emotion_mood_ratio = 1
-                    # 33鍒嗘槸涓袱绾у垎鍖栭樁姊笉濂斤紝鐩墠涓嶅ソ鎷挎崗锛屾殏鏃朵笉鐢�
-                    # if data_cache.real_time_market_strong <= 33:
-                    if data_cache.real_time_market_strong < 30:
-                        low_emotion_mood_ratio = 0.1
-                        if data_cache.real_time_market_strong <= 10:
-                            low_emotion_mood_ratio = 0
-                    logger.info(f"鏋佺浣庤糠鎯呯华姣斾緥===={low_emotion_mood_ratio * 100}%")
-
-                    data_cache.index_trend_expectation_score = index_trend_expectation()
-                    logger.info(f"澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟==={data_cache.index_trend_expectation_score}鍒�")
-                    # print(f"澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟==={data_cache.index_trend_expectation_score}鍒�")
-                    # 鐩墠澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟 灏氫笉绉戝 寮哄埗璁剧疆涓哄垵濮�0鍊�
-                    index_trend_expectation_score = 0
-
-                    # 鑾峰彇璁$畻浠婂ぉ鏂板鐨勬寔浠撴暟閲�
-                    addition_position_number = len(data_cache.addition_position_symbols_set)
-                    # 瀹氫箟涓�涓粖鏃ョ殑鍓╀綑鏂板鎸佷粨鏁伴噺鐨勫彉閲�
-                    Unfinished_opening_plan_number = 3 - addition_position_number
-                    if Unfinished_opening_plan_number != 0:
-                        # 濡傛灉GUI鐪嬬洏涓婃病鏈夋墜鍔ㄨ缃叿浣撶殑涓嬪崟閲戦锛屽氨鎸夌収璇勫垎绛栫暐鐨勯噾棰濅笅鍗曪紝鍚﹀垯灏辨寜鐓UI璁剧疆鐨勯噾棰濅笅鍗曘��
-                        if data_cache.BUY_MONEY_PER_CODE < 0:
-                            # 鏍规嵁璐︽埛鍙敤閲戦 璁$畻浠婃棩璁″垝涓嬪崟閲戦
-                            #  ((澶х洏缁煎悎寮哄害鍒嗘暟 + 澶х洏鎸囨暟鎯呯华棰勬湡鍒嗘暟) * 0.01) * (璐︽埛鍙敤閲戦 * 鏋佺浣庤糠鎯呯华姣斾緥 / 浠婃棩鏈�澶ф柊澧炴寔浠撶エ鏁�)
-                            data_cache.today_planned_order_amount = ((data_cache.real_time_market_strong + index_trend_expectation_score) * 0.01) * (usefulMoney * low_emotion_mood_ratio / Unfinished_opening_plan_number)
-                        else:
-                            data_cache.today_planned_order_amount = data_cache.BUY_MONEY_PER_CODE
-
-        except Exception as error:
-            logger.error(f"鑾峰彇瀹炴椂澶х洏琛屾儏鎯呯华缁煎悎寮哄害[鍒嗘暟] 鍑芥暟鎶ラ敊: {error}")
-        finally:
-            time.sleep(3)
-
-
 # kpl_stocks_list_selected_blocks_process()   #鍦� kpl_api.py涓彲浠ヨ皟鐢�
 # stocks_list_selected_blocks(min_stocks)   #鍦� kpl_api.py涓彲浠ヨ皟鐢�
 # list = ['SHSE.600805','SHSE.600804']
 #
 # all_stocks_plate_dict(list)
 
-
-if __name__ == "__main__":
-    # start_time = time.time()
-    # get_market_sift_plate_its_stock_power()
-    # print("鑰楁椂锛�", time.time() - start_time)
-    get_market_sift_plate_its_stock_power_process(None)

--
Gitblit v1.8.0