mirror of
https://github.com/c9s/bbgo.git
synced 2024-09-20 08:11:08 +00:00
pkg/exchange: refactor query account balance
This commit is contained in:
parent
a463c02183
commit
9297293a46
|
@ -27,6 +27,7 @@ var (
|
||||||
queryMarketLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
|
queryMarketLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
|
||||||
queryTickerLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
|
queryTickerLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
|
||||||
queryTickersLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
|
queryTickersLimiter = rate.NewLimiter(rate.Every(100*time.Millisecond), 10)
|
||||||
|
queryAccountLimiter = rate.NewLimiter(rate.Every(200*time.Millisecond), 5)
|
||||||
)
|
)
|
||||||
|
|
||||||
const ID = "okex"
|
const ID = "okex"
|
||||||
|
@ -167,28 +168,31 @@ func (e *Exchange) PlatformFeeCurrency() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exchange) QueryAccount(ctx context.Context) (*types.Account, error) {
|
func (e *Exchange) QueryAccount(ctx context.Context) (*types.Account, error) {
|
||||||
accountBalance, err := e.client.AccountBalances(ctx)
|
bals, err := e.QueryAccountBalances(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var account = types.Account{
|
account := types.NewAccount()
|
||||||
AccountType: types.AccountTypeSpot,
|
account.UpdateBalances(bals)
|
||||||
}
|
return account, nil
|
||||||
|
|
||||||
var balanceMap = toGlobalBalance(accountBalance)
|
|
||||||
account.UpdateBalances(balanceMap)
|
|
||||||
return &account, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exchange) QueryAccountBalances(ctx context.Context) (types.BalanceMap, error) {
|
func (e *Exchange) QueryAccountBalances(ctx context.Context) (types.BalanceMap, error) {
|
||||||
accountBalances, err := e.client.AccountBalances(ctx)
|
if err := queryAccountLimiter.Wait(ctx); err != nil {
|
||||||
|
return nil, fmt.Errorf("account rate limiter wait error: %w", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
accountBalances, err := e.client.NewGetAccountInfoRequest().Do(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var balanceMap = toGlobalBalance(accountBalances)
|
if len(accountBalances) != 1 {
|
||||||
return balanceMap, nil
|
return nil, fmt.Errorf("unexpected length of balances: %v", accountBalances)
|
||||||
|
}
|
||||||
|
|
||||||
|
return toGlobalBalance(&accountBalances[0]), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exchange) SubmitOrder(ctx context.Context, order types.SubmitOrder) (*types.Order, error) {
|
func (e *Exchange) SubmitOrder(ctx context.Context, order types.SubmitOrder) (*types.Order, error) {
|
||||||
|
|
|
@ -95,7 +95,7 @@ func Test_parseWebSocketEvent_accountEvent(t *testing.T) {
|
||||||
|
|
||||||
exp := &okexapi.Account{
|
exp := &okexapi.Account{
|
||||||
TotalEquityInUSD: fixedpoint.NewFromFloat(91884),
|
TotalEquityInUSD: fixedpoint.NewFromFloat(91884),
|
||||||
UpdateTime: "1614846244194",
|
UpdateTime: types.NewMillisecondTimestampFromInt(1614846244194),
|
||||||
Details: []okexapi.BalanceDetail{
|
Details: []okexapi.BalanceDetail{
|
||||||
{
|
{
|
||||||
Currency: "BTC",
|
Currency: "BTC",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user