alpacahq / alpacahq/alpaca-trade-api-go

Expose rate limit state

Aperta
#292 2 commenti 0 reazioni 0 assegnatari Vedi su GitHub
enhancement
Lingua principale
Go
Stelle
429
Fork
118
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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)
```

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.