* 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
* FTX: Add REST API subaccount support
* Add API key check to GetSubaccounts
* Fix missing comment and expand to rest of the codebase
* Address glorious nits
* Address various nits
* Fix ZB typo
https://www.zb.com/api#hsptccieyyqomlp
* Remove pointer reference
* Fix portfolio withdraw tests
* Add nil protection in validator method to reduce prospective panics and for future outbound checking
* Updated tests
* ch order var to not ref package
* rm comparison
* Add order ID validation check
* Add exchange name validation check
* Add in test details
* fix tests
* fix linter issues
* linter issues strikes again
* linter rabbit hole
* Addr nitterinos
* Add validation variadic interface to define sets of functionality check POC
* didn't want to add an amount other than 0, didn't want to add address to exchange withdraw, didn't want to whitlist, can change if need be
* add coverage
* Add validation method options for exchange wrappers and abstracted validation into its own package
* Add validation code for structs in exchange template generation
* remove extra validation call as this is done in wrapper
* fix niterinos for examplerinos
* Add template to documentation tool and regenerated documentation
* Addr niticles
* Fix tests due to validation update
* Add more validation checks for modify/submit orders
* update tests
* fix more tests
* Add asset type to submit variable in tests and rpc call. Regen funcs.
* Add field to modify struct in tests
* applied field asset to cancel struct across project
* fix woopsy
* WIP
* end of day WIP started migration of trade history
* added kline support to hitbtc huobi lbank
* added exchangehistory to all supported exchanges started work on coinbase 300 candles/request method
* end of day WIP
* removed unused ta and misc changes to flag ready for review
* yobit cleanup
* revert coinbase changES
* general code clean up and added zb support
* poloniex support added
* renamed method to FormatExchangeKlineInterval other misc fixes
* linter fixes
* linter fixes
* removed verbose
* fixed poloniex test coverage
* revert poloniex mock data
* regenerated poloniex mock data
* a very verbose clean up
* binance mock clean up
* removed unneeded t.Log()
* setting verbose to true to debug CI issue
* first pass changes addressed
* common.ErrNotYetImplemented implemented :D
* comments added
* WIP-addressed exchange requests and reverted previous GetExchangeHistory changes
* WIP-addressed exchange requests and reverted previous GetExchangeHistory changes
* increased test coverage added kraken support
* OKGroup support completed started work on address GetExchangeHistory feedback and migrating to own PR under https://github.com/xtda/gocryptotrader/tree/exchange_history
* convert zb ratelimits
* gofmt run on okcoin
* increased delay on rate limit
* gofmt package
* fixed panic with coinbene and bithumb if conversion fails
* very broken end of day WIP
* added support for GetHistoricCandlesEx to coinbase and binance
* gofmt package
* coinbase, btcmarkets, zb ex wrapper function added
* added all exchange support for ex regenerated mock data
* update bithumb to return wrapper method
* gofmt package
* end of day started work on changes
* models created for exchange/asset/currency/currencypair, new seed system created
* reworked test coverage added okgroup support general fixes/change requests addressed
* Added OneMonth
* limit checks on supportedexchanges
* reverted getexchangehistory
* started work on currency seeding and insertion
* reworked binance tesT
* added workaround for kraken panic
* :D extremely broken WIP
* renamed command to extended removed interval check on non-implemented commands
* added wrapperconfig back
* increased test coverage for FormatExchangeKlineInterval
* WIP
* increased test coverage for FormatExchangeKlineInterval bitfinex/gateio/huobi
* linter fixes
* zb kraken lbank coinbene btcmarkets support added
* removed verbose
* OK group support for other asset types added
* swapped margin to use spot endpoint
* index support added test coverage added for asset types
* added asset type to okcoin test
* gofmt
* add asset to extended method
* removed verbose
* Very broken WIP models need to be regenerated
* add support for coinbene swap increase test coverage
* removed verbose
* small clean up of okgroup wrapper functions
* verbose to troubleshoot CI issues
* removed verbose
* added error check reverted coinbasechanges
* attempting to fix broken model generation
* readme updated
* :D i broke so much
* model regeneration fixed & complete
* candle model filled out
* removed unused start/finish started work on decoupling api requests from kline package
* restructured coinbene, bithumb methods, added bitstamp support
* kraken time fix
* BTCMarkets restructure
* typo fix
* removed test for futures due to contact changing
* removed test for futures due to contact changing
* added start/end date to extended method over range
* WIP
* added sync option to candles
* converted to assettranslator
* removed verbose
* removed verbose
* removed invalid char
* reverted incorrectly removed return
* added import
* further template updates
* macos hates my keyboard :D
* misc canges
* started work on creating kline from databases eed
* x -> i
* removed verbose
* updated fixCasing to allocate var before checks
* sqlite3 supported work started
* removed time conversion
* further work on tets
* sort all outgoing kline candles
* fixCasing fix
* after/before checks added
* added parallel to test
* logic check on BTCmarkets
* removed unused param, used correct iterator
* converted HitBTC to use time.Time
* test update
* add iszero false check to candle times
* Seed exchange & OHCLV data for test usage
* updated resultlimit to 5000
* new line added
* added comment to exported const
* move date forward
* use configured ratelimit
* fixed pair for test
* panic fixed WIP on fixCasing
* fixCasing rework, started work on readme docs
* enable rate limiter for wrapper issues tool
* docs updated
* removed unused vars from tests
* removed err from return and formatted currency
* updated Yobit supported status
* Updated HitBTC to use onehour candles due to test exeuction times
* added further details to gctcli output
* added link to docs
* added link to tempalte
* disable FTX websocket in config_example
* fix poloneix
* regenerated poloniex mock data
* removed recording flag
* format on package
* moved exchange var outside of method scope
* reworked seeding into package
* verbose output improved
* removed verbose from candles
* Added comments to exported functions
* removed verbose output
* Reworking of tests
* end of day commit
* added SQLite migration for asset, test updates for exchange, added support for withdrawal for new exchange_name_id relation
* regenerated database models
* WIP
* test rework, sqlite migration updates for withdrawal
* Reworked error returns to stop duplications, format all output to UTC, changed gctscript OHLCV output to be unix timestmap, started work on seeding tool
* gofmt
* dbseed command for seeding exchanges added, removed seed from dbmigrate, LoadCSV method added for exchange
* go mod tidy
* added import candle from csv command to dbseed
* Removed reset & duplicate migrate command from helper, renamed struct to Item/Candle over Candle/Tick, added test coverage to dbseed, improved withdraw tests
* remove broken tests due to ORM generation of Fk, removed go unneeded goroutine for inserting records
* removed t.Cleanup usage because appveyor
* added test coverage to StoreInDatabase()
* removed unneeded data from config for test
* added new line
* Added down migration support to candle/asset removal, return original error and display rollback error
* removed unneeded err assignment, break out of loop on error
* add err check to method for test
* first pass changes
* WIP
* Updated migrations for both sqlite3 & postgres to create exchanges if any withdrawal_history records are found, removed migrate command
* removed argusage as usage information is provided by flags
* added inserted records return count and test coverage
* new line added
* Database: comment config details out to disable local postgresl testing by default
* added asset support
* Database: added error return when no exchanges are found, title exchange name across queries
* Fixed test data
* Database: removed migration bool from ConnectToDatabase(), removed empty line, insert asset on test
* Database: verbose linter :D
* Database/OHLCV: removed go module from dbseed command and reverted back to main module, converted interval to int64 to match other parts of code base, provided migrations to update database, poloniex fix to skip first candle
* dbseed: add completed message to output
* Database: added migration to add asset to uniq index for candle table
* Database: database -> exchange
* Database: add asset to upsert conflict
* Poloneix: fix for invalid interval
* regenerated poloniex mock data
* Database: added down migration for candle interval update
* OHCLV/Database: WIP
* OHLCV/Datastore: added new ValidateKline() method to check that asset, pair, interval are enabled/supported by exchange and updated tests
* revert configtest changes
* OHCLV/Kline: pointer assignment to ErrorKline & format pairs on check
* goimports
* migration updates
* Database/Candle: updated tests
* revert configtest changes
* ZB: updaed defaults to use uppercase pairs
* ZB: updaed defaults to use uppercase pairs
* revert pair formatting
* Switch over to .Cotains() method from pairManagement
* Added comment & ftx back 😆
* OHLCV/Datastore: (Candles): added not null to asset, (WithdrawalHistory): added not null to exchange_name_id), reworked KlineError return
* set verbose to false
* updated btc markets test
* Updated readme
* removed ability to have blank exchange name as indexing requires it
* remove old usedb and empty exchange check, return error on no data instead
* Updated kline test to match date range
* Renamed candles.exchange_id column to candles.xchange_name_id to match withdrawal table, return err on unwrap, zb fix revert
* regenerated sqlite3 models
* force UTC for sqlite.... because sqlite
* OHLCV/Datastore: upper case pairs on insert for consistency, remove unneeded rollback call on commit failure as it has no effect, move rollback outside of insertsqlite/insertpsql methods
* add error check for no candles
* nil length/cap is 0 in golang :D
* OHLCV/Datastore: updated wording on examples, removed duplicate testfile
* OHLCV/Datastore: updated README with links to dbseed
* dbtool -> dbseed
* reworked request struct and exchange response started work on validation system
* removed import cycle until work around
* Added intial withdraw support via CLI added
* Added Crypto command to gctcli
* moved var declartion to single line
* Test updates for binance and anx
* All exchange tests have been updated test coverage added to validate
* First pass at adding withdrawl select from database
* started adding basic lru cache system
* Added basic LRU cache including Add Get Remove Contains ContainsOrAdd Clear
* wording changes on comments
* removed exported var's in strut as they are not required
* Added README
* README updates
* corrected ID on commands
* rm line :D
* merged in origin/cache
* linter fixes (gofmt)
* Added basic cache lookup to events
* swapped to mutex over rwmutex updated comments
* unexported getNewest & getOldest
* unexported getNewest & getOldest
* Updated comments and cited references in source
* updated comments
* WIP
* Migrated exchange WithdrawFiat wrapper to new struct response
* Migrated exchange WithdrawFiat wrapper to new struct response
* started work on bank management
* Added exchange level banking details back with migration to banking package
* Removed broken tests for now
* Added validation to bank accounts
* removed duplicate bank details from withdraw struct
* Test coverage increased
* gofmt
* merged upstream/master with clean up
* First pass at adding command line linking to gctcli
* added validation for crypto address, added gctcli support to retreive previous withdrawal requests
* general cleanup
* general cleanup
* reordered imports
* Increased test coverage moved to database sublogger
* Pass incorrect currency no longer return error from c.CheckBankAccountConfig
* remove TestMain() for now as other tests in this package will need to be reworked
* Happy little race car
* Reverted to upstream tests
* Added test covarege for validation method, corrected response on cli protobuf
* query clean up and removal of duplicated code
* cleaned up queries into singlem ethod increased test coverage
* Migrated international fund withdraw to new exchange response and added cache size override
* Migrated international fund withdraw to new exchange response and added cache size override
* Extended gctcli commands
* lowered default cache to 25
* small code clean up
* added get by date method
* add returned error
* cli commands cleaing return error on nil results to fix out of bounds
* merged write & read helpers into one for test coverage and increased engine/withdraw test coverage
* gofmt
* Added test coverage for valid ID
* removed unused param
* converted to use timestamp package from protobuf
* gofmt
* use built in RFC3339 timestamp
* remove setting of CreatedAt & UpdatedAt and allow ORm to take care of it
* also use ptype on byid
* code flow improvements
* remove inverse conditional check and linters run
* removed test data
* removed comment
* removed comment
* also write failures to database for auditing
* converted to use default time for start & end
* Default to time.Now() minus 30 days
* Default to time.Now() minus 30 days
* small code clean up
* fixed missing semicolon on migrations, code clean up
* updated sqlite migrations
* Added additonal check for exchange level bank account if global is not found
* case sensativity fix for currency names
* use correct compare
* test coverage fixed
* removed space
* return pointer to banking.Account
* return pointer to banking.Account
* added else check back to validate()
* Added empty string as default to migration over NULL due to retrivial of data
* renamed package to log to stop side import requirement
* reverted comment changes
* reverted comment changes
* one more reverting wording back to logger
* wording changes on comments
* Add exchange manager to engine
* Several improvements for engine and friends
1) New file.Exists func
2) gRPC TLS cert expiration date check and regeneration
3) New donation var for use across the codebase
4) Use Go log package until the logger is initialised
* Add cert tests and create dir tree if it doesn't exist for file.Write
* Link up donation address to documentation tool plus minor adjustments
* Fix remaining donation addrs
* Move non-needed reload exchange funcs
* Revert accidental config_example.json changes 🕯️
* Use go logger for logging until the logger has initiliased, otherwise no output will be seen
* Link up portfolio delay val and other fixes
* Run go mod tidy after dependabot PR
* Address nitterinos
* bug fix for websocket orderbook processing
* Fix more panics
* fix linter issue
* kick panic can down the road
* temp fix for issue with a 404 returned error as chainz.cryptoid dropped eth support
* Address nits and fixed orderbook updating
* Fix trade data, rm'd event time from struct
* fix time conversion for huobi
* Actually process kline data and fix time stamps
* btse time conversion fix and RM log, as it seems that the gain is reflecting transaction side. Drop ticker fetching support because there does not seem to be support on docs. And added trade fetching support.
* revert huobi println
* Adressed suggestion
* rm unnecessary assignment
* rm unnecessary check and assign
* fix conversion mishap
* fix currency conversion bug
* update websocket logging
* RM websocket type which stops conversion and copy
* fix linter issue, add in unknown side type
* 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
* 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
* 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
* 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
* 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 period to documentation templates sentences.
Added logic to documentation.go to fix broken links for godoc in sub-packages.
Fix coding style to conform to golang idiomatic practice.
Applied fix to access main godocs in tools and test data.
Generated new documents using tools.