diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index e803b4383..492d2b941 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -302,6 +302,9 @@ class Trade(_DECL_BASE): 'close_profit_pct': round(self.close_profit * 100, 2) if self.close_profit else None, 'close_profit_abs': self.close_profit_abs, # Deprecated + # TODO: should this be in minutes or seconds?? + 'trade_duration': (int((self.close_date - self.open_date).total_seconds() // 60) + if self.close_date else None), 'profit_ratio': self.close_profit, 'profit_pct': round(self.close_profit * 100, 2) if self.close_profit else None, 'profit_abs': self.close_profit_abs, diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 8ec356d54..69d79159a 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -80,6 +80,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'amount': 91.07468123, 'amount_requested': 91.07468123, 'stake_amount': 0.001, + 'trade_duration': None, 'close_profit': None, 'close_profit_pct': None, 'close_profit_abs': None, @@ -144,6 +145,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'current_rate': ANY, 'amount': 91.07468123, 'amount_requested': 91.07468123, + 'trade_duration': ANY, 'stake_amount': 0.001, 'close_profit': None, 'close_profit_pct': None, diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 7487b2ef5..76c6ec9f6 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -815,6 +815,7 @@ def test_to_json(default_conf, fee): 'amount': 123.0, 'amount_requested': 123.0, 'stake_amount': 0.001, + 'trade_duration': None, 'close_profit': None, 'close_profit_pct': None, 'close_profit_abs': None, @@ -869,6 +870,7 @@ def test_to_json(default_conf, fee): 'amount': 100.0, 'amount_requested': 101.0, 'stake_amount': 0.001, + 'trade_duration': 60, 'stop_loss_abs': None, 'stop_loss_pct': None, 'stop_loss_ratio': None,