A huge thank you to all of those that have contributed and collaborated on FrostyBot over the past 6 months. A particular shoutout to @Barnz for his huge contribution to the bot. Many things have changed since I started out on this project, and this is still very much a work in progress. I hope to improve on it sugnificantly over the next year.
Version |
Changes |
0.1 |
|
0.2 |
- Code cleanup
- Removed the FLIPLONG and FLIPSHORT commands. Incorporated into LONGENTRY and SHORTENTRY.
- Added POSITION command to show current position
- Added size parameter
|
0.3 |
- Added ORDERS and CANCEL command to show open orders and cancel orders (limit orders)
- Added price parameter (limit orders)
- Changed output of BALANCE, TRADES and POSITION commands to JSON
- Changed IP whitelist to const to prevent skull fuckery
|
0.4 |
- Added size parameter support for % of balance (ie. 200pct = 2x)
- Added TAKEPROFIT command with size parameter as % of open order (ie. 50pct)
|
0.5 |
- Named changed to Frostybot so I don't get sued
|
0.6 |
- ccxt installation via an install.sh script (and cleanup of 750 mb of unneeded files)\n- now bot is usable with testnet or alternate api endpoint urls (base api url is now configurable for exchange)
- support bitmexico
- flag to turn bot on and off
- separate configs per exchange bot, with core functionality in lib extracted so we can have multiple bots without code dupes
- allow for space separated command (same syntax as command line) in POST body. This enables:
- simpler syntax for users in the alert message box of tradingview
- allow pinescript to setup the commands (preconfigure a bot)
- let the user override the command by editing the message box instead of a webhook url
- webhook url can then just simply point to the bot without querystring which is a bit cleaner
- support % besides pct for percentages which is convenient in POST and command line like 'long 50%'
- changed api.
- replaced LONGENTRY, LONGEXIT, SHORTENTRY, SHORTEXIT, TAKEPROFIT
- with LONG, SHORT, CLOSE
- where CLOSE is replacing LONGEXIT, SHORTEXIT and TAKEPROFIT
- CLOSE works the same as LONG / SHORT with percentages or absolute sizes.
- support for max position (enter multiple longs in a row wont blow you up)
- auto adjust order size in case the max limit is reached. Say max position is 100% of your account and you're 50% long. Adding a 'long 100%' would in theory be 150% account size. This last order is auto adjusted to 50% so we end up at the
maximum position size (which we wanted).
- changed api examples to use lower case (easier to type :-))
- early exit with more descriptive warnings in case of typo's or wrong parameters.
- placed readme and changelog in separate files
- added usd balance to log
- introduced many bugs, uglified the code :-)
|
0.7 |
- skipped cause changelog not in sync with version numbers (0.6 was distributed as 0.7, whoops) |
0.8 |
- refactor directory/file structure. added lib / config directories and fixed install script for that.
- renamed folders and use exchange/pair structure which is more scalable.
- currency pairs should now be easy to add in the future.
- bot configs are smaller as exchange anomalies are solved in the code.
- separated output functions into output.php
- this means that the url structure also changes. see INSTALLATION anf README
- removed install.sh from the distro. not needed anymore because we include ccxt in the distro for easier setup. licence is included and is MIT, so no issues.
- added support for ETH on Deribit and Bitmex
- removed hardcoded local ip, added global config for adding your local ip to the whitelist
- added exchange configs so you don't have to repeatedly put your keys in for each currency pair
- support main accounts in exchange.config.php (default)
- can be overridden per bot subaccount in the currency_pair/config.php (recommended)
- made main.php more generic. Removed all hardcoded refs to BTC.
- added INSTALLATION guide with hopefully easy steps the get going
- log file restructuring, placed outside the public www dir (was security issue)
- added command 'log' to show the contents of the log file,
- by default shows last 10 lines
- you can give the number of lines as a parameter
- added 'summary' command. gives an overview for currency pair:
- added many comments to make it easier for users to configure the bot
- add exchange errors to the log (in raw format)
|
0.9 |
- support for FTX exchange added
- redeveloped Frostybot from the ground up using object-oriented code as far as possible
- all output is now in JSON object format to allow for easy integration and scripting
- all account configs are now stored in the SQLite database. accounts can be added, updated and removed using the CONFIG command.
- config allows for the mapping of custom symbols to market symbols so that you can keep the same custom symbols across multiple exchanges. This also allows you to specify a default symbol so that you do not need to enter the symbol param all the time. these mappings are stored in the SQLite database.
- added open/high/low/close/volume (ohlcv) function to get data for future planned charting capabilities
- added caching mechanism to speed up response time and reduce exchange traffic for certain functions (lib.cache.php). cache data is stored in the SQLite database.
- added SQLLite support for ohlcv data and request caching and in preparation for future capabilities (lib.database.php)
- added error and exception handlers to ensure that all messages are captured and outputted to JSON (lib.output.php)
- exchange output normalizers are now extended classes and produce predefined objects (lib.classes.php) in a consistent way across all supported exchanges (lib.normalizer.*.php).
- a lot of work done to ensure that all exchanges support the same commands in exactly the same way with the same output structure.
- wrote emulation code to generate "ohlcv" data for Deribit, since the exchange lacks ohlcv support, but since this code has to generate ohlcv data from thousands of individual trades, it is extremely slow. To avoid this, there is now a centrallised API at api.frostytrading.com that will server ohclv data from deribit and bitmex. more information is further down.
- added unit test capabilties to provide accelerated testing during development (lib.unittests.php)
- added install script to aid with download and install of Frostybot (https://tinyurl.com/frostybot-installer)
- introduced a new central FrostyAPI (https://api.frostytrading.com) which is currently being used to get OHLCV data for Bitmex and Deribit. In the future, this central API could be used by all the Frostybots for various enhancements, such as version control, usage statistics, backtesting, notifications, trade analytics etc. For now though, it's only being used for OHLCV data.
- all caching, account information, symbol mappings and whitelist IP addresses are now stored in the SQLite database.
|