diff --git a/exchanges/kraken/kraken.go b/exchanges/kraken/kraken.go index dfee8ca9..1fc2318a 100644 --- a/exchanges/kraken/kraken.go +++ b/exchanges/kraken/kraken.go @@ -494,25 +494,17 @@ func (k *Kraken) GetSpread(ctx context.Context, symbol currency.Pair) ([]Spread, } // GetBalance returns your balance associated with your keys -func (k *Kraken) GetBalance(ctx context.Context) (map[string]float64, error) { +func (k *Kraken) GetBalance(ctx context.Context) (map[string]Balance, error) { var response struct { - Error []string `json:"error"` - Result map[string]string `json:"result"` + Error []string `json:"error"` + Result map[string]Balance `json:"result"` } if err := k.SendAuthenticatedHTTPRequest(ctx, exchange.RestSpot, krakenBalance, url.Values{}, &response); err != nil { return nil, err } - result := make(map[string]float64) - for curency, balance := range response.Result { - var err error - if result[curency], err = strconv.ParseFloat(balance, 64); err != nil { - return nil, err - } - } - - return result, GetError(response.Error) + return response.Result, GetError(response.Error) } // GetWithdrawInfo gets withdrawal fees diff --git a/exchanges/kraken/kraken_types.go b/exchanges/kraken/kraken_types.go index f93d6fdd..e39e0672 100644 --- a/exchanges/kraken/kraken_types.go +++ b/exchanges/kraken/kraken_types.go @@ -18,7 +18,7 @@ const ( krakenDepth = "Depth" krakenTrades = "Trades" krakenSpread = "Spread" - krakenBalance = "Balance" + krakenBalance = "BalanceEx" krakenTradeBalance = "TradeBalance" krakenOpenOrders = "OpenOrders" krakenClosedOrders = "ClosedOrders" @@ -204,6 +204,12 @@ type Spread struct { Ask float64 } +// Balance represents account asset balances +type Balance struct { + Total float64 `json:"balance,string"` + Hold float64 `json:"hold_trade,string"` +} + // TradeBalanceOptions type type TradeBalanceOptions struct { Aclass string diff --git a/exchanges/kraken/kraken_wrapper.go b/exchanges/kraken/kraken_wrapper.go index 0abd3c68..1d040ee5 100644 --- a/exchanges/kraken/kraken_wrapper.go +++ b/exchanges/kraken/kraken_wrapper.go @@ -613,7 +613,9 @@ func (k *Kraken) UpdateAccountInfo(ctx context.Context, assetType asset.Item) (a } balances = append(balances, account.Balance{ Currency: currency.NewCode(translatedCurrency), - Total: bal[key], + Total: bal[key].Total, + Hold: bal[key].Hold, + Free: bal[key].Total - bal[key].Hold, }) } info.Accounts = append(info.Accounts, account.SubAccount{