alpacahq / alpacahq/alpaca-trade-api-go

Expose rate limit state

Ouverte
#292 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
Langage dominant
Go
Étoiles
429
Forks
118
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

The SDK doesn't expose the http.Response object, so it's tricky to keep track of the rate limit state. Currently I’m logging that info using an `http.RoundTripper`, but it would be good to expose it in a simpler way; e.g., to display the rate limit state in a UI.

The simplest solution might be to add a callback field to alpaca.ClientOpts that is invoked on every request. It could take a `http.Request` and `http.Response`, or it could take a new object type that contains just the rate limit info from the response. Another option would be to use a `resty.Client` instead of a `http.Client` in the `alpaca.Client`.

My current work-around is to ensure I'm reserving some rate limit buffer when polling the broker API so that I never get a 429 when I need to place orders.

```go
requestsPerTick := 4 // e.g. get account, positions, orders, fills every time we poll
pollingRate := (200.0 - 20.0) / 60.0 // 200 request per min rate limit - 20 requests per min buffer
pollingInterval := time.Duration(float64(time.Second) * float64(requestsPerTick) / pollingRate)
```

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.