* fix whoops
* const trafficCheckInterval; rm testmain
* y
* fix lint
* bump time check window
* stream: fix intermittant test failures while testing routines and remove code that is not needed.
* spells
* cant do what I did
* protect race due to routine.
* update testURL
* use mock websocket connection instead of test URL's
* linter: fix
* remove url because its throwing errors on CI builds
* connections drop all the time, don't need to worry about not being able to echo back ws data as it can be easily reviewed _test file side.
* remove another superfluous url thats not really set up for this
* spawn overwatch routine when there is no errors, inline checker instead of waiting for a time period, add sleep inline with echo handler as this is really quick and wanted to ensure that latency is handing correctly
* linter: fixerino uperino
* fix ID bug, why I do this, I don't know.
* glorious: panix
* linter: things
* whoops
* dont need to make consecutive Unix() calls
* websocket: fix potential panic on error and no responses and adding waitForResponses
* bybit: enable multiconnection handling across websocket endpoints
* rm debug lines
* bybit: Add websocket trading functionality across all assets
* rm json parser and handle in json package instead
* in favour of json package unmarshalling
* Add bool ConnectionDoesNotRequireSubscriptions so that we don't need to handle dummy sub
* handle pong response
* spelling
* linter: fix
* fix processing issues with tickers
* fix processing issues with tickers
* linter: fix
* linter: fix again
* * change field name OutboundRequestSignature to WrapperDefinedConnectionSignature for agnostic inbound and outbound connections.
* change method name GetOutboundConnection to GetConnection for agnostic inbound and outbound connections.
* drop outbound field map for improved performance just using a range and field check (less complex as well)
* change field name connections to connectionToWrapper for better clarity
* spells and magic and wands
* merge: fixup
* linter: fix
* spelling: fix
* glorious: nits
* comparable check for signature
* mv err var
* rm comment as it does not
* update time fields for orderbook latency
* fix time conversion
* Add func MatchReturnResponses
* glorious: nits and stuff
* lint: fix
* attempt to fix race
* linter: fix
* fix tests
* types/time: strict usage of time type for usage with unix timestamps
* fix tests etc
* Allow match back with order details
* Add time in force values for different order types + extra return information on websocket trading
* glorious: nits
* gk: nits; engine log cleanup
* gk: nits; OCD
* gk: nits; move function change file names
* gk: nits; 🚀
* gk: nits; convert variadic function and message inspection to interface and include a specific function for that handling so as to not need nil on every call
* gk: nits; continued
* gk: engine nits; rm loaded exchange
* gk: nits; drop WebsocketLoginResponse
* stream: Add match method EnsureMatchWithData
* gk: nits; rn Inspect to IsFinal
* gk: nits; rn to MessageFilter
* linter: fix
* gateio: update rate limit definitions (cherry-pick)
* Add test and missing
* Shared REST rate limit definitions with Websocket service, set lookup item to nil for systems that do not require rate limiting; add glorious nit
* integrate rate limits for websocket trading spot
* bybit: split public and private processing to dedicated handler add supporting function and tests
* use correct handler for private inbound connection
* bybit/websocket: allow a shared ID between outbound payloads for inbound matching
* conform to match upstream changes
* standardise names to upstream style
* fix wrapper standards test when sending a auth request through a websocket connection
* whoops
* Update exchanges/gateio/gateio_types.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits
* linter: fix
* linter: overload
* whoops
* spelling fixes on recent merge
* glorious: nits
* linter: fix?
* glorious: nits
* gk: assert errors touched
* gk: unexport derive functions
* gk: nitssssssss
* fix test
* gk: nitters v1
* gk: http status
* gk/nits: Add getAssetFromFuturesPair
* gk: nits single response when submitting
* gk: new pair with delimiter in tests
* gk: param update slice to slice of pointers
* gk: add asset type in params, includes t.Context() for tests
* linter: fix
* linter: fix
* fix merge whoopsie
* glorious: nits
* gk: nit
* linter: fix
* glorious: nits
* linter/misc: fix and remove meows
* linter: fix
* misc/linter: fix
* change function names
* okx: update requestID gen func without func wrapping
* RM: functions not needed
* Update docs/ADD_NEW_EXCHANGE.md
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* gk: nitsssssss
* linter: fix
* Update exchanges/bybit/bybit_test.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* Update exchanges/bybit/bybit_test.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* gk: nit words
* cranktakular: nits
* websocket: skip connections with subscriptions not required during channel flush
* websocket: simplify error handling in FlushChannels using if short
* linter: fix
* cranktakular: nits and expand coverage
* linter: fix?
* misc fix
* cranktakular: missing nit which I thumbed up but did not do. Sillllllly billlyyyy nilllyyy
* fix comments
* bybit: fix merge regression on websocket message filter
* cranktakular: nits
* bybit: Add global rate limits for websocket
* ai: nits
* linter: fix
* cranktakular: purge DCP ref/handling and add another TODO
* Update exchanges/bybit/bybit_websocket.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits
* fix test
* fix alignment issue and rm println
* Update exchanges/bybit/bybit_websocket.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Update exchanges/bybit/bybit_websocket.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: fix
* Update exchanges/bybit/bybit_websocket.go
Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
* bybit: use connection method for segregated match on multi-connection
* cleanup after master merge
* fix test and config whoops
* cranktakular: nits
* exchange: add missing tests for base method websocket order funcs
* cranktakular: nits and refresh + tests
* cranktakular: pedantic nits
* linter: fixes
* t.Parallel tests
* glorious nit
* Update exchange/websocket/connection.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* gk: nits
* boss king: nits
* canktakular: nits
* Update exchanges/bybit/bybit_websocket.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* Update exchanges/bybit/bybit_websocket_requests.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* Update exchanges/bybit/bybit_websocket_requests.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* Update exchanges/bybit/bybit_websocket_requests.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* Update exchanges/bybit/bybit_websocket_requests.go
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
* gk: nits
* linter: fix
* Update exchanges/bybit/bybit.go
Co-authored-by: Samuael A. <39623015+samuael@users.noreply.github.com>
* Update exchanges/bybit/bybit.go
Co-authored-by: Samuael A. <39623015+samuael@users.noreply.github.com>
* bossking: nits
* gk: much nicer design
* gk: revised naming for consideration
* gk: nits
* gk: nits restrict in configtest.json and not worry about many pairs enabled
* rm log
* linter: fix
* codex: nit
* cranktakular: nits
* Update exchanges/bybit/bybit_websocket_requests.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Update exchanges/bybit/bybit_websocket_requests.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Update exchanges/bybit/bybit_wrapper.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits!
* thrasher: nits
---------
Co-authored-by: shazbert <ryan.oharareid@thrasher.io>
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
Co-authored-by: Gareth Kirwan <gbjkirwan@gmail.com>
Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
Co-authored-by: Samuael A. <39623015+samuael@users.noreply.github.com>
* modernise: Run new gopls modernise tool against codebase
* Address shazbert's nits
* apichecker, gctcli: Simplify HTML scraping functions and improve depth limit handling
* refactor: Create minSyncInterval const and update order book limit handling for binance and binanceUS
* refactor: Various slice usage improvements and rename TODO
* tranches: Revert deleteByID changes due to performance decrease
Shazbert was a F1 driver in a past lifetime 🏎️
* tranches: Simply retrieve copy
Thanks to shazbert
* documentation: Sort contributors list by contributions
* tranches: Remove deadcode in deleteByID
* initial consolidation of rate limiting code to request package to reduce bespoke code implementation
* continued
* finish abstraction
* lint
* exchanges: fix tests
* linter: fix
* poloniex: fix auth rate limit not being set
* ratelimiter: convert from token to weight
* glorious: nits addressed with fire
* linter: rip
* change func name set -> get
* fix test
* derbit: impl
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* backtester/request: trying to fix panic (WIP)
* request: fix race for transport layer
* request: linter issue fix
* request: more linter issues
* requester: Add function to remove the tracking of underlying http client and add to engine unload exchange.
* request: add more context to error return
* request: Fix after cherry pick issues
* request: fix niterinos
* exchanges: change return to package variable
* request: changed named
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* rate limits: Make context aware
* binance: rate limit allow for cancellation of reservation when deadline is exceeded
* request: add context.done() before initiating any bulk work.
* binance: update error return for rate limiting
* request: updated dealine check to remove after time.Now procedure as this will obfuscate a deadline which will be limited by the context check on every attempt, so no need to sleep with delay.
Refactoring the timeout retries into a more general 'retry policy' with
support for retrying on HTTP 429 (Too Many Requests) and other responses
with a `Retry-After` header
The delay between requests is controlled by a combination of a 'backoff'
(currently only a simple linear backoff), and honouring the
`Retry-After` value (longest delay wins)
This makes the 'rate limiter' an optional argument as well, removing the
use of `nil` when one isn't supplied
Signed-off-by: David Ackroyd <daveo.ackroyd@gmail.com>
* Initial rework of rework of requester - WIP
* Implementing and checking rate limits - WIP
* implemented coinbene rate limiting shenanigans
* add in remaining WIP
* fixy
* use authenticated rate limit
* drop ceiling as this can be done with a counter later
* add functionality to struct
* purge config options for rate limiting so as to keep things minimal
* prepare futures and swap rate limiting for implementation
* Address linter issues
* Addressed nits, fixed race
* fix linter issue
* remove global var as this was only setting when newrequester was called
* moved rate limit functionality into its own file
* Update Bitfinex with correct rate limit and test endpoints (WIP)
* finish off bitfinex adjustments
* fixes
* fix linter issues
* slowed rate for coinbasepro
* drop rate limit for huobi as the doc times have intermittent 429 issues.
* Set MACOSX_DEPLOYMENT_TARGET to remove linking warning
* Addr Thrasher nits
* Addr glorious nits
* unexport do request function
* fixed nitorinos
* Fixed something I missed
* move disabled rate limiter into loadexchange and use interface functionality
* Add temp quick fix