diff --git a/freqtrade/freqtradebot.py b/freqtrade/freqtradebot.py index ccb45be2c..1e4b2e678 100644 --- a/freqtrade/freqtradebot.py +++ b/freqtrade/freqtradebot.py @@ -305,7 +305,8 @@ class FreqtradeBot(object): return self.edge.stake_amount( pair, self.wallets.get_free(self.config['stake_currency']), - self.wallets.get_total(self.config['stake_currency']) + self.wallets.get_total(self.config['stake_currency']) + + Trade.calc_total_open_trades_in_stake_currency() ) else: stake_amount = self.config['stake_amount'] diff --git a/freqtrade/persistence.py b/freqtrade/persistence.py index 592a88acb..20ae8c43a 100644 --- a/freqtrade/persistence.py +++ b/freqtrade/persistence.py @@ -14,6 +14,7 @@ from sqlalchemy.exc import NoSuchModuleError from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm.scoping import scoped_session from sqlalchemy.orm.session import sessionmaker +from sqlalchemy import func from sqlalchemy.pool import StaticPool from freqtrade import OperationalException @@ -349,3 +350,13 @@ class Trade(_DECL_BASE): ) profit_percent = (close_trade_price / open_trade_price) - 1 return float(f"{profit_percent:.8f}") + + def calc_total_open_trades_in_stake_currency() -> float: + """ + Calculates total invested amount in open trades + in stake currency + """ + total_open_stake_amount = Trade.session.query(func.sum(Trade.stake_amount))\ + .filter(Trade.is_open.is_(True))\ + .scalar() + return total_open_stake_amount or 0