+ summary.Balances = make(map[string]Balance)
+ for currency, amount := range accounts.Exchange {
+ balance := summary.Balances[currency]
+ balance.Amount = balance.Amount.Add(amount)
+
+ summary.Balances[currency] = balance
+ }
+
+ summary.BTCValue, err = p.ComputeAccountBalanceValue(summary.Balances)
+ if err != nil {
+ return Summary{}, err
+ }
+
+ for currencyPair, position := range positions {
+ if position.Type == "none" {
+ continue
+ }
+ currency := currencyPair[4:]
+ balance := summary.Balances[currency]
+ balance.Amount = balance.Amount.Add(position.Amount)
+ balance.BTCValue = balance.BTCValue.Add(position.Total.Add(position.PlusValue))
+
+ summary.Balances[currency] = balance
+ }
+
+ summary.BTCValue = summary.BTCValue.Add(marginAccount.NetValue)
+
+ return summary, nil