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