Skip to content

Releases: freqtrade/freqtrade

2021.7

29 Jul 18:36
a599645
Compare
Choose a tag to compare

Highlighted changes

  • Configs / templates will now default to using the orderbook to determine prices.
  • Move several settings from ask_strategy to the config's root level.
  • .range option now available for CategoryParameter and DecimalParameter.
  • Provide full backtest statistics to hyperopt_loss functions (important for hyperopt-loss function authors)
  • Automatic hyperopt parameter file - allowing you to automatically have aligned hyperopt and backtesting results.
  • Pairlist modifications
    • New option for AgeFilter to filter only for new pairs. Careful, these often mean more risk!
    • New pairlist-filter OffsetFilter - allowing to skip the first few pairs (for example in combination with Volumepairlist).
    • New option for VolumePairList - allowing dynamic lookbacks based on candle data.
  • New available_capital setting - allowing multiple bots to coexist while relying on compounding gains Read more.
  • Improved cumulative profit calculation for /profit command.
  • Added Webserver mode (freqtrade webserver) for interactive, web-based backtesting.
  • Censor Database passwords before printing them to log to prevent information leakage.
  • Docker images are now available as multiarch build (including arm64). This simplifies usage on Raspberry or arm64 devices, such as the Apple M1.
  • Deprecated order_book_max and order_book_min. Removed support for having the 2 options different - which resulted in strange sell behaviour.

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
03064731a Version bump 2021.7
6490b82ad Update docker-documentation for multiarch builds
cf4d1875d Use prohibitedIn instead of isRestricted
a451a9727 Bump ccxt from 1.53.25 to 1.53.72
0fac9c9cf Bump pandas from 1.3.0 to 1.3.1
6a3838ea4 Bump coveralls from 3.1.0 to 3.2.0
0f82174c5 Bump sqlalchemy from 1.4.21 to 1.4.22
7d428f9cb Bump fastapi from 0.66.0 to 0.67.0
11937fd1b Bump mkdocs-material from 7.1.11 to 7.2.1
05f74bdf5 Changed log ouput to debug in exchange.get_rate
1e32a3ca0 :memo: Docs - StrategyAdvanced - Added `current_time` to `confirm_trade_entry/exit()` examples
b42afb9da get_rate checks if side is buy for some console output
06e7f379b Fix code to get Bittrex US-restricted markets
b84a1d0c9 Don't crash when *_params is not defined in strategy
986aafcdf Fix configuration.md typos
550a9de09 Fixed setup for python3.9 on ubuntu
b0bfbb655 removed buy and sell merge, updated strategy name, removed default side for get_rate
d13524f7c Update ta-lib wheels
fe8de9883 Bump mkdocs from 1.2.1 to 1.2.2
bff353a29 Bump numpy from 1.21.0 to 1.21.1
b7c951eac Bump sqlalchemy from 1.4.20 to 1.4.21
7efad98e4 Bump questionary from 1.9.0 to 1.10.0
4a2688974 Bump ccxt from 1.52.83 to 1.53.25
31b3b4999 Bump requests from 2.25.1 to 2.26.0
c1f1dfb36 Bump mkdocs-material from 7.1.10 to 7.1.11
e9d9668e8 Bump ta-lib from 0.4.20 to 0.4.21
ffeff9c0f Update ARM image building
adef5d89f Fix failing test after webserver merge
0282d1322 Fix PI image caching
51cc90324 Run ci on selfhosted runner
44df5eeac Adjusted docstring, and conditional near end of buy_rate
7c27525bd Merge get_buy_rate and get_sell_rate
53a8c693b Honor skip_pair_validation setting when downloading pairs.
d652e6fcc Don't log from wallet in backtest mode
b7dc2989e flake8 adjustments
2e95df4d8 Update docs for /profit output
2928ee22c Remove compose file for devcontainer
07e3f8240 Changed to python3.8 installing first, removed test_and_fix_python_on_mac
65ce7c983 Added echo python3.* line back in
74d7497a4 Setup script tries to install python3.9 instead of 3.8 with this fix, python versions are also checked for in a loop instead of copy and pasted code
cde041f70 install hdf5 and c-blosc on mac if using python3.9
697bf92f6 Add test for get_starting_balance method
02d716a8b Fix api test
c9c7f84e8 Calculate relative profit based on assumed starting balance
f5c47767c Provide available capital to api
288c92301 Improve docs wording
362436f7d Renamed example config files so they are .json so that syntax highlighting is all correct. Explicitly listed each one in .gitignore to prevent a real config file from being uploaded accidently
29e2b858c Improve wording in docs
2bf7705f2 Renamed example config files so they are .json so that syntax highlighting is all correct. Explicitly listed each one in .gitignore to prevent a real config file from being uploaded accidently
91e5562ae style: apply flake8 formatting
8def18b00 style: apply flake8 formatting
313cf6a01 test: add test for parsing db uri
c78b2075d feat: add one additional asterisk
6a53e2c76 feat: apply censoring to logging
f94dbcd08 feat: censor password from logs
40db42436 Add documentation for available capital setting
6a8e8875a Test new behaviour
786374690 Add available_capital parameter
b41c23444 Extract Closed profit calculation to trade object
ed77889d6 Add explicit tests for _validate_stake_amount
81c50aca0 Bump isort from 5.9.1 to 5.9.2
21ef08d9a Bump mkdocs-material from 7.1.9 to 7.1.10
f4caf9b93 Bump ccxt from 1.52.40 to 1.52.83
8b78a3bde Quick fix for trades opening below min-trade amount
7ea0a74c5 Default to proposed stake
0e4466ca1 Implement strategy-controlled stake sizes. Expose `self.wallet` to a strategy.
f658cfa34 Remove Slack
52ae95b2a Improve naming of apiserver variables
ad26b0dad Don't void backtest object when not necessary
72a103f32 Properly test webserver startup in standalone mode
e4e2340f9 Fix bug where currencies are duplicated
cf6f70607 Don't build for feat branches
6129c5ca9 Fix deprecation warnings from pandas 1.3.0
2f33b97b9 Validate startup candles for backtesting correctly
03861945a Update documentation page too.
863391122 fix short desc not appear
8be024157 Build images for feat/** branches
e5da7ff6d Fix typos and improve wording in docs
7dc826d6b warning for range based lookback performance more readable formatting of examples
5a2bc192d Update docs/includes/pairlists.md
4d4ed82db Update docs/includes/pairlists.md
682f88063 Slightly simplify if statement, add additional test
8248d1acd run flake8
00a1931f4 fix test
c44e87cd3 added tests for `OffsetFilter to `test_pairlist.py`
6cea0ef2d documentation for `OffsetFilter`
f30e300f1 adjusted `test_pairlist.py` for fixed rolling sum
3c3772703 changed quoteVolume to be built over a rolling period using lookback_period to avoid pair_candles being larger than requested lookback_period
d1104bd43 fix daily profit data and daily profit curve example
b7a9853d9 Increase test coverage
a4bd86232 Fix fluky test
36d4a15d2 quickly document webserver mode
005da9718 extract backtesting abort functionality
5474d5ee6 Move webserver start command to seperate file
e5b1657ab Properly remove rpc handler
2ec22f1d9 Add Sorting to available pair list
830b2548b Add backtest stopping
129c7b02d Not all config values are mandatory in webserver mode
17b3cc209 Return numeric value, not empty string
b44d215b9 Add test for backtest via APII
804d99cce Move backtesting api to it's own file
856630601 Add test for start_websever
134c61126 Properly track bt progress ...
03140a0ec Run webserver in main thread when using webserver mode
37b15e830 Add trade count to progress
048008756 Add progress tracking for backtesting
06b672602 Support compounding key
f96d7dfe6 Allow backtesting to reuse data
edb8c4f0e Fix tests for webserver mode
5c18c8726 Implement backtesting with fastapi
df5525973 Add start_trading endpoint
02b84bd01 Introduce webserver mode for fastapi
800e314bf Store backtesting results in backtest instance
97e8ec91f Save configuration file paths
ef137546f Add webserver entrypoint
502c69dce change short desc
dec523eef Display verison of installed FreqUI
1e87225e9 added `test_VolumePairList_range` to test_pairlist.py
10998eb0f Remove further usages of int(int_timestamp)
346d66748 first version of OffsetFilter
5626ca5a0 removed unnecessary casting to int()
ac7598ff1 Bump python-telegram-bot from 13.6 to 13.7
0c8afea38 Bump pandas from 1.2.5 to 1.3.0
d1555a109 Bump fastapi from 0.65.2 to 0.66.0
7ae5f4724 Bump sqlalchemy from 1.4.19 to 1.4.20
2f97846bd Bump ccxt from 1.52.4 to 1.52.40
0d787fde5 Bump plotly from 5.0.0 to 5.1.0
7ac55e541 AgeFilter, RangeStabilityFilter, VolatilityFilter changed `float_timestamp` to `int_timestamp`
85c7b5575 improvements: - `float_timestamp` switched to `int_timestamp` - added documentation to pairlists.md
c5489d530 Reexport File to docs to have this available as documentation too
c3cf71bba sort import
2d5ced780 fix testcase
9e548657e fix testcase
558bcc795 Jupyter notebook snippet: Plotting daily profit / equity line
4aa2ae37b add daily_profit_list
791dfd9ba Fix some doc typos
9919061c7 PEP8 compliance
348dbeff3 added meaningful logging of used lookback range
77293b1f1 Remove Zero duration Trades
a4096318e Provide full backtest-statistics to Hyperopt loss functions
7efa228d7 add dust balance
dbdd7f38a add plural
b722e1235 compact low balance currencies
f6511c3e3 fix typo and add blocker
b72bbebcc fix flake8
3d9f3eeb0 feat(agefilter): add max_days_listed
dc8abd77d Fix import order
3686efa08 Add range property to CategoricalParameter and DecimalParameter, add their tests.
53f963dd7 fixed `self._tf_in_secs` to `self._tf_in_sec`
62da4b452 code cleanup and comments
055229a44 first iteration of volume pairlist with range lookback
3503fdb4e Improve tests for newly added methods
fbd91cd3f Improve formatting to avoid backslash newlines
b25ad68c4 Fix ...
Read more

2021.6

26 Jun 13:07
f9ef30b
Compare
Choose a tag to compare

Highlighted changes

  • Sell-notifications can now be configured based on sell-reason.
  • list-strategies subcommand shows hyperoptable parameters.
  • /profit now accepts a number of days from which the profit shall be shown.
  • Improved backtest-logic, improving accuracy in trailing stop scenarios.
  • Hyperopt now shows the maximum drawdown for each epoch.
  • Refresh-buttons on select telegram messages, to refresh the message instead of reposting it.
  • Dry-run is now realistically simulating order filling, allowing dry-run to result in unfilled orders in dry-run as well.

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
1cb057bda Version bump 2021.6
d294ef10d unexpected docstring params
a46f60bd9 spell corrections
1a82685dd Don't reset log caching
fef73b1b6 Update configuration.md
ea236abf1 Update configuration.md
69a3aee01 minor edits
9e9124028 binance-portal
2ade3ec7b Add max-width query to hide on small screens
f585ffa26 Add Dark theme to Documentation
538a1acdb Add Binance Broker ad to documentation page
e0d3ca6c6 Fix import sorting
c938edc01 Apply dataprovider to /pair_history endpoint
f7c09ba63 Log endpoint should use static rpc class
3c70768e1 make "/profit N" command output be consistent with "/daily" and "/status table" commands
10e94350e Update installation.md
e97c82c51 make "/profit N" command output be consistent with "/daily" and "/status table" commands
0605cbb06 make "/profit N" command output be consistent with "/daily" and "/status table" commands
8c1484ed5 Bump types-filelock from 0.1.3 to 0.1.4
2d05a8bea Bump types-cachetools from 0.1.7 to 0.1.8
fdc04e27a Bump types-tabulate from 0.1.0 to 0.1.1
bb0ee837b Bump pycoingecko from 2.1.0 to 2.2.0
a6628fc65 Bump types-requests from 0.1.11 to 0.1.13
eab639949 Bump prompt-toolkit from 3.0.18 to 3.0.19
fc7b372ce Bump ccxt from 1.51.40 to 1.51.77
17f8936f4 Bump scipy from 1.6.3 to 1.7.0
97351c95c Add section about GPU support
7f434c041 Simplify mkdocs jquery inclusion by using overrides
347eceeda Try fix fluky test
122943d83 Don't run filter again for pairlist generator
96fbb226c Implement better strategy checks
a7f834217 Add small documentation about reload disabling
6e99e3fbb Implement tests for message updating
39b876e37 Log exchange responses if configured
656bebd4d :beetle: Included completely non_optimized spaces in json + swapped merge dictionary order
6e89fbd14 Remove Dockerfile.aarch64
e1010ff59 Don't load protections from config if strategy defines a property
0a1e15988 Fix errors during ubuntu install
156780450 :zap: kwargs merge dictionaries instead of using loops
546ca0107 :recycle: Fixed flake8 warning
8562e1977 Document protections to come from the strategy
a9f111dca Fix some types
a49ca9cbf Change log-level "Executing handler" msg to debug
b38ab84a1 Add documentation mention about new behaviour
1c9def2fd Update freqtrade/optimize/optimize_reports.py
1bb04bb0c Moved daily avg trade row next to total trades on backtest results
38ed49cef move low to stoploss_reached
6d5fc9671 Implement most pessimistic handling of trailing stoploss.
cf7394d01 Export backtesting results by default
4ba7a2bbd Fix mypy update problems
63802aa7f Bump mkdocs from 1.2 to 1.2.1
fe933e78b Bump ccxt from 1.51.3 to 1.51.40
3f1d6d453 Bump mypy from 0.812 to 0.902
4530ae28c Bump sqlalchemy from 1.4.17 to 1.4.18
6dc4259c6 Bump mkdocs-material from 7.1.7 to 7.1.8
cd6620a04 Ignore broken symlinks while resolving strategies.
e22625292 Always use the same parameter sequence
a95f760ff Simplify update logic by moving it to send_msg
03eff6982 Simplify update message sending
eaf0aac77 Remove OrderedDict
fb4dd6c2a Update test to cover this scenario
d54ee0eb0 Refactor hyperopt_tools naming
c65b4e5d3 Small fix to models
d35b2e3b8 Update ftx stoploss logic to properly detect correct trades
a05e38dbd Require timeframe for plot-profit
c215b24a1 Bump fastapi from 0.65.1 to 0.65.2
c29292608 Small style improvements (no empty line at start)
d4dfdf04f Move RPCMessageType to enums
40f1ede77 Simplifying HO's result function
756904f98 Set sell_reason to stoploss when closing the trade as stoploss
9c34304cb Move state enums to enums package
3c149b9b5 Move signalType to enums
89b9915c1 Update imports for SellType in tests
d16a61948 Move SellType Enum to it's own module
b9cf950bb Add test for bad argument on /profit
3310a4502 Change wording if limited lookback is used
3cce66835 Creating a control variable to determine the existence of max drawdown in the final result.
816bb531b Creating fake column for legacy mode on max drawdown
4595db39a Displaying max. drawdown only when it is not legacy mode.
c513c9685 Remove blank line (PEP8)
5c3a418e6 Adjusting drawdown column position.
35d614006 Displays the max drawdown in the hyper optimization results table.
4512ece17 Update Discord link
97a12ddab Version pin mkdocs to avoid nasty surprises
dff8490da Fix docs rendering for pricefilter
57cd8888e Bump blosc from 1.10.2 to 1.10.4
14119d736 Bump mkdocs-material from 7.1.6 to 7.1.7
77a2feeb9 Bump pycoingecko from 2.0.0 to 2.1.0
2468ae35c Bump ccxt from 1.50.70 to 1.51.3
69d74544a Bump python-telegram-bot from 13.5 to 13.6
9073a0532 Bump pytest-cov from 2.12.0 to 2.12.1
c8accd314 Bump uvicorn from 0.13.4 to 0.14.0
6479217cb Don't build for test_multiarch
c76848e08 Update dry-run description with new filling logic
c389d44e9 Improve filling logic
db03a2410 Add tests for fill methods
1e988c97a Update dry-run order handling to use realistic fill prices
a0893b291 Fix strategy samples to use runmode.value
42b6d28b3 Update warning about order_time_in_force
812eb229d plot-profit: Make "auto-open" HTML result optional
80af6e43e test-pairlist: remove non-JSON headline from JSON output
cabab44b7 Combine docker build scripts
387f3bbc5 Adjust missed tests
bd1984386 Move get_sell_rate to exchange class
12916243e Move get_buy_rate to exchange class
4e1425023 Further reorder exchange methods
4c277b303 Reorder exchange methods
67beda6c9 Add fetch_dry_run_order method
10cd89a99 Allow the API to respond faster in case of long pairlists
9edcb393b telegram: move the most important information to the top of sell message fixed flake error
159440231 Add note about signal expiry
79552a93f telegram: move the most important information to the top of sell message fixed tests
53b1f3895 telegram: move the most important information to the top of sell message
f920c2680 fix Hyperopt-list avg-time filters
b5e3fe3b8 Document bittrex volumepairlist incompatibility
f9541d301 Bump ccxt from 1.50.48 to 1.50.70
5d4e18233 Bump coveralls from 3.0.1 to 3.1.0
b4319b5ad Bump sqlalchemy from 1.4.15 to 1.4.17
eb166147c Bump mkdocs-material from 7.1.5 to 7.1.6
cd300c52e Bump urllib3 from 1.26.4 to 1.26.5
2d7ccaeb3 Add test for load_config
06b59551b Improve test coverage
e3d5c9cb1 Fix typo in exception message
901d984ee Tests should write to tmpdir, not testdir
806838c3a Fix we use check sell_noti not noti
b54da430b Add ability to plot bars on indicator chart and pass custom arguments to plotly.
08f96df3a Don't write to testdir, but to tempdir
d7fdc2114 allow list-strategies to show if params are hyperoptable
f6b1abe23 Remove ci from test_multiarch again
9cf2c2201 Align dockerfiles
1e052bde9 Move Dockerfile.armhf to docker directory
8658be004 Use docker-manifest to build multiarch images
313567d07 Support having numbers in custom keyboard
6418f2eed Removed binance.je from exchange specific notes
4617967e1 Try building for multiarch
14df24366 day/week options for Telegram '/profit' command mypy fix
012309a06 day/week options for Telegram '/profit' command fixed line lenght
36b68d370 day/week options for Telegram '/profit' command format changed to "/profit n"
4b5a9d8c4 day/week options for Telegram '/profit' command revert accidental changes
59366208b Add no_build-isolation to arm images too
27bd3cea4 Fix failing docker build
a965436cd day/week options for Telegram '/profit' command format changed to "/profit n"
8a56af919 Update onlyprofit loss should use absolute profit
a42effd4f Update email to freqtrade email address
6235a4d92 [changes] - Hyperopt code example
5d9610749 Don't configure isort twice
3014bc346 Don't use Sum sign in hyperopt to avoid compatibility problems
9fbc5c053 Switch to pyproject.toml for setup
cf39dd216 Fix csv-export error with new hyperopt format
e0083bc58 Support backwards-compatible sell setting
66de5df1d Update sqlite init method
b82f7a2df Update orders-migrations to work with new sqlalchemy syntax
17f74f7da Ensure commit happens on forcebuy
a01d05997 Add Trade.commit method for easy use
6fb32c359 Use commit instead of .flush()
eaa47ff33 Don't use autocommit
c31cb6711 Further changes for sqlalchemy 1.4
2f79958ac Move declarative_base import to import from .orm
c5c323ca8 Settings notify sell in telegram base on sell reason (#5028)
8bef7217e Forgot to save :O
a6cd35365 Address random ci failure
bd44deea0 BugFix - hyperopt-show --print-json include non-optimized params
336f4aa6a day/week options for Telegram '/profit' command isort fix
935ed3643 day/week options for Telegram '/profit' command mypy fix
e9841910e day/week options for Telegram '/profit' command
1cb430f59 Remove encoding specifics, gitattributes to echeckout as utf8
e0ca3c014 Don't completely remove encode/decode
30da307d1 Remove encode/decode for hyperopt
cf03daa0f Fix bug in running hyperopt in windows 10 with preferred encoding in locale differrent from utf-8
ba32708ed Update telegram.py
54d0ac9d2 Update teleg...
Read more

2021.5

27 May 13:53
85c2ca0
Compare
Choose a tag to compare

Highlighted changes

  • custom_sell callback method, providing access to current trade info while determining the sell signal.
  • Store backtest-report for each hyperopt epoch.
  • Show backtest-report with hyperopt-show for the selected epoch.
  • Show non-optimized hyperoptable parameters.
  • Edge supporting informative-pairs.
  • Dataprovider get_analyzed_dataframe() now supports backtesting.
  • /performance now sorts pairs based on absolute profit.
  • Add max_value option to PriceFilter.
  • Add unit to unfilledtimeout - to allow timeouts < 1 minute.
  • Prevent partial fills with too low amount.
  • Add backoff timer on FIAT converter (in case rate-limit is reached).
  • Forcebuy can now ask you for a pair of your whitelist via inline-keyboard.

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
0c9b913ca Version bump 2021.5
f3d8e5c9e Improve hyperopt docs
42453333b Align coinbase download with ccxt limits
8e89d3e6e Fix sort error
cc5769e90 Convert np.int64 to proper int
a747312c1 Explicitly provide is_open to trade Object
7dcf94f80 Update Dockerfile
9465fd390 Fix devcontainer
c0d3a31dd Update strategy-advanced.md
ba3997185 Update wheels for ta-lib
af16614bf Fix formatting issue
20ccda169 Bump ccxt from 1.50.6 to 1.50.30
7757c476f Bump ta-lib from 0.4.19 to 0.4.20
2fddb4ae4 Bump jinja2 from 3.0.0 to 3.0.1
4c02e6667 Bump mkdocs-material from 7.1.4 to 7.1.5
6f990c597 Fix a rare error in save_result : ValueError: Out of range float values are not JSON compliant
77302ea17 Update documentation for forcebuy query
3f956441f Properly format % of zero_duration_trades
a39860e0d Add tests for rejected signals
7f125315b Track Rejected Trades
916ece6a2 More realistic testcase for results
db985cbc2 Fix hyperopt-show failing to display old results with missing new fields.
765c824bf isort
a7bd8b0aa Fix exception in plotting when no trades where generated
069345850 Update freqtrade/rpc/fiat_convert.py
08c707e0c Update docs with new format
25cc4eae9 Fix tests that broke after table formatting changed.
be1385617 Fix flake8 error in test_fiat_convert
f8cdd6475 Reduce warnings when waiting for coingecko backoff
21d986710 Fix missing `not` in `empty` check
e4ca94459 Add tests for coingecko backoff
6e05f856b Abort _find_price when cryptomap is empty after retry
ab6bfbad1 Handle RequestExceptions that are not 429s in _load_cryptomap
8842e0d16 Fix flake8 error in fiat_convert
a0921ec75 Add backoff timer for coingecko API
cc064f157 String columns should have a max-length defined
5285cd69b Add documentation for Postgres and Mysql
44bbc0718 CLosing bracket
a7216e627 SQLite does not know drop column
41e3233ba Fix failing test
6acb2eb2b Add average column to orders table
4e94d3d3e Add test for too small buy check
45e262150 Add minimum-filled protection for buy cancels
9537d9f4e Update strategy-customization.md
dfa412f0d Fix typo in filter
981b2df7c Include win:loss ratio in results tables.
debd98ad9 Make results table more compact by merging win/draw/loss columns and drawdown abs/% into single columns.
e1dc1357c Add drawdown column to strategy summary table.
edcfa9409 Include zero duration trades in backtesting report.
0e6c1d28f Fix cleanup CI by updating action
96ea10e56 Fix circular import in hyperopt
f39888886 Refactor preprocessed trimming to seperate method
1a30e3922 Move squeeze into if block
0045d3a72 fix wrong json key
6172e67fc Update hyperopt.py
c2b9da68e fix indent
1b3bfb2e7 found root cause.
48210170e wrap with is not empty
0358b5365 Add "unfilledtimeout-unit" to full config sample
082fb11bb Avoid having error `cannot set a frame with no defined index and a scalar`
75f88b466 add ability to choose unit in unfilled timeout
7a9853bfe Fix "Too many open Files" exception
2565f91bc Adjust tests to reflect new stoploss behaviour
16c22c7b6 Add pair name to stoploss
36eba0f11 Don't use "r+" memmap, but "r2
6aa574fa2 Convert ROI result to proper json object
6659a0707 Add tests for max-value filter
369f19df6 Add valuefilter to Pricefilters
300639639 Fix docstring typo
459fae6d8 Total row for telegram "/status table" command fixes
3ad8fa2f3 Total row for telegram "/status table" command moved sum calculation to API
cb50298bf Bump fastapi from 0.64.0 to 0.65.1
196fde44e Total row for telegram "/status table" command work around mypy warning
915ff7e1b Total row for telegram "/status table" command fix mypy warnings
d7479fda1 Total row for telegram "/status table" command fix compiler warnings
0abb9cfe2 Total row for telegram "/status table" command
860a4d239 update doc to reflect better empty dataframe check
10ef0f54a Total row for telegram "/status table" command
40ae21f3a Bump numpy from 1.20.2 to 1.20.3
c0b61282f Bump jinja2 from 2.11.3 to 3.0.0
8143e6385 Bump aiofiles from 0.6.0 to 0.7.0
976a026d3 Bump sqlalchemy from 1.4.14 to 1.4.15
439ef197b Bump flake8-tidy-imports from 4.2.1 to 4.3.0
78c77cca7 Bump pytest-cov from 2.11.1 to 2.12.0
b0f854af9 Bump ccxt from 1.49.73 to 1.50.6
37b71b8cf Fix PerformanceFilter failing in test-pairlist mode
0d50e9956 Fix Agefilter checking for > instead of >=
c9ac67e98 Fix some typos
8f8d5dbff Add tests for sl_order_with_result
6f3897647 Introduce cancel_stoploss_with_result
380754b8a Fix typos in docstrings
0b1dd0d20 Use correct order_id for ftx
2d7735ba0 Update telegram to sort performance by absolute performance
6b2a38ccf Add absolute Profit to apiserver
2ecb42a63 Improve rest-api doc config samples
8e9877849 Update installation.md
db17b1a85 fix indentation
88da1f109 fix #4412 download-data does not stop downloading at the specified TIMERANGE end date
2d5f465f1 Fix protections being loaded multiple times for first strategy when backtesting.
29fed37df Fix exception when few pairs with no data do not result in aborting backtest.
e1447f955 /locks should always respond, even if there's no locks
2eac23a15 if stoploss price is above the candle high, set it to candle open instead.  this can occur if stoploss had previously been reached but the sell was prevented by `confirm_trade_exit`
0ace35bf3 Fix unreferenced error
5e73195b3 Use linux lineseperator at all times
330fb538a Couple tweaks for docs.
09b6923e5 Use "choose" link for new issues
4bc018a45 Change rate back to "open" for custom_sell
09756e300 Subplots should always be included in responses
ecee42f56 Read pickle file in mmap mode
1055862bc Extract data-load + dump from hyperopt
5e66d37d5 Slightly modify docker instructions for arm64
24a1d5a96 Change default hyperopt-name to be shorter
5f5597b93 Better test hyperopt writing and reading
9bb6ba086 Update docs/strategy-advanced.md
ad4c51b3c * Added "Dataframe access" section showcasing how to obtain dataframe and use it to get last-available and trade-open candles. * Fix custom_sell() example to use rsi from last-available instead of trade-open candle, add a pointer to "Dataframe access" section for more info. * Simplify "Custom stoploss using an indicator from dataframe example" greatly, add a pointer to "Dataframe access" section for more info.
3cbe40875 read hyperopt results from pickle or json
06bf1aa27 Store epochs as json per line
7398ea88e Change optimize_reports to convert dates to string earlier
e53bbec28 remove duplicate python3-pip
bcab44560 Fix doc typo
425d97719 Update strategy-advanced.md
3d6b3f1d6 Add Issue config.yml
8e6a95e11 Bump ccxt from 1.49.30 to 1.49.73
43c7382d2 Bump fastapi from 0.63.0 to 0.64.0
93268ba16 Bump pytest-mock from 3.6.0 to 3.6.1
5ecd86ed5 Bump pymdown-extensions from 8.1.1 to 8.2
6eb47b0ae Bump flake8 from 3.9.1 to 3.9.2
0a82e2b06 Bump pytest from 6.2.3 to 6.2.4
a7cd8fc57 Bump sqlalchemy from 1.4.12 to 1.4.14
a7bd051f6 Bump mkdocs-material from 7.1.3 to 7.1.4
d495ea369 Update docs about availability of get_analyzed
1c408c040 Add small tests for backtest mode
f2add4425 Update docs/docker_quickstart.md
0a0e7ce5f Documentation for running arm64 builds
00e93dad0 Fix mistake in the docs
92186d89a Add some changes to strategytemplate
2157923ae have edge send multiple messages if necessary
17b9e898d Update docs displaying how to get last available and trade-open candles.
8d8c782bd Slice dataframe in backtesting, preventing access to rows past current time.
70189b199 Move dockerfile and document M1 image existance
f1eb65354 Fix strategy protections not being loaded in backtesting.
1b01ad6f8 Make exchange parameter optional and do not use it as parameter in backtesting.
4b6cd69c8 Add test for no-exchange dataprovider
d344194b3 Fix dataprovider in hyperopt.
9b4f6b41a Use correct datetime.
6fb4d83ab Fix dataprovider in hyperopt.
6af4de8fe Remove dataframe parameter from docs.
cdfa6adbe Store pair datafrmes in dataprovider for backtesting.
dc6e702fe Pass current_time to confirm_trade_entry/confirm_trade_exit.
d34da3f98 Revert "Add dataframe parameter to custom_stoploss() and custom_sell() methods."
513be11fd Fix hyperopt output
554f5f14b Raise exception if no data is left
4f529fe42 Don't use Arrow to get min/max backtest dates
a710b7dc0 Update tests to match new behaviour
431cb5313 Support informative pairs in edge positioning
947ad856c Update Dockerfile.armhf
f55ce04fa Bump python from 3.9.4-slim-buster to 3.9.5-slim-buster
da47f4e1a Fix Kraken balance update error
860379bc5 Bump ccxt from 1.48.76 to 1.49.30
2d8982426 Bump cachetools from 4.2.1 to 4.2.2
82a08bd7d Bump python-telegram-bot from 13.4.1 to 13.5
f138cca79 Be explicit with space assignment in documentation
a63d9e951 Bump arrow from 1.0.3 to 1.1.0
cea207026 Bump technical...
Read more

2021.4

03 May 07:07
Compare
Choose a tag to compare

Highlighted changes

  • Quick Hyperopt - using Parameters to inline hyperopt parameters in the strategy.
    In many cases, this will make a seperate hyperopt file unnecessary.
    Please make sure to read the updated hyepropt documentation for full details.
  • new-config will help configuring the RestAPI and frequi.
  • Technical is part of the freqtrade dependencies and therefore available in the default Docker images (no need to build your custom docker image anymores)
  • Docker images are now using a non-root user to run freqtrade.
  • VolatilityFilter - filtering pairs based on low / high volatility. check the Documentation for more details.
  • Buy / sell fill notification messages. These messages are sent when a order fills - and are disabled by default. Check the Telegram docs for details.
  • Backtesting output is now sorted.
  • Freqtrade will now dynamicaly determine which exchanges can be supported.
  • Improved "unlimited" calculation when stake-currency is deposited or withdrawn.
  • plot-profit will now show absolute Values, no longer Percentage results.

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
e905e0328 Version bump to 2021.4
63c28b651 Remove obsolete get_balance method
1465af50d FTX usable configuration
3f84c37a7 Fix wallet calls
298f54adf Bump pytest-asyncio from 0.15.0 to 0.15.1
6f0a585bd Fix random test failure due to ttl 0  issue
02160d52e Bump scipy from 1.6.2 to 1.6.3
bdcf21e18 Bump pycoingecko from 1.4.1 to 2.0.0
e5bdafd4a Bump ccxt from 1.48.22 to 1.48.76
09a3448fd Bump pytest-mock from 3.5.1 to 3.6.0
14ef080d2 Bump sqlalchemy from 1.4.9 to 1.4.11
4a5eba3db Bump mkdocs-material from 7.1.2 to 7.1.3
bb7ef2f80 Cache pairlist in pairlist, not globally
7448a05f1 Use correct variable in pairlist_manager
fd3afdc23 plot-profit should use absolute values
4636b3970 Fix failed test due to exchange downtime
2eda25426 fix typo in sample_strategy.py
e85553048 hdf5 handler should include the end-date
cb86c90d3 Remove obsolete TODO's
88f26971f Use defaultdict for backtesting
b22377538 Update "output" of jupyter notebook as well
185d754b8 Improve documentation to suggest config-private.json
31b0e3b5e add distribution graph to example notebook
7453dac66 Improve doc wording
d647b841f Add docs how to optimize indicator parameters
5c7f278c8 add tests for IntParameter.range
90476c428 Add "range" property to IntParameter
9dc7f776d Improve log output when loading parameters
191a31db3 NameErrors should not stop loading a different strategy
df16fbd74 Add "dataload complete" message to backtest + hyperopt
4005708f8 Handle edge with volumepairlist and empty pair_whitelist
406c1267a Remove superfluss space
ccaf5764d Small adjustments
0d2457cd4 Add lock_reason to per-pair lock
7e2e19664 improve sell_message by using sell rate
314418540 Allow specifying "new_pairs_days" in config.
f744df237 Fix bad fill message
09efa7b06 Add --new-pairs-days parameter for download-data command.
515c73f39 Don't hard-limit trades endpoint for now
896ec58ca Add the reason why there is a global pairlock when lock is available
92a2e254a Fix backtesting test
d8c8a8d8c Remvoe pointless arguments from get_trade_stake_amount
f7a4331c8 Create config_ftx.json.example
ba2d4d465 Reduce number of calls to `Trade.total_open_traes_stakes()`
0233aa248 Limit stake_amount to max available amount
9f6f3e086 Address ZeroDivisionExceptiond
05ce3acc4 Improve tests for api_trades
759bbd8e7 Update documentation about pagination
bd92ce938 trade_history should paginate through results
cfa9315e2 Prevent out of candle ROI sells
5defd9a7f setup.sh: Install libpython3-dev on Debian/Ubuntu
fd110c7d6 The error that it prints says the contrary to what was evaluated.
f821ef5ae Final finetunings of rpc_fill messages
efbe0843b Add documentation for fill messages
d740aae8c Default fill notifications to off
0341ac5a5 rename RPC message types
8800a0977 Don't send double-notifications for stoploss fills
fecd5c582 Add buy and sell fill notifications
71b017e7c Simplify webhook test
06d6f9ac4 Fix calculation of unlimited_stake in case of modified wallet
1936dd1ee Add test-case verifying "changing" wallet
2254f65fa use binance intests instead of bittrex
bd7e535e4 Use "human" amounts in stake_amount tests
c9e901cf3 Move wallet tasks to test_wallets
75612496d Improve poweredBy logo spacing
a2acb54e7 Clarify comments in pairlist
0ddc68b37 Bump ccxt from 1.47.47 to 1.48.22
66b3ecfee Remove faulty font-family in svg
9407dbcf8 Add freqtrade powered by ccxt
b94de3030 Bump mkdocs-material from 7.1.1 to 7.1.2
59d02f3f0 Bump sqlalchemy from 1.4.7 to 1.4.9
05246e663 Bump pandas from 1.2.3 to 1.2.4
8d2e6954a Bump flake8 from 3.9.0 to 3.9.1
296ea30cc Bump pytest-asyncio from 0.14.0 to 0.15.0
0737e3fa2 Clarify refresh_period section for volumepairlist
44bfb5366 Don't use current rate for closed trades
fbb907553 Update util command structures too
c8d3d449a Add quick test for pair_whitelist overwrite
6a9c47d15 Update docs with new options
1eb9ce422 Allow specifying pairs for optimize commands via `--pairs`
5c579613e add /trade endpoint to rest_client script
aeb81f90f Implement errorhandling for /trade endpoint
e6936ae13 Improve wording in docs
8ce5522a1 Add additional documentation for SKDecimal space
2011912a1 Adapt documentation to use 3 decimals only
01b303e0f Aligning the doc
5e51ba625 fix flake8
ce870bbcf Use 3 decimals for ROI space
714278725 Roll back unintended changes that break rendering
c9c039d64 remove `copy()` from `custom_info` example
ce23d9dfe Fix test min stake amount
885096f2b Update tests for get_min_pair_stake_amount
fa343b048 Fix get_min_pair_stake_amount formula
52c482cec Convert trailing and roi defaults to skdecimal
e82081480 Default-stoploss-hyperopt should use decimal space, nto real
862df2b43 Add blacklist recommendation for kucoin
ba38e398e Add type hint
c316531c4 make tests 3.7 compatible
c2f35ce41 /balance should use cached tickers when possible
82d66410f Fix /performance output
521e48c94 Add doc section for Kucoin
e4bb6b158 Add kucoin exchange subclass
638cd4e8f Upgrade cleanup action to latest version
37c8fd6ad Remove arrow from models.py
e0f2bb616 update conda dependencies to make compatible with tables package
99e7ee127 Fix ftx stoploss creation test
f1cf56cc4 Update current_whitelist test
9b23be402 Return a copy from `current_whitelist`
4b902d6eb Don't use response-model on trades endpoint for now
9a58a8534 Don't export "hum" date versions for trade objects.
1194d0c0f Update brew before installing packages
d4dc05980 Update ftx.py
f1ac6853f Fix discord invite link
c19ebc015 Bump mkdocs-material from 7.1.0 to 7.1.1
53bbb2b42 Bump ccxt from 1.46.38 to 1.47.47
1b925ec4a Bump sqlalchemy from 1.4.5 to 1.4.7
906c4e64d chore(readme): Fix markdown of docker manual
aaf9872ef Simplify webserver test
4820b4b31 Fix test failure
579e68f31 Reduce log verbosity when  buying
96a5b6555 fix documentation inconsistency fixes freqtrade/freqtrade#4650
14e857423 fetch_balance is never called in dry-run
37c2e037f Rename dry_run_order to create_dry_run_order
ebbe47f38 Simplify fiat convert and fix USD coingecko problem
9804e2011 Don't use _set_value for autoOpt-Spaces
83fbaf16c Extract numeric param validation and explosion
ea4b5d675 Don't explode low/high, but use explicit parameters
34e47db18 Test SKDecimal space
fedff1a75 Fix failing test
5f6740064 Add SKDecimal Space
126127c1e Fix armHF image to use ftuser on install too
4b2cec22e Chown .local dir
0b4b67e46 add FAQ entries for shorting, futures, and options
644dcc164 Only allow chown via sudo
4eb251ce4 Update dockerfiles to run as non-root
898c24949 Add chown method to support docker
74bf0b639 Fix typo in documentation
5a5c5fccf Add gitattributes file
862f69f89 removed typos
f8244d9d7 resolves freqtrade/freqtrade#4650
4d30c32ad Improve resiliancy of a test
5ee879a74 isort resolves freqtrade/freqtrade#4650
17508efbb resolves freqtrade/freqtrade#4650
7f8d90d34 Update list-exchanges doc with new format
d2680f6cb Remove telegram deprecation warning
ac6bff536 Fix test failure with UI test if UI is deployed
0f0607bae Fix rangeestability filter caching issue
9772a9363 resolves freqtrade/freqtrade#4650
9089323d2 resolves freqtrade/freqtrade#4650
187cf6dcd VolatilityFilter resolves freqtrade/freqtrade#4650
a3b4667f7 Update exchange validation to use "validate_exchange".
b6599c1da Improve Kraken-specific config description.
5ed782844 Remove hardcoded list of non-working exchanges
f37fbbf4e Update constants.py
c40b811f1 flush after creating mock trades
bf0886a83 Update constants.py
56ef3af42 Allow comments in pairs files
1733e2406 pyLint adjustment resolves freqtrade#4650
be770a894 added VolatilityFilter resolves freqtrade#4650
6f02acdbb Revert "resolves freqtrade/freqtrade#4650"
142690c93 resolves freqtrade/freqtrade#4650
ddabfe020 adjust tests to match new exchangelist output
969d44a95 Update Dockerfile.armhf
0550f261f Add exchange_has validation
6633752fc Bump python from 3.9.3-slim-buster to 3.9.4-slim-buster
fc78246bb Some changes to rest-api docs
ddba0d688 Add new trade endpoint to docs
c176e277f Add a REST endpoint for getting a specific trade
78a84f808 Allow --hyperoptloss in addition to --hyperopt-loss
7b2a0d46c Fix typo
3044aa18e Add warning for hyperopt-parameters
c51839dc3 Make t...
Read more

2021.3

28 Mar 09:33
2cf36ca
Compare
Choose a tag to compare

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 walle...
Read more

2021.2

24 Feb 18:28
38b96f0
Compare
Choose a tag to compare

Highlighted changes

  • Remove BacktestResult return type, use the Trade object instead.
    This gives us more datapoints for each backtested trade.
  • Align Total Profit from the backtesting summary with the Total Profit column from the table.
  • Improve how max_open_trades is calculated when used for backtesting with fewer pairs than max_open_trades.
  • New subcommand freqtrade install-ui to deploy freqUI from within the bot. Make sure to read the API documentation to fully understand this.
  • Reduced buttonsize on Telegram to allow more buttons in custom layouts.
  • Slightly improved formatting of Values for some Telegram methods (no need to use 8 decimals for USDT).
  • New metric cumsum min / max metrics to backtest report
  • Fix "disappearing whitelist" bug when staticpairlist was used in combination with certain filters

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
aea8f05d1 Version bump 2021.2
d6d8678fd Fix missleading FAQ information
3612c786b Bump tabulate from 0.8.8 to 0.8.9
a0fa1e84f Bump ccxt from 1.41.90 to 1.42.19
c71ecd368 Fix wrong pair-content in strategy-analysis notebook and documentation
228e51b60 Fix #4405
5e4730b73 Add test confirming  #4405
8a62bfa0e armhf image should not be updated to python3.9
d8c7e5ce8 Bump python from 3.9.1-slim-buster to 3.9.2-slim-buster
85f12f8c2 Bump cryptography from 3.4.5 to 3.4.6
dea04c645 Bump scipy from 1.6.0 to 1.6.1
932aabd01 Bump uvicorn from 0.13.3 to 0.13.4
8c398acc0 Bump python-telegram-bot from 13.2 to 13.3
ab74c6e77 Bump tabulate from 0.8.7 to 0.8.8
188d7aaf8 Fix example in storing-information docs
3629892fc Stoploss-guard should use the trade_limit or more
245e39e52 dry-run should be a bool, not a string
c9688f1c8 fix(doc/plotting): misplaced comma in example code
2b0d2070d Avoid crash with /delete
327c23618 Improve documentation for get_analyzed_dataframe
b5a9ce289 Download data in the right format as well ...
87dc1d395 Explicitly push tag and tag_plot images
fedbb5c0c Remove last flask occurance from setup.py
11b20d693 Add config to hyperopt_loss_function documentation
009a447d8 Adjust documentation for new parameter in loss functions
3e06cd8b3 pass data and config to loss function
bc188907b Bump cryptography from 3.3.2 to 3.4.5
5f2513934 Bump ccxt from 1.41.70 to 1.41.90
dbef5425c Bump prompt-toolkit from 3.0.14 to 3.0.16
d08572ea0 Bump pandas from 1.2.1 to 1.2.2
44cb20668 Bump joblib from 1.0.0 to 1.0.1
1a166f639 Add test for calcuate_csum
5c263c7ff add backtesting results abs profit min/abs profit max, to get a better view if a strategy has a enough money to succeed
ee74bc1f5 timeframe is mandatory, no need to use .get()
ffca09bbc Test ohlcv_candle_limit explicitly
da89838b5 Set bittrex limits as returned by the exchange
5622bb324 Make candle_limit optionally timeframe dependent
7ecf8f8b8 Cleanup candle_limit usage
10a11bda3 Document bitvavo as community tested
6f77ec063 Fix cookieError on python<3.8
73d91275c Reset sell_order_status if a new sell-order is placed
d4c8be915 Use fstring where possible
e7acee790 Improve coin value output by rounding coin specific
072abde9b Introduce round_coin_value to simplify coin rounding
dd23f6bcb Fix type for getting pairs
843fb204e Fix problem with inf values returned from dataframe for api methods
aa79574c0 Position-size should NEVER be over available_capital
3110d2dbb Add small test cases
86fa75b28 Pin version of cryptography
7ee149da5 Improve plotting errorhandling
427d76274 Improve tests for cancel_order to be more realistic
c5ab3a80a Check if order is a dict before parsing
de727645a FIx random test failure if certain files exist
c412f8df6 Bump python-telegram-bot from 13.1 to 13.2
12168cbf0 Bump ccxt from 1.41.62 to 1.41.70
22d447b3f Bump mkdocs-material from 6.2.7 to 6.2.8
676cd7bb5 Bump sqlalchemy from 1.3.22 to 1.3.23
dd7f9181c Bump numpy from 1.20.0 to 1.20.1
d1bb46bed Bump py-find-1st from 1.1.4 to 1.1.5
694f55c0a Use suggested link
d5cf837c0 Parse regular cancel_order call to update orders table
bc8fda8d6 Update sample_strategy.py
0a43988f3 Fix sample strategy documentation link
aec22c5c3 introduce skip_open_order_update parameter
86a97988c Improve wording
0806202d4 ccxt version bump to 1.41.62
a816fb124 chore(lint): lint binance example config
1310a7b54 Fix bug with wrong conversion for BTCST/BTC
428d2af31 add `sudo` to `chown`
5165357f4 Update data-download.md
5cd874599 Update README.md
99b2214d1 setting resize_keyboard=True for slightly smaller Telegram buttons
e8e5acc2e Fix import in strategy template
b8cb39462 Move get_trade_stake_amount to wallets
f36c61e32 Fix documentation links pointing to pairlists
06b56544a printing json by default now
56569690d Update rest_client.py
12bcbf437 #4289 printing json output
43986d3f7 Move Pricing to subpage
b41078cc4 Don't include plugin documentation in Configuration page
dabe456d6 Improve wording of configuration doc
3e3c9e99c Move command references to their respective subpages
f0532f28c Small doc-reorg adding "advanced topics" as main header
cfd0bb896 Extract min stake amount from bot to exchange class
3d9b4034e Use already calculated current_profit for sell_profit_offset comparison
a9f1c871d Add path loading snippet to derived strategies
52acf9aaf Fix "disappearing pairs" bug
130a9b4db Add test to call verify_pairlist multiple times
55c9489eb Downgrade RPI docker-image to 3.7
cd5c58fd3 Properly patch exchange for plot_profit test
4facf662d Fix random test-failure caused by un-clean hyperopt shutdown
ccdac3d4c Bump urllib3 from 1.26.2 to 1.26.3
7fcf0d523 Bump pymdown-extensions from 8.1 to 8.1.1
2a5e0920e Bump mkdocs-material from 6.2.5 to 6.2.7
aa7120f27 Bump ccxt from 1.40.99 to 1.41.35
ed1d4f056 Bump jinja2 from 2.11.2 to 2.11.3
76312d722 Bump pytest from 6.2.1 to 6.2.2
2c80388b4 Fix valueerror in case of empty array files
06e2bc94c Deploy to subdirectory
e4a085027 Add test for UI methods
28be71806 Install html file as well
a87a885cc Don't use Path object to return fileresponses
7b3d99819 Fix bug with not cleaning UI folder
944d674ee Store freqUI version and read it again
2af1d2d63 Extract last FreqUI version from api response
1df0aa875 Add ui installation to docker container builds
35c2e2556 Document FreqUI usage
e928d2991 Add fallback file
f05f2c45e Allow deleting of UI only
ddc99553b Add test case for get_ui_download_url
a1a35115a Extract get_ui_download_url
87ed2d750 Write some tests for UI Downloading
a47616eed Add UI installation subcommand
27970b424 Add webUI serving to api-server
79087ba16 Fix intermitted test failure
5724371a4 Fix types for numpy 1.20.0 upgrade
92721db58 Version bump numpy to 1.20.0
bc586fe73 Try fix CI
4cc93151c Fix a bug when compare sell_profit_offset
16dad8b6d Allow custom_stoploss to cooperate with stoploss on exchange
30e5c01cb Improve formatting of custom_stoploss docs
6b63129eb Fixed virtualenv link
406682c3b Fix random api failure in slow cases
5d1828982 Fix name in issue template
1e6194fa3 Improve wording, fix hirerchial hierarchy
ea0ffbae7 use profit_ratio in calculate_cum_profit
b12d0b110 Update installation.md
5cdd9dd44 Cache markets in the exchange object
4bb2a00f0 Bump python from 3.8.6-slim-buster to 3.9.1-slim-buster
d1d77f56d Update installation.md
a414d5d75 Update installation.md
ec2cf7f97 Update installation.md
5da8a3078 Update installation.md
188010329 Update installation.md
bcc7adb18 Update installation.md
d84824237 Update installation.md
39cef2dbe Update environment.yml
4a28fab8a Update installation.md
65e0ba60d Update installation.md
13ad6dd46 Fix documentation
c659150d9 Also print trade_duration in seconds to json
2226f6781 Update installation.md
62e43539c Limit max_open_trades to maximum available pairs
789a980a3 Fix tests for new export format
2c2a33b2e updated environemnt.ylm
9af89786b update installation.md
deb8432d3 Streamline trade to dataframe conversion
8ee264bc5 Don't use profit_percent for backtesting results anymore
48977493b Backtesting does not need to convert to BacktestResult object
3b51545d2 Add trade_duration to to_json
172a629c5 Update installation.md
f9dd74585 Update installation.md
73206a919 Update installation.md
63be27f67 Update installation.md
9ad081710 Update installation.md
a271c9e98 Update installation.md
ce5ba1bb6 Adding Conda installation process

2021.1

27 Jan 18:07
766c786
Compare
Choose a tag to compare

Highlighted changes

  • New feature: Custom stoploss callback.
    • Allow the strategy to change the stoploss via custom callback.
    • Needs to be explicitly activated via use_custom_stoploss.
  • Wildcard-filters, allowing regex to blacklist and whitelist pairs dynamically (e.g. .*BULL/BTC, .*BEAR/BTC, BNB/.*)
  • Switch API layer from Flask to FastAPI to better support parallel requests.
  • Improved merge_informative_pair() making sure longer timeframes are used as soon as they're available.
  • Protections can now be defined in the strategy as well. As with all other settings, Protections in the config will overwrite strategy settings.
  • Expire buy-signals after X minutes (ignore_buying_expired_candle_after).
  • Set sell_profit_offset in combination with sell_profit_only to define an offset when to enable the sell-signal.
  • Call bot_loop_start() during backtesting once per pair.
  • Add bot_name setting, allowing the UI to differentiate when running multiple bots.
  • Add /status <tradeids> to query status of specific trades.

Important note: As anounced previously, the master branch (and docker images) images will be removed with this version. If you didn't update your docker-image / branch previously, make sure to do so now to benefit from this new version.

How to update

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

docker-compose

Note: We've switched from master to stable for the release Images - please adjust your docker-file and replace freqtradeorg/freqtrade:master with freqtradeorg/freqtrade:stable. The master image will not be built for this release, and will be removed soon.

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
eac98dbbd Version bump to 2021.1
a9b4d6de3 Check for existance of ask key in ticker
4d7f3e570 Add test for spreadfilter division exception
5ab8cc56a Update docs to also work for postgres
8f529f48d Update freqtrade/freqtradebot.py use is_open.is_(True)
91b6c0294 Update download-data --dl-trades sample command
f98bd4095 Bump ccxt from 1.40.74 to 1.40.99
cb749b578 Bump scikit-learn from 0.24.0 to 0.24.1
fb99cf145 Bump prompt-toolkit from 3.0.10 to 3.0.14
d4e9037e6 Bump pandas from 1.2.0 to 1.2.1
afdcd2c0a Bump pytest-cov from 2.10.1 to 2.11.1
9422062cb Bump blosc from 1.10.1 to 1.10.2
b976baae3 Bump cachetools from 4.2.0 to 4.2.1
c22cccb55 Fix operator does not exist: boolean = integer
9a3c425cf Update slack link
16f967535 Fix whitelist expansion problem
31e0b0964 Rename config.json.example
371b374ea Remove unused config setup from setup.sh
bec9b580b sell_profit_offset should be documented in the strategy override section
e94e2dd38 Remove docker config without compose
c42241986 further investigate random test failure
fd379d36a Fixed quickstart link in docs
5c0f98b51 Blacklist Poloniex - as ccxt does not provide a fetch_order endpoint
5f5f75e14 Improve wording in protections documentation
992d6b801 Small improvement to MaxDrawDown protection
7c80eeea9 Add use_custom_stoploss to optimize_report
86b3306a3 Small doc refactoring
7c99e6f0e Avoid random test failure
cd8d4da46 Add test for /status <tradeids> functionality
a68a546dd _rpc_trade_status argument datatype optimizations
10104927c Fix devcontainer
994b4013a Bump ccxt from 1.40.30 to 1.40.74
8b5f8937c Bump pyjwt from 2.0.0 to 2.0.1
7f8dbce36 Bump mkdocs-material from 6.2.4 to 6.2.5
6a8e49510 Bump plotly from 4.14.1 to 4.14.3
296a6bd43 Bump coveralls from 2.2.0 to 3.0.0
eb95d970e flake8 beautify
d21eff0d5 fix, if an non existing trade_id is provided
3ea33d173 updating doc and help with new /status argument
6d40814db extend status bot command to query specific trades
a8bae3a38 Don't update trade fees for dry-run orders
389db2fe7 Enhance wording of docker quickstart
53c208197 Add bot_name setting
572f5f918 Fix fstring syntax error
9f338ba6e Debug random test failure in CI
d74376726 api-server should fully support max_open_trades=-1
bf5868c96 Add testcase for nonexisting pairs on whitelist
f72d53351 Added ability to keep invalid pairs while expanding expand_pairlist
0b65fe6af Capture backtest start / end time
914710625 call bot_loop_start() in backtesting to allow setup-code to run
baa1142af Use preprocessed to get min/max date in hyperopt
9d4cdcad1 Extract backtesting of one strategy
6d1fba140 Remove unnecessary log output tests
f3de0dd3e Fix support for protections in hyperopt
950c5c011 fix: edge doc typos
adb3fb123 Fix typo
47a06c621 Fix enable/reenable of swagger UI endpoint
ac43591c4 Fix failing api when max_open_trades is unlimited
60ea32e39 Improve wording
1f6a71fdd Reformat code on new version
71f45021b Removed redundant statement
e328182bd Changed workings so it only needs to timing-parameter, instead of also requiring a boolean value
4d7ffa8c8 Added suppoort for regex in whitelist
b062b836c Add test for sell_profit_offset
63a579dba Add sell_profit_offset parameter
dbc25f00a Switch full config from bittrex to binance
f159c4643 Include stoploss_on_exchange in stoploss_guard
59efc5f08 Bump pytest-mock from 3.5.0 to 3.5.1
f1809286c Bump ccxt from 1.40.25 to 1.40.30
a34753fcb Bump prompt-toolkit from 3.0.9 to 3.0.10
ddecf3ef9 Bump mkdocs-material from 6.2.3 to 6.2.4
8631a5451 Fix test due to pyjwt2.0
378a252ad Fix #4161 - by not using the problematic method for windows
c8df3c473 Bump pyjwt from 1.7.1 to 2.0.0
4d2c59b7e Bump numpy from 1.19.4 to 1.19.5
3cf506fa5 Bump ccxt from 1.40.14 to 1.40.25
784630e2f Bump uvicorn from 0.13.2 to 0.13.3
f3319e138 Bump prompt-toolkit from 3.0.8 to 3.0.9
bd5f46e4c Bump pytest-mock from 3.4.0 to 3.5.0
2e7faa782 Add documentation section for macOS installation error on 3.999999999
4f126bea3 Change trades-test2 to better test correct behaviour
bf182dc01 Fix wrong key usage in trade_history_timebased
124cb5c5b Add cblosc brew dependency
54ab61d18 Install hdf5 via brew
9e66417e8 Run CI for mac on 3.9
b43ef474a Fix expired candle implementation
c9e477214 Allow protections to be set in the strategy
e69dac270 Fix bug in RPC history mode when no data is found
a9ca72c1b Fix typo in documentation
91f866788 DOn't update open orders in dry-run mode
a90609315 FIx doc wording for all guards
f7b055a58 Attempt to improve wording
95732e899 Clarification in documentation
5c34140a1 Adjusted documentation to reflect sub-key configuration
65d91a3a5 isort fix
573de1cf0 Fixed flake8 warnings
e3f3f3629 Changes based on review comments
eaaaddac8 Update docs/configuration.md
c9ed2137b Simplified return statements
67306d943 Update interface.py
9a93a0876 Update interface.py
844df96ec Making changes so the build checks are satisified (imports & flake8)
614a99659 First commit about ignoring expired candle
1cf6e2c95 Changed documentation based on review comments
0704cfb05 Added an example with a positive offset for a custom stoploss
07bc0c3fc Improve merge_informative_pairs to properly merge correct timeframes
d1804dee6 Add note about python-dev dependency
9e435fba0 Bump ccxt from 1.39.79 to 1.40.14
7d06e6146 Bump scipy from 1.5.4 to 1.6.0
66391b80a Bump isort from 5.6.4 to 5.7.0
5ca2cd3a1 Change defaults to log only errors
634d6f389 Change logging to stderr
26c346340 Stake-amount supports unlimited, too
cff50f9f6 Add response-model for show_config
ca0bb7bbb Don't require RPC for strategy
e6176d43f Optional RPC dependency
3dc37dd79 Add types for deps
336dd1a29 Rename api_models to api_schemas
84ced9200 Fix mock-tests missing some fields
29f4dd1dc Enhance some response models
718f2b24d Don't use relative imports
b2ab553a3 Rename api_server2 module to apiserver
eb20f6e7d Align auth token to flask version to prevent user-logout
346542e5c Remove flask dependency
68d148e72 Allow configuration of openAPI interface
1717121f1 Properly use JWT secret key
790f83365 Some more tests around api_auth
29ce32364 Fix wrong hyperoptlosstest
776ce57f5 Remove api_server
54a50b1fb Fix some tests
9f873305e Improve response models
9350f505b Implement missing methods
e23898d17 Improve some tests
9ee1d8835 Implement more endpoints
73a29e6d7 Improve tests, implement more fastapi methods
a18d66e10 Add more endpoints to fastapi
f37ea4ba2 Fix some initial tests towards fastAPI
4b86700a0 Implement more endpoints
5e4c4cae0 Fix auth providers
86d070088 Move models to apimodels
659427850 Reorder endpoints
eac74a9de Implement auth in fastapi
619b855d5 Add version endpoint
a862f19f8 Allow retrieval of rpc and config via dependencies
1e38fec61 Initial fastapi implementation (Ping working)
11f36fbae Fix all custom stoploss samples
67ced6a53 Update docs/strategy-advanced.md
e5840abaf Added imports to documentation for clarification when using custom stoploss
512e16335 change docstring to better reflect what the method is for
bd7600ff0 Small visual changes
04624aae4 Add documentation for wildcard-blacklist
0affacd39 Support invalid regex blacklist from config
9feabe707 Fix RPC methods to allow wildcards (and validate wildcards)
704cf1438 Add expand_pairlist method
2fdda8e44 plot-profit should fail gracefully if no trade is within the selected timerange
b8899b39e Show advanced plot-config section again
b607740dd Fix kraken balance bug if open buy orders exist
238e9aabb Add test showing wrong behaviour
dcc7d559e Reinstate header partials
ecea6c952 Move jquery to the bottom
accc59aa1 Reinstate jquery
003552d78 Remove custom header section from docs
0d4cf3208 Slightly adapt to pandas incompatibility
30087697e Bump pandas from 1.1.5 to 1.2.0
092ebf845 Bump scikit-learn from 0.23.2 to 0.24.0
fc0d14c1b...
Read more

2020.12

29 Dec 06:09
f97e810
Compare
Choose a tag to compare

Highlighted changes

  • New PerformanceFilter, allowing sorting of the pairlist based on past trade performance.
  • Improved performance of AgeFilter and RangeStabilityFilter.
  • Changed backtesting behavior
    • Sell-signal is now favored over stoploss.
    • ROI is now favored over Trailing-stop - avoiding wins due to trailing stop higher than the current ROI
    • Best familiarize yourself with all assumptions by reading through the backtesting assumptions again.
  • New feature: Protections
    • Initial Protections:
      • CooldownPeriod - don't rebuy Pair if it had a position X time ago
      • LowProfitPairs - don't buy pair for stop_duration if the required profit within lookback_period is below required_profit
      • StoplossGuard - Stop trading if more than trade_limit stoplosses occured within lookback_period (either per pair, or without)
      • MaxDrawdown - stop trading if more than max_allowed_drawdown is reached within lookback period.
    • Backtesting support
      • to keep performance impact for backtesting at a minimum support for protections has to be enabled explicitly via --enable-protections.
      • Locks are exported to the backtesting file, allowing for analysis later
  • Improved setup.sh script, which should work better for Raspberry's.
  • New /stats Telegram / Rest API endpoint, providing some performance statistics.
  • New Telegram keyboard configuration options, allowing you to define the telegram keys yourself.
  • Reduced "locked pairs" log-spamming by reducing the message to once per candle.
  • Plot now supports customized area plots. Check the documentation for more details.

Important note: This will be the last release with both master and stable branch, so please update your image / branch if not done so already.

How to update

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

docker-compose

Note: We're switching from master to stable for the release Images - please adjust your docker-file and replace freqtradeorg/freqtrade:master with freqtradeorg/freqtrade:stable

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
f80ffe279 Version bump 2020.12
f49260911 Bump blosc from 1.9.2 to 1.10.1
87b896879 Bump ccxt from 1.39.52 to 1.39.79
10840ec17 Bump pymdown-extensions from 8.0.1 to 8.1
b3e929d14 Bump mkdocs-material from 6.1.7 to 6.2.3
7d2b9447d Update slack link
a87c27390 Refactor RPC modules so handlers don't inherit RPC directly
1508e08ea Move fiatconvert init to RPC class
5bf739b91 Simplify more telegram tests
be4a4be7a Further simplify test_telegram
4cbbb80bc Refactor test_telegram to simplify tests
516e56bfa Move init of _config to apiserver parent
f11fd2fee Sort imports
67193bca3 Move pairlists to be a plugin submodule
1713841d0 Initialize markets at startup for ccxt tests
721d0fb2a Improve wording of developer docs
74bcd82c3 Exception msg
65d91b7cb Add note on adding new exchange with compat tests
5599490aa Adjust ohlcv test after rebase
b39de171c Don't run longrun regularily
0981287c6 Improve test syntax for ccxt_compat tests
2016eea21 Fix some test-errors in ccxt_compat
a6e6ce16b Fix test failures
b7d4ff9c2 Add test for fetch_ohlcv (against exchange)
7833d9935 Add dummy test for fetch_ohlcv
79ed89e48 Add test for fee calculation
38af1b2a5 Improve compat tests
36d60fa8a First small compat test
b1fe5940f check for Exception and log msgs
cd1a8e2c4 better error msg
be28b42bf Exception for invalid keyboard config
4dadfd199 Documentation syntax
78dff3d51 docs: Note syntax
2787ba080 added /locks to command list
277f3ff47 tests: cleaup
d25fe5857 Bump sqlalchemy from 1.3.20 to 1.3.22
8eb013020 Bump pytest-mock from 3.3.1 to 3.4.0
3b6786391 Bump ccxt from 1.39.33 to 1.39.52
a2873096c Bump flake8-tidy-imports from 4.2.0 to 4.2.1
5716202e4 Bump joblib from 0.17.0 to 1.0.0
fe2720692 Bump questionary from 1.8.1 to 1.9.0
a1755364e Bump pytest from 6.2.0 to 6.2.1
e7e687c8e Bump requests from 2.25.0 to 2.25.1
5423c21be keyboard type
f39dde121 moved keyboard config validation to __inti__
18a24d75e cleanup
3cb559994 some more test
c1b8ad723 renaming, comments, cleanups
fabb31e1b imports order
f120c8d6c documentation
f24626e13 removed too many blank lines
43091a26c simple tests
8b2487802 plot_config documentation for fill_to, fill_label, fill_color
5b2902fcb cleanup
16baca5ee fixed: too complex warning
d901a8616 typo
75e475893 changed config params, added fill area in subplots
cc39cf97d revert to former create_plotconfig behaviour
4531c924d PEP8
fb3d82ccb cleanup
fdd4b40c3 fixed subplots, empty create plot_config if its not given by strategie
daa1727e2 Exeption for fill_area.traces
3fdfc06a1 label for fill_area added and documentation updated
ecadfdd98 fixed:advanced config. added. feature: fill area between traces by advanced configuration.
6b44545d3 sort order imports
799e6be2e fix tests
621105df9 renaming shortcut_btns to keyboard
bf9209948 test for custom keyboard
5b3ffd514 better log msg, comments
5e6897b27 documentation for custom keyboard
e92bcb00f telegram: specify custom shortcut bottons (keyboard) in config.json
8d3f096a9 AgeFilter does not require tickers
d7daa8643 Add bybit subclass
bd0af1b30 Fix test warning
7d2395ddb Add limit parameter to fetch_ohlcv
ca9fd0899 Update strategy-customization.md
4e7f914e9 Improve test for AgeFilter, fix bug in Agefilter
266031a6b Disallow PerformanceFilter for backtesting
d1fda28d2 Fix typehints
011ba1d9a Adapt tests to use async methods
3c85d5201 Use async to get candle data for pairlists
4c0edd046 Move dependencies to base image for RPI
c8dde6322 Allow test-pairlist to run with verbosity
69901c131 Provide pair to _validate_pairs in pairlists
39fec25ae add optional Cache arguments to refresh_pairs method
dc9280833 Change PI dockerfile to use staged build
9f5c4ead1 Remove support for 3.6
66d5271ad Don't build for 3.6 any longer
ba869a330 Build 3.6 on github actions too
8965b8a18 Bump pytest from 6.1.2 to 6.2.0
a9b586d33 Bump ccxt from 1.39.10 to 1.39.33
44f295110 Bump python-rapidjson from 0.9.4 to 1.0
bdd895b8d Bump pandas from 1.1.4 to 1.1.5
a3139dd9d Bump flake8-tidy-imports from 4.1.0 to 4.2.0
4cf16fa8d Bump plotly from 4.13.0 to 4.14.1
3bea9255e Bump cachetools from 4.1.1 to 4.2.0
dad427461 Downgrade dockerfile to 3.8.6 to avoid image bloat
a4bfd0b0a Split linux and OSX builds into 2 seperate, parallel jobs
657b002a8 Explicitly check for False in fetch_ticker
9cd1be8f9 Update usage of open_trade_price to open_trade_value
8a2fbf659 Small cleanup of protection stuff
14647fb5f Add tests for update fee
3ee7fe64b Clean up some tests
181b88dc7 Don't accept too high fees, assuming they are erroneous
b45c2fb1d Update backtesting.md
6107878f4 Bump ccxt to 1.39.10
95fd3824d Finish renamal of open_trade_price to open_value
201cc67e0 Rename open_trade_price to "open_trade_value"
ca99d484f Refactor to use list comprehension
33f330256 Reorder commands on telegram init
af53dfbfa Update backtesting.md
f5817063b Update backtesting.md
25f8e0cc5 Added git packages for future dependencies
570809825 Move ENV PATH to base image
f1af2972e Ensure non-defined attributes fail correctly
e6b3e6453 Update dockerfile to multistage
d9a86158f Add cmake to support raspberry 64bit installs
118a22d01 Update data-download.md
9725b8e17 Update Dockerfile
f897b683c Add seperate page describing plugins
82bc6973f Add last key to config_full
c37bc307e Small finetunings to documentation
b5289d5f0 Update full config with correct protection keys
de2cc9708 Fix test leakage
f04729799 Improve wording, fix bug
3ab551469 Add API endpoint for /stats
81410fb40 Document /stats for telegram
e873cafdc Beautify code a bit
effc96e92 Improve tests for backtest protections
5849d0749 Export locks as part of backtesting
57a4044eb Enhance test verifying that locks are not replaced
bb51da829 Fix slow backtest due to protections
75a516165 Support multis-strategy backtests with protections
a3f9cd2c2 Only load protections when necessary
946fb0945 Update help command output
e2d15f408 Add parameter to enable protections for backtesting
32189d27c Disable output from plugins in backtesting
9f34aebda Allow closing trades without message
b606936eb Make changes to backtesting to incorporate protections
98c88fa58 Prepare protections for backtesting
3426e99b8 Improve formatting of protection startup message
64d6c7bb6 Update developer docs
0e2a43ab4 Add duration_explanation functions
c993831a0 Add protections to startup messages
d4799e6aa Implement *candle definitions
a93bb6853 Document *candles settings, implement validations
eb952d77b Move lookback_period to parent __init__
f13e9ce5e Improve docs
b36f333b2 Add new protections to full sample, documentation
f06b58dc9 Test MaxDrawdown desc
089c463cf Introduce max_drawdown protection
9d6f3a89e Improve docs and fix typos
768d7fa19 Readd optional for get_pair_locks - it's necessary
9947dcd1d Beta feature warning
ad746627b Fix lock-loop
397a15cb6 Improve protection documentation
4351a26b4 Move stop_duration to parent class
12e84bda1 Add developer docs for Protections
6d0f16920 Get Longest lock logic
dce236467 Add stoploss per pair support
dcdf4a050 Improve tests
32cde1cb7 Improve test for lowprofitpairs
8f958ef72 Improve login-mixin structure
8d9c66a63 Add LogginMixin to freqtradebot class to avoi...
Read more

2020.11

27 Nov 16:12
ab7807c
Compare
Choose a tag to compare

Highlighted changes

  • Allow backtesting of pairs that are no longer active on the exchange
  • Introduce RangeStabilityFilter as new pairlist filter
    Allows filtering that show not enough movement over the last few days
  • Slightly improved backtesting summary metrics
  • Kraken - support for Limit stoploss orders on the exchange (new default if not configured differently)
  • Plotting now respects startup_candles - making plots more precise if used correctly
  • Logging to file will no longer create double log entries after /reload_conf was used
  • Update to use arrows int_timestamp method instead of timestamp
    This requires an update to Arrow, so make sure your dependencies are updated as well.

How to update

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

docker-compose

Note: We're switching from master to stable for the release Images - please adjust your docker-file and replace freqtradeorg/freqtrade:master with freqtradeorg/freqtrade:stable

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
37c102d2 Version bump to 2020.11
31449987 Fix mkdocs rendering
fce31447 Prevent unintended LaTeX rendering
98118f5e Fix parameter name
dddbc799 have kraken stoploss-limit support trailing stop
0b68402c Fixed a small typo in the pairlist documentation
1d56c87a Fully support kraken limit stoploss
d0d9921b Reorder mkdocs sequence
c14c0f60 Add Support for kraken stoploss-limit
68101929 Update docstring for new filter
8ae604d4 Ensure we're not running off of empty dataframes
0d349cb3 Small finetuning
8f1d2ff0 Renamd volatilityFilter to RangeStabilityFilter
46389e34 Skip filehandler test on windows - as that causes a permission-error
b9980330 Add explicit test for FileHandler
0104c9fd Fix double logging
99b67348 Add test for double-logging
ceb50a78 use exception handler when downloading data
bd98ff63 Update docstring in all pairlists
006436a1 Require use_sell_signal to be true for edge
730c9ce4 Add Max_open_trades to summary metrics
1ec99e6b Bump aiohttp from 3.7.2 to 3.7.3
56629d88 Bump coveralls from 2.1.2 to 2.2.0
7c7a8190 Bump python-rapidjson from 0.9.3 to 0.9.4
be4807d8 Bump questionary from 1.8.0 to 1.8.1
83b4cd7b Bump mkdocs-material from 6.1.5 to 6.1.6
ec330112 Bump ccxt from 1.37.69 to 1.38.13
29c6a926 Protect against 0 values
7e4fe23b Add VolatilityFilter to full config
f12a8afd Add test for ohlcv_as_df
2e1551a2 Improve tests of volatilityfilter
f8fab5c4 Add tests for failure cases
6b672cd0 Document volatilityFilter
191616e4 Add first tests for volatilityFilter
109824c9 Add VolatilityFilter
fb86d8f8 Add get_historic_ohlcv_as_df to support VolatilityFilter
73f0e6e7 Improve wording for discord server
4d60a4cf Add warning to StochRSI in sample strategy
89ea8dbe Update slack invite
e8e3ca0c Catch ValueError from trade_conversion
83861fab Fix #3967, move TradeList type to constants
5ed85963 Allow forcebuy price to be a string by converting it to float
aa0c3dce Improve order types documentation
97e58a42 Update documentation with new options
f88fe5d9 Document new "allow_inactive" option
52c9a2c3 Convert np to None when loading hdf5 trades to allow duplicate detection
854d0c48 Update windows_installation.md
4a215821 Fix typo in windows installation docs
9621734a Allow setting datafromat via configuration
3f2addb7 Bump ccxt from 1.37.41 to 1.37.69
f092a923 Bump urllib3 from 1.25.11 to 1.26.2
23947cf3 Bump requests from 2.24.0 to 2.25.0
e52c181a Bump flask-jwt-extended from 3.24.1 to 3.25.0
6ebc2f38 Bump mkdocs-material from 6.1.4 to 6.1.5
ef4ab601 Update exchanges.md
26176d4c Update exchanges.md
7b4c1ec3 Small wording changes
da16474b Update telegram-usage.md
7243c8ee Fix typo in windows installation docs.
05f0cc78 Plotting should use startup_candles too
164105ac Adjust startup_candle_count of sample strategies
08b52926 Catch asyncio.TimeoutError when reloading async markets
4eb96cfc Allow locks to be gathered even when the bot is stopped
2d6bfe15 only skip pair validation rather than all of it
2424ac94 skip the check for active markets with flag for existing StaticPairList
2640dfee Revert "Added ConstPairList handler to skip validation of pairs if you want to backtest a pair that's not live any more, e.g. expiring contracts."
916776bb Option to skip exchange validation, required to backtest pairs that are not live on the exchange any more.
13da8f93 Added ConstPairList handler to skip validation of pairs if you want to backtest a pair that's not live any more, e.g. expiring contracts.
59e846d5 Bump ccxt from 1.37.14 to 1.37.41
88b2f3f0 Bump scipy from 1.5.3 to 1.5.4
6063f2f9 Bump questionary from 1.7.0 to 1.8.0
42d9e3a2 Bump numpy from 1.19.3 to 1.19.4
5243214a Bump mkdocs-material from 6.1.2 to 6.1.4
2af1c80f Convert _rpc_show_config to static method
7d2bd00f Update forgotten arrow.timestamp occurance
b58d6d38 Use correct fields in telegram
d1dab232 Remove deprecated api fields
cf89a773 Standardize trade api outputs
d56da416 Bump ccxt from 1.36.85 to 1.37.14
74d8a985 Bump aiohttp from 3.7.1 to 3.7.2
aed44ef6 Bump pandas from 1.1.3 to 1.1.4
21b22760 Bump pytest from 6.1.1 to 6.1.2
6c3753ac Bump mkdocs-material from 6.1.0 to 6.1.2
81fb0c57 Bump numpy from 1.19.2 to 1.19.3
e73203ac FIx bug with dmmp
0d11f0bd Add unit test for hdf5 dataformat for informative pairs
78874fa8 informative_pairs does not honor dataformat
38fc5d68 Enable usage of devcontainer for macOS users
fd6018f6 Fix dependency sorting
adffd402 Replace some pointless occurances of arrow
685d1894 specify min-version for arrow
ecddaa66 Convert timestamp to int_timestamp for all arrow occurances

2020.10

30 Oct 19:17
4d44714
Compare
Choose a tag to compare

Highlighted changes

  • Remove hyperopt --continue - It doesn't work as expected and is confusing people.
  • Hyperopt will now keep historic results in seperate filenames.
    Reading commands (freqtrade hyperopt-list, freqtrade hyperopt-show) can use the newly introduced --hyperopt-filename to read from files other than the latest result.
  • --hyperopt-loss is now mandatory for running hyperopt. This removes the default of DefaultHyperoptLoss - which is often not what the user want's to optimize for as shorter trade duration is favored over higher profits. Read more about Loss functions.
  • New API Methods to allow more functionalities in FreqUI.
  • Slightly improved backtesting performance by refactoring the backtesting sell logic.
  • Locks are now persisted across bot restarts..

How to update

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

docker-compose

Note: We're switching from master to stable for the release Images - please adjust your docker-file and replace freqtradeorg/freqtrade:master with freqtradeorg/freqtrade:stable

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
aaa64689 Version bump to 2020.10
3ca97223 Improve test for test_pairlist
d8ff79a2 Improve tests of list commands
f4d39f2a Improve test coverage of deploy_commands
19fcbc92 Remove stake-currency for download-data - it's not needed
86725847 Add explicit test for check_int_nonzero
ffa67979 Improve test coverage
e1e2829e Improve and refactor hyperopt tests
5cb3735a Improve error when hyperopt-loss-function is missing
28d6c341 Fix random test failure in pairlocks
72f61f46 Remove optional, now is not optional
5c8779b1 Sort imports
6c913fa6 Fix locking - should round before storing to have a consistent picture
9c54c9a2 Use correct timezone for tests
e602ac34 Introduce Pairlocks middleware
69e8da30 Ensure times that fall on a candle are also shifted
442e9d20 Remove pinned dependency of multidict
066ea45c Bump plotly from 4.11.0 to 4.12.0
95d11bd0 Bump python-rapidjson from 0.9.1 to 0.9.3
2831a78d Bump ccxt from 1.36.66 to 1.36.85
df5e6aa5 Bump aiohttp from 3.6.3 to 3.7.1
3439e6c5 Bump urllib3 from 1.25.10 to 1.25.11
b8c12f65 Test if return value is an exception when downloading historic data
99990179 Fix small bug in case of duplicate locks
cd8610cb Update readme.md files
ffcc47d8 Cleanup sql cheatsheet
cf1a7261 Rename table to be inline with other table naming
a143f7bc Improve pairlock docstrings
42d9e2e7 update quick start steps
5f63fdd8 Use better  lock message
64e680d7 Document new api method
1156f5e6 Use constant for times
0daf77f3 Don't check for lock start date
cd2866ea Add rest endpoint for /locks
7a9768ff Add /locks Telegram endpoint
7caa6cfe Add tests for pairlock
e513871f Persist pairlocks
6eab20e3 Use constant to format datetime
2d04c2dd Fix small bug when cancel-order does not contain id
3e7c9bd4 Bump ccxt from 1.36.12 to 1.36.66
b7eec3fc Bump mkdocs-material from 6.0.2 to 6.1.0
89755585 Bump questionary from 1.6.0 to 1.7.0
79972985 Bump scipy from 1.5.2 to 1.5.3
cf2ae788 Convert backtesting rows to Tuples for performance gains
5d3a67d3 Don't debug-log during backtesting.
b80a219d Improve typehints for backtesting
2591a34d Don't use arrow objects for backtesting
cd940daa updated discord link to documentation.
8cdc795a Rename persistence.init to init_db
ec713ff5 Convert _rpc_analysed_history_full to static method
07da21e6 Fix problem when limit is > max allowed limit
8165cc11 Change get_next_limit_in_list to use list comprehension
2ed20eee Configs should default to dry-run
8962b6d5 Add Bittrex subclass to correctly handle L2 orderbook
077374ac Implement generic solution for l2 limited limit
6a0ab836 Bump sqlalchemy from 1.3.19 to 1.3.20
7c1402ef Bump prompt-toolkit from 3.0.7 to 3.0.8
fd9c8df0 Bump ccxt from 1.36.2 to 1.36.12
5f5fc513 Bump isort from 5.6.3 to 5.6.4
43532a2f Bump colorama from 0.4.3 to 0.4.4
5aa0d3e0 Add multidict and aiohttp requirements
a39898a5 Fix mock for telegram update
44e37487 Fix mypy errors due to new version
f299c418 Bump python-telegram-bot from 12.8 to 13.0
e39c2f4a Bump ccxt from 1.35.22 to 1.36.2
623cee61 Bump isort from 5.5.4 to 5.6.3
80569c5f Bump mypy from 0.782 to 0.790
a33865e8 Bump nbconvert from 6.0.6 to 6.0.7
a2bc9d60 Bump arrow from 0.16.0 to 0.17.0
491af5a0 Bump pandas from 1.1.2 to 1.1.3
fa7dc742 Plot-image should have freqtrade as entrypoint
3d911557 Fix typo in docs
23bad8fd Rename DefahltHyperoptLoss function to ShortTradeDurHyperOptLoss
cedddd02 Install mkdocs for ci
f43bd250 Extract pairlists from configuration
53984a05 Configure mkdocs to allow page includes
59b00ad6 Add test for only-win scenario
f676156e Implement division/0 checks for win and loss columns in edge
23278e52 remove obsolete logging statements
e8f2c09f Extract handling of left open trades to seperate method
d1db8476 Fix "storing information" documentation
7f0afe12 Fix calculation to not show losses > initial investment
6bb045f5 Simplify stoploss calculation
48750b0e Improve wording in formula
1b5cb342 Fix example R calculation in edge documentation
52502193 Backtesting should not double-loop for sell signals
72cf3147 Update configuration.md
299285a7 Update actions image to ubuntu20.04
8c2f7631 Add test to ensure --hyperopt-loss is mandatory
14e87ed4 Improvements to hyperopt docs
a4a8abfd Update hyperopt documentation
fa1d1679 Adapt tests to work without default hyperoptloss
378b214a Remove hyperopt-loss default option
b86a602a Update typehint
4b53c2bc Complete TA-lib update with new binary files
14c66afe Bump ta-lib from 0.4.18 to 0.4.19
06759234 Add test to verify output of roi / trailing stop hyperopt
40b61bbf Adjust trailing-stop to be python compliant
234f6c2f Bump joblib from 0.16.0 to 0.17.0
68844250 Bump mkdocs-material from 6.0.1 to 6.0.2
64de911e Bump pytest from 6.1.0 to 6.1.1
56647bb4 Bump plotly from 4.10.0 to 4.11.0
52b6f6b9 Bump pycoingecko from 1.3.0 to 1.4.0
0574a406 Bump questionary from 1.5.2 to 1.6.0
8d4f7ce8 Bump ccxt from 1.34.59 to 1.35.22
80890e0f Bump flake8 from 3.8.3 to 3.8.4
887b2fdb Bump isort from 5.5.3 to 5.5.4
c9b3766f Remove rest_dump
63e1cba5 fix some typos
cb74c9bc Fix hyperopt output
176006da Sort imports
66b77d2f Fix some types
62110dc2 Add buy / sell signal count to dataframe interface
350fcc07 Don't use __code__
b38f68b3 Add 404 when strategy is not found
becccca3 Add test for __code__ loading
ba10bd77 Add strategy code to __code__
4b6b7f83 Add timeframe to candle return values
a3d0889d Add alpha to endpoint documentation
816c8295 Add test for pair_history
f82d39e1 Enhance restclient and add tests for new api methods
bb4993dc Add new endpoints to the documentation
c0654f3c Add resiliancy against not having a analyzed dataframe yet
c59a1be1 show_config should not use freqtrade object
1de248fe add list_available_pairs endpoint
6a59740f Strategies should be a nested object
32e6ea31 Return strategy with analyzed data
18bbfdd3 Add /strategies endpoint
f227f6a7 Use passed in config object to allow this to work in webserver mode
bf0e75e2 Include data start and end date in dataframe api
b93ad884 Return date column unmodified
482f1faa Don't fail if no buy-signal is present
f5dc10e4 Add pair_history endpoint
67707835 Add plot_config endpoint
d528c449 Add test for pair_history
133ca9c7 Convert types to support valid json
a38b33cd Support limiting analyzed history
9dfbc1a7 Add analyzed_history endpoint
2be8e807 Add Python 3.8 to setup.py classifiers
ace28792 Don't run isort on windows - once is enough
0ea56548 Try fix random test failure
ce228f19 Apply isort to setup.py
9df366d9 Apply isort to tests
253b7b76 Apply isort to freqtrade codebase
201e7143 include isort to contributing
287604ef Add isort to project dev dependencies
7623691a PyPi Publis should only run for releases
17e605e1 Make it clear in samples that strategy is mandatory
700529fe Tag image before building next image
dd4d458c Bump mkdocs-material from 5.5.13 to 6.0.1
6d8fadd5 Bump nbconvert from 6.0.4 to 6.0.6
1dee0eed Bump ccxt from 1.34.40 to 1.34.59
48347b49 Bump pytest from 6.0.2 to 6.1.0
15bb0af1 Add some test-coverage
f3de74f8 Mock all occurances of hyperopt.dump
6e70ae6e Improve code quality
5769b924 Mock test correctly
8de9c461 Document hyperopt-filename usage
3cb1a9a5 Support loading results from a specific hyperopt history file
c42a924d Load latest file
ff96cf15 Keep hyperopt result history
7a652b07 UPdate documentation to remove --continue
b736691e Remove hyperopt --continue