added balance lookup to confirm quantity
This commit is contained in:
20
bot.py
20
bot.py
@@ -107,9 +107,27 @@ def run_cycle(config: Config) -> bool:
|
||||
if signal is None:
|
||||
continue
|
||||
|
||||
sell_qty = position.quantity
|
||||
if not config.paper_trading:
|
||||
# Kraken's fill may differ slightly from our stored quantity — sell
|
||||
# whatever we actually hold to avoid "Insufficient funds" errors.
|
||||
try:
|
||||
balances = client.get_all_balances()
|
||||
# Derive base asset from pair altname: "PENDLEUSD" -> "PENDLE"
|
||||
base = position.pair.removesuffix("USD")
|
||||
actual = balances.get(base, balances.get("X" + base))
|
||||
if actual is not None and actual < sell_qty:
|
||||
log.info(
|
||||
"%s: adjusting sell qty %.8f -> %.8f to match Kraken balance",
|
||||
position.pair, sell_qty, actual,
|
||||
)
|
||||
sell_qty = actual
|
||||
except KrakenError as exc:
|
||||
log.warning("Could not fetch balances before sell: %s", exc)
|
||||
|
||||
try:
|
||||
order_id = client.market_sell(
|
||||
position.pair, position.quantity, paper=config.paper_trading
|
||||
position.pair, sell_qty, paper=config.paper_trading
|
||||
)
|
||||
except KrakenError as exc:
|
||||
log.error("Sell failed for %s: %s — will retry next run", position.pair, exc)
|
||||
|
||||
Reference in New Issue
Block a user