simplify status_table command
This commit is contained in:
parent
7a2d917c66
commit
ab9506df48
@ -274,7 +274,7 @@ class ApiServer(RPC):
|
|||||||
|
|
||||||
stats = self._rpc_daily_profit(timescale,
|
stats = self._rpc_daily_profit(timescale,
|
||||||
self._config['stake_currency'],
|
self._config['stake_currency'],
|
||||||
self._config['fiat_display_currency']
|
self._config.get('fiat_display_currency', '')
|
||||||
)
|
)
|
||||||
|
|
||||||
return self.rest_dump(stats)
|
return self.rest_dump(stats)
|
||||||
|
@ -3,16 +3,15 @@ This module contains class to define a RPC communications
|
|||||||
"""
|
"""
|
||||||
import logging
|
import logging
|
||||||
from abc import abstractmethod
|
from abc import abstractmethod
|
||||||
from datetime import timedelta, datetime, date
|
from datetime import date, datetime, timedelta
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Dict, Any, List, Optional
|
from typing import Any, Dict, List, Optional, Tuple
|
||||||
|
|
||||||
import arrow
|
import arrow
|
||||||
from numpy import mean, NAN
|
from numpy import NAN, mean
|
||||||
from pandas import DataFrame
|
|
||||||
|
|
||||||
from freqtrade import TemporaryError, DependencyException
|
from freqtrade import DependencyException, TemporaryError
|
||||||
from freqtrade.misc import shorten_date
|
from freqtrade.misc import shorten_date
|
||||||
from freqtrade.persistence import Trade
|
from freqtrade.persistence import Trade
|
||||||
from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
|
from freqtrade.rpc.fiat_convert import CryptoToFiatConverter
|
||||||
@ -117,7 +116,7 @@ class RPC:
|
|||||||
results.append(trade_dict)
|
results.append(trade_dict)
|
||||||
return results
|
return results
|
||||||
|
|
||||||
def _rpc_status_table(self) -> DataFrame:
|
def _rpc_status_table(self, fiat_display_currency: str) -> Tuple[List, List]:
|
||||||
trades = Trade.get_open_trades()
|
trades = Trade.get_open_trades()
|
||||||
if not trades:
|
if not trades:
|
||||||
raise RPCException('no active order')
|
raise RPCException('no active order')
|
||||||
@ -135,12 +134,11 @@ class RPC:
|
|||||||
trade.pair,
|
trade.pair,
|
||||||
shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)),
|
shorten_date(arrow.get(trade.open_date).humanize(only_distance=True)),
|
||||||
f'{trade_perc:.2f}%'
|
f'{trade_perc:.2f}%'
|
||||||
|
|
||||||
])
|
])
|
||||||
|
|
||||||
columns = ['ID', 'Pair', 'Since', 'Profit']
|
columns = ['ID', 'Pair', 'Since', 'Profit']
|
||||||
df_statuses = DataFrame.from_records(trades_list, columns=columns)
|
return trades_list, columns
|
||||||
df_statuses = df_statuses.set_index(columns[0])
|
|
||||||
return df_statuses
|
|
||||||
|
|
||||||
def _rpc_daily_profit(
|
def _rpc_daily_profit(
|
||||||
self, timescale: int,
|
self, timescale: int,
|
||||||
|
@ -234,8 +234,8 @@ class Telegram(RPC):
|
|||||||
:return: None
|
:return: None
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
df_statuses = self._rpc_status_table()
|
statlist, head = self._rpc_status_table(self._config.get('fiat_display_currency', ''))
|
||||||
message = tabulate(df_statuses, headers='keys', tablefmt='simple')
|
message = tabulate(statlist, headers=head, tablefmt='simple')
|
||||||
self._send_msg(f"<pre>{message}</pre>", parse_mode=ParseMode.HTML)
|
self._send_msg(f"<pre>{message}</pre>", parse_mode=ParseMode.HTML)
|
||||||
except RPCException as e:
|
except RPCException as e:
|
||||||
self._send_msg(str(e))
|
self._send_msg(str(e))
|
||||||
|
@ -109,13 +109,15 @@ def test_rpc_status_table(default_conf, ticker, fee, mocker) -> None:
|
|||||||
|
|
||||||
freqtradebot.state = State.RUNNING
|
freqtradebot.state = State.RUNNING
|
||||||
with pytest.raises(RPCException, match=r'.*no active order*'):
|
with pytest.raises(RPCException, match=r'.*no active order*'):
|
||||||
rpc._rpc_status_table()
|
rpc._rpc_status_table('USD')
|
||||||
|
|
||||||
freqtradebot.create_trades()
|
freqtradebot.create_trades()
|
||||||
result = rpc._rpc_status_table()
|
result, headers = rpc._rpc_status_table('USD')
|
||||||
assert 'instantly' in result['Since'].all()
|
assert "Since" in headers
|
||||||
assert 'ETH/BTC' in result['Pair'].all()
|
assert "Pair" in headers
|
||||||
assert '-0.59%' in result['Profit'].all()
|
assert 'instantly' in result[0][2]
|
||||||
|
assert 'ETH/BTC' in result[0][1]
|
||||||
|
assert '-0.59%' in result[0][3]
|
||||||
|
|
||||||
mocker.patch('freqtrade.exchange.Exchange.get_ticker',
|
mocker.patch('freqtrade.exchange.Exchange.get_ticker',
|
||||||
MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available")))
|
MagicMock(side_effect=DependencyException(f"Pair 'ETH/BTC' not available")))
|
||||||
|
Loading…
Reference in New Issue
Block a user