# 数据管理 import datetime import json import os from utils import tool from utils import log_util class CodeDataManager: def save_data(self, data): code = data["code"] create_at = data["created_at"] data["created_at"] = create_at.strftime("%Y-%m-%d %H:%M:%S") log_util.save_l1_data(code, data) def get_datas(self, code): datas = log_util.get_l1_datas(code) # 根据创建时间排序 datas = sorted(datas, key=lambda tup: int(tup["created_at"].split(" ")[1].replace(":", ""))) return datas def get_lack_datas_time_range(self, datas, min_time=None): def is_trade_time(time_): if int("092500") <= int(time_.replace(":", "")) <= int("113000") or int("130000") <= int( time_.replace(":", "")) <= int("150000"): return True return False ranges = [] now_time_str = tool.get_now_time_str() if tool.trade_time_sub(now_time_str, "15:00:00") > 0: now_time_str = "15:00:00" if tool.trade_time_sub(now_time_str, "13:00:00") < 0 and tool.trade_time_sub(now_time_str, "11:30:00") > 0: now_time_str = "11:30:00" # 还没到时间 if tool.trade_time_sub(now_time_str, "09:25:00") < 0: return ranges last_time = "09:25:01" if min_time is None else min_time # tool.trade_time_add_second(now_time_str, 0 - 18 * 60) # if tool.trade_time_sub(last_time, "09:25:00") < 0: # last_time = "09:25:00" if len(datas) == 0: ranges.append((last_time, now_time_str)) return ranges for data in datas: # 如果上次时间与本次时间间隔相差30s以上才补全 time_ = data["created_at"].split(" ")[1] if tool.trade_time_sub(time_, last_time) < 0: continue if tool.trade_time_sub(time_, last_time) > 30: if len(ranges) == 0 or ranges[-1][0] != last_time: if is_trade_time(last_time) and is_trade_time(time_): start_time = tool.trade_time_add_second(last_time, 3) end_time = tool.trade_time_add_second(time_, -3) if tool.trade_time_sub(end_time, start_time) > 0: ranges.append((start_time, end_time)) last_time = time_ return ranges