Add get_open_trade_count() to simplify getting open trade count.

This commit is contained in:
Matthias 2022-08-21 10:03:04 +02:00
parent 085f81ec9e
commit 87a3115073
4 changed files with 13 additions and 3 deletions

View File

@ -271,7 +271,7 @@ class FreqtradeBot(LoggingMixin):
Return the number of free open trades slots or 0 if Return the number of free open trades slots or 0 if
max number of open trades reached max number of open trades reached
""" """
open_trades = len(Trade.get_open_trades()) open_trades = Trade.get_open_trade_count()
return max(0, self.config['max_open_trades'] - open_trades) return max(0, self.config['max_open_trades'] - open_trades)
def update_funding_fees(self): def update_funding_fees(self):

View File

@ -1044,6 +1044,16 @@ class LocalTrade():
""" """
return Trade.get_trades_proxy(is_open=True) return Trade.get_trades_proxy(is_open=True)
@staticmethod
def get_open_trade_count() -> int:
"""
get open trade count
"""
if Trade.use_db:
return Trade.query.filter(Trade.is_open.is_(True)).count()
else:
return len(LocalTrade.trades_open)
@staticmethod @staticmethod
def stoploss_reinitialization(desired_stoploss): def stoploss_reinitialization(desired_stoploss):
""" """

View File

@ -473,8 +473,6 @@ def test_create_trade_no_signal(default_conf_usdt, fee, mocker) -> None:
freqtrade = FreqtradeBot(default_conf_usdt) freqtrade = FreqtradeBot(default_conf_usdt)
patch_get_signal(freqtrade, enter_long=False, exit_long=False) patch_get_signal(freqtrade, enter_long=False, exit_long=False)
Trade.query = MagicMock()
Trade.query.filter = MagicMock()
assert not freqtrade.create_trade('ETH/USDT') assert not freqtrade.create_trade('ETH/USDT')

View File

@ -1689,6 +1689,7 @@ def test_get_open(fee, is_short, use_db):
create_mock_trades(fee, is_short, use_db) create_mock_trades(fee, is_short, use_db)
assert len(Trade.get_open_trades()) == 4 assert len(Trade.get_open_trades()) == 4
assert Trade.get_open_trade_count() == 4
Trade.use_db = True Trade.use_db = True
@ -1701,6 +1702,7 @@ def test_get_open_lev(fee, use_db):
create_mock_trades_with_leverage(fee, use_db) create_mock_trades_with_leverage(fee, use_db)
assert len(Trade.get_open_trades()) == 5 assert len(Trade.get_open_trades()) == 5
assert Trade.get_open_trade_count() == 5
Trade.use_db = True Trade.use_db = True