From c285883d71ef8a362b012983dadc7ce4256b40f6 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 23 五月 2025 01:52:07 +0800
Subject: [PATCH] bug修复

---
 test/test_block.py |  173 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 146 insertions(+), 27 deletions(-)

diff --git a/test/test_block.py b/test/test_block.py
index 5844db6..562dcad 100644
--- a/test/test_block.py
+++ b/test/test_block.py
@@ -1,14 +1,21 @@
-import copy
+import json
 import time
 
-from db import redis_manager
-from db.redis_manager_delegate import RedisUtils
-from third_data import kpl_data_manager, kpl_util, kpl_api
-from third_data.code_plate_key_manager import CodesHisReasonAndBlocksManager, KPLCodeJXBlockManager
+import constant
+from code_attribute import global_data_loader
+from l2 import code_price_manager
+from log_module import async_log_util
+from log_module.log import logger_debug
+from third_data import kpl_data_manager, kpl_util, block_info, kpl_api
+from third_data.code_plate_key_manager import RealTimeKplMarketData
+from third_data.history_k_data_util import HistoryKDatasUtils
+from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager
+from third_data.kpl_data_manager import KPLLimitUpDataRecordManager
 from third_data.kpl_limit_up_data_manager import LatestLimitUpBlockManager, CodeLimitUpSequenceManager
-from third_data.third_blocks_manager import BlockMapManager, CodeThirdBlocksManager, SOURCE_TYPE_KPL
-from utils import tool
-from utils.kpl_data_db_util import KPLLimitUpDataUtil
+from trade.buy_radical import new_block_processor
+from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager
+from trade.buy_radical.radical_buy_data_manager import RadicalBuyDataManager, RadicalBuyBlockManager
+from utils import tool, init_data_util
 
 
 def block_run():
@@ -30,23 +37,135 @@
             f"{limit_up_sequence[0]}-{limit_up_sequence[1]}({limit_up_sequence[2]}&{limit_up_sequence[2] - limit_up_sequence[3]})")
 
 
-if __name__ == "__main__":
-    limit_up_timestamp = time.time()
-    current_before_codes_info = [("000333", time.time())]
-    if tool.trade_time_sub(tool.timestamp_format(limit_up_timestamp, '%H:%M:%S'),
-                           tool.timestamp_format(current_before_codes_info[-1][1], '%H:%M:%S')) >= 10 * 60:
-        print("123123")
+def test_block():
+    codes_str = "002845"
+    codes = codes_str.split(",")  # ["002889", "300337", "001298", "002771"]
+    kpl_data_manager.KPLLimitUpDataRecordManager.load_total_datas()
+    kpl_data_manager.KPLLimitUpDataRecordManager.save_record(tool.get_now_date_str(),
+                                                             kpl_data_manager.KPLDataManager.get_data(
+                                                                 kpl_util.KPLDataType.LIMIT_UP))
+    for code in codes:
+        # KPLCodeJXBlockManager().load_jx_blocks(code, 23.52,23.62,
+        #                                        kpl_data_manager.KPLLimitUpDataRecordManager.get_current_reasons())
+        #
+        block_info.init_code(code)
+        # latest_current_limit_up_records = kpl_data_manager.get_latest_current_limit_up_records()
 
