@lru_cache(maxsize=10)
def load_bar_data(
symbol: str,
exchange: Exchange,
interval: Interval,
start: datetime,
end: datetime
):
"""bar数据缓存为pkl格式到本地硬盘"""
dir_path = f"H:\\pickle_data\\"
file_name = f"{symbol}_{exchange.value}_{start.date()}_{end.date()}_bar"
pickle_path = dir_path + file_name + ".pkl"
data_size =0
if not os.path.exists(pickle_path):
bar_data = database_manager.load_bar_data( symbol, exchange, interval, start, end )
pickle_file = open(pickle_path,'wb')
pickle.dump(bar_data,pickle_file)
pickle_file.close()
else:
pickle_file = open(pickle_path,'rb')
bar_data =pickle.load(pickle_file)
pickle_file.close()
#pickle_data文件夹大于50G清空缓存数据
for dirpath, dirnames, filenames in os.walk(dir_path):
for file_name in filenames: #当前目录所有文件名
data_size += os.path.getsize(dirpath + file_name)
if data_size / (1024 ** 3) > 50:
for dirpath, dirnames, filenames in os.walk(dir_path):
for file_name in filenames:
os.remove(dirpath + file_name)
return bar_data
@lru_cache(maxsize=10)
def load_tick_data(
symbol: str,
exchange: Exchange,
start: datetime,
end: datetime
):
"""tick数据缓存为pkl格式到本地硬盘"""
dir_path = f"H:\\pickle_data\\"
file_name = f"{symbol}_{exchange.value}_{start.date()}_{end.date()}_tick"
pickle_path = dir_path + file_name + ".pkl"
data_size =0
if not os.path.exists(pickle_path):
tick_data = database_manager.load_tick_data( symbol, exchange, start, end )
pickle_file = open(pickle_path,'wb')
pickle.dump(tick_data,pickle_file)
pickle_file.close()
else:
pickle_file = open(pickle_path,'rb')
tick_data =pickle.load(pickle_file)
pickle_file.close()
#pickle_data文件夹大于50G清空缓存数据
for dirpath, dirnames, filenames in os.walk(dir_path):
for file_name in filenames: #当前目录所有文件名
data_size += os.path.getsize(dirpath + file_name)
if data_size / (1024 ** 3) > 50:
for dirpath, dirnames, filenames in os.walk(dir_path):
for file_name in filenames:
os.remove(dirpath + file_name)
return tick_data