From 0b0d0e790fec8c7edfdbcab5c31d625e0c2eadd6 Mon Sep 17 00:00:00 2001 From: admin <admin@example.com> Date: 星期四, 19 六月 2025 16:54:49 +0800 Subject: [PATCH] 添加必要的数据日志 --- strategy/plate_strength_analysis.py | 12 +++++- backtest/main.py | 16 ++++++++ strategy/buying_strategy.py | 2 backtest/__init__.py | 0 strategy/all_K_line.py | 4 + log_module/log.py | 25 ++++++++++++ strategy/data_cache.py | 5 +- strategy/kpl_data_manager.py | 12 +++++- 8 files changed, 68 insertions(+), 8 deletions(-) diff --git a/backtest/__init__.py b/backtest/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/backtest/__init__.py diff --git a/backtest/main.py b/backtest/main.py new file mode 100644 index 0000000..7014362 --- /dev/null +++ b/backtest/main.py @@ -0,0 +1,16 @@ +""" +鍥炴祴 +""" +from utils import tool + +if __name__ == '__main__': + now_day = '2025-06-19' + # 浠庢棭涓�09:25:00鍥炴祴鍒�11:30:00 + start_time, end_time = '09:25:00', '11:30:00' + for i in range(0, 60*60*3): + # 鏃堕棿椹卞姩 + time_str = tool.trade_time_sub(start_time, 0 - i) + if time_str > end_time: + break + pass + diff --git a/log_module/log.py b/log_module/log.py index 74f7cbb..b0ff0fa 100644 --- a/log_module/log.py +++ b/log_module/log.py @@ -201,6 +201,19 @@ filter=lambda record: record["extra"].get("name") == "kpl_open_limit_up", rotation="00:00", compression="zip", enqueue=True) + logger.add(self.get_path("kpl", "kpl_code_plates"), + filter=lambda record: record["extra"].get("name") == "kpl_code_plates", + rotation="00:00", compression="zip", enqueue=True) + + # K绾挎棩蹇� + logger.add(self.get_path("kbars", "k_bars"), + filter=lambda record: record["extra"].get("name") == "k_bars", + rotation="00:00", compression="zip", enqueue=True) + # 鐩爣绁� + logger.add(self.get_path("codes", "target_codes"), + filter=lambda record: record["extra"].get("name") == "target_codes", + rotation="00:00", compression="zip", enqueue=True) + # 鐪嬬洏鏃ュ織 logger.add(self.get_path("kp", "kp_msg"), filter=lambda record: record["extra"].get("name") == "kp_msg", @@ -323,6 +336,10 @@ filter=lambda record: record["extra"].get("name") == "stock_of_markets_plate", rotation="00:00", compression="zip", enqueue=True) + logger.add(self.get_path("kpl", "stock_of_markets_plate_simple"), + filter=lambda record: record["extra"].get("name") == "stock_of_markets_plate_simple", + rotation="00:00", compression="zip", enqueue=True) + def get_path(self, dir_name, log_name): path_str = "{}/{}/gp/{}/{}".format(constant.get_path_prefix(), constant.LOG_DIR, dir_name, log_name) + ".{time:YYYY-MM-DD}.log" @@ -420,6 +437,13 @@ logger_kp_msg = __mylogger.get_logger("kp_msg") +logger_kpl_code_plates = __mylogger.get_logger("kpl_code_plates") + +logger_k_bars = __mylogger.get_logger("k_bars") + +logger_target_codes = __mylogger.get_logger("target_codes") + + logger_redis_debug = __mylogger.get_logger("redis_debug") logger_profile = __mylogger.get_logger("profile") @@ -451,6 +475,7 @@ logger_kpl_market_sift_plate = __mylogger.get_logger("kpl_market_sift_plate") logger_Overall_market_strength_score = __mylogger.get_logger("Overall_market_strength_score") logger_stock_of_markets_plate = __mylogger.get_logger("stock_of_markets_plate") +logger_stock_of_markets_plate_simple = __mylogger.get_logger("stock_of_markets_plate_simple") logger_common = __mylogger.get_logger("common") diff --git a/strategy/all_K_line.py b/strategy/all_K_line.py index bdc7077..bb002d8 100644 --- a/strategy/all_K_line.py +++ b/strategy/all_K_line.py @@ -11,7 +11,8 @@ import json import constant -from log_module.log import logger_common +from log_module import async_log_util +from log_module.log import logger_common, logger_k_bars from strategy import data_cache # 寮曞叆鍩虹绠楁硶妯″潡 @@ -378,6 +379,7 @@ # 灏嗚浆鎹㈠悗鐨凧SON瀛楃涓插啓鍏ユ枃浠� with open(constant.K_BARS_PATH, 'w', encoding='utf-8') as f: f.write(json_data) + async_log_util.info(logger_k_bars, json_data) except Exception as error: print(f"An error occurred while converting the data to JSON: {error}") logger.info(f"鏍囩殑涓偂鍘嗗彶k绾垮啓瀹屼簡锛亄tool.get_now_time_str()}") diff --git a/strategy/buying_strategy.py b/strategy/buying_strategy.py index 8b30597..a5230d6 100644 --- a/strategy/buying_strategy.py +++ b/strategy/buying_strategy.py @@ -879,7 +879,7 @@ # 浠ヤ笅閮ㄥ垎涓昏璁$畻鏁翠綋鐨勮姳璐规椂闂� # 灏哻urrent_created_at杞崲涓篸atetime瀵硅薄锛岃繖閲屽亣璁炬槸浠婂ぉ鐨勬棩鏈� # 娉ㄦ剰锛氳繖閲屼娇鐢ㄤ簡datetime.now()鏉ヨ幏鍙栧綋鍓嶆棩鏈燂紝浣嗕綘鍙互鏍规嵁闇�瑕佽皟鏁� - created_at = datetime.datetime.strptime(tool.get_now_date_str() + " " + current_created_at, + created_at = datetime.datetime.strptime(data_cache.DataCache().today_date + " " + current_created_at, "%Y-%m-%d %H:%M:%S").timestamp() # print(f"created_at===={created_at}") # print(f"created_at type===={type(created_at)}") diff --git a/strategy/data_cache.py b/strategy/data_cache.py index eb5a8a0..71da684 100644 --- a/strategy/data_cache.py +++ b/strategy/data_cache.py @@ -11,7 +11,8 @@ import constant # 寮曞叆鎺橀噾API import utils.juejin_api -from log_module.log import logger_common +from log_module import async_log_util +from log_module.log import logger_common, logger_target_codes # from logging_config import get_logger from utils import tool, hx_qc_value_util @@ -65,7 +66,7 @@ # 鑾峰彇A鑲″競鍦猴紙鍖呭惈娌繁涓ゅ競锛夌殑鑲$エ鍒楄〃璺宠繃鍋滅墝锛岃烦杩嘢T 涓婁氦鎵� SHSE.600000 娣变氦鎵� SZSE.000000 target = ['SHSE.603839', 'SZSE.002855'] self.all_stocks = utils.juejin_api.JueJinApi.get_target_codes() # self.all_stocks = [{'sec_level': 1, 'symbol': 'SZSE.301633','pre_close': 78.72000122070312, 'is_suspended': 0, 'sec_name': '娓开鎶�鏈�', 'listed_date': datetime.datetime(2024, 11, 7, 0, 0,tzinfo=datetime.timezone(datetime.timedelta(seconds=28800))), 'sec_type': 1, 'sec_id': '301633'}] - + async_log_util.info(logger_target_codes, f"{ self.all_stocks}") # self.all_stocks = self.all_stocks[:10] # 缂撳瓨浠g爜鐨勫悕绉� self.code_name_dict = {x['symbol']: x['sec_name'] for x in self.all_stocks} diff --git a/strategy/kpl_data_manager.py b/strategy/kpl_data_manager.py index 03e9229..db4e65a 100644 --- a/strategy/kpl_data_manager.py +++ b/strategy/kpl_data_manager.py @@ -1,5 +1,6 @@ from log_module import log_export, async_log_util -from log_module.log import logger_stock_of_markets_plate, logger_debug, logger_kpl_market_sift_plate +from log_module.log import logger_stock_of_markets_plate, logger_debug, logger_kpl_market_sift_plate, \ + logger_stock_of_markets_plate_simple from utils import tool @@ -71,11 +72,18 @@ def add_log(self, in_plates_info, plate_codes_info): oringin_data = (tool.get_now_time_str(), in_plates_info, plate_codes_info) async_log_util.info(logger_stock_of_markets_plate, f"{(oringin_data[1], oringin_data[2])}") + plate_codes_simple_info = {plate: [(s[1], s[0], s[6], s[9], s[4], s[2], s[40]) for s in oringin_data[2][plate]] for plate in oringin_data[2]} + async_log_util.info(logger_stock_of_markets_plate_simple, f"{(oringin_data[1], plate_codes_simple_info)}") def get_filter_log_datas(self): return self.__filter_log_datas if __name__ == '__main__': - KPLMarketsSiftPlateLogManager().load_data() + # KPLMarketsSiftPlateLogManager().load_data() # KPLMarketStockHeatLogManager() + with open("D:/text.txt", encoding='utf-8', mode='r') as f: + line = f.readline() + res = eval(line) + KPLMarketStockHeatLogManager().add_log(res[0], res[1]) + print(res) \ No newline at end of file diff --git a/strategy/plate_strength_analysis.py b/strategy/plate_strength_analysis.py index e8ec8f3..efe40f4 100644 --- a/strategy/plate_strength_analysis.py +++ b/strategy/plate_strength_analysis.py @@ -4,8 +4,10 @@ import time import dask import constant +from log_module import async_log_util -from log_module.log import logger_common, logger_kpl_jingxuan_in, logger_debug, logger_kpl_market_sift_plate +from log_module.log import logger_common, logger_kpl_jingxuan_in, logger_debug, logger_kpl_market_sift_plate, \ + logger_kpl_limit_up, logger_kpl_code_plates from strategy import kpl_api, data_cache, basic_methods from strategy.kpl_data_manager import KPLMarketStockHeatLogManager from utils import tool, hx_qc_value_util @@ -75,6 +77,8 @@ return log_data # 瀹氫箟涓�涓椂闂存锛屽湪杩欎釜鏃堕棿娈靛唴鎵嶄細鎵ц涓嬮潰鐨勪唬鐮侊紝涓昏灏辨槸鎶婂己搴︽暟鎹綔涓烘棩蹇楁墦鍗板瓨鍌ㄤ笅鏉ャ�� now_time = tool.get_now_time_str() + if '11:30:10' < now_time < '12:59:50': + return data = (kpl_api.getMarketJingXuanRealRankingInfo()) market_sift_plate = json.loads(data) # print(f"market_sift_plate 鏁� ======{len(market_sift_plate['list'])}") @@ -140,7 +144,7 @@ # 璁惧畾褰撳墠鏃堕棿鐐� now_time = tool.get_now_time_str() # print(f"now_time===={now_time}") - if data_cache.SERVER_RESTART_TIME < now_time < data_cache.UPDATE_DATA_TIME: + if data_cache.OPEN_BIDDING_TIME < now_time < data_cache.CLOSING_TIME: # print(f"鍦ㄦ椂闂村唴浣跨敤--------------------------") # 鑾峰彇娑ㄥ仠淇℃伅鍒楄〃 limit_up_info = kpl_api.get_limit_up_info() @@ -159,6 +163,8 @@ # most_common_element, most_common_count = counter.most_common(1)[0] # # 鎵撳嵃鍑虹幇娆℃暟鏈�澶氱殑鍏冪礌 # print(f"涓荤嚎姒傚康锛歿most_common_element}锛屽嚭鐜颁簡 {most_common_count} 娆�") + async_log_util.info(logger_kpl_limit_up, f"{limit_up_info}") + return limit_up_block_names @@ -455,6 +461,8 @@ # 鍐欏叆鏂囦欢 with open(constant.ALL_STOCKS_PLATE_PATH, 'w', encoding='utf-8') as f: f.write(json_data) + # 璁板綍鍒版棩蹇� + async_log_util.info(logger_kpl_code_plates, json_data) now_time = datetime.datetime.now() # 鑾峰彇鏈満鏃堕棿 logger_common.info(f"鍐欏叆鎵�鏈変釜鑲℃澘鍧楁枃浠跺畬鎴愶紒::{now_time}") -- Gitblit v1.8.0