Extract trades df type conversion

This commit is contained in:
Matthias
2023-08-18 07:43:29 +02:00
parent 0fab65df03
commit 7577613882
3 changed files with 22 additions and 9 deletions
+17 -4
View File
@@ -226,16 +226,29 @@ def trades_dict_to_list(trades: List[Dict]) -> TradeList:
return [[t[col] for col in DEFAULT_TRADES_COLUMNS] for t in trades] return [[t[col] for col in DEFAULT_TRADES_COLUMNS] for t in trades]
def trades_list_to_df(trades: TradeList): def trades_convert_types(trades: DataFrame) -> DataFrame:
"""
Convert Trades dtypes and add 'date' column
"""
trades = trades.astype(TRADES_DTYPES)
trades['date'] = to_datetime(trades['timestamp'], unit='ms', utc=True)
return trades
def trades_list_to_df(trades: TradeList, convert: bool = True):
""" """
convert trades list to dataframe convert trades list to dataframe
:param trades: List of Lists with constants.DEFAULT_TRADES_COLUMNS as columns :param trades: List of Lists with constants.DEFAULT_TRADES_COLUMNS as columns
""" """
if not trades: if not trades:
return DataFrame(columns=DEFAULT_TRADES_COLUMNS).astype(TRADES_DTYPES) df = DataFrame(columns=DEFAULT_TRADES_COLUMNS)
df = DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS) else:
df = DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS)
return df.astype(TRADES_DTYPES) if convert:
df = trades_convert_types(df)
return df
def trades_to_ohlcv(trades: DataFrame, timeframe: str) -> DataFrame: def trades_to_ohlcv(trades: DataFrame, timeframe: str) -> DataFrame:
+4 -4
View File
@@ -16,8 +16,8 @@ from pandas import DataFrame, to_datetime
from freqtrade import misc from freqtrade import misc
from freqtrade.configuration import TimeRange from freqtrade.configuration import TimeRange
from freqtrade.constants import TRADES_DTYPES, ListPairsWithTimeframes, TradeList from freqtrade.constants import TRADES_DTYPES, ListPairsWithTimeframes, TradeList
from freqtrade.data.converter import (clean_ohlcv_dataframe, trades_df_remove_duplicates, from freqtrade.data.converter import (clean_ohlcv_dataframe, trades_convert_types,
trim_dataframe) trades_df_remove_duplicates, trim_dataframe)
from freqtrade.enums import CandleType, TradingMode from freqtrade.enums import CandleType, TradingMode
from freqtrade.exchange import timeframe_to_seconds from freqtrade.exchange import timeframe_to_seconds
@@ -218,8 +218,8 @@ class IDataHandler(ABC):
:return: List of trades :return: List of trades
""" """
trades = trades_df_remove_duplicates(self._trades_load(pair, timerange=timerange)) trades = trades_df_remove_duplicates(self._trades_load(pair, timerange=timerange))
trades = trades.astype(TRADES_DTYPES)
trades['date'] = to_datetime(trades['timestamp'], unit='ms', utc=True) trades = trades_convert_types(trades)
return trades return trades
def trades_load_aslist(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList: def trades_load_aslist(self, pair: str, timerange: Optional[TimeRange] = None) -> TradeList:
+1 -1
View File
@@ -134,7 +134,7 @@ class JsonDataHandler(IDataHandler):
logger.info("Old trades format detected - converting") logger.info("Old trades format detected - converting")
tradesdata = trades_dict_to_list(tradesdata) tradesdata = trades_dict_to_list(tradesdata)
pass pass
return trades_list_to_df(tradesdata) return trades_list_to_df(tradesdata, convert=False)
@classmethod @classmethod
def _get_file_extension(cls): def _get_file_extension(cls):