Highlighted changes
- New command
freqtrade lookahead-analysis
- Detect if your strategy has a lookahead bias, tainting backtesting results! minimal_roi
can now be empty, allowing to fully disable ROI functionality.- Fixed some odd behavior with OKX stoploss on exchange orders.
- Add Pairlist generator (including live evaluation) in webserver mode.
- Update docker images to Python 3.11.
- FreqAI
- Convert data preparation into a pipeline, allowing for easy customizations.
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
7ba459db8 Version bump to 2023.6
092e30a15 Attempt CI without brew update
977bfa08b Bump pypa/gh-action-pypi-publish from 1.8.6 to 1.8.7
ba6cba31b Bump fastapi from 0.98.0 to 0.99.1
1880f9ffa Bump ast-comments from 1.0.1 to 1.1.0
0310a26b8 Fix documentation typo
29725440c Simplify RPCMessageType schema definition
accc1b509 Simplify class setups without inheritance
4b06b4772 sqlalchemy - pre-commit
b12dbd2be Bump ruff from 0.0.272 to 0.0.275
be07ea5d4 Bump mypy from 1.3.0 to 1.4.1
6b201d525 make sure default PCA behavior reduces parameter space size
8c2098c26 Bump fastapi from 0.97.0 to 0.98.0
6274197f8 Bump sqlalchemy from 2.0.16 to 2.0.17
ae42d57a2 Bump pytest from 7.3.2 to 7.4.0
2d2699b0a Bump mkdocs-material from 9.1.16 to 9.1.17
fec4cb3cf Bump nbconvert from 7.5.0 to 7.6.0
1717f8670 Extract edge output to proper module
72504e62a Extract btstorage methods
65e835990 Improve naming of new file
794bca137 Split optimize report generation from visualization
5e084ad2e convert optimize_reports to a package
fca73531c fix: use .shape instead of index for outliers
9da28e532 bump datasieve
fd420738c ensure outlier-check is returning as a numpy array from datasieve
48e896532 Don't add header if it's not needed
5f98530ef Catch and send exceptions from websockets
69087c30e Don't overwrite "type" with a variable
757c6dc5c Use Self typing
01dfca80a Improve stop test behavior
2f7b29ed3 Fix test_tsl_on_exchange_compatible_with_edge
b49a11876 Fix exit_timeout test
c7683a7b6 Improve docs wording
5d60c6264 align list blocks
96c2ca67e Add usage note for pairs.json file
b0e5fb394 Improve structure of download-data documentation
8c54036fa Move Downloading tip from pairs file section
859f7ff3d be explicit when loading pairs file.
6bc3439cb Bump pytest-mock from 3.10.0 to 3.11.1
e965b2e45 Bump rich from 13.4.1 to 13.4.2
d82a0ad7b Bump ccxt from 3.1.34 to 3.1.44
f04598c5e Bump pre-commit from 3.3.2 to 3.3.3
f82d52c6d Bump xgboost from 1.7.5 to 1.7.6
fc0548ce0 Bump filelock from 3.12.1 to 3.12.2
8cc763b66 Bump time-machine from 2.9.0 to 2.10.0
ed90e77ea Bump nbconvert from 7.4.0 to 7.5.0
1eb691d46 Bump mkdocs-material from 9.1.15 to 9.1.16
571dea6e9 Fix wrong final status on bg-tasks
cca4fa117 Update BaseClassifierModel.py
7e2f857aa Update BasePyTorchClassifier.py
52db6ac7d Use proper log level
d94f3e767 Add explicit tests for download-data
7af14d198 Fix random test failure
44a38e836 Update download data tests
0be4084ea Don't allow downloading wrong pairs
937734365 Improve typehint for markets
66b34edc0 Clarify variable name
6f0f95468 Adjust mocks for new import location
7453ff2fb Migrate download-data out of commands section
b8ab6fe42 Improve wording of check command
e0d5242a4 Reduce download-data verbosity
886b86f7c chore: bump datasieve
b0ab400ff fix: ensure test_size=0 is still accommodated
bf872e8ed Simplify comparison depth
11ff454b3 fix: ensure that a user setting up their own pipeline wont have conflicts with DI_values
6bb75f0dd Simplify import if only one element is used
1567cd284 Use DOCS_LINK throughout
34e7e3efe Simplify imports
2c7aa9f72 Update doc wording
24e806f08 Improve resiliance by using non-exchange controlled order attributes.
7939716a5 Improve formatting of telegram /status messages
4f834c896 Remove old version pin for catboost
ffd7394ad Update freqai.md
2107dce2c Update freqai-feature-engineering.md
72101f059 feat: ensure full backwards compatibility
75ec19062 chore: make DOCS_LINK in constants.py, ensure datasieve is added to setup.py
64fcb1ed1 Better pin scikit-learn
dec3c0f37 Remove environment.yml completely
1b86bf8a1 Don't include non-used parameters in command structure
2cd9043c5 Make documentation discoverable / linked
b3ef024e9 Don't use PurePosixPath
964bf7646 Invert parameters for initialize_single_lookahead_analysis
ad74e6567 Simplify configuration setup
ac36ba659 Improve arguments file formatting
ca88cac08 Remove unused code file
11d7e7925 Fix random test failures
9a7794c52 Improve behavior for when stoploss cancels without content
1a4d94a6f OKX stop should convert contracts to amount
1e44cfe2f Improve stoploss test
e763e2ad3 Bump ccxt from 3.1.23 to 3.1.34
1beaf6f05 Bump plotly from 5.14.1 to 5.15.0
21949c044 bump sqlalchemy pre-commit
2e087750e Bump fastapi from 0.96.0 to 0.97.0
7172bc0af Bump orjson from 3.9.0 to 3.9.1
feb6e5c46 Bump urllib3 from 2.0.2 to 2.0.3
8b27b408c Bump ruff from 0.0.270 to 0.0.272
a9515dee8 Bump pytest from 7.3.1 to 7.3.2
71064c02e Bump sqlalchemy from 2.0.15 to 2.0.16
66dc1fd33 Bump filelock from 3.12.0 to 3.12.1
7542909e1 Bump stable-baselines3 from 2.0.0a10 to 2.0.0a13
a39f23a5c Bump pydantic from 1.10.8 to 1.10.9
663cfc621 fixing tests
bdb535d0e add maskable eval callback multiproc
5dee86eda fix action_masks typing list
c36547a56 add maskable eval callback
afd54d39a add action_masks
5844756ba Add test and fix for stop-price == limit price
4a800fe46 Add explicit test for get_stop_limit_rate
320b3e20a Use correct variable for candle-type when loading data
fc11c79b7 Fix not working date format output
87e144a95 Update webserver tags
9ef814689 Update endpoint in rest-client
1da1972c1 added test for config overrides
e332fbfb4 Add explicit test for okx get_stop_params
280611086 Add explicit test for okx cancel_stop
cfe88f06d Improve behavior of okx rebuys when using stop on exchange
ad8a4897c remove unnecessary example in feature_engineering.md
229ee643c revert change to deal with FT pinning old scikit-learn version
41e37f9d3 improve docs, update doc strings
d9bdd879a improve migration doc
f8d7c2e21 add migration guide, add protections and migration assistance
4cdd6bc6c avoid using ram for unnecessary train_df, fix some deprecation warnings
e24625979 avoid manual pipeline validation
3523f564b Improve Log reduction and corresponding test
265d782af Implement the requested changes.
94ca2988a updated docs
6656740f2 Moved config overrides to its' own function Added config overrides to dry_run_wallet and max_open_trades to avoid false positives.
99842402f Further reduce unnecessary output
16b336397 Fix type problem
b89390c06 Reduce log verbosity during bias tester runs
fc8c6b06a Extract set-log-levels from main logging module
e3056b141 Move logging tests to dedicated test file
05ea36f03 Fix performance when running tons of backtests
6b736c49d Dont persist Backtesting to avoid memory leak
33b028b10 ensure data kitchen thread count is propagated to pipeline
88337b6c5 convert to using constants in data_drawer. Remove unneeded check_if_pred_in_spaces function
e39e40dc6 improve documentation of pipeline building/customization
317e0b5f2 Avoid nested loops in telegram for force* scenarios
f81139b97 Bump python from 3.10.11-slim-bullseye to 3.11.4-slim-bullseye
14557f2d3 merge develop into outsource-data-pipeline
c066f014e fix docs
6d39adc73 bump datasieve version
135aaa2be update docs, improve the interaction with `define_data_pipeline`
dc577d2a1 update to new datasieve interface, add noise to pipeline
4d4589bec fix isort in tests
f7f88aa14 fix pickle file name
5ac141f72 convert to new datasieve api
0b8ef1b88 Fix devcontainer invalid key
c269eef77 Remove unnecessary calc_profit_ratio call
21172802d Devcontainer image should contain as many dependencies as possible
6ec91d11a Bump ccxt from 3.1.13 to 3.1.23
4dcb6395e Bump pre-commit requests types
e61659a2b Bump mkdocs-material from 9.1.14 to 9.1.15
c2125698a Bump types-requests from 2.31.0.0 to 2.31.0.1
093181e8f Bump pandas from 2.0.1 to 2.0.2
bdaf230bd Bump orjson from 3.8.14 to 3.9.0
9dcab313b Bump rich from 13.3.5 to 13.4.1
c9bbeedd8 Bump fastapi from 0.95.2 to 0.96.0
94bc91ef5 Update tests/freqai/test_freqai_datakitchen.py
7a726da69 Update cached binance leverage tiers
71b81ee7c Add margin_mode to pairlists callback
12e31208e Update typedDict type used with pydantic
ac7419e97 Split trademode response value into trade_mode and margin-mode
72f4e1475 Bump api version
74254bb89 Add /exchanges endpoint to list available exchanges
54bf1634c Refactor validExchangesType to separate types package
6f928b826 Update types for build_exchange_list_entry
cc04f3279 bump pre-commit mypy version
fcb960185 Clarify function naming
250ae2d00 Enhance list-exchanges with more information
b5d101777 Update list_exchanges to use a dict internally
e890bc071 Don't bump pi version, but bump regular version
10ea2b44c Update test line length
d9d173533 Extract ExchangePayload updating
48328fb29 reset candle_type_def
49c0fdf36 Bump cryptography from 40.0.1 to 41.0.0
ac046d6a2 Allow setting the exchange explicitly
af16ce874 Allow webserver mode to cache multiple exchanges
e2594e749 Align tests to use webserver mode
77e3e9e89 Move pairlists and background tasks API's to separate file
565c0496d Bump httpx min requirement
d0f900f56 set HTTPX level to warning
30dd63fcb Update freqai.md
8aee368f6 auto-inject webserver mode dependency
e0d9603e9 Raise correct httperrorcode for webserver-only endpoitns
88ecb935b Add "failed" state to bgjob task response
9c6fee384 Enable gate futures for spread-filter again
5fc8426b9 Improve handling of order cancelation failures with force_exit
430cd24bb Invert order (exit trade 3 before trade 4)
08d040db1 Slightly update force_exit test
5311614d5 Update force exit wording
193d88c9c Double-check cancelling stop order didn't close the trade
1f543666f Improve test for reload-markets timings, fix bug
fd955028a Update tests for new background method
7bccf2129 Introduce background_job endpoints
f6a32f4ff bump version
b666c418b Don't use variables for simple debug values
af1dbf7df Extract get_rate_from_ticker from get_rate method
f074383d6 Extract orderbook logic into separate method
785f0d396 bump datasieve version
6315516d5 Improve volumepairlist defaults
623780681 bump datasieve to 0.0.8
e57265361 bring classifier/rl up to new paradigm. ensure tests pass. remove old code. add documentation, add new example transform
9f1bdc19a Bump ruff pre-commit version
35836479d Bump requests pre-commit dependency
cb7a0f9bf Bump orjson from 3.8.12 to 3.8.14
90808683e Bump ruff from 0.0.269 to 0.0.270
8fdec5f3a Bump ccxt from 3.1.5 to 3.1.13
4e9a43ebf Bump cachetools from 5.3.0 to 5.3.1
3bc390cb2 Bump types-requests from 2.30.0.0 to 2.31.0.0
12af6ea76 Bump pytest-cov from 4.0.0 to 4.1.0
51ba4d14e Bump pydantic from 1.10.7 to 1.10.8
6b3b5f201 export_to_csv: Added forced conversion of float64 to int to remove the .0 values once and for all ...
eec783716 - modified help-string for the cli-option lookahead_analysis_exportfilename - moved doc from utils.md to lookahead-analysis.md and modified it (unfinished) - added a check to automatically edit the config['backtest_cache'] to be 'none' - adjusted test_lookahead_helper_export_to_csv to catch the new catching of errors - adjusted test_lookahead_helper_text_table_lookahead_analysis_instances to catch the new catching of errors - changed lookahead_analysis.start result-reporting to show that not enough trades were caught including x of y
1317de8c1 Add rudimentary description per pairlist
8a8616925 Better handling of shift
8ec0469b1 Fix volatilityfilter behavior
9bb25be88 modified help-string for the cli-option lookahead_analysis_exportfilename moved doc from utils.md to lookahead-analysis.md and modified it (unfinished) added a check to automatically edit the config['backtest_cache'] to be 'none'
0ed84fbcc added test_initialize_single_lookahead_analysis
a7426755b added a check for bias1. Looking at has_bias should be enough to statisfy the test. The tests could be extended with thecking the buy/sell signals and the dataframe itself - but this should be sufficient for now.
df5e6409a Bump develop version to 2023.6-dev
5649d1d4d Convert minimal_roi to list comprehension
36c82ad67 Update documentation for min_roi
35a388bf9 Don't force min_roi to have content
636298bb7 added test_lookahead_helper_export_to_csv
31e19add2 start transition toward outsourcing the data pipeline with objective of improving pipeline flexibility
eb31b574c added returns to text_table_lookahead_analysis_instances filled in test_lookahead_helper_text_table_lookahead_analysis_instances
af7afa80a remove gone-wrong import
9e75c768c Improve responses for evaluate get endpoints
4c52109fa Handle pairlist evaluation errors gracefully
33e25434b Change statuscode to 202
756e1f5d5 Test pairlist evaluation
01984a06a Extract pairlist evaluation from sub-method
7cc8da23c Update test for available pairlist
818a3342b move pairlist evaluation to the background
680e7ba98 Get exchange through DI
70a0c2e62 Fix test mishap
3e6a2bf9b Add parameters for analysis tests ...
104fa9e32 Use logger, not the logging module
e73cd1487 Add somewhat sensible assert
9869a2195 Move strategy to it's own directory to avoid having other
3f5c18a03 Add some tests as todo
e18370797 Further test lookahead_helpers
ceddcd924 Move most of the logic to lookahead_analysis helper
d8af0dc9c Slightly improve testcase
1c4a7c7a0 Split Lookahead helper to separate file
7b9f82c71 Remove needless check for "None" list
209eb63ed Add startup test case
2e675efa1 Initial fix - test
073dac8d5 Move lookahead analysis tests to optimize subdir
a0edbe479 Switch to using config instead of args.
2e79aaae0 Remove usage of args.
5488789bc Arguments should be in the configuration.
7d871faf0 added exportfilename to args_to_config introduced strategy_test_v3_with_lookahead_bias.py for checking lookahead_bias# introduced test_lookahead_analysis which currently is broken
91ce1cb2a removed overwrite_existing_exportfilename_content (won't use it myself, wouldn't make sense for others to not overwrite something they re-calculated) switched from args to config (args still work) renamed exportfilename to lookahead_analysis_exportfilename so if users decide to put something into it then it won't compete with other configurations
b252bdd3c made purging of config.freqai.identifier variable
2306c74dc adjusted code to matthias' specifications
5abd616ae Fix disrepancy in freqai doc code example
877d53f43 Add airlists test endpoint (so pairlist configurations can be tested)
3d4be92cc Add option pairlist parameter type
c5bf02970 Better type response
9e4f9798e Add pairlist "is-generator" to api
3ef2a57bc Add "is_pairlist_generator" field to pairlists
e20b94d83 Add more filter param descriptions
4636de30c Improve pairlistparam types
2ea157d9d Add some more pairlist parameter definitions
987da010c Start pairlist parameter listing
5ad352fdf add /pairlists to rest client
2df80fc49 Add /pairlists endpoint to api
2b416d3b6 - Added a first version of docs (needs checking) - optimized pairs for entry_varholder and exit_varholder to only check a single pair instead of all pairs. - bias-check of freqai strategies now possible - added condition to not crash when compared_df is empty (meaning no differences have been found)
767442198 saving and updating the csv file now works open ended timeranges now work if a file fails then it will not report as non-bias, but report in the table as error and the csv file will not have it listed.
a9ef4c3ab partial progress commit: added terminal tabulate-output added yet non-working csv output using pandas
7bd55971d strategy_updater: removed args_common_optimize for strategy-updater
d12a7ff18 freqtrades' merge broke my side, fixed it by porting it over to my develop branch, no changes with this commit logic-wise.