From 8bfdc52b40b4456a5a29e4502cce5865be8ef439 Mon Sep 17 00:00:00 2001
From: admin <admin@example.com>
Date: 星期五, 05 九月 2025 18:17:15 +0800
Subject: [PATCH] bug修复

---
 strategy/kpl_api.py |  114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 108 insertions(+), 6 deletions(-)

diff --git a/strategy/kpl_api.py b/strategy/kpl_api.py
index 7f73faa..83ee555 100644
--- a/strategy/kpl_api.py
+++ b/strategy/kpl_api.py
@@ -15,7 +15,7 @@
 
 from strategy import data_cache
 from strategy import basic_methods
-# from strategy.kpl_data_manager import KPLMarketsSiftPlateLogManager
+from strategy.kpl_data_manager import KPLMarketsSiftPlateLogManager
 from trade import middle_api_protocol
 from utils import hx_qc_value_util, tool
 
@@ -167,9 +167,10 @@
             result = __getLimitUpInfo(pid_info[0], i + 1, 20)
             # print("璇锋眰鐢ㄦ椂", time.time() - start_time)
             result = json.loads(result)
+            # 鍒嗛〉鏁寸悊鏁版嵁
             datas = result["info"][0]
             results.extend(datas)
-            # day = result["info"][1]  # 杩炴澘澶╂暟锛�
+            # 濡傛灉灏忎簬20鏉℃暟鎹氨涓嶇炕椤佃幏鍙栦簡
             if len(datas) < 20:
                 break
         for r in results:
@@ -184,10 +185,41 @@
     return json.dumps({"errcode": 0, "list": fresults})
 
 
+# list[0] ==["603590", "搴疯景鑽笟", 0, "", 1752111048, "鍖昏嵂", 52512348, 77368480, 25028664, 204338626, -179309962, 289345508, "鍒涙柊鑽�佸尰鑽�", 3274807418, 8.87, 1, 1, 6.46, "棣栨澘", "801045", 5]
+# list[0] ==[鑲$エ浠g爜锛岃偂绁ㄥ悕绉帮紝鏈煡0鍊硷紝鏈煡绌哄�硷紝娑ㄥ仠鏃堕棿鏃堕棿鎴筹紝娑ㄥ仠鍘熷洜锛屽皝鍗曪紝鏈�澶у皝鍗曪紝涓诲姏鍑�棰濓紝涓诲姏涔帮紝涓诲姏鍗栵紝鎴愪氦棰濓紝鏉垮潡锛堢簿閫夋澘鍧楋級锛屽疄闄呮祦閫氾紝瀹為檯鎹㈡墜锛屾湭鐭�1鍊硷紝鏈煡1鍊硷紝鎸箙锛岀姸鎬侊紝鎵�灞炴澘鍧桰D锛屽悓鏉垮潡娑ㄥ仠鏁伴噺]
+
+
 # 鑾峰彇娑ㄥ仠淇℃伅鏁版嵁
 def get_limit_up_info():
     # 鑾峰彇娑ㄥ仠淇℃伅鍒楄〃
     limit_up_info = json.loads(getLimitUpInfoNew())['list']
+    # 鍒濆鍖栫粺璁″瓧鍏�
+    concept_stats = {}
+    for stock in limit_up_info:
+        # 鎻愬彇姒傚康鍚嶇О锛堝彲鑳藉寘鍚涓蹇碉紝鐢�"銆�"鍒嗛殧锛�
+        concepts = stock[5].split("銆�")  # 绗�5涓瓧娈垫槸姒傚康 閫氳繃"銆�"鍒嗛殧杞寲涓哄瓧绗︿覆
+        is_first_board = stock[18] == "棣栨澘"  # 绗�18涓瓧娈垫槸鏉垮潡绫诲瀷锛堝"棣栨澘"锛�
+
+        for concept in concepts:
+            if concept not in concept_stats:
+                concept_stats[concept] = {"total": 0, "first_board": 0}
+            concept_stats[concept]["total"] += 1
+            if is_first_board:
+                concept_stats[concept]["first_board"] += 1
+
+    # 杞崲涓虹洰鏍囨牸寮�
+    result = [
+        [concept, stats["first_board"], stats["total"]]
+        for concept, stats in concept_stats.items()
+    ]
+    # # 鎵撳嵃缁撴灉
+    # for item in result:
+    #     print(item)
+
+    # 鎸夋蹇典笅鑲$エ鎬诲彧鏁伴檷搴忔帓搴�
+    data_cache.limit_up_block_info = sorted(result, key=lambda x: x[2], reverse=True)
+    # print(f"{data_cache.limit_up_block_info}")
+
     return limit_up_info
 
 
