From e0c7bcb9a758373fac92393d2bdb811bfad0891e Mon Sep 17 00:00:00 2001 From: admin <admin@example.com> Date: 星期三, 03 九月 2025 13:37:28 +0800 Subject: [PATCH] 1.解决data_cache.filtered_stock_info_list新增问题 2.新增股东变更API 3.解决一部分打印内容歧义 --- log_module/log_export.py | 252 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 243 insertions(+), 9 deletions(-) diff --git a/log_module/log_export.py b/log_module/log_export.py index 7209d36..62b85f2 100644 --- a/log_module/log_export.py +++ b/log_module/log_export.py @@ -1,5 +1,6 @@ import datetime import hashlib +import json import logging import os import time @@ -32,7 +33,9 @@ def __get_async_log_time(line): line = line.split(" - ")[1] time_str = line[line.find("[") + 1:line.find("[") + 9] - return time_str + if time_str.replace(":", "").replace(".", "").isdigit(): + return time_str + return None __log_file_contents = {} @@ -53,6 +56,7 @@ return contents +# 鍔犺浇鏉垮潡寮哄害鏃ュ織 def load_market_sift_plate(date=tool.get_now_date_str()): """ 鑾峰彇绮鹃�夋祦鍏ョ殑鎴愬垎鑲� @@ -76,6 +80,7 @@ return fdatas +# 鍔犺浇涓偂寮哄害鏃ュ織 def load_kpl_market_stock_heat(date=tool.get_now_date_str()): """ 鑾峰彇绮鹃�夋祦鍏ョ殑鎴愬垎鑲� @@ -125,12 +130,241 @@ return fdatas -if __name__ == '__main__': - datas = load_market_sift_plate() +def load_target_codes_info(date=tool.get_now_date_str()): + """ + 鑾峰彇寮�鐩樺暒鍘嗗彶寮哄害 + :param date: + :return: [("鏃堕棿","鍒嗘暟")] + """ + path = f"{constant.get_path_prefix()}/low_suction_log/gp/codes/target_codes.{date}.log" + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + if lines: + line = lines[0] + if line: + try: + data = line.split(" - ")[1].strip() + if data.startswith("[") and data.find("]") < 20: + data = data[data.find("]") + 1:].strip() + return eval(data) + except: + pass + return None + + +def load_k_bars(date=tool.get_now_date_str()): + """ + 鍔犺浇K绾挎暟鎹� + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/local_storage_data/all_stocks_all_K_line_property_dict.{date}.json" + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + return json.loads(lines[0]) + return None + + +def load_kpl_code_plates(date=tool.get_now_date_str()): + """ + 鍔犺浇浠g爜鏉垮潡鏁版嵁 + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/kpl_code_plates.{date}.log" + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + if lines: + line = lines[0] + data = line.split(" - ")[1].strip() + if data.startswith("["): + data = data[data.find("]") + 1:].strip() + return eval(data) + return None + + +def load_kpl_limit_up_datas(date=tool.get_now_date_str()): + """ + 鍔犺浇寮�鐩樺暒娑ㄥ仠鏁版嵁 + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/kpl_limit_up.{date}.log" fdatas = [] - for data in datas: - # (璺濈09:15:00鐨勭鏁�, 鏃堕棿, 寮哄害) - if "11:30:00"<= data[0]<="13:00:00": - continue - fdatas.append([tool.trade_time_sub(data[0], "09:15:00"), data[0], data[1]]) - print(fdatas) + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + if lines: + for line in lines: + time_str = __get_async_log_time(line) + data = line.split(" - ")[1].strip() + if data.startswith("["): + data = data[data.find("]") + 1:].strip() + fdatas.append((time_str, eval(data))) + return fdatas + + +def load_stock_of_markets_plate_simple(start_time_str, end_time_str, date=tool.get_now_date_str()): + """ + 鍔犺浇寮�鐩樺暒绮鹃�夋澘鍧楀強鍏朵唬鐮� + :param end_time_str: 缁撴潫鏃堕棿 + :param start_time_str: 寮�濮嬫椂闂� + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/stock_of_markets_plate_simple.{date}.log" + fdatas = [] + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + while True: + line = f.readline() + if not line: + break + time_str = __get_async_log_time(line) + if time_str > end_time_str: + break + if start_time_str <= time_str <= end_time_str: + data = line.split(" - ")[1].strip() + if data.startswith("["): + data = data[data.find("]") + 1:].strip() + fdatas.append((time_str, eval(data))) + return fdatas + + +def load_deal_big_order(date=tool.get_now_date_str()): + """ + 鎴愪氦澶у崟 + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/huaxin/l2/transaction.{date}.log" + fdatas = [] + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + if lines: + for line in lines: + time_str = __get_async_log_time(line) + if time_str: + data = line.split(" - ")[1].strip() + if data.startswith("["): + data = data[data.find("]") + 1:].strip() + else: + time_str = __get_log_time(line) + data = line.split(" - ")[1].strip() + fdatas.append((time_str, eval(data))) + return fdatas + + +def load_ticks_data(min_time_str, max_time_str, date=tool.get_now_date_str()): + """ + 鎴愪氦澶у崟 + :param max_time_str: + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/huaxin/l2/marketdata.{date}.log" + fdatas = [] + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + while True: + line = f.readline() + if not line: + break + try: + time_str = __get_async_log_time(line) + if time_str: + data = line.split(" - ")[1].strip() + if data.startswith("["): + data = data[data.find("]") + 1:].strip() + else: + time_str = __get_log_time(line) + data = line.split(" - ")[1].strip() + if min_time_str <= time_str <= max_time_str: + fdatas.append((time_str, eval(data))) + if time_str > max_time_str: + break + except Exception as e: + logging.exception(e) + print(line) + print(fdatas[-1]) + return fdatas + + +def load_forbidden_plates_data(date=tool.get_now_date_str()): + """ + 绂佹涔板叆鐨勬澘鍧� + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/gp/kpl/forbidden_plates.{date}.log" + fdatas = [] + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + if lines: + for line in lines: + time_str = __get_async_log_time(line) + if time_str: + data = line.split(" - ")[1].strip() + if data.startswith("["): + data = data[data.find("]") + 1:].strip() + else: + time_str = __get_log_time(line) + data = line.split(" - ")[1].strip() + fdatas.append((time_str, data.split("-")[0].strip(), data.split("-")[1].strip())) + return fdatas + + +def load_virtual_trade_account(date=tool.get_now_date_str()): + """ + 鍔犺浇铏氭嫙浜ゆ槗鏁版嵁 + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/gp/virtual_account/virtual_account_money_records.{date}.log" + fdatas = [] + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + if lines: + for line in lines: + time_str = __get_async_log_time(line) + data = line[line.find("]") + 1:].strip() + fdatas.append((time_str, eval(data))) + return fdatas + + +def load_deal_list(date=tool.get_now_date_str()): + """ + 鍔犺浇铏氭嫙浜ゆ槗鏁版嵁 + :param date: + :return: + """ + path = f"{constant.get_path_prefix()}/low_suction_log/huaxin_local/trade/deal.{date}.log" + fdatas = [] + if os.path.exists(path): + with open(path, 'r', encoding="utf-8") as f: + lines = f.readlines() + if lines: + for line in lines: + # time_str = __get_async_log_time(line) + data = line[line.find("]") + 1:].strip() + fdatas.append(eval(data)) + return fdatas + + +if __name__ == '__main__': + print(load_deal_list()) + # load_k_bars('2025-07-03') + # datas = load_ticks_data("09:50:00") + # fdatas = [] + # for data in datas: + # # (璺濈09:15:00鐨勭鏁�, 鏃堕棿, 寮哄害) + # if "11:30:00" <= data[0] <= "13:00:00": + # continue + # fdatas.append([tool.trade_time_sub(data[0], "09:15:00"), data[0], data[1]]) + # print(fdatas) -- Gitblit v1.8.0