Skip to content

Commit 0682d12

Browse files
committed
feat: get_backtest_market_change should support zip files
1 parent 1119ee1 commit 0682d12

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

freqtrade/data/btanalysis.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,11 @@ def get_backtest_market_change(filename: Path, include_ts: bool = True) -> pd.Da
279279
"""
280280
Read backtest market change file.
281281
"""
282-
df = pd.read_feather(filename)
282+
if filename.suffix == ".zip":
283+
data = load_file_from_zip(filename, f"{filename.stem}_market_change.feather")
284+
df = pd.read_feather(BytesIO(data))
285+
else:
286+
df = pd.read_feather(filename)
283287
if include_ts:
284288
df.loc[:, "__date_ts"] = df.loc[:, "date"].astype(np.int64) // 1000 // 1000
285289
return df

freqtrade/rpc/api_server/api_backtest.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,10 +350,17 @@ def api_update_backtest_history_entry(
350350
)
351351
def api_get_backtest_market_change(file: str, config=Depends(get_config)):
352352
bt_results_base: Path = config["user_data_dir"] / "backtest_results"
353-
file_abs = (bt_results_base / f"{file}_market_change").with_suffix(".feather")
354-
# Ensure file is in backtest_results directory
355-
if not is_file_in_dir(file_abs, bt_results_base):
353+
for fn in (
354+
Path(file).with_suffix(".zip"),
355+
Path(f"{file}_market_change").with_suffix(".feather"),
356+
):
357+
file_abs = bt_results_base / fn
358+
# Ensure file is in backtest_results directory
359+
if is_file_in_dir(file_abs, bt_results_base):
360+
break
361+
else:
356362
raise HTTPException(status_code=404, detail="File not found.")
363+
357364
df = get_backtest_market_change(file_abs)
358365

359366
return {

0 commit comments

Comments
 (0)