Merge pull request #6340 from TheJoeSchr/frequi-datetime
freqUI: fix can't import backtest with missing datetime data
This commit is contained in:
commit
2e41d80a2c
@ -12,7 +12,7 @@ import psutil
|
|||||||
from dateutil.relativedelta import relativedelta
|
from dateutil.relativedelta import relativedelta
|
||||||
from dateutil.tz import tzlocal
|
from dateutil.tz import tzlocal
|
||||||
from numpy import NAN, inf, int64, mean
|
from numpy import NAN, inf, int64, mean
|
||||||
from pandas import DataFrame
|
from pandas import DataFrame, NaT
|
||||||
|
|
||||||
from freqtrade import __version__
|
from freqtrade import __version__
|
||||||
from freqtrade.configuration.timerange import TimeRange
|
from freqtrade.configuration.timerange import TimeRange
|
||||||
@ -963,8 +963,18 @@ class RPC:
|
|||||||
sell_mask = (dataframe['sell'] == 1)
|
sell_mask = (dataframe['sell'] == 1)
|
||||||
sell_signals = int(sell_mask.sum())
|
sell_signals = int(sell_mask.sum())
|
||||||
dataframe.loc[sell_mask, '_sell_signal_close'] = dataframe.loc[sell_mask, 'close']
|
dataframe.loc[sell_mask, '_sell_signal_close'] = dataframe.loc[sell_mask, 'close']
|
||||||
dataframe = dataframe.replace([inf, -inf], NAN)
|
|
||||||
dataframe = dataframe.replace({NAN: None})
|
# band-aid until this is fixed:
|
||||||
|
# https://github.com/pandas-dev/pandas/issues/45836
|
||||||
|
datetime_types = ['datetime', 'datetime64', 'datetime64[ns, UTC]']
|
||||||
|
date_columns = dataframe.select_dtypes(include=datetime_types)
|
||||||
|
for date_column in date_columns:
|
||||||
|
# replace NaT with empty string,
|
||||||
|
# because if replaced with `None`
|
||||||
|
# it will be casted into NaT again
|
||||||
|
dataframe[date_column] = dataframe[date_column].astype(object).replace({NaT: None})
|
||||||
|
|
||||||
|
dataframe = dataframe.replace({inf: None, -inf: None, NAN: None})
|
||||||
|
|
||||||
res = {
|
res = {
|
||||||
'pair': pair,
|
'pair': pair,
|
||||||
|
@ -7,6 +7,7 @@ from datetime import datetime, timedelta, timezone
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from unittest.mock import ANY, MagicMock, PropertyMock
|
from unittest.mock import ANY, MagicMock, PropertyMock
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
import pytest
|
import pytest
|
||||||
import uvicorn
|
import uvicorn
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
@ -1181,6 +1182,24 @@ def test_api_pair_candles(botclient, ohlcv_history):
|
|||||||
0.7039405, 8.885e-05, 0, 0, 1511686800000, None, None]
|
0.7039405, 8.885e-05, 0, 0, 1511686800000, None, None]
|
||||||
|
|
||||||
])
|
])
|
||||||
|
ohlcv_history['sell'] = ohlcv_history['sell'].astype('float64')
|
||||||
|
ohlcv_history.at[0, 'sell'] = float('inf')
|
||||||
|
ohlcv_history['date1'] = ohlcv_history['date']
|
||||||
|
ohlcv_history.at[0, 'date1'] = pd.NaT
|
||||||
|
|
||||||
|
ftbot.dataprovider._set_cached_df("XRP/BTC", timeframe, ohlcv_history)
|
||||||
|
rc = client_get(client,
|
||||||
|
f"{BASE_URI}/pair_candles?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}")
|
||||||
|
assert_response(rc)
|
||||||
|
assert (rc.json()['data'] ==
|
||||||
|
[['2017-11-26 08:50:00', 8.794e-05, 8.948e-05, 8.794e-05, 8.88e-05, 0.0877869,
|
||||||
|
None, 0, None, None, 1511686200000, None, None],
|
||||||
|
['2017-11-26 08:55:00', 8.88e-05, 8.942e-05, 8.88e-05,
|
||||||
|
8.893e-05, 0.05874751, 8.886500000000001e-05, 1, 0.0, '2017-11-26 08:55:00',
|
||||||
|
1511686500000, 8.893e-05, None],
|
||||||
|
['2017-11-26 09:00:00', 8.891e-05, 8.893e-05, 8.875e-05, 8.877e-05,
|
||||||
|
0.7039405, 8.885e-05, 0, 0.0, '2017-11-26 09:00:00', 1511686800000, None, None]
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
def test_api_pair_history(botclient, ohlcv_history):
|
def test_api_pair_history(botclient, ohlcv_history):
|
||||||
|
Loading…
Reference in New Issue
Block a user