From 3eb35965524036ec76d873aee1609e1e8db8a448 Mon Sep 17 00:00:00 2001 From: Matthias Date: Fri, 18 Aug 2023 09:31:57 +0200 Subject: [PATCH] Simplify trades_data storing --- freqtrade/data/history/featherdatahandler.py | 4 ++-- freqtrade/data/history/hdf5datahandler.py | 4 ++-- freqtrade/data/history/idatahandler.py | 14 ++++++++++++-- freqtrade/data/history/jsondatahandler.py | 5 ++--- freqtrade/data/history/parquetdatahandler.py | 2 +- 5 files changed, 19 insertions(+), 10 deletions(-) diff --git a/freqtrade/data/history/featherdatahandler.py b/freqtrade/data/history/featherdatahandler.py index 3fa1b12b5..7517f3f8d 100644 --- a/freqtrade/data/history/featherdatahandler.py +++ b/freqtrade/data/history/featherdatahandler.py @@ -82,7 +82,7 @@ class FeatherDataHandler(IDataHandler): """ raise NotImplementedError() - def trades_store(self, pair: str, data: DataFrame) -> None: + def _trades_store(self, pair: str, data: DataFrame) -> None: """ Store trades data (list of Dicts) to file :param pair: Pair - used for filename @@ -92,7 +92,7 @@ class FeatherDataHandler(IDataHandler): filename = self._pair_trades_filename(self._datadir, pair) self.create_dir_if_needed(filename) - data[DEFAULT_TRADES_COLUMNS].to_feather(filename, compression_level=9, compression='lz4') + data.to_feather(filename, compression_level=9, compression='lz4') def trades_append(self, pair: str, data: DataFrame): """ diff --git a/freqtrade/data/history/hdf5datahandler.py b/freqtrade/data/history/hdf5datahandler.py index cebcf6013..d22fd9e31 100644 --- a/freqtrade/data/history/hdf5datahandler.py +++ b/freqtrade/data/history/hdf5datahandler.py @@ -100,7 +100,7 @@ class HDF5DataHandler(IDataHandler): """ raise NotImplementedError() - def trades_store(self, pair: str, data: pd.DataFrame) -> None: + def _trades_store(self, pair: str, data: pd.DataFrame) -> None: """ Store trades data (list of Dicts) to file :param pair: Pair - used for filename @@ -109,7 +109,7 @@ class HDF5DataHandler(IDataHandler): """ key = self._pair_trades_key(pair) - data[DEFAULT_TRADES_COLUMNS].to_hdf( + data.to_hdf( self._pair_trades_filename(self._datadir, pair), key, mode='a', complevel=9, complib='blosc', format='table', data_columns=['timestamp'] diff --git a/freqtrade/data/history/idatahandler.py b/freqtrade/data/history/idatahandler.py index 0267174ef..d8c063f2a 100644 --- a/freqtrade/data/history/idatahandler.py +++ b/freqtrade/data/history/idatahandler.py @@ -15,7 +15,7 @@ from pandas import DataFrame from freqtrade import misc from freqtrade.configuration import TimeRange -from freqtrade.constants import ListPairsWithTimeframes +from freqtrade.constants import DEFAULT_TRADES_COLUMNS, ListPairsWithTimeframes from freqtrade.data.converter import (clean_ohlcv_dataframe, trades_convert_types, trades_df_remove_duplicates, trim_dataframe) from freqtrade.enums import CandleType, TradingMode @@ -171,7 +171,7 @@ class IDataHandler(ABC): return [cls.rebuild_pair_from_filename(match[0]) for match in _tmp if match] @abstractmethod - def trades_store(self, pair: str, data: DataFrame) -> None: + def _trades_store(self, pair: str, data: DataFrame) -> None: """ Store trades data (list of Dicts) to file :param pair: Pair - used for filename @@ -197,6 +197,16 @@ class IDataHandler(ABC): :return: Dataframe containing trades """ + def trades_store(self, pair: str, data: DataFrame) -> None: + """ + Store trades data (list of Dicts) to file + :param pair: Pair - used for filename + :param data: Dataframe containing trades + column sequence as in DEFAULT_TRADES_COLUMNS + """ + # Filter on expected columns (will remove the actual date column). + self._trades_store(pair, data[DEFAULT_TRADES_COLUMNS]) + def trades_purge(self, pair: str) -> bool: """ Remove data for this pair diff --git a/freqtrade/data/history/jsondatahandler.py b/freqtrade/data/history/jsondatahandler.py index 54d289bc0..9a02a7769 100644 --- a/freqtrade/data/history/jsondatahandler.py +++ b/freqtrade/data/history/jsondatahandler.py @@ -94,7 +94,7 @@ class JsonDataHandler(IDataHandler): """ raise NotImplementedError() - def trades_store(self, pair: str, data: DataFrame) -> None: + def _trades_store(self, pair: str, data: DataFrame) -> None: """ Store trades data (list of Dicts) to file :param pair: Pair - used for filename @@ -102,8 +102,7 @@ class JsonDataHandler(IDataHandler): column sequence as in DEFAULT_TRADES_COLUMNS """ filename = self._pair_trades_filename(self._datadir, pair) - data.loc[:, 'timestamp'] = data.loc[:, 'timestamp'] - trades = data[DEFAULT_TRADES_COLUMNS].values.tolist() + trades = data.values.tolist() misc.file_dump_json(filename, trades, is_zip=self._use_zip) def trades_append(self, pair: str, data: DataFrame): diff --git a/freqtrade/data/history/parquetdatahandler.py b/freqtrade/data/history/parquetdatahandler.py index 254fa0df4..2cc217e9a 100644 --- a/freqtrade/data/history/parquetdatahandler.py +++ b/freqtrade/data/history/parquetdatahandler.py @@ -81,7 +81,7 @@ class ParquetDataHandler(IDataHandler): """ raise NotImplementedError() - def trades_store(self, pair: str, data: DataFrame) -> None: + def _trades_store(self, pair: str, data: DataFrame) -> None: """ Store trades data (list of Dicts) to file :param pair: Pair - used for filename