Set explicit dtypes

This commit is contained in:
Matthias
2023-08-18 07:25:51 +02:00
parent f69a776305
commit 0fab65df03
4 changed files with 19 additions and 7 deletions
+9
View File
@@ -50,6 +50,15 @@ DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume']
# Don't modify sequence of DEFAULT_TRADES_COLUMNS # Don't modify sequence of DEFAULT_TRADES_COLUMNS
# it has wide consequences for stored trades files # it has wide consequences for stored trades files
DEFAULT_TRADES_COLUMNS = ['timestamp', 'id', 'type', 'side', 'price', 'amount', 'cost'] DEFAULT_TRADES_COLUMNS = ['timestamp', 'id', 'type', 'side', 'price', 'amount', 'cost']
TRADES_DTYPES = {
'timestamp': 'int64',
'id': 'str',
'type': 'str',
'side': 'str',
'price': 'float64',
'amount': 'float64',
'cost': 'float64',
}
TRADING_MODES = ['spot', 'margin', 'futures'] TRADING_MODES = ['spot', 'margin', 'futures']
MARGIN_MODES = ['cross', 'isolated', ''] MARGIN_MODES = ['cross', 'isolated', '']
+5 -3
View File
@@ -10,7 +10,8 @@ import numpy as np
import pandas as pd import pandas as pd
from pandas import DataFrame, to_datetime from pandas import DataFrame, to_datetime
from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS, Config, TradeList from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS, TRADES_DTYPES,
Config, TradeList)
from freqtrade.enums import CandleType, TradingMode from freqtrade.enums import CandleType, TradingMode
@@ -231,9 +232,10 @@ def trades_list_to_df(trades: TradeList):
: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) return DataFrame(columns=DEFAULT_TRADES_COLUMNS).astype(TRADES_DTYPES)
df = DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS) df = DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS)
return df
return df.astype(TRADES_DTYPES)
def trades_to_ohlcv(trades: DataFrame, timeframe: str) -> DataFrame: def trades_to_ohlcv(trades: DataFrame, timeframe: str) -> DataFrame:
+2 -1
View File
@@ -15,7 +15,7 @@ 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 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_df_remove_duplicates,
trim_dataframe) trim_dataframe)
from freqtrade.enums import CandleType, TradingMode from freqtrade.enums import CandleType, TradingMode
@@ -218,6 +218,7 @@ 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['date'] = to_datetime(trades['timestamp'], unit='ms', utc=True)
return trades return trades
+3 -3
View File
@@ -14,7 +14,7 @@ import pytest
from freqtrade import constants from freqtrade import constants
from freqtrade.commands import Arguments from freqtrade.commands import Arguments
from freqtrade.data.converter import ohlcv_to_dataframe from freqtrade.data.converter import ohlcv_to_dataframe, trades_list_to_df
from freqtrade.edge import PairInfo from freqtrade.edge import PairInfo
from freqtrade.enums import CandleType, MarginMode, RunMode, SignalDirection, TradingMode from freqtrade.enums import CandleType, MarginMode, RunMode, SignalDirection, TradingMode
from freqtrade.exchange import Exchange from freqtrade.exchange import Exchange
@@ -2352,8 +2352,8 @@ def trades_history():
@pytest.fixture(scope="function") @pytest.fixture(scope="function")
def trades_history_df(trades_history): def trades_history_df(trades_history):
trades = pd.DataFrame(trades_history, columns=constants.DEFAULT_TRADES_COLUMNS) trades = trades_list_to_df(trades_history)
trades['timestamp'] = pd.to_datetime(trades['timestamp'], unit='ms', utc=True) trades['date'] = pd.to_datetime(trades['timestamp'], unit='ms', utc=True)
return trades return trades