* Convert: Fix TimeFromUnixTimestampDecimal using local
All parsed times should be in UTC
* Subscriptions: Add IgnoringAssetsKey
* Tests: Pass tb to curried WS handlers
* Websocket: Make ErrNoMessageListener a public error
* Kraken: Fix URLMap ignored for websocket URLs
* Kraken: Move SeedAssets from Setup to Bootstrap
Having SeedAssets in Setup is cruel and unusual because it calls the
API. Most other interactive data seeding happens in Bootstrap.
This made it so that fixing and creating unit tests for Kraken was
painfully slow, particularly on flaky internet.
* Kraken: Remove convert test
Duplicate of convert_test.go TestTimeFromUnixTimestampDecimal
* Kraken: Test config upgrades
* Kraken: Sub Channel improvements
* Use Websocket subscriptionChannels instead of local slice
* Remove ChannelID - Deprecated in docs
* Simplify ping handlers and hardcodes message
* Add Depth as configurable orderbook channel param
* Simplify auth/non-auth channel updates
* Add configurable Book depth
* Add configurable Candle timeframes
Kraken: Simplify all WS handlers with reqId
* Kraken: Subscription templating
* Generate N+ subs for pairs
If we generate one sub for all pairs, but then fan it out in the
responses, we end up with a mis-match between the sub store and
GenerateSubs, and when we do FlushChannels it will try to resub
everything again.
* Kraken: Rename channelName var throughout
Avoid shadowing func of same name
* Kraken: Add TestEnforceStandardChannelNames
* Websocket: Fix Resubscribe erroring Duplicate
* consolidate type to types package and share across code base
* rm convert type and convert codebase
* rm irrelavant test cases
* Fix tests
* glorious nits
* Update exchanges/gateio/gateio_types.go
Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
* thrasher: nits
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
* types and orderbook handling fix
* Minor types and endpoints update
* Minor fixes on Kucoin
* Add benchmarking test
* Unit tests update and minor endpoints update
* Adding updates and newly added endpoints
* Add and correct funding, withdrawal, and deposit endpoints
* linter and codespell fix
* Adding and correcting spot trading endpoints
* Completed Spot HF endpoints
* Minor fix
* Added OCO and Margin HF trade and other endpoints
* Adding missing endpoints
* Updating Isolated margin, margin v3, and v3market lending endpoints
* minor codespell fix
* Completed adding and fixing futures endpoints
* wrapper update and fix unit tests
* Updating endpoint ratelimits
* Complete ratelimiter setup and endpoint functions update
* Unit test configuration and update
* fix linter issue
* Added a ratelimiter test and heavy update on unit tests
* Adding websocket update based on ChangeLog
* Added newly added Earn General, Kucoin Earn and Staking endpoints
* Added VIP lending endpoints
* Minor linter and endpoints fix
* Added unit tests, publicised functions, and minor updates
* Update on wrapper funcs, unit tests, and other methods
* Enexport exchange specific websocket methods
* remove deprecated topic
* Update wrapper based on Type, add and fix unit tests
* Added a margin configuration endpoint and unit test
* Update methods, types, and unit tests
* Update error declaration and handling unit tests
* Update method parameters and error handling
* Updating unit tests and error handling
* Update methods arguments, added and update unit tests
* Fix unit tests and wrapper methods
* Resolving unit test issues and fix faulty endpoints
* Fix on unit tests and working on passphrase errors
* Minor fixed on websocket and endpoint url
* comment and wrapper filters issue fix
* Unit tests and other minor updates
* Update wrapper functions, endpoint methods, and unit tests
* change require to change on two unit tests
* Update unit tests, types, and endpoints
* Refine and update wrapper tempo for minor adjustments
* Remove code that enabled logging
* Update wrapper functions, missing endpoints, response and parameter values, and unit tests
* removed High-frequency orders from wrapper functions, and updated unit tests and types
* Added missing fields and minor update on wrapper
* Update types
* Update tests and websocket channels
* Update unit tests and methods error returns
* engine: Add overridable exchanges command line flag
* Improve tests
* engine: Add additional SetupExchanges edge case test and prevent suppressed dry run warnings
* CI/build: Update Go version, linters and fix minor issues
* linters: Add intrange, copyloopvar, additional go vet linters to match gopls and fix issues
* Kraken: Fix TestGetOpenInterest
We see daily failures on OpenInterest for Kraken.
This fix assumes that the issue might be related to volume of ETHUSD
open interest, and switches the single pair test to XBTUSD instead
Also isolates the test from others, since we're changing stored pairs
and we might be colliding on the global k
* Kraken: Handle Errors field in futures response
* Add in extra field for colocation monitoring
* rm tags
* populate through gateio orderbooks
* populate through incremental updates
* Add insert at field for orderbook depth
* I AM A BAD SPELLLLLLA
* add it in
* c change
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* Currency: Variadic Pairs.Add
This version of Pairs.Add is simpler and [more
performant](https://gist.github.com/gbjk/06a1fc1832d04ee41213ca518938cf74)
Behavioural difference: If there's nothing to add, the same slice is
returned unaltered. This seems like good sauce
* Currency: Variadic Remove
* Common: Add Batch function
* Common: Add common.SortStrings for stringers
* Subscriptions: Add batching to templates
* Subscriptions: Sort list of pairs
* Kucoin: Switch to sub templating
* Kucoin: Simplify channel prefix usage
* Kucoin: Fix race on fetchedFuturesOrderbook
* Subscriptions: Filter AssetPairs
Now only the assetPairs relevant to the subscription are in the context
* Subscriptions: Respect subscription Pairs
* Subscriptions: Trim AssetSeparator early
We want to trim before checking for "AssetSeparator vs All" because a
template should be allowed to reuse a range template and generate just one trailing AssetSeparator
whilst using a specific Asset
* Kucoin: Fix empty margin asset added
* Kucoin: Add Subscription batching
Turns out that contary to the documentation, kucoin supports batching of
all symbols and currencies
* Kucoin: Fix checkSubscriptions and coverage
* Subscriptions: Simplify error checking
This reduces the complexity of error checking to just be "do we get the
correct numbers".
Fixes Asset.All with only one asset erroring on xpandPairs, because we
trimmed the only asset separator, and then errored that we're not
xpanding Assets and the asset on the sub is asset.All
This use-case conflicted with commit 6bbd546d74, which required:
```
Subscriptions: Trim AssetSeparator early
We want to trim before checking for "AssetSeparator vs All" because a
template should be allowed to reuse a range template and generate just one trailing AssetSeparator
whilst using a specific Asset
```
Now we set up the assets earlier, and we remove the check for xpandAssets, since the number of asset lines matching is all that matters.
I've removed the asset tests for this, but they were correctly erroring
on the number of asset lines instead.
Everything hits coverage, as well.
* Kucoin: Remove deprecated fundingBook endpoint
* BTCMarkets: Use common.Batch
* Kraken: Simplify REST error and result handling
* Kraken: Rid excessive map lookups or large copies when iterating
* Kraken: Prealloc orderbook types.Numer size
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
---------
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>