diff --git a/freqtrade/persistence/trade_model.py b/freqtrade/persistence/trade_model.py index 2d2e4a93e..4ab869e85 100644 --- a/freqtrade/persistence/trade_model.py +++ b/freqtrade/persistence/trade_model.py @@ -628,6 +628,7 @@ class LocalTrade: 'amount_precision': self.amount_precision, 'price_precision': self.price_precision, 'precision_mode': self.precision_mode, + 'contract_size': self.contract_size, 'has_open_orders': self.has_open_orders, 'orders': orders_json, } @@ -1788,6 +1789,10 @@ class Trade(ModelBase, LocalTrade): is_short=data["is_short"], trading_mode=data["trading_mode"], funding_fees=data["funding_fees"], + amount_precision=data.get('amount_precision', None), + price_precision=data.get('price_precision', None), + precision_mode=data.get('precision_mode', None), + contract_size=data.get('contract_size', None), ) for order in data["orders"]: diff --git a/tests/persistence/test_persistence.py b/tests/persistence/test_persistence.py index e4493d755..396d60c18 100644 --- a/tests/persistence/test_persistence.py +++ b/tests/persistence/test_persistence.py @@ -1385,6 +1385,7 @@ def test_to_json(fee): precision_mode=1, amount_precision=8.0, price_precision=7.0, + contract_size=1, ) result = trade.to_json() assert isinstance(result, dict) @@ -1450,6 +1451,7 @@ def test_to_json(fee): 'amount_precision': 8.0, 'price_precision': 7.0, 'precision_mode': 1, + 'contract_size': 1, 'orders': [], 'has_open_orders': False, } @@ -1471,6 +1473,7 @@ def test_to_json(fee): precision_mode=2, amount_precision=7.0, price_precision=8.0, + contract_size=1 ) result = trade.to_json() assert isinstance(result, dict) @@ -1536,6 +1539,7 @@ def test_to_json(fee): 'amount_precision': 7.0, 'price_precision': 8.0, 'precision_mode': 2, + 'contract_size': 1, 'orders': [], 'has_open_orders': False, } diff --git a/tests/persistence/test_trade_fromjson.py b/tests/persistence/test_trade_fromjson.py index 24522e744..24a693c75 100644 --- a/tests/persistence/test_trade_fromjson.py +++ b/tests/persistence/test_trade_fromjson.py @@ -66,6 +66,10 @@ def test_trade_fromjson(): "is_short": false, "trading_mode": "spot", "funding_fees": 0.0, + "amount_precision": 1.0, + "price_precision": 3.0, + "precision_mode": 2, + "contract_size": 1.0, "open_order_id": null, "orders": [ { @@ -180,6 +184,9 @@ def test_trade_fromjson(): assert isinstance(trade.open_date, datetime) assert trade.exit_reason == 'no longer good' assert trade.realized_profit == 2.76315361 + assert trade.precision_mode == 2 + assert trade.amount_precision == 1.0 + assert trade.contract_size == 1.0 assert len(trade.orders) == 5 last_o = trade.orders[-1] diff --git a/tests/rpc/test_rpc.py b/tests/rpc/test_rpc.py index 0a0cc5b33..b8eb51a91 100644 --- a/tests/rpc/test_rpc.py +++ b/tests/rpc/test_rpc.py @@ -90,6 +90,7 @@ def test_rpc_trade_status(default_conf, ticker, fee, mocker) -> None: 'amount_precision': 8.0, 'price_precision': 8.0, 'precision_mode': 2, + 'contract_size': 1, 'has_open_orders': False, 'orders': [{ 'amount': 91.07468123, 'average': 1.098e-05, 'safe_price': 1.098e-05,