@@ -224,12 +256,82 @@
                             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}")
 
 
+def __guDongRenShu(start_date, end_date, page):
+    result = __base_request("https://applhb.longhuvip.com/w1/api/index.php",
+                            f"Order=8&a=GuDongRenShu&st=50&c=YiDianCangWei&PhoneOSNew=1&DeviceID=b692e51c-1bc4-3e8c-a01b-920aa6240e28&VerSion=5.20.0.6&Token=0&Index={(page - 1) * 50}&ShowDate=0&IsNew=0&EndDate={end_date}&JiangFu=1&apiv=w41&StratDate={start_date}&UserID=0&Tag=0&")
+    # print(result)
+    data = json.loads(result)
+    return data['List'], data['DateList'][0]
+
+# 鑲′笢鍙樻洿鍩虹API
+def listShareHoldersChange():
+    """
+    鑲′笢浜烘暟鍙樻洿
+    :return:
+    """
+    results, date_info = __guDongRenShu('', '',   1)
+    fresults = []
+    for i in range(50):
+        results, d = __guDongRenShu(date_info['StratDate'], date_info['EndDate'], i + 1)
+        fresults.extend(results)
+        if len(results) < 50:
+            break
+        time.sleep(0.1)
+    return fresults
+    # {'LTZB': 10.67, 'CMJZ': 51.5777346, 'StockID': '002179', 'Name': '涓埅鍏夌數', 'JSQBH': -13, 'Day': '2025-08-20', 'UpdateDay': '2025-08-24', 'IsNew': 0}
+    # {'LTZB': 娴侀�氬崰姣�,'CMJZ': 绛圭爜闆嗕腑,'StockID':鑲$エ浠g爜,'Name': '鑲$エ鍚嶇О','JSQBH':杈冧笂鏈熷彉鍖�,'Day': 涓婃鏁版嵁鏇存柊鏃堕棿,'UpdateDay': 鏈�杩戞洿鏂版椂闂�,'IsNew': 鏄惁鏄渶鏂版暟鎹畗
+
+
 if __name__ == "__main__":
-    MarketFelling = getMarketFelling()
-    print(f"MarketFelling==={MarketFelling}")
-    changeStatistics = changeStatistics()
-    print(f"changeStatistics==={changeStatistics}")
+    results = listShareHoldersChange()
+    print(len(results))
+    for i in results:
+        print(i)
+    # print(f"listShareHoldersChange=={results}")
+
+    # MarketFelling = getMarketFelling()
+    # print(f"MarketFelling==={MarketFelling}")
+    # changeStatistics = changeStatistics()
+    # print(f"changeStatistics==={changeStatistics}")
+    # result = getCodesByPlate("801045")
+    # print(result)
+    # print(f"limit_up_info=={limit_up_info}")
+
+    # 鏁寸悊褰掔撼娑ㄥ仠姒傚康淇℃伅缁橤UI鐢�
+    # def get_limit_up_block_info(limit_up_info):
+    #     # 鍒濆鍖栫粺璁″瓧鍏�
+    #     concept_stats = {}
+    #
+    #     for stock in limit_up_info:
+    #         # 鎻愬彇姒傚康鍚嶇О锛堝彲鑳藉寘鍚涓蹇碉紝鐢�"銆�"鍒嗛殧锛�
+    #         concepts = stock[5].split("銆�")  # 绗�5涓瓧娈垫槸姒傚康 閫氳繃"銆�"鍒嗛殧杞寲涓哄瓧绗︿覆
+    #         is_first_board = stock[18] == "棣栨澘"  # 绗�18涓瓧娈垫槸鏉垮潡绫诲瀷锛堝"棣栨澘"锛�
+    #
+    #         for concept in concepts:
+    #             if concept not in concept_stats:
+    #                 concept_stats[concept] = {"total": 0, "first_board": 0}
+    #             concept_stats[concept]["total"] += 1
+    #             if is_first_board:
+    #                 concept_stats[concept]["first_board"] += 1
+    #
+    #     # 杞崲涓虹洰鏍囨牸寮�
+    #     result = [
+    #         [concept, stats["first_board"], stats["total"]]
+    #         for concept, stats in concept_stats.items()
+    #     ]
+    #     # # 鎵撳嵃缁撴灉
+    #     # for item in result:
+    #     #     print(item)
+    #
+    #     # 鎸夋蹇典笅鑲$エ鎬诲彧鏁伴檷搴忔帓搴�
+    #     data_cache.limit_up_block_info = sorted(result, key=lambda x: x[2], reverse=True)
+    #
+    #     # print(f"{data_cache.limit_up_block_info}")
+    #
+    # get_limit_up_block_info(limit_up_info)

--
Gitblit v1.8.0