diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ee5d1545c..32eefe7de 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -476,8 +476,9 @@ class FreqtradeBot(LoggingMixin): current_rate = self.exchange.get_rate(trade.pair, refresh=True, side="buy") current_profit = trade.calc_profit_ratio(current_rate) - # FIXME This is only here to lazyload orders. - trade.nr_of_successful_buys() + # TODO: Is there a better way to force lazy-load? + len(trade.orders) + min_stake_amount = self.exchange.get_min_pair_stake_amount(trade.pair, current_rate, self.strategy.stoploss) diff --git a/freqtrade/persistence/models.py b/freqtrade/persistence/models.py index 1bc4cfc05..60826cfd3 100644 --- a/freqtrade/persistence/models.py +++ b/freqtrade/persistence/models.py @@ -614,6 +614,7 @@ class LocalTrade(): else: return None + @property def nr_of_successful_buys(self) -> int: """ Helper function to count the number of buy orders that have been filled. @@ -623,6 +624,7 @@ class LocalTrade(): o.status in NON_OPEN_EXCHANGE_STATES and (o.filled or 0) > 0]) + @property def nr_of_successful_sells(self) -> int: """ Helper function to count the number of sell orders that have been filled. diff --git a/tests/test_integration.py b/tests/test_integration.py index e1cbf3d2d..356ea5c62 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -259,7 +259,7 @@ def test_dca_buying(default_conf_usdt, ticker_usdt, fee, mocker) -> None: assert trade.amount == trade.orders[0].amount + trade.orders[1].amount - assert trade.nr_of_successful_buys() == 2 + assert trade.nr_of_successful_buys == 2 # Sell patch_get_signal(freqtrade, value=(False, True, None, None)) @@ -273,4 +273,4 @@ def test_dca_buying(default_conf_usdt, ticker_usdt, fee, mocker) -> None: assert trade.orders[-1].side == 'sell' assert trade.orders[2].amount == trade.amount - assert trade.nr_of_successful_buys() == 2 + assert trade.nr_of_successful_buys == 2 diff --git a/tests/test_persistence.py b/tests/test_persistence.py index 14988d85b..729a7f64c 100644 --- a/tests/test_persistence.py +++ b/tests/test_persistence.py @@ -1553,7 +1553,7 @@ def test_recalc_trade_from_orders_ignores_bad_orders(fee): assert trade.open_rate == o1_rate assert trade.fee_open_cost == o1_fee_cost assert trade.open_trade_value == o1_trade_val - assert trade.nr_of_successful_buys() == 1 + assert trade.nr_of_successful_buys == 1 order2 = Order( ft_order_side='buy', @@ -1580,7 +1580,7 @@ def test_recalc_trade_from_orders_ignores_bad_orders(fee): assert trade.open_rate == o1_rate assert trade.fee_open_cost == o1_fee_cost assert trade.open_trade_value == o1_trade_val - assert trade.nr_of_successful_buys() == 1 + assert trade.nr_of_successful_buys == 1 # Let's try with some other orders order3 = Order( @@ -1608,7 +1608,7 @@ def test_recalc_trade_from_orders_ignores_bad_orders(fee): assert trade.open_rate == o1_rate assert trade.fee_open_cost == o1_fee_cost assert trade.open_trade_value == o1_trade_val - assert trade.nr_of_successful_buys() == 1 + assert trade.nr_of_successful_buys == 1 order4 = Order( ft_order_side='buy', @@ -1635,7 +1635,7 @@ def test_recalc_trade_from_orders_ignores_bad_orders(fee): assert trade.open_rate == o1_rate assert trade.fee_open_cost == 2 * o1_fee_cost assert trade.open_trade_value == 2 * o1_trade_val - assert trade.nr_of_successful_buys() == 2 + assert trade.nr_of_successful_buys == 2 # Just to make sure sell orders are ignored, let's calculate one more time. sell1 = Order( @@ -1662,4 +1662,4 @@ def test_recalc_trade_from_orders_ignores_bad_orders(fee): assert trade.open_rate == o1_rate assert trade.fee_open_cost == 2 * o1_fee_cost assert trade.open_trade_value == 2 * o1_trade_val - assert trade.nr_of_successful_buys() == 2 + assert trade.nr_of_successful_buys == 2