github freqtrade/freqtrade 2021.3

latest releases: 2024.3, 2024.2, 2024.1...
3 years ago

Highlighted changes

  • Allow removing locks via Telegram (/unlock <lockid | pair>) and API
  • Show trade-id in bot-initiated (buy, sell, cancel) notifications
  • New ordertype config option for forcesell - which will allow you to use a different ordertype for forcesells
  • Allow changing the order-type for forcesell and forcebuy via order_types configuration
  • New backtesting functionality, allowing compounding (stake_amount="unlimited")
    • Backtesting now requires a valid dry-run wallet balance (can be provided via --dry-run-balance 1000)
    • Minimum amounts for coins are respected (e.g. backesting with 1USDT per trade will no longer work).
    • Backtesting can now run out of money (get broke) - so no further trades can happen
  • New backtesting metrics:
    • Absolute drawdown
    • Min / Max Balance
    • Starting Balance
    • Final balance
    • Trade volume

As the new backtesting format is a major change over the old format, identical results between prior versions and this verison cannot be guaranteed (it will depend on the strategy).

How to update

As always, you can update your bot using one of the following commands:

docker-compose

docker-compose pull
docker-compose up -d

Installation via setup script

# Deactivate venv and run 
./setup.sh --update

Plain native installation

git pull
pip install -U -r requirements.txt
Expand full changelog
7fb34f7e2 Version bump 2021.3
39bfe5e1a Thee to the
292ea8c1d Update backtesting.py
0ca95aa0c Change rate to acctual close rate
ec15610bf Fix isort issue
d795febf9 Add info to documantation
2fd510e6e Added comment with an example calculation
65a9763fa Fixed an issue when there were exactly 50 trades, it was sending an extra empty table
c928cd38d Small bugfix to make sure it shows all the trades
d5301b4d6 RateLimit should be enabled by default
f51f4b181 Add confirm_trade_exit and confirm_trade_entry to backtesting
dc4ea604d Add confirm_trade_exit and confirm_trade_entry to backtesting
eb5d69dcd Add confirm_trade_exit and confirm_trade_entry to backtesting
6856963ae Add confirm_trade_exit and confirm_trade_entry to backtesting
4e8999ade Changed the code for status table a bit so that it splits up the trades per 50 trades, to make sure it can be sent regardless of number of trades
b7702a1e9 Improve tests to work with new sqlalchemy version
e39cff522 Remove duplicate dict keys in test
ea3012e94 Bump sqlalchemy from 1.3.23 to 1.4.2
09c7ee9e9 Bump isort from 5.7.0 to 5.8.0
9612ba34e Bump urllib3 from 1.26.3 to 1.26.4
ac7a1305c Bump ccxt from 1.43.27 to 1.43.89
e315a6a0d assume "last" can miss from a ticker response
43d7f9ac6 Add bid_last_balance parameter
f4e71c1f1 get_buy_rate tests should be sensible
73876b61b Show potential errors when loading markets
16a54b361 Don't require non-mandatory arguments
fe7f3d9c3 Add price side validation for market orders
066dd7221 add orderbook structure documentation
69799532a Document usage of open_date_utc
7ffe1fd36 Fix calculation error for min-trade-stake
fb90901bb Fix telegram table for both rendered and github markdown
c1f799227 Added slash to fix a broken formatting
0d5833ed9 Use OperationalException for TimeRange errors
4d52732d3 Added a small snippet to give users a descent error message,  when their start date is afer the stop date. Also updated the tests.
dd4d1d82d Update docs/strategy-advanced.md
bf14796d4 revert "Trailing stoploss with positive offset" example as stoploss_from_open() wasn't adding value
b6e9e74a8 Add link between stoploss_from_open and custom_stop documentation
983c0ef11 update stoploss_from_open examples to use helper function
76ca3c219 extract result-printing from hyperopt class
b05de6d46 Move advanced exchange config to exchange page
6597055a2 Ensure ccxt tests run without dry-run
ce1ed7626 complete stoploss_from_open and associated test
aee259149 add stoploss_from_open() as a strategy_helper
79d4585da Add check to ensure close_profit_abs is filled on closed trades
8f2693525 Bump ccxt from 1.42.66 to 1.43.27
b6c29bebb Update slack action
a209b0a39 Bump python-telegram-bot from 13.3 to 13.4.1
1173d8971 Bump prompt-toolkit from 3.0.16 to 3.0.17
22c34faca Bump mkdocs-material from 7.0.5 to 7.0.6
09872d8e4 Bump flake8 from 3.8.4 to 3.9.0
b191663a7 Adapt hyperopt templates to be better aligned
0b35c0571 Allow custom fee to be used during dry-run
e92441643 correct math used in examples and clarify some terminology regarding custom stoploss functions
7a63f8cc3 Fix hdf5 support on raspberry
b57c15065 Final balance should include forcesold pairs
618bae23a fix: Use now() to match timezone of download data
eb4f05eb2 Add documentation for hyperopt.strategy availability
6389e86ed Add test for uvloop fix
0320c8dc9 Improve tests for trades_proxy
5e872273d Provide access to strategy instance from hyperopt class.
d1acc8092 Improve backtest performance
425cd7adb Create event loop manually if uvloop is available
ef9977fc1 Make stake_amount + stake_currency mandatory for backtesting
333ad0260 Fix random test failure
60f6b998d Update logo with smiling one
99583bbd0 Fix problem with FTX
a1902f226 Make trade-close sequence clear for mock trades
37e600616 Fix order_by in trades command
4b550dab1 Always reset fake-databases
25c9e8995 Bump aiohttp from 3.7.4 to 3.7.4.post0
7950acf6d Bump pandas from 1.2.2 to 1.2.3
a9c114d30 Bump mkdocs-material from 7.0.3 to 7.0.5
a2b923608 Bump arrow from 1.0.2 to 1.0.3
1f314f7d4 Bump ccxt from 1.42.47 to 1.42.66
46965b1a2 Bump coveralls from 3.0.0 to 3.0.1
0b81b58d2 Use pandas.values.tolist instead of itertuples
02d7dc478 Increase cache size to be large enough to hold all pairs
ad0e60b5b Add trade_id to Cancel messages and reduced lines length
2472f5287 Add trade_id to tests
03b89e7f7 Add trade_id in Telegram messages
a405d578d Introduce forcebuy ordertype to allow specifiying a different ordertype for forcebuy / forcesells
453222201 Fixed line length in HyperOpt for new name
519630640 Remove deprecated profit return value
345f7404e Add strategy name to HyperOpt results filename
731ab5d2a Fix too long line errors
bc05d0312 Make best / worst day absolute
dfeafc220 Update docs/strategy-customization.md
161a4656d Update docs/strategy-advanced.md
1304918a2 fix(docs/strategy-advanced/custom_info-storage/example): only add to "custom_info" in backtesting and hyperopt
900deb663 fix(docs/strategy-advanced/custom_stoploss/example): check if "pair" exists in "custom_info" before requesting
c56b9cd75 fix(docs/strategy-advanced): add warnings
a6ef354a5 fix(docs/strategy-advanced): use `get_analyzed_dataframe()` instead of `custom_info.iloc`
22a558e33 fix(docs/strategy-advanced): fix link to custom_info storage
1a02a146a feature(docs/strategy-advanced/custom_info-storage/example): add ATR column calculation
4064f856d fix(docs/strategy-customization): add "hyperopt" to runmode check for custom_info in custom_stoploss example
b52698197 refactor(docs/strategy-advanced): extract "Storing information" section from `strategy-customization.md`
d05acc30f fix(docs/strategy-customization): remove superflous `prints` from example code
32f35fcd9 fix(docs/strategy-customization): "custom_stoploss indicator" example need to check for RUN_MODE
c5900bbd3 feature(docs/strategy-customization): add example "Custom stoploss using an indicator from dataframe"
cc4e84bb7 feature(docs/strategy-customization): add example how to store indicator with DatetimeIndex into custom_info
5cf3194fa chore(docs/strategy-customization): clean up left over trailing whitespaces
d5993db06 refactor(docs/strategy-customization): change variable name for better readability
0968ecc1a added "Median profit" column to hyperopt -> export-csv
078b77d41 Fix crash when using unlimited stake and no trades are made
55a315be1 fix: avg_stake_amount should not be `NaN` if df is empty
a85e656e8 rest_client.py
218d22ed5 rest_client.py
95c635091 rest_client.py
82bf65f69 rest_client.py
4fe2e542b rest_client.py
7c35d107a rest_client.py
4bb6a2774 Don't catch errors that can't happen
007ac7abb Add telegram pair unlocking
6640156ac Support deleting locks via API
4e5136405 Add warning about sandboxes
64ef7becc Update styles to work with new mkdocs version
2083cf6dd Fix mypy errors introduced by Arrow update
3d65ba2dc Add rpc method to delete locks
bba9b9e81 Don't use __root__ directly for api response
4537a4898 Bump arrow from 0.17.0 to 1.0.2
d0fd3c289 Bump ccxt from 1.42.19 to 1.42.47
00747a3bc Bump mkdocs-material from 6.2.8 to 7.0.3
aba034ff4 Fix mypy problem after mypy 0.800 upgrade
94cab4ed7 Bump mypy from 0.790 to 0.812
a13dc3cdd Use sensible defaults for balance_dust_level
9cb37409f Explicitly convert starting-balance to float
089540781 add balance_dust_level parameter to make telegram less chatty
05f057fe7 Stringify favicon path
e791ff604 Fix: custom_stoploss returns typo
d9d561743 UPdate backtesting doc for total profit calc
b2e9295d7 Small stylistic fixes
6018a0534 Improve backtest documentation
324b9dbdf Simplify wallet code
f65092459 Fix optimize_reports test
fb489c11c Improve test-coverage of pairlocks
f5bb5f56f Update documentation with backtesting compounding possibilities
98f3142b3 Improve handling of backtesting params
86f9409fd fix --stake-amount parameter
d3fb473e5 Improve backtesting documentation
fc256749a Add test for backtesting _enter_trade
60db6ccf4 Add test for subclassing
53a57f2c8 Change some types
03eb23a4c 2 levels of Trade models, one with and one without sqlalchemy
394a6bbf2 Fix some type errors
52acacbed Check min-trade-stake in backtesting
f04f07299 Improve backtesting metrics
791316645 Improve performance by updating wallets only when necessary
37d7d2afd Wallets should not recalculate close_profit for closed trades
f367375e5 ABS drawdown should show wallet high and low values
aed23d55c Add starting balance to profit cumsum calculation
0d2f877e7 Use absolute drawdown calc
74fc4bdab Shorten debug log
72f21fc5e Add trade-volume metric
35e6a9ab3 Backtest-reports should calculate total gains based on starting capital
8d61a2638 Allow dynamic stake for backtesting and hyperopt
e4abe902f Enable compounding for backtesting
959ff9904 Add Dry-run wallet CLI option
0754a7a78 total_open_trades_stake should support no-db mode
0faa6f84d Improve Wallet logging disabling for backtesting
20455de2a Small enhancements to docs
081b9be45 use get_all_locks to get locks for backtest result
e32b2097f Use timestamp in UTC timezone for ROI comparisons
712d503e6 Use sell-reason value in backtesting, not the enum object
b5177eada Extract close method for exchange
4ce4eadc2 remove only ccxt objects when hyperopting
9361aa1c9 Add wallets to backtesting
f0a154692 Wallets should use trade_proxy
9968e4e49 Add warning about downloading data from kraken
642e3be7c Fix(strategy/interface.py): comment typo
f0391d376 Better JSON webhook result description
efa50be14 Fix blank lines rule at test_rpc_webhook.py
7281e794b Fix too long line at webhook.py
9a926c155 Add forcesell entry to full config
984e70d4e Add webhook result example to documentation
52641aaa3 Add test for webhook JSON format
a2cd3ed5b Add documentation for JSON webhook format
fc69240e6 Add JSON-encoded webhooks
51d73a588 Fix #4441
622ff771e Bump aiohttp from 3.7.3 to 3.7.4
1b3b38910 Remove binanceje, add ftx to config selector
c4979fd87 Add note to check configuration settings to docker quickstart
d877e3c1d Fix failing CI due to unavailable pairs
6d38a2e65 Small enhancements to docs
262394e11 Add psutils to support OOM Gracefull shutdown
006f31129 Reduced length of the line
117f0064e Allow changing the order_type for forcesell
1f30c3d7f Refresh slack link

Don't miss a new freqtrade release

NewReleases is sending notifications on new releases.