Skip to content

Commit f6f0180

Browse files
committed
fix: use more stable "date to ms" method
1 parent 33211c8 commit f6f0180

4 files changed

Lines changed: 7 additions & 7 deletions

File tree

freqtrade/data/btanalysis/bt_fileutils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ def get_backtest_market_change(filename: Path, include_ts: bool = True) -> pd.Da
308308
else:
309309
df = pd.read_feather(filename)
310310
if include_ts:
311-
df.loc[:, "__date_ts"] = df.loc[:, "date"].astype(np.int64) // 1000 // 1000
311+
df.loc[:, "__date_ts"] = df.loc[:, "date"].dt.as_unit("ms").astype(np.int64)
312312
return df
313313

314314

@@ -326,7 +326,7 @@ def get_backtest_wallet_change(filename: Path, strategy_name: str) -> pd.DataFra
326326
data = load_file_from_zip(filename, f"{filename.stem}_{strategy_name}_wallet.feather")
327327
df = pd.read_feather(BytesIO(data))
328328

329-
df.loc[:, "__date_ts"] = df.loc[:, "date"].astype(np.int64) // 1000 // 1000
329+
df.loc[:, "__date_ts"] = df.loc[:, "date"].dt.as_unit("ms").astype(np.int64)
330330
return df
331331
except ValueError:
332332
pass

freqtrade/data/history/datahandlers/jsondatahandler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ def ohlcv_store(
3535
filename = self._pair_data_filename(self._datadir, pair, timeframe, candle_type)
3636
self.create_dir_if_needed(filename)
3737
_data = data.copy()
38-
# Convert date to int
39-
_data["date"] = _data["date"].astype(np.int64) // 1000 // 1000
38+
# Convert date to int (milliseconds)
39+
_data["date"] = _data["date"].dt.as_unit("ms").astype(np.int64)
4040

4141
# Reset index, select only appropriate columns and save as json
4242
_data.reset_index(drop=True).loc[:, self._columns].to_json(

freqtrade/rpc/rpc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -794,7 +794,7 @@ def _rpc_get_historic_balance(self) -> tuple[DataFrame, int]:
794794
results = read_sql("wallet_history", con=Trade.session.bind, parse_dates=["timestamp"])
795795

796796
results = results.rename({"timestamp": "date"}, axis=1)
797-
results.loc[:, "__date_ts"] = results.loc[:, "date"].astype("int64") // 1000 // 1000
797+
results.loc[:, "__date_ts"] = results.loc[:, "date"].dt.as_unit("ms").astype("int64")
798798
# Exclude non-bot managed for now
799799
results_filtered = results.loc[results["bot_managed"]]
800800

@@ -1536,7 +1536,7 @@ def _convert_dataframe_to_dict(
15361536
df_cols = [col for col in dataframe_columns if col in cols_set]
15371537
dataframe = dataframe.loc[:, df_cols]
15381538

1539-
dataframe.loc[:, "__date_ts"] = dataframe.loc[:, "date"].astype(int64) // 1000 // 1000
1539+
dataframe.loc[:, "__date_ts"] = dataframe.loc[:, "date"].dt.as_unit("ms").astype(int64)
15401540
# Move signal close to separate column when signal for easy plotting
15411541
for sig_type in signals.keys():
15421542
if sig_type in dataframe.columns:

tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ def generate_test_data(
207207
def generate_test_data_raw(timeframe: str, size: int, start: str = "2020-07-05", random_seed=42):
208208
"""Generates data in the ohlcv format used by ccxt"""
209209
df = generate_test_data(timeframe, size, start, random_seed)
210-
df["date"] = df.loc[:, "date"].astype(np.int64) // 1000 // 1000
210+
df["date"] = df.loc[:, "date"].dt.as_unit("ms").astype(np.int64)
211211
return list(list(x) for x in zip(*(df[x].values.tolist() for x in df.columns), strict=False))
212212

213213

0 commit comments

Comments
 (0)