Skip to content

2023.9

Compare
Choose a tag to compare
@xmatthias xmatthias released this 30 Sep 15:26
· 2271 commits to stable since this release
e73f215

Highlighted changes 2023.9

  • New subcommand recursive-analysis to check for startup bias in your indicators. Please refer to the [docs].(https://www.freqtrade.io/en/stable/recursive-analysis/#how-does-the-command-work) for an explanation.
  • New argument after_fill to custom_stoploss() - which will allow the strategy to adjust the stoploss in any direction.
  • New argument leverage for stoploss_from_absolute() helper, for proper leverage adjustment.
  • New Pairlist FullTradesFilter - which empties the pairlist when all trade-slots are filled.
  • Add /weekly and /monthly API endpoints (and show corresponding metrics in freqUI).
  • Improvements to /reload_trade on Bybit and OKX, improving reliability for these exchanges when using this functionality.
  • Improve output of /profit, adding drawdown metrics.
  • Add trade argument to custom_entry_price() callback (only filled for additional entry orders, otherwise None).
  • Bybit - updated to api v5 after deprecation of old API’s.
  • Improve behavior when replacing orders where the initial cancellation fails.
  • Officially deprecate edge in the docs.
  • FreqAI: Improve behavior after downtime of more than 1 candle.
  • Drop support for python 3.8. If you’re still using python 3.8, please upgrade to python 3.9+ (we recommend 3.11).

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
96c5db3e3 Bump version to 2023.9
2d56b1bc8 Fix whitespace
aff5372a8 chore: protect users against process_only_new_candles=False
7971cb29b fix error message
154149ff0 Slightly updated docs
92d7f2798 Further update test a bit
20ea679b2 Add "bias2" test with full lookahead bias
39ede449a Rename test to avoid naming collision
37550d3bd Fix typo in --strategy_list
b68852662 Improve sorting in docs
d52d30cfb invert setting-location for stopLossPrice
56a85690b Update cached leverage tiers
90475e52d Change strat to strategy in freqai-feature-engineering.md
504f51fab Fix liquidation price setting in backtesting
a905d1bd6 Assert backtesting liquidation price
a27baf1a5 Improve backtest test
3f60b2c14 Update bybit stoploss parameter/prop for new ccxt version
927d1d268 Split stop_price parameter from property
ed45dcdf8 Update .gitignore to exclude memray stuff
e518e741a update bybit live order to v5
56b9c250b Update order_parse online test
a009816ac Bump ccxt from 4.0.88 to 4.0.105
551d1b096 Bump sqlalchemy pre-commit
5e696f4ea Bump sqlalchemy from 2.0.20 to 2.0.21
c39290d7d bump types-requests in pre-commit
4849b23fd Bump urllib3 from 2.0.4 to 2.0.5
d032aaaba Bump mkdocs-material from 9.3.1 to 9.4.1
0099381dd Bump jsonschema from 4.19.0 to 4.19.1
7bcb3d558 Bump types-requests from 2.31.0.2 to 2.31.0.4
c15c13a36 Bump ruff from 0.0.290 to 0.0.291
53a727306 Bump catboost from 1.2.1 to 1.2.2
da9a8b616 Bump mkdocs from 1.5.2 to 1.5.3
e6277222c Bump time-machine from 2.12.0 to 2.13.0
8002b476f Update recommendation for kraken
d9b5d05e2 Align sample configs with the "no ratelimit" recommendation
f5d7a4417 Split trades methods into seperate converter file
04b3b1d4d Update data-download.md
38a3ce616 Convert "converter" to package
123e51774 Move trades-to-ohlcv tests
2322d0f3f Move trades-to-ohlcv to converter file
8a5287581 Move some convert-trades-to-ohlcv logic into convert function
41cdd28f5 Improve log output for convert-trades
b387c315d fix pre-commit
3c647a379 change wordings on the doc from backtest to "calculate indicators" since we never do full backtest process
aac9ee0d5 move lookahead and recursive docs under Advanced Topics
966247baa Make sure use_db is set as early as possible.
589b9858f Disable build isolation (fix no docker builds)
c0b2b0b96 fix args description
6cfc1836a fix wrong startup candle
35800f3ad remove hardcoded docs link
9fa365e76 Fix docs rendering (lists need a newline before the first item)
a4a3b1956 Fix typo in docs
dda5a5901 Revert "Bump ccxt to 4.0.101"
30e8466ca Update recursive-analysis.md
3881c5189 add example of the result of the analysis
4959d124a Update recursive-analysis.md
f133ee3cc add more explanation in the docs about startup candle and its relation to API limit
ef6afaa2c Add test for replace_fail
0e406c4d7 Update some more test wordings
b21775142 Improve variable naming in test
8ccc66cd9 Add tests for cancel order retries
b4e732617 Add handling for order replacement cancel failing
450219c83 Extract replace_order_faild message and behavior
eb7df3006 add test
961f50e33 fix broken link
478e6f1e6 fix test
a0e115ebd fix another test
ce4f1b070 fix test after adding new test strategy
aba576f79 pre-commit fix
d92a6d7b7 all tests done
89d47ffd8 4 more tests
b9e9f8250 first test done
08b94a207 1 test
9f445cb05 Don't rely on status when determining open order count
1d23ba6e3 Improve wording after order-replacement
28e43a486 initial test
1b2852187 Improve execute_entry interface
4ba3363bc Use matching numpy version in docker armhf image
d465fcffd change startup cande in sample strat
32b0098ec fix example in the docs, increasing startup to 400 on ema100
e77b9de89 fix docs
aec67cda6 update bybit live order to v5
f3fb801b3 Update order_parse online test
fe3308824 Bump ccxt to 4.0.101
4bca8b97f Don't allow empty order-type from exchange
f62f4f771 Fix deployment (no arm numpy wheels just yet).
896e2b628 piwheels finally has wheels for cryptography
ddb0ae10b Ensure no None status is passed from "create_order"
37fa186c5 remove 1 column
979e485f2 initial doc
830f2219c Update exchanges.md
d21f0f408 chore: add guardrails for users who neglect docs
8f883f231 chore: fix set_initial_hist_preds test
2f63b0199 Bump xgboost from 1.7.6 to 2.0.0
cfdd9d6be Bump lightgbm from 4.0.0 to 4.1.0
fd4877759 Update hard min-requirement for python
3f85f3cce Exclude UP036 for now
c7106a680 Bump plotly from 5.16.1 to 5.17.0
6e1f457fb Bump python-rapidjson from 1.10 to 1.11
533a16658 Bump rich from 13.5.2 to 13.5.3
9b35dae46 Bump mkdocs-material from 9.2.8 to 9.3.1
e6d01b04e Bump numpy from 1.25.2 to 1.26.0
d185b2020 Bump filelock from 3.12.3 to 3.12.4
74ed0e0b1 Bump ruff from 0.0.287 to 0.0.290
f6fce2162 Add new parameter to strategy template
158bf0977 Fix type checking error
1f1abfe79 fix: avoid duplicate date columns interfering with fit_live_predictions()
29a5e049b edit note wording for custom_entry_price
2bc0c4ecd update docstring
224213840 update trade object as optional parameter
d81fdeb3e Update docs/strategy-callbacks.md
14c5f435a okx: Use proper history endpoint for fetch_orders
5745722a3 Increase time for fetch_orders in test
a7cd9d77f ignore custom_entry_price trade object type test, remove LocalTrade as type
5b857aeaf fix custom_entry_price trade object type test
afb1b787c add okx to  fully tested exchanges
659168d34 Improve cancel_stop test
3f4715ba4 update custom_entry_price docstring
1d0f1bd1e update doc
220bc3c23 Rename fetch_orders_emulate to make it non-protected
c90be601f Add offset to "fetch_orders" to avoid missing the initial order
5d8e0573f Run handle_onexchange_order test without dry-run
3d858f659 Fix bug closing trades while recalculating
6d2d5f93d Add exit order test
d01bc0fb9 Enforce kwargs for update_trade_state
394d758d3 Add missing fields to json (and json parse)
91c710408 fix flake8, set trade object param as Optional
3a7f39051 Cancel based forceexits shouldn't trigger a full exit.
a7d6efdcd Fix order amounts in test
fed24c130 Improve test for get_canceled_exit_order
ae4021da1 Rename get_canceled exit orders ...
8378a0234 Filter exit_order_count on canceled orders only
cf96ad1d1 add trade param to custom entry price in interface, bot, backtesting, exemples
3919bf374 Adjust sequence of trade json output
9814cf536 flake8 fix
c19fe95d3 add the filter to docs, tyding up the py file
383bdb7d5 flake8 fix
33bf7f9f3 Ensure test doesn't fail based on daytime
454c2343a More clarity for adjust_trade_position callback docstring
310c9f603 Update test_freqai_datadrawer.py
c0a600858 Change the cache of rangestability to 1 day
5b0738541 simplify the filter
844ab4aef chore: add tests for set_initial_return_values
44ca6f1c4 remove unused vars and change wording
552f94724 remove unnecessary check
7655bf6ea turn off logger for now
25ae25248 add logger
dd01ae880 fix error
e0a06ca45 add fulltradesfilter
a93592c46 add fulltradespairlist
08dffc95d fix wording
5019fb5bf fix flake8
a0e0d7fe2 more fixes
6377fd268 flake8 fix
bd9ea9bd8 precommit fix
cfeefa875 remove prepare data from baseanalysis
475d8486b fix mutable Backtest
628963c20 chore: fix bug associated with leaving FreqAI offline for more than 1 candle.
4d1810c2b update lookahead analysis
05f0dccb8 add missing args to config
6360e7fb1 debug
40695a39d add missing var
008f62121 create BaseAnalysis class
a52cf4221 use last order date to fill order.
a866b0a35 Improve test correctness
af1054fa7 Avoid re-implementing existing feature
ee9d2c637 Improve "order refind" mechanics
f0819d9df Improve "filled" date assignment for order updates
96e5615d1 Update safe_value_fallback to allow empty 2nd keys
82baa3f93 Improve and clarify wording around use_exit_signal
45c90c201 Bump pytest from 7.4.1 to 7.4.2
3a1057e1f Bump questionary from 2.0.0 to 2.0.1
e45d5d359 Bump orjson from 3.9.5 to 3.9.7
14ee5a207 Bump mkdocs-material from 9.2.7 to 9.2.8
da83243eb Bump ccxt from 4.0.81 to 4.0.88
46ec7d5ea Bump actions/checkout from 3 to 4
29fbac9f9 Add "catch-all" exceptionhandler for handle_onexchange_order
421a6c02a Improve enum imports
bef27467b Further improve test
52f971cbb Improve existing test
563e68e89 Don't hard-fail merge if there's no informative data
49b4ab6d3 Simplify some things in tests
7455e56a2 Add docstrings, simplify some code
245a67e37 Avoid tons of commits when cancelling all orders
e76d4241a Remove further unnecessary method
01ff054a0 fix open orders telegram reporting
9e1f7dc6f have force-enter also include has_open_orders
067c9219b replace 'open_orders' with "has_open_orders" in api
f4e5ce892 use has_open_orders in persistence
830fc7580 Cleanup unused property
cb5cd5cd8 Temporarily downgrade padnas to <2.1.0
f8b97b6aa Fix dtype mismatch error
7b6e2eac4 use ffill instead of fillna(method='ffill')
f13e134e9 Update actual notebook (not just the docs)
97a37198b Update test
43bb4114d Update test for no open_order_id usage
ffaa121bc Simplify code by removing unnecessary (and non-working) method
227b194a8 Partial exits should consider leveraged trades.
95d8c4548 test_handle_cancel_exit_limit - partially fill by half
bae4abace Test test_handle_cancel_exit_limit short
44461bd1a Add leverage to test_handle_cancel_exit_limit test
2c095c07f Improve variable naming
97275f5a4 Update strategy_analysis_example.md
7ccff1843 remove old codes when we only can do partial entries
f09c0a5bb Remove 3.8 talib Wheel
aba945009 Simplify requirements for 3.9+
4ef164713 Setup.sh should require 3.9
6e93bff37 Update documentation for 3.8 removal
4d20e37f4 Remove 3.8 from CI
20cca01d1 Fix bug in volumepairlist if lookback is bigger than the available candles (new pairs)
8cbb5d2a9 Adjust test for "nan" data
fbae2142d Remove misleading "cd freqtrade" command
e854667eb Add max_drawdown_start and end to /profit API endpoints
7bf20d906 Show drawdown from/to on /profit calls
7c5a11623 Use dt_ts_def in profit endpoints
783a2d945 add dt_ts_def helper
2073c7181 use format_date in rpc methods
d8122962d Add "date to string" helper
1ea626fb5 Pin pandas for <3.9 versions to old version
574744348 Bump pandas from 2.0.3 to 2.1.0
efb9975e3 Bump pytest from 7.4.0 to 7.4.1
5954e7796 Bump mkdocs-material from 9.2.5 to 9.2.7
39b6a0022 Improve naming of calculate_profit method
07e07bd66 Improve test, ensuring we calculate profits correctly
fac8e0fde Remove calc_profit content
ffb1cf52b Convert further usages to calc_profit_combined
399f144c2 more calc_profit_combined usage
459b9d80d use calc_profit_combined
28e685ee2 Switch combined profit response to dataclass
c58a1649c add calc_profit_combined call
ac6cdb76c Bump catboost from 1.2 to 1.2.1
8ac3e8ad5 Bump ruff from 0.0.286 to 0.0.287
e0f52696a Bump pre-commit from 3.3.3 to 3.4.0
f75f0ccf2 Bump pymdown-extensions from 10.1 to 10.3
440f6ab8e Bump nbconvert from 7.7.4 to 7.8.0
e7daf3177 Bump ccxt from 4.0.76 to 4.0.81
8ffc0ad9f Bump fastapi from 0.103.0 to 0.103.1
df83bdea8 Bump python-telegram-bot from 20.4 to 20.5
420f6fb9a Bump filelock from 3.12.2 to 3.12.3
cea3f7d3f fix flake8
a9f63c6a9 fix mypy
0ada2d939 fix mypy
e1b6b9b5a ruff fix
3fea2a35a pre-commit fixes
821a598ff fix ruff
feab5f82c add missing arg
607c604a4 add mising const
b77f926cd add recursive analysis
a4fc7ce0c "fix" bybit invalid order responses for canceled orders
d1984945d Improve tests for /weekly and /monthly
3c20ab683 Have /monthly return proper dates, move formatting to telegram
f838bc760 Implment weekly/monthly RPC endpoints
25f5dbfcb Delete trade if replacing the first order failed
be044fbac Improve log output
7a4276f6c Include pair in dry-run order names
925e18368 Fix linting a.k.a. Maybe one day, flake8 will like me
250e00e6c Fix dropna subset
81672da57 Fix nulls in indicator list output and add expectancy ratio per entry tag in analysis group 0 output
d68c22b21 Move merge-informative_pairs helper to informative section
e806e4a79 Move stop helper functions to callbacks section
6f86e30c7 Add leverage adjustment to "stoploss_from_absolute"
a87404b5a Reduce limit order cross threshold
0357d373a add QRDQN to SB3_CONTRIB_MODELS
28c62724d Add explicit test and message for "Order could not be replaced" scenario
d13357bb0 Update setup.sh
65fe1a671 Add explicit test for bybit fetch_orders behavior
6429282f0 add iterating emulation to fetch_orders for bybit
b5fa01360 Add pairs argument to fetch_orders
02bd052e4 Improve naming of variable
4ed46ef6b Add significant digits Round_Up / round_down
65c7607e3 Add Tests for "Significant" digits
bfc2c70b4 Fix and improve Tick size ROUND_DOWN logic
3a6c00dba Improve price_to_precision test depth
133660ff4 Fall back "price_to_precision" to ccxt where possible
994b2a0f2 Update sorting of price precision logic
d4c042c52 Add amount precision test to test for significant digits
b48fe4ce5 Properly use Precision-mode Variable
78f356c0d amount to contract precision to test_utils
7263d321f move timeframe_to* tests to test_exchange_utils
1ccbe87f9 Move precision tests to exchange_utils test file
e7d2a4876 Move date_minus test to exchange_utils testmethod
c894843d0 Exclude .venv and .env from flake8
23aa8dcd5 Simplify profit calculation (removes unnecessary fallback)
5eb446f1c Don't remove elements from list we're iterating over
5efa40215 Allow invalid futures pairs (`:` separated)
99b01a39d Add note about Edge deprecation
2bae4c98b Add rpi wheel for pyarrow 13.0.0
f717928ae Bump mypy pre-commit
3643ad005 Bump pydantic from 2.2.1 to 2.3.0
46b8708ff Bump fastapi from 0.101.1 to 0.103.0
9136c13cd Bump pyarrow from 12.0.1 to 13.0.0
0df9436d0 Bump mkdocs-material from 9.2.1 to 9.2.5
d32aabecd Bump ruff from 0.0.285 to 0.0.286
f2a3dd641 Bump ccxt from 4.0.71 to 4.0.76
fc23b47c4 Bump python from 3.11.4-slim-bullseye to 3.11.5-slim-bullseye
f25670167 Bump version to 2023.9-dev
c1df94b50 Bump version to 2023.8
f19f3ed4e Fix rpc forceexit logic, fix remaining test
2f97b00d3 Fix test
911e23849 Revert false removal of Exception from test
5659ca2ec Fix migrations
0181abc62 Fix migration SQL statement
acda2ff90 Remove open_order_id from test_ftbot
43c73c75c Remove more open_order_id references
95daff182 Update backtesting to not use open_order_id
b82b77d03 Fix some rpc tests
193dcf578 Fix logic error in force_exit if no order is open
4c0a6611c remove open_order_id from test mock trades
5ed590780 Add explicit example for "after_fill" handling
a78d70499 Fix strategy template typng
cb85a5304 Improve "uses_after_fill" detection
7f1a81eee Fix stop switching to trailing if order is replaced in backtesting
106dffe2c split update_trade
070a1990e Improve handling of None values from custom_stoploss
ddf79088f Update custom stop documenttaion
3ed682a9c Allow None from custom_stop
6e32f172b Update samples in the documentation
bef5e191a Don't surprise people with "after_fill" calls
fc60c0df1 Add call to stoploss-adjust for backtesting
62d83b8db Use is_stop_trailing for actual trailing detection
e1eeaa24d Implement "adjust lower" correctly
624939252 Add test for "allow adjustment in other direction"
4da8c9116 Improve stop adjustment tests
ec8ba821e Simplify stop adjustment code
6b9547a9a Improve migrations
ae9f73062 Add explicit "is_trailing_stop" field to database
147cc4f0b Initial version of stop "after_fill"
e2274e813 Rename adjust_stoploss parameter to allow_refresh
d09193127 Ease meaning of "refresh" param for adjust_stoploss
2893f0544 fix test_apply_fee_conditional_multibuy
f224f743d Add explicit test for open_orders property
be062c5fb Fix frequent notification bug due to stop order
5c0d89feb fix test_handle_insufficient_funds with comments
4e6068a92 wip fix test_rpc_force_exit / __exec_force_exit
07c629922 fiw wip test_api_status
3f506bb47 fix test_api_performance
1c4c2272f fix test_api_delete_open_order
1ed6f1875 wip fix test_rpc_force_exit
ca4ef22d0 fix test_rpc_status_table
db5383927 fix test_rpc_trade_status
29d77a17e Fix more tests
e34bfa976 Fix exception test
d08bad728 Fix trade_from_json
ac4e3028d Clean up some code
f1bed9515 Fix some initial tests
f3f5b63b7 Remove duplicate attributes
a98e8ef20 retreive open orders from orders list, not from db
b03147097 WIP with comment on test test_adjust_entry_maintain_replace
171c4f182 update test_adjust_entry_maintain_replace test case, fix first RPC test
32c919cfa replace open_orders_count by has_open_orders in freqtradebot
bf60f38a2 fix tests test_handle_trade, test_handle_cancel_exit_limit, WIP on test_adjust_entry_maintain_replace
93994756e fix multiple tests, including test_check_handle_cancelled_buy
7c55a2c6e fix tests: test_manage_open_orders_entry, test_manage_open_orders_partial_except, test_adjust_entry_cancel, test_manage_open_orders_partial_fee
ee4379256 fix tests: test_handle_cancel_exit_cancel_exception, test_update_trade_state_sell, test_manage_open_orders_entry_usercustom
f14b42f20 add use has_open_orders property in freqtradebot tests
6e8c765ec add has_open_orders to Trade model property
5f7040688 fix more tests
069759c7c fix more tests
ebd5fac91 update cancel_all_open_orders, wip on fixing test_cancel_all_open_orders
156c20288 fix more tests including process_open_trade_positions
8e0faf4aa fix more tests, remove legacy conditions from update_trade function
20a2b2749 update LocalTrade model orders related property type
73d1201ed start fixing test_handle_stoploss_on_exchange_trailing, add temp logs
fcbacae6f remove unuseful function call in manage_open_orders
60a50a2ea fix test_handle_stoploss_on_exchange, add more orders related hybrid_properties to Trade classes
defa6f45b fix more freqtradebot tests, update params of handle_cancel_enter, handle_cancel_exit
9cdff0b0a fix first important tests in test_freqtradebot, update and fix on order related Trade class hybrid_properties
450fc5763 fix test test_freqtradebot.py::test_execute_entry
249566155 remove unrequired appends from test_update_limit_order
ae92557dd remove commented legacy open_order_id property references
057f852e0 fix localTrade and trade classe miroring, fix persistence tests
4874d1045 Replace open_order_id property by open_orders in Trade model, first test update