* 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>
* Tests: Move and simplify TestFixtureToDataHandler
* Currency: Fix PairsManager.Load breaking matcher
* Tests: Add multi-instance cache to UpdatePairsOnce
* Kraken: Fix TestUpdateTickers race error
Calling StorePairs on global instance can lead to race
* Bitfinex: Fix TestUpdateTickers racing intermittently
* Currency: Fix concurrent access to PM formats
* Currency: Fix SupportsAsset implementation
This should delegate entirely to PairManager's IsAssetSupported
* Okx: Fix PM intrusion, rm GetPairFromInstrumentID
* Exchange: Fix SetGlobalPairsManager to set asset enabled
* Bitflyer: Fix race on set TestGetCurrURL
TestGetCurrencyTradeURL would fail sometimes due to sequencing of
enabling futures but not having pairs for it.
* Tests: Simplify usage pattern for FixtureToDH
* initial purge and benchmarks proof before rn overhaul
* rn LinkedList -> Tranche(s) and purge references
* roll out acrost exchanges
* linterino
* rn silly billy label
* linter strikes AAAAAGAIN!
* fix some things
* rm comment
* Add actual comparison from master to branch benchmark for sorting algorithms
* lower case via git mv YAAY!
* drop code
* convert type name
* glorious: nits
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* Shift wrapper function GetDefaultConfig to exchange.Base method definition, to ensure set defaults doesn't get called twice and to reduce code
* rm alphapoint bootstrap method as is defined as exchange.Base method
* add tests
* glorious: make it a function and make it IBOTEXCHANGE
---------
Co-authored-by: shazbert <ryan.oharareid@thrasher.io>
* Exchanges: Remove Pair upgrade handling
Now redundant behind #1401. These paths should never be met.
Several legacy coin upgrade paths being deprecated as well: ZUSD and CNY
Expecting any users with bad config from 3+ years ago would have to
reset anyway.
Also: At the time the intention of this was to upgrade the config
format.
However now, instead, it'd mostly serve to reset enabled pairs if
there's a config mistake, which doesn't feel right.
* Kraken: Fix typo in Kraken type struct
* Exchanges: Abstract exchange Start() and Run()
* Exchanges: Add test for abstracted Start
* Exchanges: Move Start to Bootstrap
* Simplify waitgroup usage
* Add call to exchange.Bootstrap to allow overide or supplementation
* Exchanges: Concurrent common bootstap actions
* Gateio: Remove incorrect Run in test
* GateIO: Fix pair dependencies in tests
This ensures that the pairs are initialised no more than needed and
kind-of just-in-time.
Better pattern might be to use a function to get these pairs when we
need them.
* Exchanges: Complete UpdatePairs before ExecLims
If we're going to update pairs, it needs to complete before we check for
limits to avoid errors on old pairs
* Exchanges: Remove Start and Run from tmpl
Since they're replaced by bootstrap now and shouldn't need customisation
normally
* Alphapoint: Move Start to Bootstrap
* GateIO: Fix linter shadow var
* adds open interest to exchanges
* ADDS TESTING YEAH
* New endpoints, BTSE, RPCS, cached
* slight design change, begin gateio
You will need to get cached for
each exchange that supports it
* gateio, huobi, rpc
* fix up kraken, cache retrieval
* okx, gateio
* finalising all implementations and tests
* definitely my final ever commit on this
* Well, well, well
* final v2
* quick fix of bug
* test coverage, assert notempty, test helper
Added a new testhelper for currency
management because its very annoying
in a parallel test setting which wastes
so much space otherwise
* minimises REST requests for Open Interest
* types.Number merge misses
* Minimises Kraken REST calls
* len change, value -> pointer receiver
* further fixup
* fixes gateio, batch calculates open interest
* single gateio, lint const fixes
* rejig and more thorough oi for huobi
* formatting expansion
* minor fix for handling expiring contracts
* rm unused Binance strings
* add bybit support, fix bybit issues
* oopsie doopsie, dont look at my whoopsie
* Fix issue, remove feature
* move an irrelevant function for the pr
* mini bybit upgrades
* fixes cli request bug
* cmd/exchange_template: Add wrapper function
* exchanges: force UpdateOrderExecutionLimits to wrappers as this is important for order deployment
* kucoin: Add spot order execution limits
* linter: fix
* glorious: nits
* kucoin: change from name to symbol for correct fee fetching and order deployment
* WHAAAAAAAT says Vitalik
* kucoin: Add futures limit support, fix insertion of non margin tradable pairs, update naming and add comments.
* kucoin: implement master branch changes
* Update exchanges/kucoin/kucoin_test.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* kucoin/test: update commentary
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* adds funding rate implementations and improvements
* merge fixes x1
* lint
* kucoin funding rates func make
* migrate sync-manager to keys
* some kucoin work
* adds some kucoin wrapper funcs
* ehhh, todo
* kucoin position
* start of orders
* adds the kucoin tests yay
* multiplier
* nits, EWS includes order limits
* NotYetImplemented, IsPerp improvements, cleaning
* lint, test fix, huobi time
* fixes issues, improves testing
* fixes linters I WRECKED
* local lint but remote lint, lint, lint, lint
* fixes err
* skip CI
* lint
* Supported rates, binance endpoints
* fixes weird mocktest problems
* no, CZ is invalid
* fixes some new EWS test errors
* all in a days work
* cleanup
* cleanup for real, also stop it binance.json
* minor coverage
* adds gateio to the slurry
* cleanup of types
* verbose verbose verbose verbose verbose verbose
* fixes huobi parsing issue
* fix bybit contract identification
* cleanup
* merge fixes
* addresses many big problems raised by SHAZ
* tracking errors and fixes
* funding rate if avail, fixes currency formatting
* Addresses nits and sneaks in extra fixes
* lint
* minor fixes after rebase
* better contract splitter for currencies like T-USDT
* forgot to add the exchange name like a fool
* merge fixes x1
* kucoin, direction, contract size
* rn direction, fix kucoin time
* WHOOPS
* Update exchanges/kucoin/kucoin_wrapper.go
Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
* misdirection
---------
Co-authored-by: Adrian Gallagher <adrian.gallagher@thrasher.io>
* exchanges: Add function to get standard config
* exchanges: add tests (cherry-pick here and above)
* after pick stuff
* cleanup
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* initial concept of a nice validation tester for exchanges
* adds some datahandler design
* expand testing
* more tests and fixes
* minor end of day fix for bithumb
* fixes implementation issues
* more test coverage and improvements, but not sure if i should continue
* fix more wrapper implementations
* adds error type, more fixes
* changes signature, fixes implementations
* fixes more wrapper implementations
* one more bit
* more cleanup
* WOW things work?
* lintle 1/1337
* mini bump
* fixes all linting
* neaten
* GetOrderInfo+ asset pair fixes+improvements
* adds new websocket test
* expand ws testing
* fix bug, expand tests, improve implementation
* code coverage of a lot of new codes
* fixes everything
* reverts accidental changes
* minor fixes from reviewing code
* removes Bitfinex cancelBatchOrder implementation
* fixes dumb baby typo for babies
* mini nit fixes
* so many nits to address
* addresses all the nits
* Titlecase
* switcheroo
* removes websocket testing for now
* fix appveyor, minor test fix
* fixes typo, re-kindles killed kode
* skip binance wrapper tests when running CI
* expired context, huobi okx fixes
* kodespull
* fix ordering
* time fix because why not
* fix exmo, others
* hopefully this fixes all of my life's problems
* last thing today
* huobi, more like hypotrophy
* golangci-lint, more like mypooroldknee-splint
* fix huobi times by removing them
* should fix okx currency issues
* blocks the application
* adds last little contingency for pairs
* addresses most nits and new problems
* lovely fixed before seeing why okx sucks
* fixes issues with okx websocket
* the classic receieieivaier
* lintle
* adds test and fixes existing tests
* expands error handling messages during setup
* fixes dumb okx bugs introduced
* quick fix for lint and exmo
* fixes nixes
* fix exmo deposit issue
* lint
* fixes issue with extra asset runs missing
* fix surprise race
* all the lint and merge fixes
* fixes surprise bugs in OKx
* fixes issues with times and chains
* fixing all the merge stuff
* merge fix
* rm logs and a panic potential
* lovely lint lament
* an easy demonstration of scenario, but not of initial purpose
* put it in the bin
* Revert "put it in the bin"
This reverts commit 15c6490f713233d43f10957367fcbf18e3818bdd.
* re-add after immediate error popup
* fix mini poor test design
* okx okay
* merge fixes
* fixes issues discovered in lovely test
* I FORGOT TO COMMIT THIS
* nit fixaroonaboo
* forgoetten test fix
* revert old okx asset intrument work
* fixes
* revert problems I didnt understand. update bybit
* fix merge bugs
* test cleanup
* further improvements
* reshuffle and lint
* rm redundant CI_TEST by rm the CI_TEST field that is redundant
* path fix
* move to its own section, dont run on 32 bit + appveyor
* lint
* fix lbank
* address nits
* let it rip
* fix failing test time range
* niteroo boogaloo
* mod tidy, use common.SimpleTimeFormat
* exchanges/sharedtestvalues: implement new functions to handle test skipping and announcements for standardising.
* exchanges: fin test impl.
* linter: fixes
* exchange_template: fix test
* allocate so it doesn't make a panic at the disco
* glorious: nits
* glorious: nits
* Update exchanges/sharedtestvalues/sharedtestvalues.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Update exchanges/sharedtestvalues/sharedtestvalues.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits
* linter: fix
* linter: shhhh
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* wrapper_coverage/exchanges: cancel context to not send rest requests/ populate context through functions that do rest requests
* linter: fix
* exchange_template: fix test
---------
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* kline: Add builder and testing
* Ideas
* kline: deploy builder functionality across GCT
* exchanges: implement across gct
* exchanges: Add tests and fix implementations before kline package testing and veri.
* kline: Add tests and start to fix ConvertToNewInterval
* kline: fix ConvertToNewInterval add tests
* kline: complete overarching tests now on to exchanges
* kline: finish exchange tests and implement limits
* exchanges: more fixes
* linter: fix
* engine: fix tests
* kraken: fix recent trades and other fixes
* zb: fix tests
* bithumb: fix empty insertion
* kline: refactor/optimize CreateKline function
* kline: remove the mooos!
* kline: prealloc CalculateCandleDateRanges
* linter: fix
* exchanges: prealloc extended
* fix whoopsie
* reverse fix because this is a whoopsie
* okx: fix risidual issues
* linter: fix
* kline: initial nits from @gloriouscode
* kline: rename builder -> request and cascade change
* linter: fix + test
* kline: update forced alignment on start and end times when CreateKlineRequest is called.
* nits: more more more
* NITS: Addressed
* tests: fix race issue
* Update exchanges/kline/request.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* kline: add method AddPadding() to automatically fill in holes in kline.Request functionality and reject if missing data when converting
* kline: Add params start and end to addPadding() to insert blanks in between block
* kline: remove test comment code as it's not needed anymore
* kline: fix lint and test
* kline: sort slice without extra bool check every iteration
* okx: fix issues with timeing and candles and such from niterinos & address typo
* Update exchanges/kline/kline.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: niterinos
* Update exchanges/poloniex/poloniex_wrapper.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits now onto conflicts YAYA!!!
* Update exchanges/exchange_test.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits again
* thrasher: nitters
* thrasher: niterinos - adds partial flag for incomplete recent candles and fetching.
* kline: rm fmtizzle packageizzle
* glorious: nitters
* glorious: more niterinos
* fix last niterinos
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* few fixes and add ratelimiter
* adds test
* revert configtest.json changes
* configtest updated
* WIP: adds public endpoint support
* WIP: adds public endpoint support
* adds public endpoint support
* WIP: adds auth. endpoint support
* adds test for auth. endpoint
* fixes
* adds auth. endpoint support
* WIP: ws support
* WIP
* WIP
* WIP
* WIP
* WIP
* WIP
* WIP
* Testing
* Complete WS spot testing
* adds support for ws events
* minor change
* WIP: adds REST support for CoinMarginedFutures
* Fixes
* WIP: adds REST support for CoinMarginedFutures
* Fixes
* improvement in SPOT REST
* Typo fix
* WIP: add REST support for CMF Account API
* minor fixes
* WIP: add support for CMF conditional orders and few minor fixes
* complete support for CMF conditional orders
* adds support for public CMF endpoint
* adds support for CMF position API
* Complete REST CMF support
* WIP
* Testing REST CMF support
* Testing REST CMF support
* Testing REST CMF support completed
* WIP: add support for UMF
* completed non-auth UMF
* WIP: add support for REST Auth. UMF
* WIP: add support for REST Auth. UMF and some improvements
* WIP
* WIP
* WIP
* completed REST UMF
* renaming
* adds REST support for futures
* add testcases for UMF and some optimizations
* add testcases for futures
* Testing UMF, futures and its changes
* Fixes
* Fixes after testing
* WIP
* WIP
* WIP
* completed ws USDT futures support
* WIP: ws support for futures
* fixes in WS futures
* fixes in WS support
* roll back changes made for WS CMF, USDT and Futures
* fixes
* WIP
* WIP
* fixes
* Steps for new PR
* WIP
* WIP
* WIP
* WIP
* complete PR setup
* fixes for successfully running tests
* update in symbol for futures pair in test file
* WIP
* Fixes in test file and other minor fix
* fix testdata/configtest.json
* reset CONTRIBUTORS file
* review changes
* remove unwanted file
* remove redundant code
* improvisation
* adds comment for exported functions
* remove unwanted TODO and commented code
* fix
* improvisation
* fix
* defined errors
* improvisation
* improvisation
* improvisation
* updates test
* adds comment for exported types
* review changes
* review changes
* fix
* fixes
* Changes for making BYBIT compatible with existing code base
* Test file changes
* Changes for making BYBIT compatible with existing code base
* Changes for making BYBIT compatible with existing code base
* fix lint issues
* fix
* review changes
* review changes
* review changes
* review changes
* review changes
* review changes
* review changes
* review changes
* review changes
* review changes
* WIP
* add test cases for new API's
* minor improvements
* add missing API and their tests
* minor fixes
* add bybitTime
* add bybitTimeSec, bybitTimeMilliSec, bybitTimeNanoSec and necessary support
* fix GetTradeHistory function
* error handling
* test fixes
* add GetServerTime API
* adds GetHistoricCandlesExtended and review changes
* test fixes
* minor fix
* integrating CMF Bybit recent change log
* minor fixes
* adds extractCurrencyPair
* minor fixes
* minor fix
* review changes
* adds variable declaration of error
* review commit
* adds embeddable type in API response for all API and integrate it
* fixes
* adds authentication WS connection
* review changes
* review changes
* compatible changes
* adds asset to GetWithdrawalsHistory
* adds asset_type in rpc.proto
* adds asset argument in gctcli withdrawal request command
* improve error handling in exchange API error
* web socket fix
* review changes
* improvements
* improvements
* minor fix
* review changes
* fixing wrapper issues
* fixes
* fixes
* review changes
* add test cases
* fix for GetActiveOrders
* lint fixes
* fixes in websocket
* adds wrapper testcases
* adds wrapper testcases
* adds wrapper testcases
* fixes
* fix issue with GetHistoricCandlesExtended
* fix merge issues
* improving error reporting
* adds wrapper testcases and a minor fix
* gctrpc changes
* adds test cases
fixes in websocket
* review changes for ws
* review changes in WS
* fix gctrpc
* merge fixes
* review changes
* WIP
* updates pair in configs
* adds new asset USDCMarginedFutures
* adds URL const for USDCMarginedFutures
* adds API support
* minor fixes
* adds kline API
* minor fix
* adds API
* adds API
* adds API
* WIP
* WIP
* WIP
* adds support for USDC auth requests to SendAuthHTTPRequest
* adds SendUSDCAuthHTTPRequest
* run test and fix them
* rollback support added for Auth. USDC request inside SendAuthHTTPRequest
* adds API and test cases
* adds API and test cases
* adds APIs and test cases
* adds APIs
* adds rate limit for USDC
* adds USDCMarginedFutures to wrapper
* adds USDC testcases in wrapper and fix few issues
* minor test fixes
* minor test fixes
* fix lint issues
* WIP
* Merge changes
* minor fixes
* remove "else" and optimize
* review changes
* review changes
* review changes
* fix lint issue
* merge fix
* fix test
* fix templates and run them
* changes after merge
* review changes and improvements
* code improvement
* fixes with respect to changes in API response in documentation
* fixed review change in test
* adds check in CancelExistingOrder
* update exchange template
* review changes
* adds GetDepositAddress API
* WIP: adds GetOrderHistory
* complete GetOrderHistory
* fixes
* adds test case
* fixes and add WithdrawFund API
* WIP
* WIP
* updating all SendAuthHTTPRequest call
* adds WithdrawCryptocurrencyFunds
* update test cases
* fix lint issues
* fixes after merge
* adds GetAvailableTransferChains and few fixes
* minor fix in GetDepositAddress
* minor fix with WS ping/pong handling
* add ping handler for WS Auth.
* fix typo mistake
* update doc
* orders: deprecate SubmitResponse return and change to *order.Detail construct detail from order.Submit struct
* orders: add coverage, fix tests
* coinut: rm test for checking
* orders: revert change for return and change field ID to a more explicit name OrderID
* orders: Add method to see if the order was placed
* order: change field name in Cancel type to be more explicit
* orders: standardize field -> OrderID
* backtester: populate change
* orders: add test
* gctscript: fix field name
* linter: fix issues
* linter: more fixes
* linter: forever
* exchanges_tests: populate order.Submit field exchange name
* Update exchanges/order/order_types.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Update exchanges/order/orders.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits
* glorious: nits
* thrasher: nits
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* orders: Add derive modify struct method to order.Detail and then subsequent method to derive and standardize response details
* exchanges: call modify method in wrappers
* linter: fixes
* engine/wsroutineman: remove print summary
* glorious: nits, removed modifyOrder functionality for Bithumb. There are not docs to support this.
* Update exchanges/order/orders.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* glorious: nits
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Bump CI versions
* Specifically set go version as 1.17.x bumps it to 1.18
* Another
* Adjust AppVeyor
* Part 1 of linter issues
* Part 2
* Fix various linters and improvements
* Part 3
* Finishing touches
* Tests and EqualFold
* Fix nitterinos plus bonus requester jobs bump for exchanges with large number of tests
* Fix nitterinos and bump golangci-lint timeout for AppVeyor
* Address nits, ensure all books are returned on err due to syncer regression
* Fix the wiggins
* Fix duplication
* Fix nitterinos
* 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>
* cmd/tools/exchange: fix regression and implement reflection so as this can dynamically scale to our interface
* exchanges: add comment and fix whoopsie
* exchanges: fix linter issues
* wrapper_cov_tool: add actual full interface method count to get a better perceived deployment
* exchanges/tool: addr glorious nits
* kraken: remove string in test
* exchange_template_tool: fix tmpl issue
* gct: phase one context awareness pass
* exchanges: context propagation pass
* common/requester: force context requirement
* gctcli/exchanges: linter fix
* rpcserver: fix test using dummy rpc server
* backtester: fix comments
* grpc: add correct cancel and timeout for commands
* rpcserver_test: add comment on dummy server
* common: deprecated SendHTTPGetRequest
* linter: fix
* linter: turn on no context check
* apichecker: fix context linter issue
* binance: use param context
* common: remove checks as this gets executed before main
* common: change mutex to RW as clients can be used by multiple go routines.
* common: remove init and JIT default client. Unexport global variables and add protection.
* common: Add comments
* bithumb: after dinner mints fix
* golangci: Enable err checking linter to expose unchecked errors.
* gct: handle errors across the board
* gct: handle errors NOTE: Found bug in FTX (WIP)
* linter: fix issues
* ftx/exchanges: fix bug where error was being returned when setting pair management variables to an already enabled state
* bitmex: fix bug where a dangly supported asset in config danglied up the place.
* linter: fix more linter issues
* linter: fix my terrible spelling.
* currency: fix test
* exchanges: fix tests
* logger: fix test
* exchanges: fix tests
* glorious: nits
* vm: revert rm variable and instigate test
* exchanges: add an UpdateTickers method to the main exchange interface
This method will fetch all currency pair tickers of a given asset type
and update them internally, does nothing for now.
* exchanges: refactor UpdateTicker on all exchanges
Keep the exact previous behaviour but implement the UpdateTickers
method and refactor UpdateTicker by using it where applicable.
* sync_manager: update all tickers when batching is enabled
* binance: UpdateTicker to fetch single ticker symbol
* ftx: UpdateTicker to fetch single ticker symbol
* 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.
* requester: defer execution of request.Item generation in closure.
* bithumb: fix issue
* coinut/itbit: fix linter issues
* binance: fix bug on recvWindow setting
* requester: standardize sendpayload + add readme update
* nonce: remove inc() function
* request: defer unlockiflocked
* binance: revert changes for open orders
* btcmarkets: defer auth generation functionality, rm context deadline as this will be created just before sending HTTP request.
* binance: move const to top
* exmo: remove debug output as its generated in the requester function
* ftx: defer auth functionality
* requester: move error to top
* bittrex: defer auth functionality
* bitmex: defer auth functionality and remove deadline as generation occurs after rate limiting.
* btse: defer auth functionality
* coinbasepro: defer auth functionality and removed context deadline as this is generated after rate limiting
* coinbene: defer auth functionality and remove context deadline as this is generated after rate limiting
* huobi: defer auth functionality and remove context deadline as this is generated after rate limiting
* huobi-futures: defer auth functionality and remove context deadline as this is generated after rate limiting
* kraken: defer auth functionality and remove context deadline as this is generated after rate limiting
* kraken: remove deadline protection for timestamp generation
* okgroup: defer auth functionality and remove context deadline as this is generated after rate limiting
* poloniex: defer auth functionality
* zb: defer auth functionality and remove context deadline as this is generated after rate limiting
* exchanges: clean up log output which are done and inspected in the requester package
* binance: fix path bug on every retry, rm timeout context as this is not needed
* coinbene: fix path bug on retry
* binance: consolidate functionality
* coinbene: fix linter issues
* poloniex: linter fix
* kraken: change add -> set
* bitstamp: fix path bug for retry
* BTSE: fix retry path bug
* coinbene: fix path bug whoopsie by me
* gateio: fix bug where on retry it does not reset reader
* localbitcoins: fix path bug on retry
* zb: change domain to land
* exchanges: make sure io.Reader is generated every request
* exchanges: move reader generation into function scope
* wrapper_issues: setup exchange manager
* engine: expand withdraw manager test
* engine: dont look for environment
* bitstamp: fix pathing bug (@thrasher-)
* engine/withdraw_manager: purge tests as this is covered in repository withdraw
* gctcli: modifyorder stubs
* gctcli: add ModifyOrderRequest and ModifyOrderResponse in rpc.proto
* gctcli: regenerate rpc.pb.go after the addition of ModifyOrder structs
* gctrpc: add ModifyOrder() and regenerate dependent files
* gctcli: modifyorder command now uses newly generated ModifyOrder() RPC
* exchanges/order/orders.go: use time.Time.Equal() instead of ==
* gctrpc: update ModifyOrderRequest and ModifyResponse and regenerate gRPC
* gctcli/commands: rework modifyorder
* engine: implement RPCServer.ModifyOrder
* engine: commit an initial version OrderManager.Modify(), still does not update state of managed orders
* engine: OrderManager.Modify now updates the inner state of managed orders, but introduces race conditions, needs fixes
* engine/order_manager.go: comply with golangci-lint
* gctcli: fix getOrderCommand.ArgsUsage
* gctcli: fix getModifyOrderCommand args and ArgsUsage
* engine: OrderManager.Modify() now correctly updates price of modified order
* engine: RPCServer.ModifyOrder now uses checkParams() as advised
* exchanges: (1) IBotExchange.ModifyOrder now returns a Modify struct, (2) all exchanges are updated to comply with that change
* exchanges/order: Detail.UpdateOrderFromModify also updates the ID
* engine/order_manager: add store.modifyExisting() and use it in OrderManager.Modify to update (on success) the state of the modified order
* exchanges: Bitfinex.ModifyOrder() now returns the ID in case of an error
* engine: OrdetManager.Modify() now emits an order event
* exchanges/bithumb: proper order.payment_currency key
* engine/order_manager: populate more Modify fields as they are needed by (some) exchanges, add comments
* engine: test OrderManager.Modify()
* engine: test store.modifyExisting()
* engine: write a docstring for store.modifyExisting
* engine: OrderManager.Modify() now also sets Modify.Price and Modify.Amount in case of zero values
* engine: TestOrderManager_Modify() now verify the effects of price and/or amount set to 0
* engine: OrderManger.Modify() now uses the commsManager to let observers know of errors
* engine: TestOrderManager_Modify() uses t.Fatal()
* engine: TestOrderManager_Modify() and TestStore_modifyOrder() supply t.Error() with proper messages
* exchanges/order_manager_test: fix a golangci-lint complaint
* engine/order_manager: fix an error comparison bug and simplify
* gctcli/commands: check if either price or amount is set, otherwise we would waste an API call
* orderbook: export orderbook nodes for external strategy inspection
* orderbook: Add in methods for locking and unlocking multiple books at the same time e.g. book1.LockWith(book2); defer book1.UnlockWith(book2)
* include waiting functionality for depth change alert
* backtester: add word.
* log: include logger changes to impl with downstream integration
* engine: reduce params for loading exchange
* assort: rm verbose in tests, change wording in ob, expose sync.waitgroup for ext. sync options
* ticker: reduce map look ups and contention when using RW mutex when there are over 80% writes adds find last function to get the latest rate
* engine/syncmanager: add in waitgroup for step over for external package calls
* cleaup
* engine: linter fix
* currency/fx: include all references to fiat currencies to default
* orderbook: Add in fields to Unsafe type for strategies to detect potential out of sync book operations
* syncmanager: changed config variable to display correct time
* ordermanager: Add time when none provided
* currency/manager: update getasset param to get enabled assets for minor optimizations
* ftx: use get all wallet balances for a better accounts breakdown
* orderbook: unlock in reverse order
* bithumb: fixes bug on market buy and sell orders
* bithumb: fix bug for nonce is also time window sensitive
* bithumb: get orders add required parameter
* bithumb: Add asset type to account struct
* currency: improve log output when checking currency and it fails
* bithumb: Add error return on incomplete pair
* ticker:unexport all service related methods
* ticker/currency: fixes
* orderbook: fix comment
* engine: revert variable name in LoadExchange method
* sync_manager: fix panic when enabling disabling manager
* engine: fix naming convention of exported function and comments
* engine: update comment
* orderbook: fix comment for unsafe type
* Initial codes for a trade tracker
* Moving everything in a broken fashion
* Removes tradetracker. Removes some errors for subsystems
* Cleans up some subsystems, renames stuttering types. Removes some global Bot usage
* More basic subsystem renaming and file moving
* Removes engine dependency from events,ntpserver,ordermanager,comms manager
* Exports eventManager, fixes rpcserver. puts rpcserver back for now
* Removes redundant error message, further removes engine dependencies
* experimental end of day interface usage
* adds ability to build the application
* Withdraw and event manager handling
* cleans up apiserver and communications manager
* Cleans up some start/setup processes. Though should separate
* More consistency with Setup Start Stop IsRunning funcs
* Final consistency pass before testing phase
* Fixes engine tests. Fixes stop nil issue
* api server tests
* Communications manager testing
* Connection manager tests and nilsubsystem error
* End of day currencypairsyncer tests
* Adds databaseconnection/databaseconnection_test.go
* Adds withdrawal manager tests
* Deposit address testing. Moved orderbook sync first as its more important
* Adds test for event manager
* More full eventmanager testing
* Adds testfile. Enables skipped test.
* ntp manager tests
* Adds ordermanager tests, Extracts a whole new subsystem from engine and fanangles import cycles
* Adds websocket routine manager tests
* Basic portfolio manager testing
* Fixes issue with currency pair sync startup
* Fixes issue with event manager startup
* Starts the order manager before backtester starts
* Fixes fee tests. Expands testing. Doesnt fix races
* Fixes most test races
* Resolves data races
* Fixes subsystem test issues
* currency pair syncer coverage tests
* Refactors portfolio. Fixes tests. Withdraw validation
Portfolio didn't need to exist with a portfolio manager. Now the porfolio manager
is in charge how the portfolio is handled and all portfolio functions are attached
to the base instead of just exported at the package level
Withdrawal validation occurred at the exchange level when it can just be run at the
withdrawal manager level. All withdrawal requests go through that endpoint
* lint -fix
* golang lint fixes
* lints and comments everything
* Updates GCT logo, adds documentation for some subsystems
* More documentation and more logo updates
* Fixes backtesting and apiserver errors encountered
* Fixes errors and typos from reviewing
* More minor fixes
* Changes %h verb to %w
* reverbs to %s
* Humbly begins reverting to more flat engine package
The main reasoning for this is that the subsystem split doesn't make sense
in a golang environment. The subsystems are only meant to be used with engine
and so by placing them in a non-engine area, it does not work and is
inconsistent with the rest of the application's package layout.
This will begin salvaging the changes made by reverting to a flat
engine package, but maintaining the consistent designs introduced.
Further, I will look to remove any TestMains and decrease the scope
of testing to be more local and decrease the issues that have been
caused from our style of testing.
* Manages to re-flatten things. Everything is within its own file
* mini fixes
* Fixes tests and data races and lints
* Updates docs tool for engine to create filename readmes
* os -> ioutil
* remove err
* Appveyor version increase test
* Removes tCleanup as its unsupported on appveyor
* Adds stuff that I thought was in previous merge master commit
* Removes cancel from test
* Fixes really fun test-exclusive data race
* minor nit fixes
* niterinos
* docs gen
* rm;rf test
* Remove typoline. expands startstop helper. Splits apiserver
* Removes accidental folder
* Uses update instead of replace for order upsert
* addresses nits. Renames files. Regenerates documentation.
* lint and removal of comments
* Add new test for default scenario
* Fixes typo
* regen docs
* Add initial workflows config
* Add PSQL service
* Add 32bit and frontend jobs
* Add gcc-multilib and fix typo
* Fix backtester test for linux/unix filesystem errors and npm commands
* 32-bit Add -race to purposefully throw an error to ensure envs are set correctly (will revert)
* Revert "32-bit Add -race to purposefully throw an error to ensure envs are set correctly (will revert)"
This reverts commit b97e66c49fca859f8738e01107f96f9ca4040b2e.
* Bump workers count for orderbook processing
* Remove comments to trigger 32-bit cache hit after job success
* Cancel addition plus version bump, spawn more overlords
* Update build badge to Github Actions
* Brach -> Branch
* Exchanges: Initial implementation after rebase of depth (WIP)
* orderbook/buffer: convert and couple orderbook interaction functionality from buffer to orderbook linked list - Use single point reference for orderbook depth
* buffer/orderbook: conversion continued (WIP)
* exchange: buffer/linkedlist handover (WIP)
* Added some tests for yesterday
* linkedList: added more testing and trying to figure out broken things
* Started tying everything in
* continuous integration and testing
* orderbook: expanded tests
* go mod tidy
* Add in different synchornisation levels for protocols
Add in timer for the streaming system to reduce updates to datahandler
Add in more test code as I integrate more exchanges
* Depth: Add tests, add length check to call linked list updating, add in constructor.
Linked List: Improve tests, add in checks for zero liquidity on books.
Node: Added in cleaner POC, add in contructor.
Buffer: Fixed tests, checked benchmarks.
* orderbook: reinstate dispatch calls
* Addr glorious & madcozbad nits
* fix functionality and add tests
* Address linterinos
* remove label
* expanded comment
* fix races and and bitmex test
* reinstate go routine for alerting changes
* rm line :D
* fix more tests
* Addr glorious nits
* rm glorious field
* depth: defer unlock to stop deadlock
* orderbook: remove unused vars
* buffer: fix test to what it should be
* nits: madcosbad addr
* nits: glorious nits
* linkedlist: remove unused params
* orderbook: shift time call to outside of push to inline, add in case for update inster price for zero liquidity, nits
* orderbook: nits addressed
* engine: change stream -> websocket convention and remove unused function
* nits: glorious nits
* Websocket Buffer: Add verbosity switch
* linked list: Add comment
* linked list: fix spelling
* nits: glorious nits
* orderbook: Adds in test and explicit time type with constructor, fix nits
* linter
* spelling: removed the dere fence
* depth: Update alerting mechanism to a more battle tested state
* depth: spelling
* nits: glorious nits
* linked list: match cases
* buffer: fix linter issue
* golangci: increase timeout by 30 seconds
* nodes: update atomic checks
* spelling: fix
* node: add in commentary
* exchanges/syncer: add function to switch over to REST when websocket functionality is not available for a specific asset type
* linter: exchange linter issues
* syncer: Add in warning
* nits: glorious nits
* AssetWebsocketSupport: unexport map
* Nits: Adrr
* rm letter
* exchanges: Orderbook verification change for naming, deprecate checksum bypass as it has the potential to obfuscate errors that are at the tail end of the book, add in verification for websocket stream updates
* general: fix spelling remove breakpoint
* nits: fix more glorious nits until more are found
* orderbook: fix tests
* orderbook: fix wait tests and add in more checks
* nits: addr
* orderbook: remove dispatch reference
* linkedlist: consolidate bid/ask functions
* linked lisdt: remove words
* fix spelling
* Exchanges: Add config variable to set bypassing of orderbook verification
* Exchanges: Consolidate orderbook variables into config struct
* Exchanges: Addr nit; set verification bypass on websocket book implementations
* port orderbook binance management from draft singular asset (spot) processing add additional updates to buffer management
* integrate port
* shifted burden of proof to exchange and remove repairing techniques that obfuscate issues and could caause artifacts
* WIP
* Update exchanges, update tests, update configuration so we can default off on buffer util.
* Add buffer enabled switching to all exchanges and some that are missing, default to off.
* lbtc set not aggregate books
* Addr linter issues
* EOD wip
* optimization and bug fix pass
* clean before test and benchmarking
* add testing/benchmarks to sorting/reversing functions, dropped pointer to slice as we aren't changing slice len or cap
* Add tests and removed ptr for main book as we just ammend amount
* addr exchange test issues
* ci issues
* addr glorious issues
* Addr MCB nits, fixed funding rate book for bitfinex and fixed potential panic on nil book return
* addr linter issues
* updated mistakes
* Fix more tests
* revert bypass
* Addr mcb nits
* fix zero price bug caused by exchange. Filted out bid result rather then unsubscribing. Updated orderbook to L2 so there is no aggregation.
* Allow for zero bid and ask books to be loaded and warn if found.
* remove authentication subscription conflicts as they do not have a channel ID return
* WIP - Batching outbound requests for kraken as they do not give you the partial if you subscribe to do many things.
* finalised outbound request for kraken
* filter zero value due to invalid returned data from exchange, add in max subscription amount and increased outbound batch limit
* expand to max allowed book length & fix issue where they were sending a zero length ask side when we sent a depth of zero
* Updated function comments and added in more realistic book sizing for sort cases
* change map ordering
* amalgamate maps in buffer
* Rm ln
* fix kraken linter issues
* add in buffer initialisation
* increase timout by 30seconds
* Coinbene: Add websocket orderbook length check.
* Engine: Improve switch statement for orderbook summary dissplay.
* Binance: Added tests, remove deadlock
* Exchanges: Change orderbook field -> IsFundingRate
* Orderbook Buffer: Added method to orderbookHolder
* Kraken: removed superfluous integer for sleep
* Bitmex: fixed error return
* cmd/gctcli: force 8 decimal place usage for orderbook streaming
* Kraken: Add checksum and fix bug where we were dropping returned data which was causing artifacts
* Kraken: As per orderbook documentation added in maxdepth field to update to filter depth that goes beyond current scope
* Bitfinex: Tracking down bug on margin-funding, added sequence and checksum validation websocket config on connect (WIP)
* Bitfinex: Complete implementation of checksum
* Bitfinex: Fix funding book insertion and checksum - Dropped updates and deleting items not on book are continuously occuring from stream
* Bitfinex: Fix linter issues
* Bitfinex: Fix even more linter issues.
* Bitmex: Populate orderbook base identification fields to be passed back when error occurrs
* OkGroup: Populate orderbook base identification fields to be passed back when error occurrs
* BTSE: Change string check to 'connect success' to capture multiple user successful strings
* Bitfinex: Updated handling of funding tickers
* Bitfinex: Fix undocumented alignment bug for funding rates
* Bitfinex: Updated error return with more information
* Bitfinex: Change REST fetching to Raw book to keep it in line with websocket implementation. Fix woopsy.
* Localbitcoins: Had to impose a rate limiter to stop errors, fixed return for easier error identification.
* Exchanges: Update failing tests
* LocalBitcoins: Addr nit and bumped time by 1 second for fetching books
* Kraken: Dynamically scale precision based on str return for checksum calculations
* Kraken: Add pair and asset type to validateCRC32 error reponse
* BTSE: Filter out zero amount orderbook price levels in websocket return
* Exchanges: Update orderbook functions to return orderbook base to differentiate errors.
* BTSE: Fix spelling
* Bitmex: Fix error return string
* BTSE: Add orderbook filtering function
* Coinbene: Change wording
* BTSE: Add test for filtering
* Binance: Addr nits, added in variables for buffers and worker amounts and fixed error log messages
* GolangCI: Remove excess 0
* Binance: Reduces double ups on asset and pair in errors
* Binance: Fix error checking
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce
* return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo
* removed the Binance extra method GetClosedOrder
* func description corrected
* removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side
* GetClosedOrder implementation moved to GetOrderInfo
* changed GetOrderInfo params
* removed Canceled order.Type used for Kraken
* update QueryOrder in gctscript
* add missed params to QueryOrder validator (gctscript)
* fixed testing issues
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce
* return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo
* removed the Binance extra method GetClosedOrder
* func description corrected
* removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side
* GetClosedOrder implementation moved to GetOrderInfo
* changed GetOrderInfo params
* removed Canceled order.Type used for Kraken
* update QueryOrder in gctscript
* add missed params to QueryOrder validator (gctscript)
* fixed testing issues
* pull previous changes
* linter issues fix
* updated query_order exmple in gctscript, fixed params check
* removed orderPair unnecessary conversion
* added wsCancelAllOrders, fixed bugs
* fixed Kraken wsAddOrder method
* cleanup
* CancelBatchOrders implementation
* changed CancelBatchOrders signature
* fixed tests and wrappers
* btcmarkets_test fix
* cleanup
* cleanup
* changed CancelBatchOrders signature
* fmt
* Update configtest.json
* Update configtest.json
* rollback configtest
* refactored Kraken wsHandleData to allow tests
* removed unnecessary error test in TestWsAddOrderJSON
* dependencies updates
* fixed issue with PortfolioSleepDelay set on startup
* add GetWithdrawalsHistory method to exchanges interface
* param name changes
* add extra params for Binance WithdrawStatus method
* add Binance TestWithdrawHistory
* linter errors fix
Co-authored-by: Vazha Bezhanishvili <vazha.bezhanishvili@elegro.eu>
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce
* return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo
* removed the Binance extra method GetClosedOrder
* func description corrected
* removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side
* GetClosedOrder implementation moved to GetOrderInfo
* changed GetOrderInfo params
* removed Canceled order.Type used for Kraken
* update QueryOrder in gctscript
* add missed params to QueryOrder validator (gctscript)
* fixed testing issues
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce
* return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo
* removed the Binance extra method GetClosedOrder
* func description corrected
* removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side
* GetClosedOrder implementation moved to GetOrderInfo
* changed GetOrderInfo params
* removed Canceled order.Type used for Kraken
* update QueryOrder in gctscript
* add missed params to QueryOrder validator (gctscript)
* fixed testing issues
* pull previous changes
* linter issues fix
* updated query_order exmple in gctscript, fixed params check
* removed orderPair unnecessary conversion
* added wsCancelAllOrders, fixed bugs
* fixed Kraken wsAddOrder method
* cleanup
* CancelBatchOrders implementation
* changed CancelBatchOrders signature
* fixed tests and wrappers
* btcmarkets_test fix
* cleanup
* cleanup
* changed CancelBatchOrders signature
* fmt
* Update configtest.json
* Update configtest.json
* rollback configtest
* refactored Kraken wsHandleData to allow tests
* removed unnecessary error test in TestWsAddOrderJSON
* dependencies updates
Co-authored-by: Vazha Bezhanishvili <vazha.bezhanishvili@elegro.eu>
* End of day commit moving packages and setting foundation into how trade processing will go
* Conformity
* tdd candle generation based on received trade data, renames orderbookbuffer back to buffer for now...
* Formalises test functions and designs the trade processor
* Theoretical amending old candles to allow any trades that were part of an old processed candle to be more accurate. Saving of candles will only occur on previous cycles, extending memory usage a bit longer
* Figures out sqlboiler for sqlite. Updates websocket entries to process trade data
* One more trade data
* Adds more exchange support
* Adds PSQL stuff
* Begins creating sql implementation
* End of day commit. Helper functions and understanding sql usage in GCT
* Adds delete and cleans up table design
* Finishes trades conceptually. Awaits candle data update in order to translate trades to candles
* Initial handling of trades in coinbene
* Proto
* Fixing of some bugs, attempting to address coinbene asset type ws issues
* Fixes up coinbene websocket implementation for the most part
* finalises coinbene websocket implementation. Adds new ability to parse currencies without a delimiter
* Implements rpc commands and adds testing
* updates the following to be compatible with trade data update: Theoretical amending old candles to allow any trades that were part of an old processed candle to be more accurate. Saving of candles will only occur on previous cycles, extending memory usage a bit longer
* Changes trade to be its own entity rather than attached to a websocket.
* Adds coverage to trades. Changes signature of `AddTradesToBuffer` to return error. Now automatically shuts down without need for channel listening. Will automatically start up again if it gets data
* Implements trade fetching at the wrapper level for a bunch of exchanges. Adds trade id to script updoot. Probably breaking change
* Implements trade fetching for all wrappers hurray hurrah. Updates all the tests
* Adds new interface func to get recent trades. Ensures GetExchangeHistory continues until conditions are met
* Adds new readme, tests all new wrapper endpoints, updates exchange_wrapper_issues to test new endpoints. Updates exchange_wrapper_coverage with new coverage... Fixes lame bug causing wrapper tests to fail from being poorly setup. Adds loopy loop to ensure that all data is captured when requesting exchange history
* Bugfix on psql migrations. Rebases latest changes, updates table design to use base and quote, updates trades to use exchange_name_id
* Adds new config field for saving trades to the database per exchange. Now exits trade processing when trade saving is not enabled. Similarly for wrapper, does not save if not enabled
* Minor bitfinex trade fixes. continues on buffer processing errors, now saves transactionid to the db
* Adds support for generating candles from candlesextended. May extend it further, idk
* Updates trade candles to be able to fill missing data with trades. Adds more tests. Also does a thing where you can forcefully override a candle based on internal trade data instead of API data
* Fixes bug where force deletions did not follow up with insertions. Adds force to candle commands
* Fixes specific exchange based issues. Extends recent trades to 24 hours where possible
* Fixes issue with saved tests. Fixes tests for trades. Adds parallel to tests. Pre-fixes people's nits
* Adds new GRPC functions to find out what data is missing from trades and candles. Fixes some assumptions from missing period code.
* Adds unique constraint. Fixes up niggling issues for wrappers and websockets
* Fixes issues with using unix times in the database trying to retrieve data via the CLI. Reduces save time to 15 seconds
* Updates trades to use timestamps instead of int64 unix
* Adds missing FTX wrapper implementation. Regens docs
* Linting the linters. Updating readme
* Adds new command to set whether an exchange can process trades
* Doc update
* Adds recent trades and historic trade endpoints to grpc
* formats pair_test.go to appease linter gods
* Addresses data race. Removes logging of missing intervals on unrelated function (now that it has its own rpc command). The buffer time isnt customisable, but I don't feel it needs to be at a config level at all really.
* Fixes a few niterinos regarding spacing, type conversion, a weird Bitmex 0 trade value error, unsubscriptions and cli command references
* Reduces map lookups. Adds base func and moves wrappers to use it
* Uses better currency formatter. Adds time based validation to trade history. Reverts configtest.json
* Reverts config and updates test names. Also WAYYYYY LESS SPAMMY
* oopsie doopsie missed a whoopsie
* mint flavoured lint
* Fixes issues caused by rebase
* Fixes issue with timestamps not converting properly from command to RPCServer. Adds new error type. Adds shorthand entries to some commands. Removes os.Exit from tests. Makes Gemini test rolling. Adds enabled exchange check to RPC function. Escapes timestamp on bitstamp. Renames var
* fixes whoopsie oopsie doopsie I forgot to remove code shoopsie
* missed a line
* 🎉🎉 :tada:Breaks everything in an end of day commit 🎉🎉🎉
* Modifies function 'createlocaloffset' to return a string instead. Uses strings for all time based start and end commands. Uses UTC times in RPC server and updates SQLITE to use formatted time based queries
* Adds concurrency-safe way of changing SaveTradeData and checking it. Fixes embarrassing typo
* End of day fix, adds bitfinex update to loop until either the return trades shows no new dates, or meets specifications. Fixes egregious typo
* Improves testing and handling of historical trades function
* Fixes tests after latest changes
* Fix potential fatal err now that db is enabled in test config now
* Fixes up some database settings to use a local engine instead of global var
* DELICIOUS LINT CHOCOLATE FIXES
* Fixes data race by slashing competitor's tyres
* Adds mock test fixes to allow for live and stored data test
* Removes verbosity in engine level tests. Adds new timezone format to highlight the timezone for RPC functions. Removes reference to Preix index fund
* Oopsie doopsie, fixed a whoopsie
* Loggers can no longer do data drag races on my lawn 👴
* Removes bad lock
* Addresses command nits. End of day conceptual commit, trying to calculate spans of time in the context of missing periods. Tests will fail
* Adds new stream response for retrieving trade history as it can take time to do. Unsuccessfully attempts to simplify time range calculation for missing trades response
* Adds new timeperiods package to calculate time periods, time ranges and whether data is in those ranges. Removes kline basic implementation of same concept
* Fixes lint issues. Fixes test. Moves trade cli commands to their own trade subcommands
* Updates lakebtc to no longer have gethistorictrades as it is unsupported. Adds more validation to rpc functions
* Removes requirement to have trades when testing trade wrapper functions. Doesn't really prove it works if there are no trades for a given currency in a time period.
* Addresses nits, runs linting fix and ensures a test is consistent
* Fix merge issues
* Moves sort to timeperiods. Adds test coverage. Fixes typo
* Removes log package in CLI
* Fixes `GetTrades` url
* Reorders all instances of validation occuring after settingup RPC connection
* Fixes test to ensure that it is setup before testing that it is setup
* Fixed issue with bool retrieval. Removes double append
* Fixes Binance times, fixes bitfinex sell sides, fixes huobi times, sorts all responses
* Fixes poloniex trade id consistency. Makes recent trade for poloniex consistent with others (15 minutes). Fixes coinbene. Fixes localbitcoins to use quote currency. Fixes coinut times. Updates huobi trade id, saves okgroup trades. Fixes bid and ask to buy and sell
* Removes websocket trades for lakebtc as it did not meet our requirements for processing. Adds new constraints to the database to ensure we have uniqueness on trades where ID doesn't exist and doesn't trigger errors for trades where the tid does
* Fixes migration for postgres to downscale properly
* Really really fixes the psql index changes
* Fixes broken tests
* Now with working tests and no pocket lint
* Makes the side column nullable with no more constraint for it. adds migrations and runs generation. comments lakebtc
* Lint & Sprüngli
* Updates zb to use more appropriate side
* Fixes oopsie
* Attempts to address a data race from globals
* Fixes build
* Fixes missed regen rpc files
* Updates readme to point to trade readme. Fixes exchange_wrapper_coverage wrapper count and untested panics, tests bitfinex funding pair test for `fUSD`, adds shiny new param `tradeprocessinginterval`
* mint flavoured lint
* Uses the real default to set the default value by default
* Fixes some extra tests surrounding email sending and number incompatibility
* Reverts test config
* re-adds gom2/usdt currency
* Fixes typo, don't look!
* Fixes minor codelingo pickups
* Adds more precision to handling of trade data from Kraken. Expands test
* interface christmas tree
* lint
* Adds formatting of pair within binance wrapper, adds return of error from cli.ShowCommmandHelp
* Add formatting function to submit order wrapper functions
* Remove superfluous functionality
* Updated exchange wrapper issues to create a disruptive pair to see which exchanges require attention, updates currency code generation and matching
* reinstated format check, fixed tests
* fixed niterinos
* fix test
* fix spelling mistake
* make html file more aesthetic
* Add missing format pairs
* add formatting to pair for BTC Markets func
* fix spelling
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce
* return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo
* removed the Binance extra method GetClosedOrder
* func description corrected
* removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side
* GetClosedOrder implementation moved to GetOrderInfo
* changed GetOrderInfo params
* removed Canceled order.Type used for Kraken
* update QueryOrder in gctscript
* add missed params to QueryOrder validator (gctscript)
* fixed testing issues
* GetClosedOrder implemented for Kraken and Binance, fixed Binance MARKET order creaton, added rate, fee and cost fileds on SubmitOrder responce
* return Trades on Binance SubmitOrder, new validation methods on Binance and kraken GetClosedOrderInfo
* removed the Binance extra method GetClosedOrder
* func description corrected
* removed price, fee and cost from SimulateOrder response, as we get all necessary info in response to calculate them on client side
* GetClosedOrder implementation moved to GetOrderInfo
* changed GetOrderInfo params
* removed Canceled order.Type used for Kraken
* update QueryOrder in gctscript
* add missed params to QueryOrder validator (gctscript)
* fixed testing issues
* pull previous changes
* linter issues fix
* updated query_order exmple in gctscript, fixed params check
* removed orderPair unnecessary conversion
Co-authored-by: Vazha Bezhanishvili <vazha.bezhanishvili@elegro.eu>