* drop common uuid v4 func and imported package as needed
* removed common functions regarding json marshal and unmarshal and used the json package directly. WRT unmarshal it was calling reflect and converted to string which is also checked in the JSON package so it was doing a double up, this will be a tiny gain as it was directly used in the requester package for all our outbound requests.
* add in string
* explicitly throw away return error value
* atleast return the error that websocket initialise returns
* return error when not connected
* fix comment
* Adds comments
* move package declarations
* drop append whenever we call supported
* remove unused import
* Change incorrect spelling
* fix tests
* fix go import issue
* Add directories to exclusion list && change default repo string
* Add in .idea folder to directory exclusion list
* cleaned
* Added support for calling the tool outside of its file
* fix formatting
* changed strings
* Adds new file.Move func to address a bug with Golang/Docker volumes when using os.Rename
Also uses TempDir for tests instead of live directories and increases test coverage for file.Write
* Goimport the imports
* Make usage of file package name consistent so it no longer clashes with vars
* Remove outputFile if io.Copy fails
* Improved error message when no config is set on startup
* Change inccorect error wording
* bump Bitfinex websocket orderbook return length to max
* temporary fix of incorrect orderbook updates, limit to bid and ask len of 100, will be extended later if needed
* Fixed issue in binance websocket that appended 0 volume bid/ask items
* Fix panic when unmarshalling an empty pair from config
* Add get pair asset method for exchange base
Fix Bitmex orderbook stream
Unbuffer Bitmex orderbook stream
* force syncer to update ticker instead of fetch, which allows a stream
* Fix websocket last price for coinbasepro
* fix websocket ticker for coinut
* Fix websocket orderbook stream Huobi
* increase orderbook depth REST for Huobi
* Fix websocket support and ensure data integrity
* Fix time parsing issue after error checks
* check error, only process enabled currency pairs, signal websocket data processing
* expanded websocket functionality for okgroup
* Add logic to not process zero length slice for orderbooks
* fix websocket ticker only updating enabled and individual book updates
* ZB fixes to order submission/retrieval/cancellation w/ general fixes
* Quiet unnecessary warning
* updated config entry values for REST and websocket (initial hack until I come up with a better solution for asset types)
* Ch GetName function to field access modifyer & rm useless code
* Add in error I missed
* Nits addressed
* some more fixes
* Turned kraken default websocket to true and some small changes
* fixes linter issues
* Ensured okgroup books and sent update through to datahandler. Zb update as well.
* Add test case to get asset type from pair
* Add test for pairs unmarshal
* Add testing and addressed nits
* FIX linter issue
* Addressed Gees nits
* Thanks glorious spotter
* more nitorinos
* Addres even more nits
* Add stringerino 4000
* Fix for panic cause by sort slice out of range, also nits addressed
* fix linter issues
* Changed from function to field access
* Changed from function to field access
* fix for orderbook update panic, removes quick fix - caused by sync item fetching through same protocol
* Add new test and update random generator
* pass in invalid string to future ob fetching, due to futures contract expire and a http 400 error is returned
* Attempts to update orderbook so it doesn't need to sort
* Reverts the ws ob stuff. Gets rid of sorting because it happens later. Adds some exchange features
* update existing feature lists. Expands list definition to match my emotions
* Adds bithumb bitmex and bitstamp. adds a couple more types
* Features for you, features for me, features for bittrex, btcmarkets, btse, coinbasepro, coinut, exmo, gateio and gemini
* Features for hitbtc, huobi, itbit, kraken, lakebtc, lbank, localbitcoins, okcoin, okex, poloniex, yobit, zb
* Who can forget good old alphapoint?
* Adds btcmarksets websocket :glitch_crab: fixes alphapoint features
* Adds extra data not in the documentation :/
* Replaces websocket features by using protocol features. However, it breaks it due to import cycles. I'm not sure what I'll do just yet
* Removes import cycle via duplicate structs.
* Increases coverage of config with `TestCheckCurrencyConfigValues`. Moves all currency pair package types into their own files or places it at the bottom of files if necessary
* Increase coverage in code.go
* One way of determining a test has failed, is when to it fails. Removed redundant explanation
* Increases code coverage of conversion
* Lint fixes
* Fixes orderbook tests
* Re-adds sorting because its important to still have the internal pre-processed orderbook to be representative of a real orderbook
* Secret lints that did not show up via Windows linting
* Adds protocol package to contain exchange features
* Fixes protocol implementation
* Fixes ws tests
* Addresses the following: Removes st-st-stutters in config types, changes GetAvailableForexProviders -> GetSupportedForexProviders, removes errors from tests where error is nil, removes orderbook setup when not necessary, removes import newlines, removes false bools from declaration, changes should of to should have
* imports and casing
* Fixes two more nil error checks
* Migrated to goose & sqlboiler
* create tests with sqlboiler
* code clean up
* Added gct -> sqlboiler config gen
* dropped pgx support
* dropped pgx support because who needs connection pools
* reenable sqlite audit tests
* first pass of migration changes
* stuff is broken :D
* sqlboiler :D
* end of date commit
* Added comments code clean up
* revert go module files back to upstream
* bug fix
* pushed go.mod update to use correc goose version
* renamed sqlite to sqlite3 for consistency across codebase and PR feedback changes
* makefile updates
* things are broken end of day commit
* added postgresql test
* use correct database name
* travis fixes for env vars
* travis fixes for env vars
* test fixes
* run migration on test setup
* test adding postgres support to appveyor
* Skip tests on appveyor due to issues with missing binaries
* oh yeah i have to support windows don't i
* bumped goose version up
* add postgres to osx
* fix travis config as osx does not support services move spin up to before_script
* added PGDATA path fix
* pass PG_DATA to pg_ctl
* added initdb to before install
* fixes to wording and bumps up goose version
* who needs ssl anyway
* moved ssl to correct section :D
* bumped goose version up
* unbreak travis
* unbreak travis
* fix if database is disabled in config
* move strings to consts
* converted more strings to const
* improvements to sqlboiler mmodel gen
* Added contrib\sqlboiler file
* sqlboiler windows contrib fixes
* bumped goose version up
* :D whoops
* further fixes to sql models
* further fixes to sql models
* database type fix for config gen
* README update
* go.mod clean up
* added config details for appveyor
* appveyor ordering fix
* force psql9.6
* appveyor config changes
* all the environmen vars
* model changes for psql
* model changes for psql
* sqlite model fixes
* attempt at osx fix
* added error check for migration
* typos and check against goose error instead of string :D
* updated sqlboiler commit id
* bump sqlboiler version again
* set decimal package to @0bb1631
* readme and makefile updates
* bump goose version update readme and add override flag to config gen
* README typo fix and lowered inserts in test down to 20 as we are only testing that inserts work running 200 was unnecessary
* added gctcli command for audit event
* Added debug output toggle to config added both postgres & sqlite support to gctcli command
* Wording changes on errors
* set sqlite to 1 connection to stop locke database issues
* Usage update for order
* README updates with config examples
* go.mod/sum tidy
* removed lines in import second
* removed lines in imports
* convert local time to utc for database and display output
* go mod clean up and error checking to time
* renamed all packages to sqlite3
* added windows command output for sql model gen
* time conversion fix
* time conversion on gctcli
* Adds extra properties to Websocket ticker. Adds new properties to binance and bitfinex, but doesn't test anything yet. Changes names and properties of ticker package to make more streamlined
* Adds support for coinbasepro, coinut, gateio, gitbtc, huobi, hadax, kraken, okex, okcoin. Adds quoteVolume
* Adds poloniex and ZB ticker datas
* Updates ANX, Binance, Bitfinex, Bistamp, Bittrex, BTCMarkets, BTSE, CoinbasePRo, Coinut, Exmo tickers. It looks like a whole bunch of stuff is wrong in how tickers are done though :/
* Updates tickers everywhere. Will revert batch ones
* Re-Preseves ticker batching
* Minor fixes to ticks and removal of comment
* Logging errors instead of returning mid loop. Adds bitfinex batch ticker processing. Fixes unrelated okgroup wallet bug
* Removes bad code I wrote preventing function from running if feature not enabled
* Fixes issue with bitmex and rebase issues
* Fixes bitmex iterator error, splits hitbtc ticker requests
* Fixes okgroup currency pair formatting. Updates okgroup to use ticker batching. Fixes okgroup ticker issues due to assetTypes. Fixes okgroup ws pinging. Fixes Kraken's currency pairs formatting. Reverts ANXs auto parsing back to strings because ANX json makes me cry. Minor property improvements for coinut, coinbasepro, btse, exmo. Protects wshandler manageSubscriptions() from running and returning an error when feature not supported
* Updates config example to reflect the underscore dash situation
* Fixes a config delimiter oopsie. Simplifies ANX wrapper ticker parsing. Fixes bittrex date parsing. Simplifies okcoin switch to if.
* Fixes super fun issue where kraken has updated their currency pair format and must add new delimiter support. Fixes super fun issue where okex has updated their currency pair format and must add new delimiter support. Fixes super fun issue where okcoin has updated their currency pair format and must add new delimiter support.
* Updates config example for kraken
* Adds lbank batch ticker support. Adds details to errors
* Updates FetchTradablePairs to use the config delimiter to prevent issues if the delimiter ever changes
* Fixes nil reference bug. Uses NAme not GetNAme
* Fixes hardcoded delimiter in Binance. Expands bitfinex websocket ticker fields. Updates Bitstamp rate limits. Expands BTSE ticker data fields. Fixes typo in coibasepro. Expands Coinut ticker data. Renames currency to curr as it conflicts with package name. Expands GateIO websocket ticker data. Fixes ticker data implementation for huobi and huobi hadax. Reverts ticker map to string instead of assetType. Fixes real stupid bug I introduced which preveted subscriptions from running :glitch_crab: Adds Price ATH to ws ticker type. Adds quotevolume to yobit ticker. Uses delimiter in ZB rather than hardcoded field.
* Fixes bug in syncer where if the websocket is already connected, then UsingWebsocket is not set
* Updates broken tests
* Simplifies poloniex frozen check
* Updates configtest.json with new delimiters
* Renames shorthand properties of structs. Fixes delimiter referencing
* Fixes some bugs and nits around variable declaration, currency pairs and config upscaling
* Adds config upgrade path for okcoin and okex. Reverts configtest.json.
* Fixes okex futures currency formatting by no longer using global currency format. updates Run code to adapt. Removes BTSE value
* Adds ":" as a delimiter for when a delimiter only shows up SOMETIMES
* Adds support for optional delimiter
* added audit manager
* Basic database DOA setup
* Added base config file
* added sqlite support and creation of schema
* added basic tests and config entry
* corrected issues of database is disabled
* fixed path for test
* WIP
* Added tests fixed config checking
* reverted files back to upstream
* reverted go.mod files
* no more test test test
* removed local testing details for psql
* hello
* added comments
* increased ping to 30 seconds
* renamed database table and added additional condition around test
* removed database test details
* goimport ran on all files
* WIP
* first attempt at migration
* fixes for migration system
* Migration system logger interface implemented
* fixes to print functions
* added write pooling pass
* gofmt :D
* formatted imports correctly
* removed old code
* added creation of migration
* gofmt
* :D Hello
* ❌🏎️
* maybe one day i will remember to revert go mod files
* checked err return condition correctly
* first changes for PR feedback
* code clean up
* protect Connected with RWmutex & event with mutex
* : D
* we can just pretend like it never happened
* MOved migrations back to source directory and added README
* readme formatting update
* Addd command line override for datadir
* use correct var when creating a migration and confirm folder is created
* Check if database version is newer than latest migration and also you know make migrations work.....
* uses filepath instead of manual path to use correct path seperator
* Add connection message and lower timeout
* Added support for sslmode for psql
* no longer force Close of database instead allow driver to maage
* Added closer func to test output
* sslmode added to example config
* First pass at adding new logging system
* NewLogger
* NewLogger
* WIP
* silly bug fix
* :D removed files
* removed old logging interface
* added tests
* added tests
* Started to add new lines to all f calls
* Added subsystem log types
* Logger improvements
* Further performance improvements
* changes to logger and sublogger creation
* Renamed Logging types
* removed old print statement
* changes based on feedback
* moved sublogger types to own file
* :)
* added console as output type
* added get level command
* added get/set log level via grpc command
* added check for output being empty for migration support
* first pass at log rotation
* added log rotation
* :D derp fixed
* added tests
* changes based on feedback
* changed log type
* comments
* renamed file -> fileSettings
* typo fix
* changes based on feedback
* gofmt ran on additional files
* gofmt ran on additional files
* 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
* 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
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
* 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
* 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
* 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
* Add new unauthenticated forex provider and use it by default
This is in response to currencyconverterapi requiring an API key for the free version
* Fix golinter complaint
* Added additional endpoints, tests and improve config forex logic
* Adds signature to all exchange wrappers
* Adds funky new OrderHistoryRequest type. Updates signature for GetOrderHistory to use funky new type. Adds tests for GetOrderHistory on all exchanges. Implements GetOrderHistory for ANX
* Fixes alphapoint, bitstamp, itbit, zb tests. Adds exchange functions FilterOrdersByStatusAndType, FilterOrdersByTickRange, FilterOrdersByCurrencies to easily filter returned orders. Adds tests for filters. Implements GetOrderHistory wrapper for Binance, bitfinex, bithumb, bitmex. Adds new filter funcs to implementations.
* Adds bitstamp wrapper support
* Splits up GetOrderHistory into GetOpenOrders and GetOrderHistory wraapper functions to distinguish between active and past. Renames exchange.GetOrderHistoryRequest to exchange.GetOrdersRequest. Renames any API exchange method named GetOpenOrders to GetActiveOrders. Adds test function TestGetOpenOrders for each exchange
* Reimplements the split GetOrders and GetOrderHistory for alphapoint, anx, binance, bitfinex, bithumb, bitmex, bitstamp and bittrex. Renames orderType, orderStatus constants. Adds new exchange.FilterOrdersBySide and exchange.FilterOrdersByType and removes old exchange.FilterOrdersByStatusAndType.
* Changes orderHistoryRequest to use currencypair array instead of strings, also adds fees and trade breakdown. Removes if statement preventing ANX/BTCMarkets testing. Implements Active order + Order history retrieval for Bittrex and BTCMarkets.
* Adds support for coinut and coinbasepro
* Adds Exmo support
* Adds GateIO support
* Adds Gemini support
* Adds hitbtc, huobi, hadax, itbit, kraken support for open orders & order history. Fixes switch case break and fallthroughs. Adds filtering to gateio and gemini results
* Adds support for LakeBTC, Liqui, Localbitcoin, OKCoin, OKEX
* Adds poloniex support
* Adds Wex support
* Adds Yobit support. Updates Wex support
* Adds ZB support. Removes ArrangeActAssert from tests
* Changes baseCurrency + quoteCurrency exchange.OrderDetail properties to a pair.CurrencyPair. Adds exchange name to all implementations. Fixes EXMO TestSetup
* Removes verbose setting from tests as verbosity increases the amount of noise return when testing. Noise is only helpful when debugging tests to get more helpful information to resolve the issue and so it is unnecessary to have such lengthy output when testing in bulk or via Travis CI. This commit therefore improves readability when there are no issues
* Fixes issue where gemini test sandbox api url was overridden. Handles blank response from Gemini
* Fixes verbose typo
* Removes spacing for old act assert test comments. Limits previous infinite loop to 10
* Fixes issue with filtering where orderside is never specified
* Uses proper capitalisation for ServerOrderID and OpenOrders. Reverts commenting out orde_id param for bithumb.GetOrderDetails. Removes unnecessary int logic
* Removes JSON ID fields. Uses map where appropriate for exchange order side/type. Updates OrderDetail/GetOrdersRequest type to use time fields. Remvoes comments. Removes inappropriate variable name. Adds AccountID field for alphapoint. Fixes log message formatting. Lowers errorfs to warnfs for time conversion
* Adds missed files
* Removes blank line
* Adds sorting options for orders. Adds concurrency warnings in comments. Adds test for NewCurrencyPairWithDelimiter. Removes (e *Base) from filter funcs. Updates references to filter funcs
* Fixes rebase issues. Condenses append loops.
* Fixes more receive typos. Removes some inline strings. Adds AskOrderSide and BidOrderSide. Removes hypothetical infinite loop
* Fixes issue where allTrades wasn't used in loop. Fixes assignment/typing issues
* Fixes formatting
* Updates requester package to allow unpacking of zipped files and defaults to warn if no JSON is present
* Initial addition of coinmarketcap functionality
* fix requested changes
* Fix issue with displaying false positive in request.go && reorder plan list
* Rename CurrencyProvider -> CryptocurrencyProvider
Skip seeding currency data if not enabled
Rm line in main.go
* Update test procedures and relevant json files
* Fix const issue within config.go
* 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
* Added untested [cloudflare issue] changes to accountinfo for ANX
* Add alphapoint comment for future implementation
* Adds GetAccountInfo for Binance
* Adds GetAccountInfo update for Bithumb
* Updates GetAccountInfo for GateIO.
Adds error handling feature for authenticated requests.
* Updates GetAccountInfo function for Huobi.
Adds function for getting account ID.
* Updates GetAccountInfo function
Adds GetAccountID function
* Updates GetAccountInfo [un-tested, no access to keys at this time]
* Updates GetAccountInfo for Kraken
* Updates GetAccountInfo func for OKEX
* Updates GetAccountInfo for exchange ZB
* Updates GetAccountInfo func for Bitmex
* Updates GetAccountInfo func for Coinut
* Updates GetAccountInfo for ANX exchange
* Fixes incorrect hold currency issue
* Fixes type name
* Fixes issue with unneeded code in wrapper for Bithumb
* Change strings to type symbol string
* Fixes nit for Gateio
* Fixes GetAccountInfo issue
Fixes SpotCancelOrder issue