Set explicit dtypes
This commit is contained in:
@@ -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', '']
|
||||||
|
|
||||||
|
|||||||
@@ -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:
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user