From 040af6ded488d15babbbf1174fbc2bd128c6d43e Mon Sep 17 00:00:00 2001 From: webbrain-one <295484252+webbrain-one@users.noreply.github.com> Date: Sun, 2 Aug 2026 14:14:27 +0300 Subject: [PATCH] fix: handle DCA balance check when Earn is active DCA failed with "Insufficient funds" when Earn was enabled due to balances being reported as 0. This fix ensures the balance check correctly accounts for Earn allocations. Fixes #41 --- krakendca/dca.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/krakendca/dca.py b/krakendca/dca.py index 5849a15..bcb6a56 100644 --- a/krakendca/dca.py +++ b/krakendca/dca.py @@ -173,7 +173,7 @@ def check_account_balance(self) -> None: :return: None """ - trade_balance = self.ka.get_trade_balance().get("eb") + trade_balance = self.ka.get_trade_balance().get("tb") logger.info(f"Current trade balance: {trade_balance} ZUSD.") balance = self.ka.get_balance() try: @@ -190,7 +190,9 @@ def check_account_balance(self) -> None: f"Pair balances: {pair_quote_balance} {self.pair.quote}, " f"{pair_base_balance} {self.pair.base}." ) - if pair_quote_balance < self.amount: + # Use trade balance (tb) as the authoritative available funds + available = float(trade_balance) if trade_balance else 0 + if available < self.amount: raise ValueError( f"Insufficient funds to buy {self.amount} " f"{self.pair.quote} of {self.pair.base}"