From 068b375867c02673dde56b31aca338a45616e91d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Rasc=C3=A3o?= Date: Tue, 14 Sep 2021 02:10:31 +0100 Subject: [PATCH] ftx: honour subaccount setting when fetching balances (#780) FTX won't allow us to fetch balances for all accounts when using a subaccount API key. --- exchanges/ftx/ftx_wrapper.go | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/exchanges/ftx/ftx_wrapper.go b/exchanges/ftx/ftx_wrapper.go index d3da4eec..1ec6c0a9 100644 --- a/exchanges/ftx/ftx_wrapper.go +++ b/exchanges/ftx/ftx_wrapper.go @@ -427,11 +427,23 @@ func (f *FTX) UpdateOrderbook(ctx context.Context, p currency.Pair, assetType as // UpdateAccountInfo retrieves balances for all enabled currencies func (f *FTX) UpdateAccountInfo(ctx context.Context, a asset.Item) (account.Holdings, error) { var resp account.Holdings - // Get all wallet balances used so we can transfer between accounts if - // needed. - data, err := f.GetAllWalletBalances(ctx) - if err != nil { - return resp, err + + var data AllWalletBalances + if f.API.Credentials.Subaccount != "" { + balances, err := f.GetBalances(ctx) + if err != nil { + return resp, err + } + data = make(AllWalletBalances) + data[f.API.Credentials.Subaccount] = balances + } else { + // Get all wallet balances used so we can transfer between accounts if + // needed. + var err error + data, err = f.GetAllWalletBalances(ctx) + if err != nil { + return resp, err + } } for subName, balances := range data { @@ -449,8 +461,7 @@ func (f *FTX) UpdateAccountInfo(ctx context.Context, a asset.Item) (account.Hold } resp.Exchange = f.Name - err = account.Process(&resp) - if err != nil { + if err := account.Process(&resp); err != nil { return account.Holdings{}, err }