-    # code = "603825"
-    # k3 = CodesHisReasonAndBlocksManager().get_history_blocks(code)
-    # print(k3)
-    # k3 = CodesHisReasonAndBlocksManager().get_history_blocks(code)
-    # print(k3)
-    # print(KPLLimitUpDataUtil.get_latest_block_infos(code="000561"))
-    # print(code_plate_key_manager.ForbiddenBlockManager().get_blocks())
-    # code_plate_key_manager.ForbiddenBlockManager().add("娴嬭瘯2")
-    # code_plate_key_manager.ForbiddenBlockManager().add("娴嬭瘯3")
-    # print(code_plate_key_manager.ForbiddenBlockManager().get_blocks())
-    # print( code_plate_key_manager.ForbiddenBlockManager().is_in("娴嬭瘯"))
-    # print(code_plate_key_manager.ForbiddenBlockManager().is_in("娴嬭瘯1"))
-    # RedisUtils.run_loop()
+        init_data_util.re_set_price_pre(code, True)
+
+        limit_up_data = kpl_data_manager.KPLLimitUpDataRecordManager.record_code_dict.get(code)
+        if limit_up_data:
+            limit_up_time = tool.to_time_str(limit_up_data[2])
+        RadicalBuyBlockManager.set_current_limit_up_datas(
+            kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas)
+        # CodePlateKeyBuyManager.update_can_buy_blocks(code,
+        #                                              kpl_data_manager.KPLLimitUpDataRecordManager.latest_origin_datas,
+        #                                              kpl_data_manager.KPLLimitUpDataRecordManager.total_datas,
+        #                                              latest_current_limit_up_records,
+        #                                              block_info.get_before_blocks_dict(),
+        #                                              kpl_data_manager.KPLLimitUpDataRecordManager.get_current_limit_up_reason_codes_dict())
+        # can_buy_result = CodePlateKeyBuyManager.can_buy(code)
+        # print(can_buy_result)
+        # if can_buy_result:
+        #     if can_buy_result[0]:
+        #         blocks = ",".join([f"{x[0]}-{x[1] + 1}({x[2]}&{x[3] - x[2]})" for x in can_buy_result[0]])
+        #         print(blocks)
+
+        yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
+        if yesterday_codes is None:
+            yesterday_codes = set()
+        result = RadicalBuyBlockManager.is_radical_buy(code, yesterday_codes)
+        print(code, result)
+        if result[0]:
+            can_buy_result = RadicalBuyDataManager.is_code_can_buy(code)
+            if can_buy_result[0]:
+                print("鍙互涔�", code, result)
+            else:
+                print("涓嶅彲浠ヤ拱", code, can_buy_result)
+
+    # l2.l2_data_manager_new.L2TradeDataProcessor.can_buy_first(code, None)
+
+
+def update_history_limit_up_codes():
+    day = "2024-12-19"
+    for i in range(0, 1):
+        day = HistoryKDatasUtils.get_next_trading_date(day)
+        # if day == "2024-12-20":
+        #    break
+        results = kpl_api.getHistoryLimitUpInfo(day)
+        result_list = kpl_util.parseDaBanData(json.dumps({"list": results, "errcode": 0}), kpl_util.DABAN_TYPE_LIMIT_UP)
+        kpl_data_manager.KPLLimitUpDataRecordManager.save_record(day, result_list, set_not_open=True)
+
+
+def do_limit_up(result_list_):
+    def request_new_blocks_codes(blocks_info, all_new_blocks):
+        """
+                璇锋眰鏂版澘鍧楃殑浠g爜
+                @param blocks_info:[(鏉垮潡鍚嶇О,鏉垮潡浠g爜)]
+                @return:
+                """
+        yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
+        for bi in blocks_info:
+            result = kpl_api.getCodesByPlate(bi[1])
+            result = json.loads(result)
+            code_info_list = []
+            for d in result["list"]:
+                if d[0] in yesterday_codes:
+                    continue
+
+                # 娑ㄥ箙瑕佸ぇ浜�5%
+                rate = d[6] / int(round((tool.get_limit_up_rate(d[0]) - 1) * 10))
+                if rate < 5:
+                    continue
+                # 鏍煎紡锛�(浠g爜,娑ㄥ箙)
+                code_info_list.append((d[0], d[6]))
+            if code_info_list:
+                # 灏嗕唬鐮佸姞鍏ユ柊棰樻潗
+                new_block_processor.process_new_block_by_component_codes(bi[0], set([x[0] for x in code_info_list]),
+                                                                         all_new_blocks)
+
+    try:
+        if result_list_:
+            try:
+                # 鏂伴鏉�
+                new_block_codes = new_block_processor.screen_new_blocks_with_limit_up_datas(
+                    [(x[0], x[5]) for x in result_list_])
+                if new_block_codes:
+                    # 缁熻鏉垮潡鐨勪唬鐮�
+                    records = KPLLimitUpDataRecordManager.total_datas
+                    block_plate_code_dict = {}
+                    for x in records:
+                        block_plate_code_dict[kpl_util.filter_block(x[2])] = x[15]
+                    # 鏂版澘鍧�
+                    update_new_block_plates = []
+                    for b in new_block_codes:
+                        for c in new_block_codes[b]:
+                            new_block_processor.process_new_block_by_limit_up_list(c, b)
+
+                    for r in new_block_codes:
+                        if r in block_plate_code_dict:
+                            update_new_block_plates.append((r, block_plate_code_dict[r]))
+                    if update_new_block_plates:
+                        # 闇�瑕佽幏鍙栨澘鍧椾笅鐨勪唬鐮�
+                        request_new_blocks_codes(update_new_block_plates, new_block_codes.keys())
+            except:
+                pass
+    except Exception as e:
+        logger_debug.exception(e)
+
+
+if __name__ == "__main__":
+    try:
+        global_data_loader.load_zyltgb()
+        KPLLimitUpDataRecordManager.load_total_datas()
+        records = KPLLimitUpDataRecordManager.total_datas
+        # 璁$畻浠婃棩鏂板鐨勯鏉愭蹇�
+        with open("D:/trade_cache/2025-04-10_limit_up.log") as f:
+            lines = f.readlines()
+            do_limit_up(json.loads(lines[0]))
+        code = "002163"
+        print(LimitUpCodesBlockRecordManager().get_radical_buy_blocks(code))
+        print(BlockSpecialCodesManager().get_code_blocks(code))
+        print(BlockSpecialCodesManager().get_code_blocks_dict())
+    except:
+        pass

--
Gitblit v1.8.0