* 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
* Adding Devcontainer support
* Update .devcontainer/devcontainer.json
Awesome. I had to manually install the extension. Adding this would be perfect
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Update docker-compose.yml
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Adds lending rates/borrows to FTX and the command
* Movements, renames, rpc test
* Fleshing out rpc response
* Allows rpcserver to calculate offline (but not gctcli). Expands tests
* rn structs. add exchange_wrapper_issues support
* Adds a nice yearly rate
* Surprise yearly borrow rate!
* Rn+Mv to margin package. Fixes some serious whoopsies
* Adds average lend/borrow rates instead of sum
* rm oopsie whoopsie
* This is what the linter was having an issue with
* re-gen
* lintl
* niteroos
* implements futures functions and GRPC functions on new branch
* lint and test fixes
* Fix uneven split pnl. Adds collateral weight test. docs. New clear func
* Test protection if someone has zero collateral
* Uses string instead of double for accuracy
* Fixes old code panic
* context, match, docs
* Addresses Shazniterinos, var names, expanded tests
* Returns subaccount name, provides USD values when offlinecalc
* Fixes oopsie
* Fixes cool bug which allowed made up subaccount results
* Subaccount override on FTX, subaccount results for collateral
* Strenghten collateral account info checks. Improve FTX test
* English is my first language
* Fixes oopsies
* Adds some conceptual futures order details to track PNL
* Initial design of future order processing in the backtester
* Introduces futures concept for collateral and spot/futures config diffs
* Fixes most tests
* Simple designs for collateral funding pair concept
* Expands interface use so much it hurts
* Implements more collateral interfaces
* Adds liquidation, adds strategy, struggles with Binance
* Attempts at getting FTX to work
* Adds calculatePNL as a wrapper function and adds an `IsFutures` asset check
* Successfully loads backtester with collateral currency
* Fails to really get much going for supporting futures
* Merges master changes
* Fleshes out how FTX processes collateral
* Further FTX collateral workings
* hooks up more ftx collateral and pnl calculations
* more funcs to flesh out handling
* Adds more links, just can't fit the pieces together :(
* Greatly expands futures order processing
* Fleshes out position tracker to also handle asset and exchange +testing
* RM linkedOrderID. rn positioncontroller, unexport
* Successfully tracks futures order positions
* Fails to calculate PNL
* Calculates pnl from orders accurately with exception to flipping orders
* Calculates PNL from orders
* Adds another controller layer to make it ez from orderstore
* Backtester now compiles. Adds test coverage
* labels things add scaling collateral test
* Calculates pnl in line with fees
* Mostly accurate PNL, with exception to appending with diff prices
* Adds locks, adds rpc function
* grpc implementations
* Gracefully handles rpc function
* beautiful tests!
* rejiggles tests to polish
* Finishes FTX testing, adds comments
* Exposes collateral calculations to rpc
* Adds commands and testing for rpcserver.go functions
* Increase testing and fix up backtester code
* Returns cool changes to original branch
* end of day fixes
* Fixing some tests
* Fixing tests 🎉
* Fixes all the tests
* Splits the backtester setup and running into different files
* Merge, minor fixes
* Messing with some strategy updates
* Failed understanding at collateral usage
* Begins the creation of cash and carry strategy
* Adds underlying pair, adds filldependentevent for futures
* Completes fill prerequsite event implementation. Can't short though
* Some bug fixes
* investigating funds
* CAN NOW CREATE A SHORT ORDER
* Minor change in short size
* Fixes for unrealised PNL & collateral rendering
* Fixes lint and tests
* Adds some verbosity
* Updates to pnl calc
* Tracks pnl for short orders, minor update to strategy
* Close and open event based on conditions
* Adds pnl data for currency statistics
* Working through PNL calculation automatically. Now panics
* Adds tracking, is blocked from design
* Work to flesh out closing a position
* vain attempts at tracking zeroing out bugs
* woww, super fun new subloggers 🎉
* Begins attempt at automatically handling contracts and collateral based on direction
* Merge master + fixes
* Investigating issues with pnl and holdings
* Minor pnl fixes
* Fixes future position sizing, needs contract sizing
* Can render pnl results, focussing on funding statistics
* tracking candles for futures, but why not btc
* Improves funding statistics
* Colours and stats
* Fixes collateral and snapshot bugs
* Completes test
* Fixes totals bug
* Fix double buy, expand stats, fixes usd totals, introduce interface
* Begins report formatting and calculations
* Appends pnl to receiving curr. Fixes map[time]. accurate USD
* Improves report output rendering
* PNL stats in report. New tests for futures
* Fixes existing tests before adding new coverage
* Test coverage
* Completes portfolio coverage
* Increase coverage exchange, portfolio. fix size bug. NEW CHART
* WHAT IS GOING ON WITH PNL
* Fixes PNL calculation. Adds ability to skip om futures tracking
* minor commit before merge
* Adds basic liquidation to backtester
* Changes liquidation to order based
* Liquidationnnnnn
* Further fleshes out liquidations
* Completes liquidations in a honorable manner. Adds AppendReasonf
* Beginnings of spot futures gap chart. Needs to link currencies to render difference
* Removes fake liquidation. Adds cool new chart
* Fixes somet tests,allows for zero fee value v nil distinction,New tests
* Some annoying test fixes that took too long
* portfolio coverage
* holding coverage, privatisation funding
* Testwork
* boring tests
* engine coverage
* More backtesting coverage
* Funding, strategy, report test coverage
* Completes coverage of report package
* Documentation, fixes some assumptions on asset errors
* Changes before master merge
* Lint and Tests
* defaults to non-coloured rendering
* Chart rendering
* Fixes surprise non-local-lints
* Niterinos to the extremeos
* Fixes merge problems
* The linter splintered across the glinting plinths
* Many nits addressed. Now sells spot position on final candle
* Adds forgotten coverage
* Adds ability to size futures contracts to match spot positions.
* fixes order sell sizing
* Adds tests to sizing. Fixes charting issue
* clint splintered the linters with flint
* Improves stats, stat rendering
* minifix
* Fixes tests and fee bug
* Merge fixeroos
* Microfixes
* Updates orderPNL on first Correctly utilises fees. Adds committed funds
* New base funcs. New order summary
* Fun test updates
* Fix logo colouring
* Fixes niteroonies
* Fix report
* BAD COMMIT
* Fixes funding issues.Updates default fee rates.Combines cashcarry case
* doc regen
* Now returns err
* Fixes sizing bug issue introduced in PR
* Fixes fun fee/total US value bug
* Fix chart bug. Show log charts with disclaimer
* sellside fee
* fixes fee and slippage view
* Fixed slippage price issue
* Fixes calculation and removes rendering
* Fixes stats and some rendering
* Merge fix
* Fixes merge issues
* go mod tidy, lint updates
* New linter attempt
* Version bump in appveyor and makefile
* Regex filename, config fixes, template h2 fixes
* Removes bad stats.
* neatens config builder. Moves filename generator
* Fixes issue where linter wants to fix my spelling
* Fixes pointers and starts
* 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>
* orders: add method to Limit to retrieve order execution limit snapshots
* currency/btcmarkets: add error and update field name to standard
* linter: fix
* limts: don't return pointer
* limit: Add notes
* glorious: nits
* linter: fix
* limit: reinstate nil check
* exchanges: change field names to be more consistent (@thrasher-) suggestion
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* exchange/wrapper: expose GetCredentials func to IBotInterface
* exchanges: split up GetAuthenticatedAPISupport into specific function calls, organize IBotExchange functionality getter functions
* interface: change name - RPCSercer: rm GetBase func call.
* glorious: nits (fix panic)
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* engine: Add websocket interceptor register function
* Update engine/engine.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* Update engine/websocketroutine_manager_types.go
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* engine/websock: switch to data handler function register and range over handlers to still include default gct handling
* engine/websocket: change name
* glorious: nits
* linter: fix
* glorious: nits
Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
* ordermanager: fix residual test issue from #917 and reduce some racey action
* glorious: nits; also removed functions that weren't being used and were unexported
* rm: pew
* linter: fix issues
* glourious: nits
* credentials: fix test issue with racey racey horse basey
* order: slight optimizations
* orders: add benchmarks, small optimize and change order side to uin8 for comparitive optimizations.
* orders: continue to convert string type -> uint
* orders/backtester: interim move type to orders package, later can expand or deprecate.
* orders: handle errors
* orders: optimize filters and remove error returns when its clearly not needed
* orders: remove log call
* backtester: zero value check
* orders/futures: zero value -> flag
* linter: fix
* linter: more fixes
* linters: rides again
* glorious: nits
* common: Add zero value unix check for time values; also addresses glorious nits
* glorious scott: nits
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* orderbook/buffer: data integrity and resubscription pass
* btcmarkets: REMOVE THAT LIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIINE!!!!!!!!!!!!!!!!!
* buffer: reinstate publish, refaactor, invalidate more and comments
* buffer/orderbook: improve update and snapshot performance. Move Update type to orderbook package to util. pointer through entire function calls. (cleanup). Change action string to uint8 for easier comparison. Add parsing helper. Update current test benchmark comments.
* dispatch: change publish func to variadic id param
* dispatch: remove sender receiver wait time as this adds overhead and complexity. update tests.
* dispatch: don't create pointers for every job container
* rpcserver: fix assertion issues with data publishing change
* linter: fixes
* glorious: nits addr
* depth: change validation handling to incorporate and store err
* linter: fix more issues
* dispatch: fix race
* travis: update before fetching
* depth: wrap and return wrapped error in invalidate call and fix tests
* btcmarkets: fix commenting
* workflow: check
* workflow: check
* orderbook: check error
* buffer/depth: return invalidation error and fix tests
* gctcli: display errors on orderbook streams
* buffer: remove unused types
* orderbook/bitmex: shift function to bitmex
* orderbook: Add specific comments to unexported functions that don't have locking require locking.
* orderbook: restrict published data functionality to orderbook.Outbound interface
* common: add assertion failure helper for error
* dispatch: remove atomics, add mutex protection, remove add/remove worker, redo main tests
* dispatch: export function
* engine: revert and change sub logger to manager
* engine: remove old test
* dispatch: add common variable ;)
* btcmarket: don't overflow int in tests on 32bit systems
* ci: force 1.17.7 usage for go
* Revert "ci: force 1.17.7 usage for go"
This reverts commit af2f95563bf218cf2b9f36a9fcf3258e2c6a2d91.
* golangci: bump version add and remove linter items
* Revert "golangci: bump version add and remove linter items"
This reverts commit 3c98bffc9d030e39faca0387ea40c151df2ab06b.
* dispatch: remove unsused mutex from mux
* order: slight optimizations
* nits: glorious
* dispatch: fix regression on uuid generation and input inline with master
* linter: fix
* linter: fix
* glorious: nit - rm slice segration
* account: fix test after merge
* coinbasepro: revert change
* account: close channel instead of needing a receiver, push alert in routine to prepare for waiter.
Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io>
* test: use `T.TempDir` to create temporary test directory
This commit replaces `ioutil.TempDir` with `t.TempDir` in tests. The
directory created by `t.TempDir` is automatically removed when the test
and all its subtests complete.
Prior to this commit, temporary directory created using `ioutil.TempDir`
needs to be removed manually by calling `os.RemoveAll`, which is omitted
in some tests. The error handling boilerplate e.g.
defer func() {
if err := os.RemoveAll(dir); err != nil {
t.Fatal(err)
}
}
is also tedious, but `t.TempDir` handles this for us nicely.
Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
* test: fix TestEncryptTwiceReusesSaltButNewCipher on Windows
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
* test: fix TestCheckConnection on Windows
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
* test: fix TestRPCServer_GetTicker_LastUpdatedNanos on Windows
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
* test: cleanup TestGenerateReport
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>