alpacahq / alpacahq/alpaca-trade-api-go

Expose rate limit state

Offen
#292 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Go
Sterne
429
Forks
118
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.