compute_value=compute_value, only=only,
repartition=repartition, available_balance_only=available_balance_only)
- values_in_base = self.balances.in_currency(base_currency,
- compute_value=compute_value)
if available_balance_only:
- balance = self.balances.all.get(base_currency)
- if balance is None:
- total_base_value = portfolio.Amount(base_currency, 0)
- else:
- total_base_value = balance.exchange_free + balance.margin_available
+ repartition, total_base_value, values_in_base = self.balances.available_balances_for_repartition(
+ base_currency=base_currency, liquidity=liquidity,
+ repartition=repartition, compute_value=compute_value)
else:
+ values_in_base = self.balances.in_currency(base_currency,
+ compute_value=compute_value)
total_base_value = sum(values_in_base.values())
new_repartition = self.balances.dispatch_assets(total_base_value,
liquidity=liquidity, repartition=repartition)
if available_balance_only:
for currency, amount in values_in_base.items():
- if currency != base_currency:
- new_repartition.setdefault(currency, portfolio.Amount(base_currency, 0))
- new_repartition[currency] += amount
+ if currency != base_currency and currency not in new_repartition:
+ new_repartition[currency] = amount
self.trades.compute_trades(values_in_base, new_repartition, only=only)