* Improves subscribing by not allowing duplicates. Adds bitmex auth support
* Adds coinbase pro support. Partial BTCC support. Adds WebsocketAuthenticatedEndpointsSupported websocket feature. Adds GateIO support
* Adds Coinut support
* Moves Coinut WS types to file. Implements Gemini's secure WS endpoint
* Adds HitBTC ws authenticated support. Fixes var names
* Adds huobi and hadax authenticated websocket support
* Adds auth to okgroup (okex, okcoin). Fixes some linting
* Adds Poloniex support
* Adds ZB support
* Adds proper bitmex support
* Improves bitfinex support, improves websocket functionality definitions
* Fixes coinbasepro auth
* Tests all endpoints
* go formatting, importing, linting run
* Adds wrapper supports
* General clean up. Data race destruction
* Improves testing on all exchanges except ZB
* Fixes ZB hashing, parsing and tests
* minor nits before someone else sees them <_<
* Fixes some nits pertaining to variable usage, comments, typos and rate limiting
* Addresses nits regarding types and test responses where applicable
* fmt import
* Fixes linting issues
* No longer returns an error on failure to authenticate, just logs. Adds new AuthenticatedWebsocketAPISupport config value to allow a user to seperate auth from REST and WS. Prevents WS auth if AuthenticatedWebsocketAPISupport is false, adds additional login check 'CanUseAuthenticatedEndpoints' for when login only occurs once (not per request). Removes unnecessary time.Sleeps from code. Moves WS auth error logic to auth function so that wrappers can get involved in all the auth fun. New-fandangled shared test package, used exclusively in testing, will be the store of all the constant boilerplate things like timeout values. Moves WS test setup function to only run once when there are multiple WS endpoint tests. Cleans up some struct types
* Increases test coverage with tests for config.areAuthenticatedCredentialsValid config.CheckExchangeConfigValues, exchange.SetAPIKeys, exchange.GetAuthenticatedAPISupport, exchange_websocket.CanUseAuthenticatedEndpoitns and exchange_websocket.SetCanUseAuthenticatedEndpoints. Adds b.Websocket.SetCanUseAuthenticatedEndpoints(false) when bitfinex fails to authenticate
Fixes a typo. gofmt and goimport
* Trim Test Typos
* Reformats various websocket types. Adds more specific error messaging to config.areAuthenticatedCredentialsValid
* Step one: Sets up connection handler for websockets to always be connected until a shutdown event is received.
Sets up a vague subscription handler to ensure subscriptions are subscribed
* Adds support for resubscriptions for bitfinex, bitstamp, bitmex and btcc. Adds subscription params for special websocket subscription requirements. Removes subscription monitor from wait group so that it can exist despite a shutdown and continuously check
* Adds channel subscription support to bitmex, btse, coibasepro, coinut, gateio, gemini, hitbtc, huobi, hadax, kraken, okgroup, poloniex and zb
* Implements unsubscribe for bitfinex, btcc, btse, coinbasepro, gateio, gitbtc, huobi, hadax
* ManageSubscriptions now called from WSConnect and made private instead of inside individual exchanges. ManageSubscriptions can now unsubscribe. exchange_websocket_types.go now contains all exchange_websocket.go types to avoid clutter
* Adds it to websocket functionality so managesubscriptions will close when not supported
* Separates functions into testable functions to ensure logic works. Adds tests. Updates websocket setup to include verbosity (inherited from exchange). Adds no connection tolerance to fatal on failed reconnects
* More exchange_websocket tests. Updating to use pointers. Creation of equals func to make comparison easier
* Fixes okex, okcoin tests. Fixes race conditions. Removes pointer usage again.
* Adds subscribe and unsubscribe to wrappers
* Fixes deadlock. Fixes ws verbosity.
* Updates all exchanges to properly support subscription/connection feature. Also reintroduces race conditions....
* Moves connection varialbes to struct from package to allow each websocket to have their own reconnection checks. Neatens up logs
* Fixes lint/critic issues. Fixes tests. Removes unused function.
* Moves websocket ratelimiter to their own const variables. Fixes more race conditions with connecting variable
* Removes redundant subscribe functions. Ensuring only the exchange_websocket.go can manage subscriptions. Fixes debug logs to be verbose wrapped
* Fixes issue with slice copying. Re-adds okgroup default channels
* Adds nolint to append
* Adds comments and adds support for gateio auth request subscriptions
* Adds new test to ensure slices dont point to the same vars
* removes fatals. gofmt goimports
* more gofmts
* Addresses PR comments, removing empty and redundant lines
* Addresses PR comments. Ensures that writing to the websocket is single-threaded by adding a mutex to exchanges. Minimises wrapper code and moves subscription loops to exchange_websocket. Privatises ChannelsToSubscribe, Connecting properties and removeChannelToSubscribe func to prevent unnecessary tampering.
* Removes unused mutex. FMTS and IMPORTS
* Fixes request lock time change
* More specific logs
* Renames ws mutex. Fixes bitmex subscriptions. Increased gateio ratelimiter to 120ms. Removes ratelimiter from bitfinex, bitmex, bitstamp, btcc, btse, coibasepro, hitbtc, huobi, hadax, poloniex and zb
* changes recieved typo due to not being well received
* Fixes parsing issue with Huobi and hadax
* Fixes data race with more locks
* removes defer locks. fixes huobi/hadax verbose output
* Fixes double JSONEncode for coinut. Fixes verbose output for coinut
* gofmt,goimport for coinut
* Fixes issue where multiple connection monitors can spawn
* Removes defer exchange.WebsocketConn.Close() in defer handledata exit as connectionmonitor handles connections instead
* gofmt and go import
* More fmts
* updated golangci config to enable hugeparam linter
* ModifyOrder struct usage converted to a pointer
* OrderBook conversion to struct
* More conversion of large structs to pointers
* updated golangci config to enable hugeparam linter
* ModifyOrder struct usage converted to a pointer
* OrderBook conversion to struct
* More conversion of large structs to pointers
* disabled hugeParam check for golang again
* changed based on suggested feedback and fix for no default provider
* fixed typing
* Updated SetAPIURL() & UpdateConfig() to use pointers
* Withdraw functions now take a pointer to withdrawrequest struct
* Fund Withdraw is now a pointer
* Moved GetFee functions to use a pointer due to large size of feebuilder struct
* OrderCancellation usage converted to pointer due to size of struct
* merged up upstream/master and changes made to OKgroup code
* GetOrdersRequest usage converted to a pointer
* okgroup pointer migration
* reverted golangci config back to master
* removed old anx benchmark typo
* Initial currency overhaul before service system implementation
* Remove redundant currency string in orderbook.Base
Unexport lastupdated field in orderbook.Base as it was being instantiated multiple times
Add error handling for process orderbook
* Remove redundant currency string in ticker.Price
Unexport lastupdated field in ticker.Price
Add error handling for process ticker function and fix tests
* Phase Two Update
* Update translations to use map type - thankyou to kempeng for spotting this
* Change pair method name from Display -> Format for better readability
* Fixes misspelling and tests
* Implement requested changes from GloriousCode
* Remove reduntant function and streamlined return in currency_translation.go
* Revert pair method naming conventions
* Change currency naming conventions
* Changed code type to exported Item type with underlying string to reduce complexity
* Added interim orderbook process method to orderbook.Base type
* Changed feebuilder struct field to currency.Pair
* Adds fall over system for backup fx providers
* deprecate function and children and fix linter issue with btcmarkets
* Fixed requested changes
* Fix bug and move mtx for rates
* Fixed after rebase oopsies
* Fix linter issues
* Fixes race conditions in testing functions
* Final phase coinmarketcap update
* fix linter issues
* Implement requested changes
* Adds configuration variables to increase/decrease time durations between updating currency file and fetching new currency rates
* Add a collection of tests to improve codecov
* After rebase oopsy fixes for btse
* Fix requested changes
* fix after rebase oopsies and add more efficient comparison checks within currency pair
* Fix linter issues
* Initial commit
* Successful authenticated request implementation.
* Removes data from okcoin, okex. Implements some account okgroup endpoints. Adds tests
* Finishes account API endpoint implementations.
* Implements and adds tests for the following okgroup v3 API endpoints: GetSpotTradingAccounts, GetSpotTradingAccountForCurrency, GetSpotBillDetailsForCurrency, PlaceSpotOrder, PlaceMultipleSpotOrders, CancelSpotOrder, CancelMultipleSpotOrders, GetSpotOrders, GetSpotOpenOrders, GetSpotOrder, GetSpotTransactionDetails, GetSpotTokenPairDetails, GetSpotOrderBook, GetSpotAllTokenPairsInformation, GetSpotAllTokenPairsInformationForCurrency, GetSpotFilledOrdersInformation, GetSpotMarketData
* Implements and adds tests for all margin api endpoints: GetMarginTradingAccounts, GetMarginTradingAccountsForCurrency, GetMarginBillDetails, GetMarginAccountSettings, GetMarginLoanHistory, OpenMarginLoan, RepayMarginLoan, PlaceMarginOrder, PlaceMultipleMarginOrders, CancelMarginOrder, CancelMultipleMarginOrders, GetMarginOrders, GetMarginOpenOrders, GetMarginOrder, GetMarginTransactionDetails. Simplifies some Spot endpoints combining ForCurrency funcs where possible
* Adds all 29 Futures endpoints with tests. Updates comments and naming conventions. Adds standard realordertest func. Adds ability to make public API requests. Adds test purpose comments
* Adds 29 endpoints for SWAP API support. Adds tests for each endpoint. Declares response variables in function declaration. Simplifies URL parameter formatting
* Adds all ETT endpoints with tests
* Creates OKCoin and OKEX struct types. Moves okgroup tests to okcoin and okex exchanges. Updates withdraw fee calculation. Updates exchange.go exchange declaration to point to new types. Streamlines wrapper tests. Begins websocket integration
* Rebase fixes
* Deletes okcoin_types.go, okcoin_wrapper.go, okex_types.go, okex_wrapper.go. Combines okex,okcoin wrappers in okgroup_wrapper.go. Removes boilerplate url.values with new request struct type parsing. Adds github.com/google/go-querystring to go modules. Replaces USDT with USD for OKCoin tests. Moves OKEX specific endpoints (futures, swap & ett) to okex.go. Fixes recieving receiving again
* Maps the wrapper
* Parses json into time.Time instead of string + conversion
* Renames websocket.SetEnabled to websocket.SetWsStatusAndConnection. Maps main spot websocket functions for okgroup. Adds some basic ws tests
* Updates websocket default URLS, adds checksum tests, removes setdefaults from okgroup, adds WebsocketDataWrapper to wrap all okgroup websocket data responses, handles spot, swap, index and futures ticker, candle, trade, orderbook, funding fee websocket responses. Partially implements checksum validation on orderbook data. Fixes all linting issues
* Handles the calculation of okgroup websocket checksums. Adds tests
* Now all orderbook checksums are validated. Cleans up implementations and removes invalid checksum calculator functions. Adds function to parse ordertype. Puts verbose logs behind verbose check
* Removes parallel from okgroup tests. Removes unused code. Adds GetWsChannelWithoutOrderType. Improves handling of WS data types. Adds types for more ws channels. Simplifies update orderbook handling
* updates btse func name
* linting
* Fixes websocket connection issue with tests. Removes test verbosity
* Updates checksum calculation to handle more than 7 decimal places. Adds rate limiters. Uses != "" instead of len > 0. Adds new test to handle checksum calculation with 8 decimal places.
* Removes logging. Fixes orderbook wrapper references
* Adds slightly more robust resubscribe func. Adds websocket tests that can detect websocket errors
* Fixes linting issues
* Adds new WS func IsConnected() to expose ws status. Tests protect against channel timeout
* Adds test comments. Fixes parallel issues for futures tests
* Fixes error output for wrapper function
* Add get deposit address and fix authentication issue for ZB exchange
* Add get deposit address for Yobit exchange
* Add get deposit address for Poloniex exchange
* Add get deposit address for LocalBitcoins exchange
* Remove support for deposit address on Liqui exchange
* Add get deposit address for LakeBTC exchange
* Add notes as to the reason of non implementation
* Add get deposit address for Kraken exchange
* Add get deposit address for HitBTC exchange
* Add get deposit address for GateIO exchange
* Add get deposit address for Exmo exchange
* Remove support for deposit address on Coinut exchange
* Add test case for BTC Markets function still not supported yet.
* Add get deposit address for Bittrex exchange
* Add get deposit address for Bitstamp exchange
* Add get deposit address for Bitmex exchange
Rm unused swagger.json file in Bitmex exchange
* Add get deposit address for Bithumb exchange
* Add get deposit address for Binance exchange
Fix bug in Authenticated requests, concatenates sig string on end of query
* Remove support for deposit address on ANX exchange
* Updated account type to segregate multiple accounts on an exchange.
* Fix requested changes
* Add get deposit address for Bitfinex exchange
Add parameter for getting deposit address to wrapper
* Add get deposit address for ANX exchange
* Fix misspelling in Poloniex
* Drop working field and initialisation of zero value for Account Type
* Change switch to symbol package currency code
* Added new base logger
* updated example and test configs
* updated exchange helpers restful router & server
* logPath is now passed to the logger to remove dependency on common package
* updated everything besides exchanges to use new logger
* alphapoint to bitmex done
* updated bitmex bitstamp bittrex btcc and also performance changes to logger
* btcmarkets coinbase coinut exmo gateio wrappers updated
* gateio and gemini logger updated
* hitbtc huobi itbit & kraken updated
* All exchanges updatd
* return correct error for disabled websocket
* don't disconnect client on invalid json
* updated router internal logging
* log.Fatal to t.Error for tests
* Changed from fatal to error failure to set maxprocs
* output ANSI codes for everything but windows for now due to lack of windows support
* added error handling to logger and unit tests
* clear wording on print -> log.print
* added benchmark test
* cleaned up import sections
* Updated logger based on PR requests (added default config options on failure/setting errors)
* ah this should fix travici enc config issue
* Load entire config and clear out logging to hopefully fix travisci issue
* wording & test error handling
* fixed formatting issues based on feedback
* fixed formatting issues based on feedback
* changed CheckDir to use mkdirall instead of mkdir and other changes based on feedback
* Initial commit
* Updates signature for all withdrawal methods to use new withdrawRequest struct type
* Implements crypto withdraw features & tests for Alphapoint, ANX, Binance, Bitfinex, Bitflyer, Bithumb, Bitmex, Bitstamp, Bittrex, BTCC, BTCmarkets, CoinbasePro, Coinut. Updates WithdrawRequest type with more members. Breaking change to update real order testing for increased code coverage
* Updates all realOrder tests to run when no API key is present. Updates exchange functions to handle errors better
* Implements crypto withdrawals for Exmo, GateIO, Gemini, HitBTC, Huobi, HuobiHadax, Kraken, LakeBTC, Liqui, Localbitcoins, OKCoin, OKEX, Poloniex, Wex, Yobit and ZB. Updates real order test formatting for all real order tests
* Update alphapoint. Fixes anx typos. Adds function WithdrawFiatFundsToInternationalBank to exchange wrapper interface. Adds WithdrawFiatFundsToInternationalBank to alphapoint, bitmex, coinbasepro. Updates Kraken to use TradePassword property
* Reverts alphapoint to use ErrNotYetImplemented
* Fixes line spacing and removes unnecessary line
* Changed IBotExchange interface ModifyOrder function paramater and return value to exchange type for easier addition or retraction of variables.
* Function ModifyOrder for Binance not supported via API
* Change to unsupported function for exchange ZB
* Change to unsupported function for exchange Yobit
* Add modify order support for Poloniex
* Change to unsupported function for exchange Okex
* Change to unsupported function for exchange Localbitcoins
* Change to unsupported function for exchange Liqui
* Change to unsupported function for exchange LakeBTC
* Change to unsupported function for exchange Kraken
* Change to unsupported function for exchange Itbit
* Change to unsupported function for exchange HuobiHadax
* Change to unsupported function for exchange Huobi
* Change to unsupported function for exchange HitBTC
* Change to unsupported function for exchange Gemini
* Change to unsupported function for exchange GateIO
* Change to unsupported function for exchange Exmo
* Change to unsupported function for exchange Coinut
* Change to unsupported function for exchange Coinbase
* Change to unsupported function for exchange BTCMarkets
* Change to unsupported function for exchange Bittrex
* Change to unsupported function for exchange Bitstamp
* Add modify order support for Bitmex
* Add verbose header information in request package
* Add modify order support for Bithumb exchange
* Change to unsupported function for exchange Bitflyer
* Change to unsupported function for exchange Bitfinex
* Change to unsupported function for exchange ANX
* Change interface function signature
* Rm redundant code for authenticated requests in Bithumb
* Add error check if decimal values supplied for create or modifying an order on Bitmex
* Added test functions across the exchanges
* Rm comment for modify order on Alphapoint exchange
* Update tmpl file for exchange wrapper
* Changes method signature for cancelling all orders (experitmental). Implements cancelAllOrders wrapper for alphapoint, anx, binance
* Implements cancel all wrapper for bitfinex, bitmex, bitstamp, bittrex, btcmarkets, coinbasepro and hilariously coinut
* Changes method signature to only use one OrderCancellation type. Adds support for Exmo, gateio, gemini, itbit, lakebtc
* Adds/updates support for hitbtc, huobi, hadax, itbit and kraken
* Adds support for liqui, localbitcoins, okcoin, poloniex, wex and yobit. Splits up open order methods for poloniex
* Adds bithumb, okex and zb support. BTCC for another PR
* Updates bitflyer, bithumb, bitmex, coinut, okex and zb cancelAllOrders method to cancel via enabled currency pairs rather than a singular currency
* Adds tests to all exchanges to test wrapper function CancelAllOrders
* Fixes OKEX and huobi, btcmarkets, kraken, okCoin cancel order implementations
* Fixes coinut, hitbtc and okex api for authenticated requests
* Fixes comment and spacing
* Changes the CancelAllOrders signature to return orderids and errors along with a generic error.
* Fixes OKEX delimiter
* Removes spacing and test verbosity
* Removes more spacing
* Removes space
* Fixes okex rebasing issue. Also makes the maps instead of assuming they just work
* Reimplements order cancellation for alphapoint, anx, binance, bitfinex, bithumb, bitmex, bitstamp, bittrex, btcmarkets, coinbasepro, coinut, exmo, gateio, gemini, gitbtc, huobi, hadax, itbit, kraken, lakebtc, liqui, okcoin, okex, poloniex, wex, yobit and zb wrappers. Adds new order cancellation struct type. Updates old tests that pointed to the wrong unrenamed methods
* Sets up tests for all supported exchanges. request.DoRequest errors when response status is not 200
* Updates alphapoint, coinut, hitbtc, lakebtc cancel order implementations. Finishes testing
* Adds localbitcoin cancel order wrapper support
* Fixes tests and build issues. Adds WexIssue flag for tests
* Changes CancelOrder signature to only return error. Allows exchange to format currency pairs with delimiters
* Sets up Alphapoint and ANX wrappers to use exchange implementations of submit orders
Creates const types for orderType and orderSides
* Changes wrapper func SubmitExchangeOrder return type to string to account for GUID order ID responses
* Adds binance and bitfinex new order wrapper support. Fixes alphapoint order wrapper.
* Adds bitflyer type for exchange order. Adds bithumb and bitmex wrapper support for SubmitExchangeOrder
* Fixes bitmex typo. Adds bitstamp, bittrex, coinbasePro, coinut SubmitExchangeOrder wrapper support
* Maps exchange wrapper function 'SubmitExchangeOrder' to exchange methods for exmo, gateio, gemini, hitbtc, huobi, huobihadax and itbit
* Maps exchange wrapper function 'SubmitExchangeOrder' to exchange methods for kraken, lakebtc, liqui, okcoin, okex, poloniex, wex, yobit and zb
* Updates interface, fixes wrapper type mismatch and fixes tests from changed parameters
* Adds generic support for SubmitExchangeOrder for localbitcoins_wrapper
* Updates wrappers tests and submit order implementations for anx, binance, bitfinex, bitflyer (cannot test), bitmex, bitstamp
* Fixes bitstamp tests
* Adds tests for submitting orders with bittrex, btcmarkets, coinbasepro and coinut
* Adds tests for exmo, gatio, gemini and hitbtc
Makes adjustments where necessary
* Adds tests and updates order implementations for huobi, huobiHadax, itbit, kraken, lakebtc, liqui, okcoin, okex, poloniex, wex, yobit and zb. Not all have been verified due to exchange issues
* Fixes variable names and symbol usages
* Fixes HitBTC order API implementation
* Removes formatting code. Adds error handling for unsupported order types. Fixes typo
* Fixes missed replace for new ToString function. Removes unused functions
* Changes report of unknown withdrawal type with bitshift approximation.
Improved code cov
* Updates wrapper SubmitExchangeOrder return to use a fancy new SubmitOrderResponse struct type to clarify if an order submission is successful or not
* Updated documentation tool
Added templates
Updated documentation using tool
* Fixed incorrect version in web README
* Added new templates to tool.
Updated documents in templates across the code base.
Used tool to regenerate documentation.
- Modifications made to the request package. Planned improvements will be
sending requests on intervals, rate limiter back off support, dynamic tuning
and requests packaged into a request job group.
- Can modify each exchanges individual HTTP client (e.g timeout and
transport settings).
- Bot now uses an exchange config HTTP timeout value.
- Bot now uses a global HTTP timeout (configurable).
- Batched ticker request support for exchanges.
- Ticker and Orderbook fetching now are spanned accross multiple
go routines and regulated by a sync wait group.
- Fixes hack used to load exchanges, now uses a sync wait group.
- Ticker and Orderbook storage and fetching now uses mutex locks.
- New pair function for finding different pairs between two supplied
pair arrays. This is used for currency pair updates for exchange which
support dynamic updating.
- Shows removal/additions of dynamic updates currencies.