Changelog
This is a log of all changes made to the project. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Version 5.9.4 — 2026-02-15
Changed
- Update dependencies completely.
- Restructure the changelog according to Keep a Changelog.
5.9.3 - 2023-11-18
Changed
- Upgrade to support Python versions from 3.9 to 3.12.
Fixed
- Fix typing issues.
- Fix duplicate Streamlit key.
5.9.2 - 2022-11-07
Removed
- Remove check for
st._is_running_with_streamlit.
5.9.1 - 2022-11-07
Changed
- Try to support both versions of Streamlit, the one with the old
streamlit.cliand the one with the newstreamlit.web.climodule.
5.9.0 - 2022-06-05
Added
- Add a separate window to see log messages in the GUI.
- Add the trigger simulation functionality to the GUI.
- Add drop percentage to the trigger edit window in the GUI.
- Add test buttons for each tab of the configuration in the GUI.
- Add CCXT configuration to GUI.
Changed
- Move some GUI functionality into a main menu and separate windows.
- Use PySide6 instead of PyQt6 such that the whole project is under the MIT licence again.
5.8.1 - 2022-06-01
Added
- Allow setting a start date and time in the GUI.
5.8.0 - 2022-06-01
Added
- Logo added to the GUI window.
- The GUI now shows a system tray icon and can send notifications.
Changed
- All triggers now need to have an explicit name set in the configuration.
- Before a trigger is executed, the balance will be checked.
- The GUI has an improved status and about screen.
5.7.0 - 2022-05-29
Added
- A completely new GUI using Qt is now part of the project.
Fixed
- The trigger
startattribute used to discard the time part, if it was given.
5.6.0 - 2022-05-07
Added
- Add support for notifications via notify.run to provide an alternative to Telegram.
Fixed
- Also catch
HTTPErrorin the krakenex wrapper.
5.5.0 - 2022-02-25
Added
- The CCXT library is now supported and gives access to more over a 100 more exchanges.
- Add an asset pair selector in the trade overview panel in the evaluation interface.
Changed
- It is now an error when either drop percentage or delay is given, but not both at the same time.
- The
--marketplacecommand line option has been removed, the marketplace is now chosen via an entry in the configuration file.
5.4.4 - 2022-02-11
Fixed
- The
krakenexlibrary would sometimes also raise arequests.exceptions.ReadTimeout, which was not caught.
5.4.3 - 2022-01-29
Fixed
- The database cleaning trigger would always clean all historic prices which were two hours in the past.
- The Fear and Greed index sometimes doesn't deliver a value for the current day. In this case we will try the value from yesterday.
5.4.2 - 2022-01-16
Fixed
- Fix path handling to database on Windows.
5.4.1 - 2022-01-16
Added
- Restore Windows support by only adding syslog on Linux.
Changed
- Split usage documentation onto multiple pages.
Removed
- Remove the telemetry stuff again.
5.4.0 - 2022-01-15
Added
- Add optional and voluntary telemetry sending via Sentry.
- Add a dark mode to the documentation.
- Split configuration documentation onto multiple pages.
5.3.1 - 2022-01-15
Fixed
- Fix bug in trade report with
KeyError: 'coin'.
5.3.0 - 2022-01-14
Added
- Add a report page about user trades into the evaluation interface.
- Link to download statistics within documentation.
- Add GitHub funding.
Changed
- Connection errors are not reported all the time, instead they are just logged as debug output.
- Create
AssetPairdata structure so better structure the code internally. - Update developer documentation a bit.
- Update Pillow for security.
Removed
- Remove usage of
Protocolsuch that Python 3.7 is still supported.
5.2.1 - 2022-01-14
Changed
- Allow any log level for Telegram, including
debug. - Attempt withdrawal after the trade has been noted in the database.
- Output full exception traceback for every caught exception into the debug logging channel.
- Pause triggers for 24 hours when they have insufficient funds.
5.2.0 - 2021-12-22
Added
- Fear & Greed is now included in the evaluation interface.
- Developer documentation includes a component diagram.
Changed
- More refactoring, more test coverage.
5.1.0 - 2021-12-20
Added
- Print out version number during startup.
- Add trigger option
fear_and_greed_index_below.
5.0.3 - 2021-12-17
Fixed
- Catch
requests.exceptions.ConnectionError, which wasn't caught by the krakenex library.
5.0.2 - 2021-12-05
Fixed
- The Telegram connector would hang during shutdown, I have fixed that again.
5.0.1 - 2021-12-03
Fixed
- Fix bug with marketplace factory function.
5.0.0 - 2021-12-03
Changed
- Refactor a lot more.
Removed
- Remove
--keepalivefeature, this is on by default now. - Remove
--dry-runfeature, use thetest-drivecommand instead. - Remove
--one-shotfeature, use the loop instead.
4.4.4 - 2021-11-16
Added
- Add
--versionoption.
Fixed
- The Telegram sender would not shut down gracefully. I have fixed that now.
4.4.3 - 2021-11-15
Fixed
- I've accidentally deleted the source code. This should be fixed now.
4.4.2 - 2021-11-15
Changed
- Streamlit doesn't easily work on the Raspberry Pi due to issues with py-arrow and the ARM CPU. I have therefore reverted these dependencies to be an extra again.
4.4.1 - 2021-11-15
Changed
- More refactoring. Also update the versions of various dependencies. The Streamlit interface is now part of the main dependencies.
4.4.0 - 2021-11-05
Added
- Add
test-drivecommand to verify configuration.
Changed
- Major architectural change, without changes to the user.
4.3.5 - 2021-09-20
Fixed
- When the balance on the marketplace is zero, withdrawals would fail and therefore crash the whole program. This is now fixed.
4.3.4 - 2021-08-26
Added
- I now use the mypy static analysis and type checker, and also found a few subtle bugs with that in code paths which aren't used often.
Fixed
- The
--dry-runoption would write buys into the database, although it would not buy anything on the market. Now the database should now be changed.
4.3.3 - 2021-08-12
Fixed
- Due to an incomplete refactoring the program would crash whenever there was a non-fatal exception regarding the marketplace. This should be fixed now.
4.3.2 - 2021-08-02
Changed
- Make the
marketplacepackage isolated, only expose a limited set of attributes in__init__.py.
Fixed
- Fix automatic detection of Telegram chat ID.
- Do not crash when there is no balance at Kraken.
- Also handle
requests.exceptions.HTTPError.
4.3.1 - 2021-07-19
Fixed
- Apparently all Kraken trades were sent in the validation mode. I have tried to fix that.
4.3.0 - 2021-07-16
Added
- Add a
startattributes to triggers. - Add
--dry-runoption towatchcommand such that it can be tested without spending money. - Allow specifying
delayandcooldownnot only in minutes asdelay_minutesandcooldown_minutes, but also asdelay_hours,delay_days,cooldown_hoursandcooldown_days. - Add documentation for cron to Configuration.
- Introduce a new pre-commit hook that sorts the import statements.
Fixed
- Remove double reports of connection errors.
- In case that the user has no drop triggers, the database cleaning interval is set to 120 minutes.
- Handle
requests.exceptions.ConnectionErrorwithout crashing. - Fix
--one-shotmode. It would previously sleep for another interval and not shut down the Telegram logger, preventing the program from a clean exit.
4.2.4 - 2021-06-18
Fixed
- Also handle
ReadTimeouterrors that can happen when the API doesn't answer before the connection breaks. These have been ignored previously, but now the error message is a bit cleaner.
4.2.3 - 2021-06-18
Added
- Log output is also put into the Linux system log. In this way one can do post-mortem debugging.
Changed
- Telegram messages are no longer directly send but stored in a send-queue. This way connection outages do not yield lost messages but rather just delay sending.
- Use a proper form instead of the plain button in Streamlit.
Fixed
- Crashes have been reported when the Telegram message was longer than their limit of 4096 characters. Messages are now chunked to prevent this from happening.
4.2.2 - 2021-05-25
Fixed
- Another warning message would use a constant that was moved to another place in the meantime. The program crashed when the message was going to be emitted. It has been removed now.
4.2.1 - 2021-05-23
Fixed
- When a trigger was disabled after three consecutive failures, a message stating that would be shown every time the trigger was processed. In this way the user got the same amount of messages. This message is now removed.
4.2.0 - 2021-05-21
Added
- Triggers can be given names in the evaluation interface.
- For the Kraken marketplace you can now specify whether the fees should be applied to base or quote currency.
- Attach a stack trace of exceptions to the Telegram message.
- In the drop survey evaluation one now also has a time range slider such that one can get a feeling for the drops.
Changed
- The reported balance at startup will only contain currencies which are used in triggers.
- The legend in the trigger simulation plot is shown below the plot to allow for longer trigger names without having them cropped.
- Failed triggers are just silenced for 12 hours. Another attempt is made automatically afterwards.
clikrakenhas been retired and we now usekrakenexin version 2.- Send Telegram messages via POST (and not GET).
- Automatically move the SQLite database into the appropriate user data directory on Windows on macOS, no change on Linux.
Fixed
- Historical API was broken, it now retrieves data again.
- Specifying a lower-case fiat currency and using the percentage based fiat volume strategy led to an error.
- Make sure that errors from the Telegram API are reported and not ignored.
- Do not use Markdown with Telegram as parsing errors prevent messages from being sent.
- Errors from the historical price source have been silently ignored. They now issue a warning.
4.1.0 - 2021-05-05
Added
- Add automatic withdrawal for currency when the amount exceeds a certain threshold determined by the fee.
Changed
- Use
krakenexinstead ofclikrakento communicate with Kraken. The old implementation is deprecated but retained with--marketplace clikraken.
4.0.0 - 2021-05-04
Changed
- The trigger specification is significantly changed. Consult the documentation to learn about the new format.
3.5.1 - 2021-05-03
Fixed
- Fix drop trigger with percentage such that
volume_fiatis actually a percentage and not a ratio (between 0 and 1).
3.5.0 - 2021-05-03
Added
- Add
--one-shotto thewatchsubcommand to only run the watch loop once. - Add
fiat_percentage: trueoption to create drop triggers that use a percentage of the available fiat balance instead of a fixed volume.
Changed
- Update documentation and state paths to the configuration file on various platforms.
3.4.0 - 2021-04-27
Added
- Query balances on the marketplace at startup and after each trade. A notification is send such that you always know how much fiat money is left to trade.
- Allow trigger evaluation on a chosen subrange of dates.
- Make plots interactive.
Changed
- Reflect change from
XBTtoBTCcoding on Kraken. - In the trigger evaluation, triggers are moved to multiple rows if there are more than three of them.
- Present trigger evaluation summary as a table.
3.3.0 - 2021-04-23
Added
- Emit the exchange rate in the buy notification.
- Add more documentation.
- Allow evaluation of multiple triggers at the same time.
- Add progress bars to the Streamlit interface.
Fixed
- Fix axes label in plot.
3.2.0 - 2021-04-22
Added
- Add a summary table for the drop evaluation interface.
3.1.0 - 2021-04-19
Added
- Add evaluation interface powered by Streamlit.
- More documentation in general.
- Add installation instructions for the evaluation feature.
3.0.3 - 2021-04-05
Changed
- Change command line argument parser back to
argparse.
Fixed
- Catch another connection exception.
- Catch connection errors in Telegram logger such that there are no endless recursive log messages which crash the program.
- Fix cool-off for 06:00 checkin.
- Fix some test code.
3.0.2 - 2021-04-01
Fixed
- Buxfixes.
3.0.1 - 2021-03-28
Added
- Perform evaluation with actual trigger implementations.
3.0.0 - 2021-03-27
Added
- Add Windows support.
- Read Telegram chat ID from configuration file if available. This way you only have to send it a message once.
- More documentation.
- Add donation page.
- Start with Pytest unittests.
Changed
- Move configuration file to a new location. Old configuration files are automatically moved.
- Import modules only when needed to speed up start-up.
- Use the Black code formatter.
- Implement command line interface with Click.
2.1.0 - 2021-03-13
Added
- Add regular Telegram messages to let user know that the program is still running.
2.0.0 - 2021-03-13
Added
- Add a nice documentation website.
- Add log messages via Telegram.
- Add
--keepaliveoption again. - Add automatic database cleaning.
Changed
- Use logging library for colorful log messages.
- Gracefully handle keyboard interrupt.