Add resiliancy against not having a analyzed dataframe yet
This commit is contained in:
parent
c59a1be154
commit
c0654f3caf
@ -657,19 +657,21 @@ class RPC:
|
|||||||
return self._freqtrade.edge.accepted_pairs()
|
return self._freqtrade.edge.accepted_pairs()
|
||||||
|
|
||||||
def _convert_dataframe_to_dict(self, strategy: str, pair: str, dataframe: DataFrame,
|
def _convert_dataframe_to_dict(self, strategy: str, pair: str, dataframe: DataFrame,
|
||||||
last_analyzed: datetime):
|
last_analyzed: datetime) -> Dict[str, Any]:
|
||||||
|
has_content = len(dataframe) != 0
|
||||||
|
if has_content:
|
||||||
|
|
||||||
dataframe.loc[:, '__date_ts'] = dataframe.loc[:, 'date'].astype(int64) // 1000 // 1000
|
dataframe.loc[:, '__date_ts'] = dataframe.loc[:, 'date'].astype(int64) // 1000 // 1000
|
||||||
# Move open to seperate column when signal for easy plotting
|
# Move open to seperate column when signal for easy plotting
|
||||||
if 'buy' in dataframe.columns:
|
if 'buy' in dataframe.columns:
|
||||||
buy_mask = (dataframe['buy'] == 1)
|
buy_mask = (dataframe['buy'] == 1)
|
||||||
dataframe.loc[buy_mask, '_buy_signal_open'] = dataframe.loc[buy_mask, 'open']
|
dataframe.loc[buy_mask, '_buy_signal_open'] = dataframe.loc[buy_mask, 'open']
|
||||||
if 'sell' in dataframe.columns:
|
if 'sell' in dataframe.columns:
|
||||||
sell_mask = (dataframe['sell'] == 1)
|
sell_mask = (dataframe['sell'] == 1)
|
||||||
dataframe.loc[sell_mask, '_sell_signal_open'] = dataframe.loc[sell_mask, 'open']
|
dataframe.loc[sell_mask, '_sell_signal_open'] = dataframe.loc[sell_mask, 'open']
|
||||||
dataframe = dataframe.replace({NAN: None})
|
dataframe = dataframe.replace({NAN: None})
|
||||||
|
|
||||||
return {
|
res = {
|
||||||
'pair': pair,
|
'pair': pair,
|
||||||
'strategy': strategy,
|
'strategy': strategy,
|
||||||
'columns': list(dataframe.columns),
|
'columns': list(dataframe.columns),
|
||||||
@ -677,17 +679,27 @@ class RPC:
|
|||||||
'length': len(dataframe),
|
'length': len(dataframe),
|
||||||
'last_analyzed': last_analyzed,
|
'last_analyzed': last_analyzed,
|
||||||
'last_analyzed_ts': int(last_analyzed.timestamp()),
|
'last_analyzed_ts': int(last_analyzed.timestamp()),
|
||||||
'data_start': str(dataframe.iloc[0]['date']),
|
'data_start': '',
|
||||||
'data_start_ts': int(dataframe.iloc[0]['__date_ts']),
|
'data_start_ts': 0,
|
||||||
'data_stop': str(dataframe.iloc[-1]['date']),
|
'data_stop': '',
|
||||||
'data_stop_ts': int(dataframe.iloc[-1]['__date_ts']),
|
'data_stop_ts': 0,
|
||||||
}
|
}
|
||||||
|
if has_content:
|
||||||
|
res.update({
|
||||||
|
'data_start': str(dataframe.iloc[0]['date']),
|
||||||
|
'data_start_ts': int(dataframe.iloc[0]['__date_ts']),
|
||||||
|
'data_stop': str(dataframe.iloc[-1]['date']),
|
||||||
|
'data_stop_ts': int(dataframe.iloc[-1]['__date_ts']),
|
||||||
|
})
|
||||||
|
return res
|
||||||
|
|
||||||
def _analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]:
|
def _analysed_dataframe(self, pair: str, timeframe: str, limit: int) -> Dict[str, Any]:
|
||||||
|
|
||||||
_data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe)
|
_data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(
|
||||||
|
pair, timeframe)
|
||||||
|
_data = _data.copy()
|
||||||
if limit:
|
if limit:
|
||||||
_data = _data.iloc[-limit:].copy()
|
_data = _data.iloc[-limit:]
|
||||||
return self._convert_dataframe_to_dict(self._freqtrade.config['strategy'],
|
return self._convert_dataframe_to_dict(self._freqtrade.config['strategy'],
|
||||||
pair, _data, last_analyzed)
|
pair, _data, last_analyzed)
|
||||||
|
|
||||||
|
@ -817,6 +817,16 @@ def test_api_pair_candles(botclient, ohlcv_history):
|
|||||||
ftbot, client = botclient
|
ftbot, client = botclient
|
||||||
timeframe = '5m'
|
timeframe = '5m'
|
||||||
amount = 2
|
amount = 2
|
||||||
|
|
||||||
|
rc = client_get(client,
|
||||||
|
f"{BASE_URI}/pair_candles?limit={amount}&pair=XRP%2FBTC&timeframe={timeframe}")
|
||||||
|
assert_response(rc)
|
||||||
|
assert 'columns' in rc.json
|
||||||
|
assert 'data_start_ts' in rc.json
|
||||||
|
assert 'data_start' in rc.json
|
||||||
|
assert 'data_stop' in rc.json
|
||||||
|
assert 'data_stop_ts' in rc.json
|
||||||
|
assert len(rc.json['data']) == 0
|
||||||
ohlcv_history['sma'] = ohlcv_history['close'].rolling(2).mean()
|
ohlcv_history['sma'] = ohlcv_history['close'].rolling(2).mean()
|
||||||
ohlcv_history['buy'] = 0
|
ohlcv_history['buy'] = 0
|
||||||
ohlcv_history.iloc[1]['buy'] = 1
|
ohlcv_history.iloc[1]['buy'] = 1
|
||||||
|
Loading…
Reference in New Issue
Block a user