From a38b33cd9cbe6236d9dd5793f7c173d50d6bc83f Mon Sep 17 00:00:00 2001 From: Matthias Date: Mon, 15 Jun 2020 07:53:23 +0200 Subject: [PATCH] Support limiting analyzed history --- freqtrade/rpc/api_server.py | 17 ++++++++++++----- freqtrade/rpc/rpc.py | 4 +++- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/freqtrade/rpc/api_server.py b/freqtrade/rpc/api_server.py index 7fe178288..78f5c5046 100644 --- a/freqtrade/rpc/api_server.py +++ b/freqtrade/rpc/api_server.py @@ -26,15 +26,15 @@ logger = logging.getLogger(__name__) BASE_URI = "/api/v1" -class ArrowJSONEncoder(JSONEncoder): +class FTJSONEncoder(JSONEncoder): def default(self, obj): try: if isinstance(obj, Arrow): return obj.for_json() - elif isinstance(obj, date): - return obj.strftime("%Y-%m-%d") elif isinstance(obj, datetime): return obj.strftime(DATETIME_PRINT_FORMAT) + elif isinstance(obj, date): + return obj.strftime("%Y-%m-%d") iterable = iter(obj) except TypeError: pass @@ -108,7 +108,7 @@ class ApiServer(RPC): 'jwt_secret_key', 'super-secret') self.jwt = JWTManager(self.app) - self.app.json_encoder = ArrowJSONEncoder + self.app.json_encoder = FTJSONEncoder self.app.teardown_appcontext(shutdown_session) @@ -508,9 +508,16 @@ class ApiServer(RPC): def _analysed_history(self): """ Handler for /pair_history. + Takes the following get arguments: + get: + parameters: + - pair: Pair + - timeframe: Timeframe to get data for (should be aligned to strategy.timeframe) + - limit: Limit return length to the latest X candles """ pair = request.args.get("pair") timeframe = request.args.get("timeframe") + limit = request.args.get("limit") - results = self._rpc_analysed_history(pair, timeframe) + results = self._rpc_analysed_history(pair, timeframe, limit) return self.rest_dump(results) diff --git a/freqtrade/rpc/rpc.py b/freqtrade/rpc/rpc.py index 621971952..a6215a892 100644 --- a/freqtrade/rpc/rpc.py +++ b/freqtrade/rpc/rpc.py @@ -654,9 +654,11 @@ class RPC: raise RPCException('Edge is not enabled.') return self._freqtrade.edge.accepted_pairs() - def _rpc_analysed_history(self, pair, timeframe): + def _rpc_analysed_history(self, pair, timeframe, limit): data, last_analyzed = self._freqtrade.dataprovider.get_analyzed_dataframe(pair, timeframe) + if limit: + data = data.iloc[:-limit] return { 'columns': data.columns, 'data': data.values.tolist(),