* Subscribe/Unsubscribe methods added
* migration to v3
* removed orderbook from rest
* WsUpdateOrderbook updated to reflect changes to v2
* Added comment for exported func
* removed logging
* unexported structs that are not used globally moved seed to own function
* unexported functions not used outside package
* Support reconnection message from bitstamp
* moved from range key/val
* using ticket.Spot instead of string
* Seperated out WsReadData & WsHandleData to allow for better testing of websocket messages
* ah should continue to next iteration and not break execution on json decode
* code formatting clean up
* reworded connection message
* return out of method instead of just breaking loop
* formatting changes and replaced SPOT with ticket.Spot type
* Fixes issue where first if statement always gets hit
* fmtimport
* Slightly more granular checks for keys, secret keys and clientids
* Moves log warn and removes extra checks
* fix balance responce
* Fixed OrderHistory unmarshalling on the GateIo
* fix int convertation in the GetOrderHistory function
* fix issue on order submit : Binance exchange raw response: {"code":-1102,"msg":"Mandatory parameter 'timeInForce' was not sent, was empty/null, or malformed."}
* Okgroup: fix issue on empty notional GetSpotOrderResponse
* Okgroup: fix issue with empty order status. order start is required for orderHistory request
* HUOBU: fix order currency mapping in GetActiveOrders method
* OKGroup: fix currency name on GetAccountInfo
* ZB: fixed wrong error code on order send method
* OKGroup: add missing fields to GetActiveOrders mapping
* huobi: add missing fields to GetActiveOrders/GetOrderHistory response mapping
* gateio: add order status field to GetActiveOrders response
* gateio: fix orderId on SubmitOrder response
* - poloniex: fix 422 on private API call
- poloniex: fix empty order history
* - poloniex: fix 422 on private API call (revert)
* GateIo: Fix unmarshalling issue
* Huobi: removing redundant breaks
* Huobi: fix rangeValCopy in GetActiveOrders/GetOrderHistory methods
* - poloniex: fix 422 on private API call
* Revert "- poloniex: fix 422 on private API call"
This reverts commit 4748227a
Took 39 minutes
* Replace nonce increment with mutex to atomic incrementation
Took 20 minutes
* Fix ZB order unmarshaling
Took 6 minutes
* Fix CancelSpotOrderResponse unmarshaling on OKGroup
Took 2 minutes
* fix OrderDate on huobi
Took 3 minutes
* fix OrderDate on binance
Took 1 minute
* fix OrderDate on huobihadax
Took 24 minutes
* Improves okgroup and kraken websocket tests so there is less overhead required
* Fixes declaration shadowing
* Fixes duplication
* Switches error to fatal for wsconnection problems in test.
* 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
* First pass adding DumpResponse
* WIP
* Added httpDebug flag to SendPayload
* anx -> coinbase converted
* HTTPDebug flag added to all exchanges
* Updated Alphapoint:
* reworded error message
* Corrected itbit and huobihadax sendpayload
* Removed setting of default value
* don't return body for response as we already get this in verbose mode
* body is now included based on verbose setting
* WIP
* Due to issues with DumpResponse and gzip decoding use raw response from exchange for body output Also adds gzip decoding back as bug fix for OK group exchange
* removed additional new line
* Added URL path to dumpbody display as well
* Added fix for balances as GateIO returns object or array depending on if you have any balances
* Adds GetOrderInfo function for REST API
* Correctly assign WebsocketURL
* Adds websocket auth support to GateIO
* reverts Host changes
* unexported getbalance and signin
* Add WsGetOrderInfo to retreive information on a set order
* unexport wsGetOrderInfo
* renamed freeze to locked to match rest interface
* Removed old logging
* Added detailed error messages and testing disabling auth api support if WS auth fails
* Removed old code for nonce
* reworked GetOrder to return an error if no order is found
* gofmt tests
* removed unneeded event from websocketresponse
* fixed casing on websocket
* Fixed condition
* Adds logic to ensure nothing proceeds a connectivity check and adds tests
* Adds waitgroup to verify monitor routine startup before shutdown is called thus eliminating race condition
* fix func desc and test func naming convention
* Add invalid address check
* Fix race condition for okgroup on wait group when instant shutdown called
* Fix fmt issue with gofmt
* Updates nonce generation to adhere to fifo channel buffer before request executes by routine
* removed unused variables, lns etc
* Fix requested changes and added in timer that disengages lock if out of scope error occurs
* Fixed woopsy daisy issue
* Add benchmark, reduce time in force to unlock before stack insertion, add nil check for edge case
* Remove unusued waitgroup field
* use return nonce.Value and method, rm redundant nonce code, fix tests.
* Fix linter issue: unnecessary conversion
UpdateTicker: drop need for start timestamp as the latest entry will always be returned by default
UpdateOrderbook: fix string comparison so that orderbook entries will actually be appended
NOTE: As of this time, Bitmex doesn't support a ticker API endpoint so the only two options are a) last trade for an asset (which GCT uses) or b) orderbook data query
Fixes issue: https://github.com/thrasher-/gocryptotrader/issues/282
* fix balance responce
* Fixed OrderHistory unmarshalling on the GateIo
* fix int convertation in the GetOrderHistory function
* fix issue on order submit : Binance exchange raw response: {"code":-1102,"msg":"Mandatory parameter 'timeInForce' was not sent, was empty/null, or malformed."}
* Okgroup: fix issue on empty notional GetSpotOrderResponse
* Okgroup: fix issue with empty order status. order start is required for orderHistory request
* HUOBU: fix order currency mapping in GetActiveOrders method
* OKGroup: fix currency name on GetAccountInfo
* ZB: fixed wrong error code on order send method
* OKGroup: add missing fields to GetActiveOrders mapping
* huobi: add missing fields to GetActiveOrders/GetOrderHistory response mapping
* gateio: add order status field to GetActiveOrders response
* gateio: fix orderId on SubmitOrder response
* - poloniex: fix 422 on private API call
- poloniex: fix empty order history
* - poloniex: fix 422 on private API call (revert)
* GateIo: Fix unmarshalling issue
* Huobi: removing redundant breaks
* Huobi: fix rangeValCopy in GetActiveOrders/GetOrderHistory methods
* WIP
* Added check for time out of sync
* merged upstream/master
* added tests
* Increased configuration options for NTPclient and test coverage
* removed unneeded config save at end of ntp update
* Added test for empty response to confirm it will loop
* formatting correction
* converted to pointer to allow for default allowance settings to be checked
* added readme for NTP server
* corrected some formatting
* updated configtest negativedifference value
* gofmt config_test.go for correct import order
* corrected typo value in test
* bugfix for windows newline and changes based on PR feedback
* added minus sign to output
* fixed negative number input
* Fixed spelling mistakes and removed redundant test
* reverted back to a positive number in the config instead of negative for allowednegativedifference
* restructured code for cleaner output
* fix balance responce
* Fixed OrderHistory unmarshalling on the GateIo
* fix int convertation in the GetOrderHistory function
* fix issue on order submit : Binance exchange raw response: {"code":-1102,"msg":"Mandatory parameter 'timeInForce' was not sent, was empty/null, or malformed."}
* Okgroup: fix issue on empty notional GetSpotOrderResponse
* Okgroup: fix issue with empty order status. order start is required for orderHistory request
* HUOBU: fix order currency mapping in GetActiveOrders method
* OKGroup: fix currency name on GetAccountInfo
* ZB: fixed wrong error code on order send method
Fixes these happy little accidents:
1) Config: Actually use enabled pairs for config.GetEnabledPairs
2) Pair format: Handle edge case for pairs DASHKRW vs DSHKRW and improve testing
* Adds a orderbook buffer to prevent out of order issues with WS orderbooks. Internalises latest orderbook for comparisons sake as getorderbookex is unreliable due to REST updates
* Adds a basic rate limiter for WS requests. Updates buffer to support multiple channels
* Uses earliest buffer 'lastupdate' to compate to existing orderbook's 'lastupdate' instead of last
* Adds WS test for buffer use
* Adds out of order test
* Fixes blocking bid updates, fixes issue where orderbook processing occured in wrong area, adds detailed verbose debugging, uses pointer for channelData use
* Updates test to adapt to buffer limits, reduces kraken buffer to 3
* Change websocket connection check in tests. Change error handling. Implement requestID in data responses for WS. Change test to prevent default subscriptions from preventing test execution with extra data. Updates orderbook tests to call correct functions to prevent resubscriptions. Removes resubscribe on subscription status failure
* Fixes linting issues
* Fixes error handling
* Really basic getSimulated fee function everywhere
* Worst case fees for all exchanges
* Adds tests, fixes comment spacing. Adds wrapper logic. Makes test api key var name consistent. Removes some okcoin ETT tests
* Removes redundant functions
* linting issues. Fixes introduces huobi issues
* More linting
* Stops trying to hide ETT problems, uses iota
* Skips ETT tests for now
* Initial commit. Adds ticker, candle and trade, subscription support
* Adds support for spread and orderbooks
* Adds new currency pair delimiter ("/"), Adds dedicated websocket Connected channel handler, Updates Kraken websocket capability definition, Refines websocket tests to connect and disconnect without freezing, separates WebsocketUnsubscribeEventRequest ChannelID into its own struct WebsocketUnsubscribeByChannelIDEventRequest to prevent bad json WS requests, Adds asset type to orderbook, Kraken WS handles connection better
* Removes duplicate type, reverts config value
* Addresses error returns and changes writeToWebsocket to use byte array. Removes deferred funcs in tests. Increases test listening limit for rare cases
* Fixes verbose log. Rearranges WS Connect async ordering. Fixes DATA RACE. Fixes random okex tests. Ensures Kraken WS tests only connect once