Compare commits

...

2521 Commits

Author SHA1 Message Date
Matthias
d104fb13a0 Merge pull request #8978 from freqtrade/new_release
New Release 2023.7
2023-07-30 09:02:44 +02:00
Matthias
047de2e0ff Bump version to 2023.7 2023-07-29 18:19:04 +02:00
Matthias
ead9e6f116 Merge pull request #8977 from Bloodhunter4rc/patch-3
showcase.md - Change links to https
2023-07-29 17:09:20 +02:00
Bloodhunter4rc
b17918d8cf change link to https 2023-07-29 16:48:52 +02:00
Matthias
79910870a3 Fix bug resampling monthly candles
closes #8972
2023-07-29 08:58:30 +02:00
Matthias
e7e7a17183 Add test confirming #8972 2023-07-29 08:50:28 +02:00
Matthias
3fa31bfe20 Better explain ROI assumption on level change
closes #8975
2023-07-29 08:14:12 +02:00
Matthias
b2abdab7cd Fix bug where adjust_entry_price was called for exit orders
closes #8973
2023-07-28 07:16:32 +02:00
Matthias
fd7dfc95e3 Enhance dca integration test for adjust_entry checks 2023-07-28 07:16:12 +02:00
Matthias
797617abaa Fix test comment 2023-07-28 07:07:10 +02:00
Matthias
9a400d0e6f Allow comments and trailing commas in remotepairlist files
closes #8971
2023-07-27 18:05:22 +02:00
Matthias
8f18a52cdf Fix Typo in remote pairlist docs
related: #8971
2023-07-27 09:24:42 +02:00
Matthias
d638a4a0ff Raise proper error on strategy search
part of https://github.com/freqtrade/frequi/issues/1387
2023-07-27 07:03:35 +02:00
Matthias
bbf472e69b Improve errorhandling on webserver endpoint
Part of https://github.com/freqtrade/frequi/issues/1387
2023-07-27 06:52:34 +02:00
Matthias
83f45d0e65 Call static method as static method, not as if it were an instance method 2023-07-27 06:39:48 +02:00
Matthias
d6122585f7 Prevent pandas exception on Date assignment 2023-07-27 06:39:31 +02:00
Matthias
2fcff78756 Move comment to actually relevant line 2023-07-26 07:07:21 +02:00
Matthias
af1d2ee2a2 Merge pull request #8968 from Bloodhunter4rc/patch-2
Update showcase.md / Change Domain due to recent dns issues
2023-07-26 06:43:48 +02:00
Bloodhunter4rc
f56f5179d2 Update showcase.md
Change of domain due to recent dns issues.
2023-07-25 23:06:56 +02:00
Matthias
c2b40da762 Bump Api Version 2023-07-25 20:51:33 +02:00
Matthias
05e4b63091 Extract backtest_result deletion logic to separate function 2023-07-25 20:42:07 +02:00
Matthias
8b2abf4422 Remove .json from backtesting output 2023-07-25 20:41:28 +02:00
Matthias
997b80fd7b Allow deleting of backtest files 2023-07-25 20:34:45 +02:00
Matthias
5a7e822342 Improve security of get_backtest_history_result 2023-07-25 20:20:09 +02:00
Matthias
1d39cc18bf Add is_file_in_dir helper function 2023-07-25 20:19:23 +02:00
Matthias
e39af17207 Improve typing for is_relative_to 2023-07-25 20:07:44 +02:00
Matthias
4ce95dd1c3 Merge pull request #8955 from freqtrade/feat/bt_streaks
Backtesting - streak output
2023-07-25 18:06:11 +02:00
Matthias
47fca02ba0 Improve docstring 2023-07-25 07:06:42 +02:00
Matthias
ed2485dd57 Move generate_wins_draw_losses to bt_output (it's an output function, not a calculation) 2023-07-25 07:04:25 +02:00
Matthias
6dc15fad01 Merge pull request #8962 from freqtrade/dependabot/pip/develop/uvicorn-0.23.1
Bump uvicorn from 0.23.0 to 0.23.1
2023-07-25 06:38:13 +02:00
Matthias
27566a4c8a Merge pull request #8963 from freqtrade/dependabot/pip/develop/ccxt-4.0.36
Bump ccxt from 4.0.35 to 4.0.36
2023-07-25 06:37:56 +02:00
Matthias
3860a5a8c5 Merge pull request #8965 from freqtrade/dependabot/pip/develop/ruff-0.0.280
Bump ruff from 0.0.278 to 0.0.280
2023-07-25 06:37:42 +02:00
Matthias
235721d9d9 Merge pull request #8964 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.2
Bump types-requests from 2.31.0.1 to 2.31.0.2
2023-07-24 21:37:11 +02:00
Matthias
5a057e4b94 per-commit bump types-requests 2023-07-24 17:34:39 +02:00
dependabot[bot]
b90e7d75c6 Bump ruff from 0.0.278 to 0.0.280
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.278 to 0.0.280.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.0.278...v0.0.280)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 15:32:13 +00:00
dependabot[bot]
1c26a6600b Bump types-requests from 2.31.0.1 to 2.31.0.2
Bumps [types-requests](https://github.com/python/typeshed) from 2.31.0.1 to 2.31.0.2.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 15:31:56 +00:00
dependabot[bot]
161446393d Bump ccxt from 4.0.35 to 4.0.36
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.35 to 4.0.36.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.0.35...4.0.36)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 15:31:53 +00:00
dependabot[bot]
9df302f2f0 Bump uvicorn from 0.23.0 to 0.23.1
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.23.0 to 0.23.1.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.23.0...0.23.1)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 15:31:45 +00:00
Matthias
e95fa83ea2 Merge pull request #8953 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.14
Bump types-python-dateutil from 2.8.19.13 to 2.8.19.14
2023-07-24 16:52:39 +02:00
Matthias
b151a2c3e1 Merge pull request #8947 from freqtrade/dependabot/pip/develop/urllib3-2.0.4
Bump urllib3 from 2.0.3 to 2.0.4
2023-07-24 16:19:38 +02:00
Matthias
ce7f7d828d pre-commit bump dateuti 2023-07-24 15:49:25 +02:00
dependabot[bot]
7a69bdff6a Bump types-python-dateutil from 2.8.19.13 to 2.8.19.14
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.13 to 2.8.19.14.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 13:34:35 +00:00
Matthias
1abb71d5a3 Merge pull request #8950 from freqtrade/dependabot/pip/develop/nbconvert-7.7.2
Bump nbconvert from 7.7.0 to 7.7.2
2023-07-24 15:34:10 +02:00
Matthias
2e57ad695f Merge pull request #8952 from freqtrade/dependabot/pip/develop/types-tabulate-0.9.0.3
Bump types-tabulate from 0.9.0.2 to 0.9.0.3
2023-07-24 15:33:49 +02:00
Matthias
bb36c9500f Bump pre-commit types tabulate 2023-07-24 14:12:52 +02:00
dependabot[bot]
235067c79f Bump nbconvert from 7.7.0 to 7.7.2
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.7.0 to 7.7.2.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.7.0...v7.7.2)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 12:12:06 +00:00
dependabot[bot]
11e604d613 Bump types-tabulate from 0.9.0.2 to 0.9.0.3
Bumps [types-tabulate](https://github.com/python/typeshed) from 0.9.0.2 to 0.9.0.3.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-tabulate
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 12:12:03 +00:00
Matthias
f7505536ff Merge pull request #8954 from freqtrade/dependabot/pip/develop/types-cachetools-5.3.0.6
Bump types-cachetools from 5.3.0.5 to 5.3.0.6
2023-07-24 14:11:19 +02:00
Matthias
b096c857ae Merge pull request #8951 from freqtrade/dependabot/pip/develop/pyjwt-2.8.0
Bump pyjwt from 2.7.0 to 2.8.0
2023-07-24 10:03:49 +02:00
Matthias
b41b966443 pre-commit bump cachetools 2023-07-24 10:03:08 +02:00
Matthias
e01e712b8c Merge pull request #8948 from freqtrade/dependabot/pip/develop/ccxt-4.0.35
Bump ccxt from 4.0.34 to 4.0.35
2023-07-24 10:01:47 +02:00
Matthias
327b055468 Add consecutive wins/losses to backtest output 2023-07-24 07:22:33 +02:00
dependabot[bot]
221f242a4c Bump ccxt from 4.0.34 to 4.0.35
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.34 to 4.0.35.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.0.34...4.0.35)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 05:19:04 +00:00
Matthias
a9d310ca00 Disable bitvavo candle test temporarily after downtime 2023-07-24 07:17:29 +02:00
Matthias
f26b49ee06 Ensure return value is an int, not a np.int 2023-07-24 07:09:19 +02:00
Matthias
380244f8b1 Improve calc_streak, rename method 2023-07-24 07:09:11 +02:00
Matthias
c01c9ee411 Merge pull request #8949 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.19
Bump mkdocs-material from 9.1.18 to 9.1.19
2023-07-24 07:07:12 +02:00
Matthias
0f046ceaf2 Implement calc_consecutive_losses 2023-07-24 06:36:24 +02:00
Matthias
a7bd6725f5 Add test to verify consecutive wins / losses calculation 2023-07-24 06:36:16 +02:00
dependabot[bot]
c61b72e5cc Bump urllib3 from 2.0.3 to 2.0.4
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.3 to 2.0.4.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.3...2.0.4)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 04:33:05 +00:00
Matthias
e2a19402ec Merge pull request #8946 from freqtrade/dependabot/pip/develop/jsonschema-4.18.4
Bump jsonschema from 4.18.3 to 4.18.4
2023-07-24 06:32:06 +02:00
dependabot[bot]
d909fde4bb Bump types-cachetools from 5.3.0.5 to 5.3.0.6
Bumps [types-cachetools](https://github.com/python/typeshed) from 5.3.0.5 to 5.3.0.6.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-cachetools
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 03:44:45 +00:00
dependabot[bot]
2bb4af911c Bump pyjwt from 2.7.0 to 2.8.0
Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jpadilla/pyjwt/compare/2.7.0...2.8.0)

---
updated-dependencies:
- dependency-name: pyjwt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 03:44:20 +00:00
dependabot[bot]
00a392b262 Bump mkdocs-material from 9.1.18 to 9.1.19
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.18 to 9.1.19.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.18...9.1.19)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 03:44:05 +00:00
dependabot[bot]
6f5ba27251 Bump jsonschema from 4.18.3 to 4.18.4
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.18.3 to 4.18.4.
- [Release notes](https://github.com/python-jsonschema/jsonschema/releases)
- [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.18.3...v4.18.4)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-24 03:43:35 +00:00
Matthias
6ddbc8c00d Move generate_wins_draw_losses to bt_output (it's an output function, not a calculation) 2023-07-23 19:57:47 +02:00
Matthias
a00fcd68f8 Default to 0.0.0.0 if on API listen address for configs generated through docker 2023-07-23 19:44:43 +02:00
Matthias
fb7fb7f59c Add helper function detecting (prebuilt) docker environment 2023-07-23 19:38:30 +02:00
Matthias
d7916366bd Adjust webhook tests to include timeout 2023-07-23 19:21:55 +02:00
Matthias
ad82ad4407 webhook docs improvements 2023-07-23 18:28:49 +02:00
Matthias
8dfe43f370 Add timeout for webhooks 2023-07-23 18:28:43 +02:00
Matthias
4549fb349c Add security notice about IP whitelisting on bybit docs 2023-07-23 17:57:48 +02:00
Matthias
889a732e06 Enhance bybit documentation 2023-07-23 17:57:04 +02:00
Matthias
52ec2324dd Merge pull request #8943 from stash86/bt-metrics
merge to use  expectancy and expectancy ratio from data/metrics
2023-07-23 08:37:08 +02:00
Stefano Ariestasia
8f04225282 another test fix 2023-07-23 15:00:08 +09:00
Stefano Ariestasia
4c23771d39 fix expectancy test 2023-07-23 14:42:48 +09:00
Stefano Ariestasia
0eddc6b7ad update expectancy test 2023-07-23 14:27:45 +09:00
Matthias
787e94924d Update default expectancy ratio to 100 2023-07-23 07:20:59 +02:00
Matthias
955a63725a Improve resiliance when showing older backtest results 2023-07-22 19:43:20 +02:00
dependabot[bot]
27a36bfb40 Bump lightgbm from 3.3.5 to 4.0.0 (#8923)
* Bump lightgbm from 3.3.5 to 4.0.0

Bumps [lightgbm](https://github.com/microsoft/LightGBM) from 3.3.5 to 4.0.0.
- [Release notes](https://github.com/microsoft/LightGBM/releases)
- [Commits](https://github.com/microsoft/LightGBM/compare/v3.3.5...v4.0.0)

---
updated-dependencies:
- dependency-name: lightgbm
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix: ensure freqai lightgbm variants conform to v4.0.0

* remove random file

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: robcaulk <rob.caulk@gmail.com>
2023-07-22 15:30:58 +02:00
Stefano Ariestasia
e5f01ab2e8 pre-commit fix 2023-07-22 17:45:58 +09:00
Stefano Ariestasia
40d7d05e4e merge 2 expectancy functions 2023-07-22 17:29:43 +09:00
Matthias
14d2e3e88e Merge pull request #8941 from SitoCH/develop
Map BUSD to correct coingecko id
2023-07-22 08:33:17 +02:00
Stefano Ariestasia
c6ee8fcf54 remove unused check 2023-07-22 12:20:35 +09:00
Stefano Ariestasia
3552fa431b fix test 2023-07-22 11:40:52 +09:00
Stefano Ariestasia
3dd33cde00 fix test 2023-07-22 11:39:10 +09:00
Stefano Ariestasia
ee3b69ea63 fix test 2023-07-22 11:37:22 +09:00
Stefano Ariestasia
b0639ab319 flake8 2023-07-22 11:29:08 +09:00
Stefano Ariestasia
cfd8b068e7 add test for expectancy 2023-07-22 11:25:53 +09:00
Stefano Ariestasia
8621dc96e7 fix tests 2023-07-22 09:44:24 +09:00
Stefano Ariestasia
11f24aff97 flake8 2023-07-22 09:19:36 +09:00
Stefano Ariestasia
dcc3ef1309 flake8 fix 2023-07-22 09:18:22 +09:00
Stefano Ariestasia
4812bcc28b flake8 fiz 2023-07-22 09:13:24 +09:00
Stefano Ariestasia
c048e7229a modify expectancy and expectancy ratio 2023-07-22 08:36:51 +09:00
Simone Grignola
4ea3f41d48 Map BUSD to correct coingecko id 2023-07-21 20:49:37 +00:00
Matthias
6874123974 Bump ccxt to 4.0.34
closes #8913
2023-07-21 21:11:30 +02:00
Matthias
8d332fb99e Ensure /pair_history endpoint correctly respects startup_candle_count
closes https://github.com/freqtrade/frequi/issues/1379
2023-07-21 20:58:26 +02:00
Matthias
f4933a9cff Improve test for pair_history
Verifies that startup_candle_count is verified correctly.
2023-07-21 20:57:05 +02:00
Matthias
4369e3cdeb trim_dataframe should enforce kwargs for non-required arguments 2023-07-21 20:33:41 +02:00
Matthias
9bfe96d4d6 Simplify advise calls by extracting that part into a method. 2023-07-21 20:27:52 +02:00
Matthias
91bf8abf38 Add comment to clarify usage of trim_dataframes 2023-07-21 20:22:44 +02:00
Matthias
9c1fea0e7b Add winrate to several bt metrics 2023-07-20 20:51:38 +02:00
Matthias
ac2147727f Update test for updated cost logic 2023-07-20 19:51:45 +02:00
Matthias
ea45349235 Completely remove "fee_cost_in_contracts" functionality 2023-07-20 19:51:45 +02:00
Matthias
e734ab52de okx fees are not in contracts. 2023-07-20 19:51:45 +02:00
Matthias
75628403b0 Invert order_props_in_contracts logic - cost is almost never in contracts 2023-07-20 19:51:45 +02:00
Matthias
b3642749fd Merge pull request #8940 from freqtrade/dependabot/pip/aiohttp-3.8.5
Bump aiohttp from 3.8.4 to 3.8.5
2023-07-20 19:41:29 +02:00
dependabot[bot]
f735973bf8 Bump aiohttp from 3.8.4 to 3.8.5
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.4 to 3.8.5.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/v3.8.5/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.8.4...v3.8.5)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-20 16:04:06 +00:00
Matthias
bdb778cb9f Merge pull request #8912 from froggleston/rpc_expectancy
Add expectancy to RPC calls and telegram
2023-07-19 20:21:09 +02:00
Matthias
ab5b272868 Fix double-%% 2023-07-19 19:53:00 +02:00
Matthias
49d6b0afb8 Merge pull request #8937 from freqtrade/froggleston-bt-analysis-docs-1
Add built-in trade fields in indicator list docs
2023-07-19 19:41:24 +02:00
Robert Davey
bb5a12dc11 Add built-in trade fields in indicator list docs
There are some trade- and candle-related fields that are always available to output on the indicator-list so have updated the docs to include the most commonly used ones.
2023-07-19 11:11:10 +01:00
Matthias
0539c6bf26 Merge pull request #8918 from freqtrade/dependabot/pip/develop/ta-lib-0.4.27
Bump ta-lib from 0.4.26 to 0.4.27
2023-07-19 06:48:34 +02:00
froggleston
f95f954df7 Convert winrate to ratio instead of % in calculations 2023-07-18 22:25:17 +01:00
Matthias
5ee4586989 use find-links for windows install 2023-07-18 21:14:55 +02:00
Matthias
9c39fd6e92 Update cached binance lev-tiers file 2023-07-18 20:25:55 +02:00
Matthias
c8ee48bc98 Update comment on install script 2023-07-18 20:20:57 +02:00
Matthias
ef52a7a328 Simplify windows install sscript 2023-07-18 20:20:20 +02:00
Matthias
635ab73706 Update path for install_windows helper script 2023-07-18 20:19:40 +02:00
Matthias
c4d38e6de6 Add new ta-lib windows wheel 2023-07-18 20:19:30 +02:00
Matthias
dd8a8b0f1f Merge pull request #8934 from freqtrade/fix/docker-compose
Update docker-compose-freqai.yml
2023-07-18 20:07:59 +02:00
Matthias
8fd96118a5 Bump pydantic to latest 1.10 version 2023-07-18 20:02:24 +02:00
Matthias
db0cad04ab Pin pydantic to <2.0 for now 2023-07-18 18:25:44 +02:00
Robert Caulk
d64d0e9f94 Update docker-compose-freqai.yml 2023-07-18 15:03:20 +02:00
Matthias
adda506499 Merge pull request #8920 from freqtrade/dependabot/pip/develop/ruff-0.0.278
Bump ruff from 0.0.277 to 0.0.278
2023-07-17 19:57:32 +02:00
Robert Caulk
c8525959ee Merge pull request #8932 from hom-bahrani/patch-1
Update freqai-feature-engineering.md
2023-07-17 19:13:18 +02:00
Matthias
2b95a0a7e5 Merge pull request #8931 from freqtrade/chore/remove-inlier-metric
chore: remove inlier metric
2023-07-17 18:24:41 +02:00
Matthias
c64c10e76f Use Fstrings in hyperopt-tools 2023-07-17 18:20:26 +02:00
Matthias
b9c439cdd9 Merge pull request #8929 from freqtrade/dependabot/pip/develop/ccxt-4.0.29
Bump ccxt from 4.0.28 to 4.0.29
2023-07-17 18:16:07 +02:00
dependabot[bot]
d8ba2b5df3 Bump ccxt from 4.0.28 to 4.0.29
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.28 to 4.0.29.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.0.28...4.0.29)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 13:44:51 +00:00
Matthias
5e37dd901d Merge pull request #8930 from freqtrade/dependabot/pip/develop/nbconvert-7.7.0
Bump nbconvert from 7.6.0 to 7.7.0
2023-07-17 15:44:05 +02:00
Matthias
031ac01b8d Merge pull request #8922 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.19
Bump sqlalchemy from 2.0.18 to 2.0.19
2023-07-17 15:43:45 +02:00
froggleston
6ccc12f337 Fix calcs, rename ratio, add docs 2023-07-17 14:16:22 +01:00
Hom Bahrani
8738b8d551 Update freqai-feature-engineering.md
It seems that the closing parenthesis ) is missing at the end of line 65 in the pipeline example
2023-07-17 13:59:09 +01:00
dependabot[bot]
f2ff85421a Bump nbconvert from 7.6.0 to 7.7.0
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.6.0 to 7.7.0.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.6.0...v7.7.0)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 11:16:30 +00:00
Matthias
cb5a67e9e0 Bump sqlalchemy pre-commit 2023-07-17 13:12:58 +02:00
Matthias
ca934c7568 Merge pull request #8926 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.8
Bump pypa/gh-action-pypi-publish from 1.8.7 to 1.8.8
2023-07-17 13:12:01 +02:00
robcaulk
6f0204fcd3 chore: remove inlier metric 2023-07-17 13:03:43 +02:00
Matthias
c81adf76c2 Merge pull request #8921 from freqtrade/dependabot/pip/develop/ccxt-4.0.28
Bump ccxt from 4.0.17 to 4.0.28
2023-07-17 10:30:16 +02:00
dependabot[bot]
78de614910 Bump ta-lib from 0.4.26 to 0.4.27
Bumps [ta-lib](https://github.com/ta-lib/ta-lib-python) from 0.4.26 to 0.4.27.
- [Changelog](https://github.com/TA-Lib/ta-lib-python/blob/master/CHANGELOG)
- [Commits](https://github.com/ta-lib/ta-lib-python/compare/TA_Lib-0.4.26...TA_Lib-0.4.27)

---
updated-dependencies:
- dependency-name: ta-lib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 07:36:12 +00:00
Matthias
201a8fe0ba Merge pull request #8925 from freqtrade/dependabot/pip/develop/jsonschema-4.18.3
Bump jsonschema from 4.18.0 to 4.18.3
2023-07-17 09:34:54 +02:00
dependabot[bot]
e5221932e8 Bump ruff from 0.0.277 to 0.0.278
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.277 to 0.0.278.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.0.277...v0.0.278)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 05:02:21 +00:00
Matthias
3d5889060d Merge pull request #8919 from freqtrade/dependabot/pip/develop/pytest-asyncio-0.21.1
Bump pytest-asyncio from 0.21.0 to 0.21.1
2023-07-17 07:01:13 +02:00
Matthias
68c3c764b7 Merge pull request #8914 from freqtrade/fix/8877
Dry-run open balance should include realized profit
2023-07-17 06:47:10 +02:00
Matthias
fba89d2082 Merge pull request #8916 from freqtrade/dependabot/pip/develop/uvicorn-0.23.0
Bump uvicorn from 0.22.0 to 0.23.0
2023-07-17 06:44:23 +02:00
Matthias
7823ed6cc0 Merge pull request #8917 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.1
Bump pymdown-extensions from 10.0.1 to 10.1
2023-07-17 06:41:00 +02:00
dependabot[bot]
c23ff9d7c2 Bump pypa/gh-action-pypi-publish from 1.8.7 to 1.8.8
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.7 to 1.8.8.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.7...v1.8.8)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 03:58:46 +00:00
dependabot[bot]
5f82108aae Bump jsonschema from 4.18.0 to 4.18.3
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.18.0 to 4.18.3.
- [Release notes](https://github.com/python-jsonschema/jsonschema/releases)
- [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.18.0...v4.18.3)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 03:51:14 +00:00
dependabot[bot]
454baa7b5b Bump sqlalchemy from 2.0.18 to 2.0.19
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.18 to 2.0.19.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 03:51:00 +00:00
dependabot[bot]
69e9691730 Bump ccxt from 4.0.17 to 4.0.28
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.17 to 4.0.28.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.0.17...4.0.28)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 03:50:49 +00:00
dependabot[bot]
8c8b315994 Bump pytest-asyncio from 0.21.0 to 0.21.1
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.21.0 to 0.21.1.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.21.0...v0.21.1)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 03:50:33 +00:00
dependabot[bot]
e8ff5cb783 Bump pymdown-extensions from 10.0.1 to 10.1
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.0.1 to 10.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.0.1...10.1.0)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 03:50:26 +00:00
dependabot[bot]
256a8c686e Bump uvicorn from 0.22.0 to 0.23.0
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.22.0 to 0.23.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.22.0...0.23.0)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-17 03:50:21 +00:00
Matthias
69ddbe3944 Merge pull request #8909 from freqtrade/backtest_adjustment
introduce order.stake_amount
2023-07-16 20:03:46 +02:00
froggleston
79f7f82c59 Fix telegram output 2023-07-16 16:52:06 +01:00
Matthias
35714c469b Add explicit dry_wallet test 2023-07-16 16:06:23 +02:00
Matthias
cf9ba527bb Include realized_profit in update_dry
closes #8877
2023-07-16 16:06:23 +02:00
Matthias
d0e0e156b1 Update tests to account for realized profit/loss 2023-07-16 16:06:23 +02:00
Matthias
8a55423ac7 Add asserts for wallet size 2023-07-16 16:04:00 +02:00
Matthias
66131d5103 Improve integration test assertions 2023-07-15 20:55:56 +02:00
froggleston
1fd2a2532d Reduce trade stats function complexity 2023-07-15 17:06:52 +01:00
froggleston
9d36dc7ac6 Fix line length 2023-07-15 16:59:33 +01:00
froggleston
59cb9e39dd Fix another trailing whitespace 2023-07-15 16:55:24 +01:00
froggleston
d4b282d6f7 Fix expectancy calc and tests 2023-07-15 16:51:45 +01:00
froggleston
e57bb6bc97 Add api schema entries 2023-07-15 16:27:58 +01:00
froggleston
3ce17b740b Fix flake8 problems 2023-07-15 16:25:19 +01:00
froggleston
7eced953b3 Merge in develop changes 2023-07-15 16:16:08 +01:00
Matthias
768a7b47ec Fix some futures symbol naming in tests 2023-07-15 17:14:57 +02:00
froggleston
096cb0d1ee Add tests, fix winrate calc 2023-07-15 16:09:13 +01:00
froggleston
4235ab0c7e Add expectancy and winrate to telegram 2023-07-15 15:39:47 +01:00
froggleston
6e56f84fe3 Add expectancy and winrate to rpc trade statistics 2023-07-15 15:32:52 +01:00
Matthias
ff14208105 Improve logic for from_json special case 2023-07-15 15:23:15 +02:00
Matthias
626ea6b119 Add backtesting support for order.stake_amount 2023-07-15 14:55:22 +02:00
Matthias
d8c0621887 Add stake amount property to order object 2023-07-15 10:14:08 +02:00
Matthias
d1662db813 Merge pull request #8907 from freqtrade/dependabot/pip/cryptography-41.0.2
Bump cryptography from 40.0.1 to 41.0.2
2023-07-15 10:10:21 +02:00
Matthias
17296fdf9c Use proper cost for order
closes #8906
2023-07-15 09:02:17 +02:00
Matthias
e4cd29d88c Add test for trade.cost 2023-07-15 09:02:01 +02:00
Matthias
eeec1b0b38 Don't bump armhv crypto dependency
needs https://piwheels.org/project/cryptography/  to work again.
2023-07-15 08:18:29 +02:00
dependabot[bot]
e043fdba50 Bump cryptography from 40.0.1 to 41.0.2
Bumps [cryptography](https://github.com/pyca/cryptography) from 40.0.1 to 41.0.2.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/40.0.1...41.0.2)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-15 01:04:17 +00:00
Matthias
7f0e1c27c6 Fix realized_profit for trade from_json 2023-07-14 07:35:58 +02:00
Matthias
bdff34017a Merge pull request #8867 from freqtrade/doc/commmunityshowcase
Add community showcase
2023-07-14 06:43:14 +02:00
Matthias
7280d6bb3b Merge pull request #8890 from freqtrade/dependabot/pip/develop/pyarrow-12.0.1
Bump pyarrow from 12.0.0 to 12.0.1
2023-07-13 19:58:25 +02:00
Matthias
061e930eb1 Merge pull request #8901 from freqtrade/fix/8841
Avoid false-triggering "dust-eating" logic for rebuys
2023-07-13 18:06:33 +02:00
Matthias
240606c5a4 Only run once for an order 2023-07-13 07:14:20 +02:00
Matthias
6134764d5e Don't wrongly eat into dust on rebuys
closes #8841
2023-07-13 07:07:15 +02:00
Matthias
45a9c304b6 Add test for new conditional behavior 2023-07-13 07:07:15 +02:00
Matthias
c970ae8add Add pyarrow pi wheel 2023-07-13 06:40:49 +02:00
Matthias
3cf419cbcd Fix ill-used type on order backpopulate mapping 2023-07-12 18:22:41 +02:00
Matthias
8ad32e7498 Merge pull request #8898 from jansmets/bybit_ohlcv_history
bybit provides up to 2years of historic ohlcv data on any timefame.
2023-07-12 18:16:11 +02:00
Matthias
722b5569bd Add Freqtrade backtest project 2023-07-12 18:06:37 +02:00
Jan Smets
e8fe5a4f17 bybit provides up to 2years of historic ohlcv data on any timefame. 2023-07-12 11:39:32 +02:00
Matthias
a314175565 Merge pull request #8882 from freqtrade/dependabot/pip/develop/orjson-3.9.2
Bump orjson from 3.9.1 to 3.9.2
2023-07-11 06:06:50 +02:00
Matthias
9505f380bf Merge pull request #8892 from freqtrade/dependabot/pip/develop/time-machine-2.11.0
Bump time-machine from 2.10.0 to 2.11.0
2023-07-10 20:53:18 +02:00
dependabot[bot]
127ca83dea Bump orjson from 3.9.1 to 3.9.2
Bumps [orjson](https://github.com/ijl/orjson) from 3.9.1 to 3.9.2.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.9.1...3.9.2)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 17:51:56 +00:00
Matthias
5acfe2c89c Merge pull request #8891 from freqtrade/dependabot/pip/develop/fastapi-0.100.0
Bump fastapi from 0.99.1 to 0.100.0
2023-07-10 19:50:56 +02:00
Matthias
aa5a5ce8e1 Merge pull request #8887 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.18
Bump sqlalchemy from 2.0.17 to 2.0.18
2023-07-10 19:50:03 +02:00
Matthias
e8eb28996d Merge pull request #8888 from freqtrade/dependabot/pip/develop/jsonschema-4.18.0
Bump jsonschema from 4.17.3 to 4.18.0
2023-07-10 19:49:07 +02:00
Matthias
9af9caae09 Merge pull request #8889 from freqtrade/dependabot/pip/develop/ccxt-4.0.17
Bump ccxt from 4.0.15 to 4.0.17
2023-07-10 19:48:50 +02:00
Matthias
a0fff43648 Add fee_base to json output 2023-07-10 19:47:37 +02:00
dependabot[bot]
b7bd1eba6f Bump time-machine from 2.10.0 to 2.11.0
Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.10.0 to 2.11.0.
- [Changelog](https://github.com/adamchainz/time-machine/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/time-machine/compare/2.10.0...2.11.0)

---
updated-dependencies:
- dependency-name: time-machine
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 16:16:34 +00:00
dependabot[bot]
6d63b9400b Bump fastapi from 0.99.1 to 0.100.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.99.1 to 0.100.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.99.1...0.100.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 16:16:30 +00:00
dependabot[bot]
e0ba2f3a15 Bump pyarrow from 12.0.0 to 12.0.1
Bumps [pyarrow](https://github.com/apache/arrow) from 12.0.0 to 12.0.1.
- [Commits](https://github.com/apache/arrow/compare/go/v12.0.0...go/v12.0.1)

---
updated-dependencies:
- dependency-name: pyarrow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 16:16:25 +00:00
dependabot[bot]
7d16012f61 Bump ccxt from 4.0.15 to 4.0.17
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.15 to 4.0.17.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.0.15...4.0.17)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 16:16:19 +00:00
dependabot[bot]
4a422cac5b Bump jsonschema from 4.17.3 to 4.18.0
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.17.3 to 4.18.0.
- [Release notes](https://github.com/python-jsonschema/jsonschema/releases)
- [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.17.3...v4.18.0)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 16:16:12 +00:00
Matthias
884594a967 Bump sqlalchemy pre-commit 2023-07-10 18:09:08 +02:00
Matthias
c7c5c41f41 Merge pull request #8885 from freqtrade/dependabot/pip/develop/ccxt-4.0.15
Bump ccxt from 4.0.14 to 4.0.15
2023-07-10 18:07:42 +02:00
dependabot[bot]
12d89a9061 Bump sqlalchemy from 2.0.17 to 2.0.18
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.17 to 2.0.18.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 08:43:16 +00:00
Matthias
7d117e8ca2 Merge pull request #8886 from freqtrade/dependabot/pip/develop/python-telegram-bot-20.4
Bump python-telegram-bot from 20.3 to 20.4
2023-07-10 10:42:11 +02:00
Matthias
f6322bd02d Merge pull request #8884 from freqtrade/dependabot/pip/develop/numpy-1.25.1
Bump numpy from 1.25.0 to 1.25.1
2023-07-10 07:53:18 +02:00
Matthias
a3aafffbd2 Merge pull request #8883 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.18
Bump mkdocs-material from 9.1.17 to 9.1.18
2023-07-10 07:23:19 +02:00
Matthias
52b4a2c921 Merge pull request #8881 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.39
Bump prompt-toolkit from 3.0.38 to 3.0.39
2023-07-10 07:22:54 +02:00
Matthias
32857f50ea Merge pull request #8879 from freqtrade/dependabot/pip/develop/ruff-0.0.277
Bump ruff from 0.0.275 to 0.0.277
2023-07-10 07:22:37 +02:00
Matthias
40945b4eff Merge pull request #8878 from freqtrade/dependabot/pip/develop/joblib-1.3.1
Bump joblib from 1.2.0 to 1.3.1
2023-07-10 07:22:14 +02:00
Matthias
1dbc294b80 Improve order __REPR__ with date 2023-07-10 07:11:29 +02:00
Matthias
5bc84dca56 Fix from_json with new attributes 2023-07-10 06:38:18 +02:00
Matthias
8c0e66008a Remove wrong/faulty "default" comment from cli options 2023-07-10 06:12:46 +02:00
dependabot[bot]
4a1a197943 Bump python-telegram-bot from 20.3 to 20.4
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 20.3 to 20.4.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v20.3...v20.4)

---
updated-dependencies:
- dependency-name: python-telegram-bot
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 04:00:59 +00:00
dependabot[bot]
43f6a7e3c9 Bump ccxt from 4.0.14 to 4.0.15
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.14 to 4.0.15.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.0.14...4.0.15)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 04:00:46 +00:00
dependabot[bot]
1bece11eb3 Bump numpy from 1.25.0 to 1.25.1
Bumps [numpy](https://github.com/numpy/numpy) from 1.25.0 to 1.25.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.25.0...v1.25.1)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 04:00:27 +00:00
dependabot[bot]
3c1cd72430 Bump mkdocs-material from 9.1.17 to 9.1.18
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.17 to 9.1.18.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.17...9.1.18)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 03:59:59 +00:00
dependabot[bot]
1ca2a8d638 Bump prompt-toolkit from 3.0.38 to 3.0.39
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.38 to 3.0.39.
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.38...3.0.39)

---
updated-dependencies:
- dependency-name: prompt-toolkit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 03:59:21 +00:00
dependabot[bot]
7359a76b77 Bump ruff from 0.0.275 to 0.0.277
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.275 to 0.0.277.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.0.275...v0.0.277)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 03:59:01 +00:00
dependabot[bot]
75e6315aac Bump joblib from 1.2.0 to 1.3.1
Bumps [joblib](https://github.com/joblib/joblib) from 1.2.0 to 1.3.1.
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/commits)

---
updated-dependencies:
- dependency-name: joblib
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 03:58:40 +00:00
Matthias
d68eac92b8 Merge pull request #8874 from freqtrade/improve/convert_data
Improve/convert data
2023-07-09 17:14:12 +02:00
Matthias
b4957a2e37 Update converter test 2023-07-09 15:37:56 +02:00
Matthias
448f02960f Improve behavior for convert-data 2023-07-09 15:36:44 +02:00
Matthias
5a43dd4766 don't hard-default --timeframes via argparse 2023-07-09 15:32:51 +02:00
Matthias
10f34563f8 Improve default for --candle-types 2023-07-09 15:02:47 +02:00
Matthias
d8d0a60322 Merge pull request #8872 from freqtrade/ccxt_bump
bump ccxt to 4.0.14
2023-07-09 14:49:27 +02:00
Matthias
4c6eee8dfe Update proxy documentation to correspond to new ccxt mode 2023-07-09 13:52:46 +02:00
Matthias
a598b8554d Bump ccxt and ccxt min requirement 2023-07-09 13:48:14 +02:00
Matthias
511023ee10 Fix typo in comment 2023-07-09 13:47:57 +02:00
Matthias
8212a5af77 Merge pull request #8819 from Bloodhunter4rc/remotepairlist
Remotepairlist - add blacklist mode
2023-07-09 12:42:25 +02:00
Matthias
af5fc76dc6 Add test for different processing modes 2023-07-09 11:51:43 +02:00
Matthias
e6ee55a69b Improve some test coverage 2023-07-09 11:37:06 +02:00
Matthias
4dda9c6daa Add explicit test for short-desc 2023-07-09 11:36:13 +02:00
Matthias
5da5369ca4 Update parameter sequence to make more sense 2023-07-09 11:09:59 +02:00
Matthias
ea04210eb3 Merge pull request #8869 from stash86/patch-1
Update my link
2023-07-09 10:38:18 +02:00
Stefano Ariestasia
e64327f353 Update my link 2023-07-09 17:12:21 +09:00
Bloodhunter4rc
4d4ec11a8a - print 2023-07-09 09:53:31 +02:00
Bloodhunter4rc
4f77e3f595 Merge branch 'remotepairlist' of https://github.com/Bloodhunter4rc/freqtrade into remotepairlist 2023-07-09 09:44:19 +02:00
Bloodhunter4rc
0b68ca6cb3 use pairlist_pos remove unused check, fixed Test 2023-07-09 09:42:33 +02:00
Bloodhunter4rc
0c2eb8dc58 Merge branch 'freqtrade:develop' into remotepairlist 2023-07-09 09:15:56 +02:00
Matthias
b2106ef4a2 Update frequenthippo link description 2023-07-09 07:35:02 +02:00
Bloodhunter4rc
ee1fa34df2 Add 'processing_mode' , blacklist checks 2023-07-08 18:05:46 +02:00
Matthias
c4b0f24cd7 Use USD for kraken tests, as it has more volume. 2023-07-08 13:26:31 +02:00
Matthias
a1d50dbfa2 Add community showcase 2023-07-08 13:06:12 +02:00
Matthias
8436f9ade4 Merge pull request #8802 from freqtrade/dependabot/pip/develop/numpy-1.25.0
Bump numpy from 1.24.3 to 1.25.0
2023-07-08 10:32:27 +02:00
Matthias
2e78f7503e Merge branch 'develop' into dependabot/pip/develop/numpy-1.25.0 2023-07-08 09:52:33 +02:00
Matthias
5c0f5588a6 Simplify sort_values in PerformanceFilter
Avoids potential regression in numpy 1.25.0 - which doesn't keep prior sort order in chained sort_values calls.
2023-07-08 09:49:01 +02:00
Matthias
3d6d006e84 Merge branch 'develop' into pr/Bloodhunter4rc/8819 2023-07-08 07:37:00 +02:00
Matthias
1c5ea317e6 Add mode as parameter for the UI 2023-07-08 07:31:55 +02:00
Matthias
31faad776e Merge branch 'stable' into develop 2023-07-07 20:31:35 +02:00
Matthias
eea95f79aa Merge pull request #8862 from freqtrade/new_release
New release 2023.6
2023-07-07 20:08:27 +02:00
Matthias
f020daa357 Merge pull request #8864 from freqtrade/dependabot/pip/develop/ccxt-4.0.12
Bump ccxt from 3.1.44 to 4.0.12
2023-07-07 15:46:08 +02:00
Matthias
dacbcdb710 Merge pull request #8865 from freqtrade/online_test_trade_history
Online test trade history
2023-07-07 13:55:21 +02:00
Matthias
a9e239ca7a Don't use future date for downloading new trade data
closes #8860
2023-07-07 11:23:34 +02:00
Matthias
65550335ee Add explicit online test for get_trade_history
part of #8860
2023-07-07 11:15:15 +02:00
Matthias
01db789d42 Improve release documentation 2023-07-07 10:56:41 +02:00
Matthias
6fe0895e74 Merge pull request #8847 from freqtrade/dependabot/pip/develop/scipy-1.11.1
Bump scipy from 1.10.1 to 1.11.1
2023-07-07 10:45:47 +02:00
dependabot[bot]
c93a27af7d Bump ccxt from 3.1.44 to 4.0.12
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.1.44 to 4.0.12.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.1.44...4.0.12)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-07 08:22:16 +00:00
Matthias
67ce7917cc Merge pull request #8863 from freqtrade/robcaulk-patch-1
Bump datasieve 0.1.7
2023-07-07 10:21:23 +02:00
Matthias
9b447cdf1e Bump pandas to 2.0.3 2023-07-07 09:37:14 +02:00
Robert Caulk
98ba0042d8 Bump datasieve 0.1.7 2023-07-07 09:27:09 +02:00
Matthias
f64b9503f9 scipy 1.11 doesn't support python 3.8 any longer 2023-07-07 09:08:32 +02:00
Matthias
e734a664b4 bump develop-version to 2023.7.dev 2023-07-07 08:59:10 +02:00
Matthias
942f0b4fbd Move format_ms_time to datetime_helpers 2023-07-07 08:59:07 +02:00
Matthias
a2ba466918 Merge pull request #8851 from freqtrade/dependabot/pip/develop/stable-baselines3-2.0.0
Bump stable-baselines3 from 2.0.0a13 to 2.0.0
2023-07-07 08:51:45 +02:00
Matthias
7ba459db88 Version bump to 2023.6 2023-07-07 08:45:06 +02:00
Matthias
ab39144af8 Merge branch 'stable' into new_release 2023-07-07 08:44:49 +02:00
Matthias
092e30a159 Attempt CI without brew update 2023-07-06 21:22:03 +02:00
Matthias
e6db5bd193 Pin numpy for python < 3.8 2023-07-06 21:09:06 +02:00
Matthias
5cd08ce554 Merge pull request #8825 from freqtrade/dependabot/pip/develop/ruff-0.0.275
Bump ruff from 0.0.272 to 0.0.275
2023-07-04 20:47:28 +02:00
Matthias
e51085ebc6 Merge pull request #8853 from freqtrade/dependabot/pip/develop/fastapi-0.99.1
Bump fastapi from 0.98.0 to 0.99.1
2023-07-03 16:13:18 +02:00
Matthias
817b6f9bde Merge pull request #8852 from freqtrade/dependabot/pip/develop/ast-comments-1.1.0
Bump ast-comments from 1.0.1 to 1.1.0
2023-07-03 11:09:03 +02:00
Matthias
b204a93d1c Merge pull request #8858 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.7
Bump pypa/gh-action-pypi-publish from 1.8.6 to 1.8.7
2023-07-03 10:49:22 +02:00
dependabot[bot]
977bfa08b7 Bump pypa/gh-action-pypi-publish from 1.8.6 to 1.8.7
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.6 to 1.8.7.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.6...v1.8.7)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 03:42:51 +00:00
dependabot[bot]
ba6cba31be Bump fastapi from 0.98.0 to 0.99.1
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.98.0 to 0.99.1.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.98.0...0.99.1)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 03:29:53 +00:00
dependabot[bot]
1880f9ffa1 Bump ast-comments from 1.0.1 to 1.1.0
Bumps [ast-comments](https://github.com/t3rn0/ast-comments) from 1.0.1 to 1.1.0.
- [Commits](https://github.com/t3rn0/ast-comments/compare/1.0.1...1.1.0)

---
updated-dependencies:
- dependency-name: ast-comments
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 03:29:48 +00:00
dependabot[bot]
9d3dda4e12 Bump stable-baselines3 from 2.0.0a13 to 2.0.0
Bumps [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) from 2.0.0a13 to 2.0.0.
- [Release notes](https://github.com/DLR-RM/stable-baselines3/releases)
- [Commits](https://github.com/DLR-RM/stable-baselines3/commits/v2.0.0)

---
updated-dependencies:
- dependency-name: stable-baselines3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-03 03:29:40 +00:00
Matthias
0310a26b80 Fix documentation typo 2023-07-02 16:44:47 +00:00
Matthias
86956908d0 Merge branch 'develop' into dependabot/pip/develop/ruff-0.0.275 2023-07-02 18:35:43 +02:00
dependabot[bot]
b204da3317 Bump scipy from 1.10.1 to 1.11.1
Bumps [scipy](https://github.com/scipy/scipy) from 1.10.1 to 1.11.1.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.10.1...v1.11.1)

---
updated-dependencies:
- dependency-name: scipy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-01 05:43:10 +00:00
Matthias
e16c433cb8 Merge pull request #8829 from freqtrade/dependabot/pip/develop/mypy-1.4.1
Bump mypy from 1.3.0 to 1.4.1
2023-06-30 17:52:14 +02:00
Matthias
c5510491e5 Merge pull request #8830 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.17
Bump sqlalchemy from 2.0.16 to 2.0.17
2023-06-30 09:18:24 +02:00
Matthias
29725440c8 Simplify RPCMessageType schema definition 2023-06-29 12:28:25 +00:00
Matthias
accc1b509b Simplify class setups without inheritance 2023-06-29 12:16:10 +00:00
Matthias
4b06b4772d sqlalchemy - pre-commit 2023-06-29 11:53:58 +00:00
Matthias
a90b7c0bf5 Merge pull request #8835 from freqtrade/fix/pca-components
make sure default PCA behavior reduces parameter space size
2023-06-26 19:14:44 +02:00
Matthias
c4168055f9 Merge pull request #8831 from freqtrade/dependabot/pip/develop/fastapi-0.98.0
Bump fastapi from 0.97.0 to 0.98.0
2023-06-26 15:18:37 +02:00
dependabot[bot]
b12dbd2bea Bump ruff from 0.0.272 to 0.0.275
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.272 to 0.0.275.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.0.272...v0.0.275)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 13:17:59 +00:00
dependabot[bot]
be07ea5d4f Bump mypy from 1.3.0 to 1.4.1
Bumps [mypy](https://github.com/python/mypy) from 1.3.0 to 1.4.1.
- [Commits](https://github.com/python/mypy/compare/v1.3.0...v1.4.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 13:17:23 +00:00
Matthias
e729c5f9fd Merge pull request #8828 from freqtrade/dependabot/pip/develop/pytest-7.4.0
Bump pytest from 7.3.2 to 7.4.0
2023-06-26 15:17:02 +02:00
Matthias
5c8181fdd3 Merge pull request #8826 from freqtrade/dependabot/pip/develop/nbconvert-7.6.0
Bump nbconvert from 7.5.0 to 7.6.0
2023-06-26 15:16:11 +02:00
Matthias
3329279b71 Merge pull request #8827 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.17
Bump mkdocs-material from 9.1.16 to 9.1.17
2023-06-26 15:15:53 +02:00
robcaulk
6b201d525e make sure default PCA behavior reduces parameter space size 2023-06-26 14:42:59 +02:00
dependabot[bot]
8c2098c262 Bump fastapi from 0.97.0 to 0.98.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.97.0 to 0.98.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.97.0...0.98.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 03:58:27 +00:00
dependabot[bot]
6274197f85 Bump sqlalchemy from 2.0.16 to 2.0.17
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.16 to 2.0.17.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 03:58:21 +00:00
dependabot[bot]
ae42d57a26 Bump pytest from 7.3.2 to 7.4.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.3.2 to 7.4.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.3.2...7.4.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 03:57:31 +00:00
dependabot[bot]
2d2699b0ad Bump mkdocs-material from 9.1.16 to 9.1.17
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.16 to 9.1.17.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.16...9.1.17)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 03:57:21 +00:00
dependabot[bot]
fec4cb3cf9 Bump nbconvert from 7.5.0 to 7.6.0
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.5.0 to 7.6.0.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.5.0...v7.6.0)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-26 03:57:07 +00:00
Matthias
4a886e1b97 Merge pull request #8824 from freqtrade/refactor/optimize_reports
Refactor/optimize reports
2023-06-25 19:29:22 +02:00
Matthias
2c36a09b4f Merge pull request #8823 from freqtrade/fix/outlier-check
Fix/outlier check
2023-06-25 19:28:55 +02:00
Matthias
1717f86702 Extract edge output to proper module 2023-06-25 17:45:01 +02:00
Matthias
72504e62ad Extract btstorage methods 2023-06-25 17:42:58 +02:00
Matthias
65e8359908 Improve naming of new file 2023-06-25 17:11:13 +02:00
Matthias
794bca1379 Split optimize report generation from visualization 2023-06-25 17:09:57 +02:00
Matthias
5e084ad2e5 convert optimize_reports to a package 2023-06-25 17:08:41 +02:00
robcaulk
fca73531cf fix: use .shape instead of index for outliers 2023-06-25 16:34:44 +02:00
robcaulk
9da28e5328 bump datasieve 2023-06-25 15:44:24 +02:00
robcaulk
fd420738cd ensure outlier-check is returning as a numpy array from datasieve 2023-06-25 15:43:02 +02:00
Matthias
48e8965322 Don't add header if it's not needed 2023-06-25 15:35:57 +02:00
Bloodhunter4rc
ce1b90885e support wildcards 2023-06-24 21:32:20 +02:00
Matthias
5f98530ef9 Catch and send exceptions from websockets 2023-06-24 20:26:05 +02:00
Matthias
69087c30e7 Don't overwrite "type" with a variable 2023-06-24 20:18:24 +02:00
Bloodhunter4rc
d534f88d1c unnecessary lines removed. 2023-06-24 14:36:31 +02:00
Bloodhunter4rc
caca070c1a added tests 2023-06-24 14:31:30 +02:00
Bloodhunter4rc
36b33fb407 add mode to set the pairlist to blacklist additional to whitelist
adhere to _number_pairs
2023-06-24 12:38:31 +02:00
Matthias
6e143d4a5d Merge pull request #8818 from freqtrade/self
Use Self typing
2023-06-23 19:50:01 +02:00
Matthias
757c6dc5ca Use Self typing 2023-06-23 18:15:06 +02:00
Matthias
01dfca80ab Improve stop test behavior 2023-06-20 19:16:21 +02:00
Matthias
2f7b29ed34 Fix test_tsl_on_exchange_compatible_with_edge 2023-06-20 19:08:55 +02:00
Matthias
b49a118764 Fix exit_timeout test 2023-06-20 18:14:16 +02:00
Matthias
c7683a7b61 Improve docs wording 2023-06-20 06:57:48 +02:00
Matthias
5d60c62645 align list blocks 2023-06-20 06:55:19 +02:00
Matthias
96c2ca67e9 Add usage note for pairs.json file 2023-06-20 06:51:40 +02:00
Matthias
b0e5fb3940 Improve structure of download-data documentation 2023-06-20 06:50:59 +02:00
Matthias
8c54036fa5 Move Downloading tip from pairs file section 2023-06-20 06:45:56 +02:00
Matthias
859f7ff3de be explicit when loading pairs file. 2023-06-19 18:29:37 +02:00
dependabot[bot]
b2c87c3591 Bump numpy from 1.24.3 to 1.25.0
Bumps [numpy](https://github.com/numpy/numpy) from 1.24.3 to 1.25.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.24.3...v1.25.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 16:05:34 +00:00
Matthias
62f4bd27ec Merge pull request #8806 from freqtrade/dependabot/pip/develop/ccxt-3.1.44
Bump ccxt from 3.1.34 to 3.1.44
2023-06-19 17:59:05 +02:00
Robert Caulk
26c06e38be Merge pull request #8804 from freqtrade/dependabot/pip/develop/xgboost-1.7.6
Bump xgboost from 1.7.5 to 1.7.6
2023-06-19 14:35:34 +02:00
Matthias
78451447ac Merge pull request #8798 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.16
Bump mkdocs-material from 9.1.15 to 9.1.16
2023-06-19 14:25:58 +02:00
Matthias
0f7720dec0 Merge pull request #8801 from freqtrade/dependabot/pip/develop/pytest-mock-3.11.1
Bump pytest-mock from 3.10.0 to 3.11.1
2023-06-19 14:25:32 +02:00
Matthias
b9fe364d9c Merge pull request #8805 from freqtrade/dependabot/pip/develop/pre-commit-3.3.3
Bump pre-commit from 3.3.2 to 3.3.3
2023-06-19 13:06:07 +02:00
Matthias
97e7b60656 Merge pull request #8803 from freqtrade/dependabot/pip/develop/filelock-3.12.2
Bump filelock from 3.12.1 to 3.12.2
2023-06-19 13:05:42 +02:00
Matthias
936e49e8ee Merge pull request #8807 from freqtrade/dependabot/pip/develop/rich-13.4.2
Bump rich from 13.4.1 to 13.4.2
2023-06-19 13:05:11 +02:00
dependabot[bot]
6bc3439cb7 Bump pytest-mock from 3.10.0 to 3.11.1
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.10.0 to 3.11.1.
- [Release notes](https://github.com/pytest-dev/pytest-mock/releases)
- [Changelog](https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-mock/compare/v3.10.0...v3.11.1)

---
updated-dependencies:
- dependency-name: pytest-mock
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 05:08:12 +00:00
Matthias
ec72c91b17 Merge pull request #8800 from freqtrade/dependabot/pip/develop/time-machine-2.10.0
Bump time-machine from 2.9.0 to 2.10.0
2023-06-19 07:01:56 +02:00
Matthias
2809379b56 Merge pull request #8799 from freqtrade/dependabot/pip/develop/nbconvert-7.5.0
Bump nbconvert from 7.4.0 to 7.5.0
2023-06-19 07:01:38 +02:00
dependabot[bot]
e965b2e454 Bump rich from 13.4.1 to 13.4.2
Bumps [rich](https://github.com/Textualize/rich) from 13.4.1 to 13.4.2.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.4.1...v13.4.2)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:58:02 +00:00
dependabot[bot]
d82a0ad7b5 Bump ccxt from 3.1.34 to 3.1.44
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.1.34 to 3.1.44.
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/3.1.34...3.1.44)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:57:35 +00:00
dependabot[bot]
f04598c5e5 Bump pre-commit from 3.3.2 to 3.3.3
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.3.2 to 3.3.3.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.3.2...v3.3.3)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:57:29 +00:00
dependabot[bot]
f82d52c6d3 Bump xgboost from 1.7.5 to 1.7.6
Bumps [xgboost](https://github.com/dmlc/xgboost) from 1.7.5 to 1.7.6.
- [Release notes](https://github.com/dmlc/xgboost/releases)
- [Changelog](https://github.com/dmlc/xgboost/blob/master/NEWS.md)
- [Commits](https://github.com/dmlc/xgboost/compare/v1.7.5...v1.7.6)

---
updated-dependencies:
- dependency-name: xgboost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:57:17 +00:00
dependabot[bot]
fc0548ce0b Bump filelock from 3.12.1 to 3.12.2
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.12.1 to 3.12.2.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.12.1...3.12.2)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:57:02 +00:00
dependabot[bot]
8cc763b664 Bump time-machine from 2.9.0 to 2.10.0
Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.9.0 to 2.10.0.
- [Changelog](https://github.com/adamchainz/time-machine/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/time-machine/compare/2.9.0...2.10.0)

---
updated-dependencies:
- dependency-name: time-machine
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:56:44 +00:00
dependabot[bot]
ed90e77ea0 Bump nbconvert from 7.4.0 to 7.5.0
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.4.0 to 7.5.0.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.4.0...v7.5.0)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:56:40 +00:00
dependabot[bot]
1eb691d461 Bump mkdocs-material from 9.1.15 to 9.1.16
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.15 to 9.1.16.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.15...9.1.16)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 03:56:37 +00:00
Matthias
571dea6e9c Fix wrong final status on bg-tasks 2023-06-18 15:45:26 +02:00
Matthias
02071df8fa Merge pull request #8692 from freqtrade/feat/outsource-data-pipeline
Outsource data pipeline handling to improve flexibility
2023-06-18 13:39:36 +02:00
Robert Caulk
cca4fa1178 Update BaseClassifierModel.py 2023-06-18 11:31:03 +02:00
Robert Caulk
7e2f857aa5 Update BasePyTorchClassifier.py 2023-06-18 11:30:33 +02:00
Matthias
3d72d32845 Merge pull request #8369 from hippocritical/develop
backtest - lookahead_analysis
2023-06-18 08:29:08 +02:00
Matthias
52db6ac7d7 Use proper log level 2023-06-17 20:35:23 +02:00
Matthias
d94f3e7679 Add explicit tests for download-data
(without the command part)
2023-06-17 20:00:24 +02:00
Matthias
7af14d1985 Fix random test failure 2023-06-17 18:26:08 +02:00
Matthias
44a38e8362 Update download data tests 2023-06-17 18:22:47 +02:00
Matthias
0be4084eac Don't allow downloading wrong pairs
Prior to this, BTC/USDT:USDT could be downloaded to the spot directory, as it was filtered inproperly.
2023-06-17 18:14:58 +02:00
Matthias
937734365f Improve typehint for markets 2023-06-17 18:04:41 +02:00
Matthias
66b34edc0b Clarify variable name 2023-06-17 18:03:57 +02:00
Matthias
6f0f954686 Adjust mocks for new import location 2023-06-17 17:53:12 +02:00
Matthias
7453ff2fb5 Migrate download-data out of commands section 2023-06-17 17:53:12 +02:00
Matthias
b8ab6fe42b Improve wording of check command 2023-06-17 17:53:12 +02:00
Matthias
e0d5242a45 Reduce download-data verbosity 2023-06-17 17:53:12 +02:00
Robert Caulk
402a247c92 Merge pull request #8760 from initrv/rl-action-masks
Add MaskablePPO support
2023-06-17 16:28:43 +02:00
robcaulk
886b86f7c5 chore: bump datasieve 2023-06-17 16:14:48 +02:00
robcaulk
b0ab400ff3 fix: ensure test_size=0 is still accommodated 2023-06-17 15:39:33 +02:00
Matthias
bf872e8ed4 Simplify comparison depth 2023-06-17 14:25:46 +02:00
robcaulk
447feb16b4 Merge remote-tracking branch 'origin/develop' into use-datasieve 2023-06-17 13:26:35 +02:00
robcaulk
636f5753e1 Merge remote-tracking branch 'origin/feat/outsource-data-pipeline' into use-datasieve 2023-06-17 13:26:14 +02:00
robcaulk
11ff454b3b fix: ensure that a user setting up their own pipeline wont have conflicts with DI_values 2023-06-17 13:21:31 +02:00
Matthias
6bb75f0dd4 Simplify import if only one element is used 2023-06-17 10:12:36 +02:00
Matthias
1567cd2849 Use DOCS_LINK throughout 2023-06-17 09:10:54 +02:00
Matthias
34e7e3efea Simplify imports 2023-06-17 08:40:09 +02:00
Matthias
2c7aa9f721 Update doc wording 2023-06-17 08:37:38 +02:00
Matthias
24e806f081 Improve resiliance by using non-exchange controlled order attributes. 2023-06-16 19:58:35 +02:00
Matthias
b0396af4c4 Merge pull request #8791 from freqtrade/ci/catboost
Remove old version pin for catboost
2023-06-16 18:20:34 +02:00
Matthias
efaa959bfa Merge pull request #8790 from freqtrade/docs/link-to-articles
Add links to more FreqAI learning content
2023-06-16 18:20:05 +02:00
Matthias
7939716a5e Improve formatting of telegram /status messages 2023-06-16 18:00:22 +02:00
Matthias
4f834c8964 Remove old version pin for catboost 2023-06-16 15:15:40 +02:00
Robert Caulk
ffd7394adb Update freqai.md 2023-06-16 15:10:11 +02:00
Robert Caulk
2107dce2cd Update freqai-feature-engineering.md 2023-06-16 15:03:49 +02:00
robcaulk
72101f059d feat: ensure full backwards compatibility 2023-06-16 13:20:35 +02:00
robcaulk
75ec19062c chore: make DOCS_LINK in constants.py, ensure datasieve is added to setup.py 2023-06-16 13:06:21 +02:00
Matthias
64fcb1ed11 Better pin scikit-learn
caused by #7896
2023-06-16 10:15:45 +02:00
Matthias
dec3c0f374 Remove environment.yml completely 2023-06-16 07:02:40 +02:00
Matthias
1b86bf8a1d Don't include non-used parameters in command structure 2023-06-16 06:58:34 +02:00
Matthias
2cd9043c51 Make documentation discoverable / linked 2023-06-16 06:44:55 +02:00
Matthias
b3ef024e9e Don't use PurePosixPath 2023-06-15 20:43:05 +02:00
Matthias
964bf76469 Invert parameters for initialize_single_lookahead_analysis
otherwise their order is reversed before calling LookaheadAnalysis for no good reason
2023-06-15 20:42:26 +02:00
Matthias
ad74e65673 Simplify configuration setup 2023-06-15 20:26:45 +02:00
Matthias
ac36ba6592 Improve arguments file formatting 2023-06-15 20:15:44 +02:00
Matthias
ca88cac08b Remove unused code file 2023-06-15 06:39:00 +02:00
Matthias
d211bf47f1 Merge pull request #8767 from freqtrade/dependabot/pip/develop/stable-baselines3-2.0.0a13
Bump stable-baselines3 from 2.0.0a10 to 2.0.0a13
2023-06-15 06:06:44 +02:00
Matthias
11d7e7925e Fix random test failures 2023-06-14 20:34:18 +02:00
hippocritical
bc4d1c5326 Merge branch 'freqtrade:develop' into develop 2023-06-13 18:59:31 +02:00
Matthias
10b93f080a Merge pull request #8770 from freqtrade/dependabot/pip/develop/fastapi-0.97.0
Bump fastapi from 0.96.0 to 0.97.0
2023-06-13 10:56:02 +02:00
hippocritical
876ce85cd8 Merge branch 'freqtrade:develop' into develop 2023-06-12 23:04:02 +02:00
Matthias
9a7794c520 Improve behavior for when stoploss cancels without content
closes #8761
2023-06-12 20:29:23 +02:00
Matthias
1a4d94a6f3 OKX stop should convert contracts to amount 2023-06-12 20:01:26 +02:00
Matthias
1e44cfe2fc Improve stoploss test 2023-06-12 18:20:36 +02:00
Matthias
502090c199 Merge pull request #8765 from freqtrade/dependabot/pip/develop/ccxt-3.1.34
Bump ccxt from 3.1.23 to 3.1.34
2023-06-12 13:44:15 +02:00
Matthias
385d9d30b7 Merge pull request #8775 from freqtrade/dependabot/pip/develop/plotly-5.15.0
Bump plotly from 5.14.1 to 5.15.0
2023-06-12 13:33:33 +02:00
dependabot[bot]
e763e2ad35 Bump ccxt from 3.1.23 to 3.1.34
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.1.23 to 3.1.34.
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/3.1.23...3.1.34)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 08:08:05 +00:00
Matthias
a89c647255 Merge pull request #8769 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.16
Bump sqlalchemy from 2.0.15 to 2.0.16
2023-06-12 10:01:59 +02:00
dependabot[bot]
1beaf6f05c Bump plotly from 5.14.1 to 5.15.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.14.1 to 5.15.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v5.14.1...v5.15.0)

---
updated-dependencies:
- dependency-name: plotly
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 07:26:38 +00:00
Matthias
21949c0446 bump sqlalchemy pre-commit 2023-06-12 09:23:58 +02:00
Matthias
6e6bccfd3e Merge pull request #8773 from freqtrade/dependabot/pip/develop/urllib3-2.0.3
Bump urllib3 from 2.0.2 to 2.0.3
2023-06-12 08:48:10 +02:00
Matthias
a7f882a7fe Merge pull request #8772 from freqtrade/dependabot/pip/develop/ruff-0.0.272
Bump ruff from 0.0.270 to 0.0.272
2023-06-12 08:47:50 +02:00
Matthias
0c4dab37d7 Merge pull request #8771 from freqtrade/dependabot/pip/develop/pytest-7.3.2
Bump pytest from 7.3.1 to 7.3.2
2023-06-12 08:47:32 +02:00
Matthias
1af4fa0419 Merge pull request #8774 from freqtrade/dependabot/pip/develop/orjson-3.9.1
Bump orjson from 3.9.0 to 3.9.1
2023-06-12 08:46:49 +02:00
Matthias
37495884d4 Merge pull request #8768 from freqtrade/dependabot/pip/develop/filelock-3.12.1
Bump filelock from 3.12.0 to 3.12.1
2023-06-12 08:13:32 +02:00
dependabot[bot]
2e087750e0 Bump fastapi from 0.96.0 to 0.97.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.96.0 to 0.97.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.96.0...0.97.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 05:12:52 +00:00
Matthias
64e803356a Merge pull request #8766 from freqtrade/dependabot/pip/develop/pydantic-1.10.9
Bump pydantic from 1.10.8 to 1.10.9
2023-06-12 07:07:03 +02:00
dependabot[bot]
7172bc0af3 Bump orjson from 3.9.0 to 3.9.1
Bumps [orjson](https://github.com/ijl/orjson) from 3.9.0 to 3.9.1.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.9.0...3.9.1)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:58:02 +00:00
dependabot[bot]
feb6e5c466 Bump urllib3 from 2.0.2 to 2.0.3
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.0.2...2.0.3)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:58:01 +00:00
dependabot[bot]
8b27b408c7 Bump ruff from 0.0.270 to 0.0.272
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.270 to 0.0.272.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.270...v0.0.272)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:57:45 +00:00
dependabot[bot]
a9515dee81 Bump pytest from 7.3.1 to 7.3.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.3.1 to 7.3.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.3.1...7.3.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:57:33 +00:00
dependabot[bot]
71064c02e5 Bump sqlalchemy from 2.0.15 to 2.0.16
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.15 to 2.0.16.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:57:05 +00:00
dependabot[bot]
66dc1fd339 Bump filelock from 3.12.0 to 3.12.1
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.12.0 to 3.12.1.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.12.0...3.12.1)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:56:52 +00:00
dependabot[bot]
7542909e18 Bump stable-baselines3 from 2.0.0a10 to 2.0.0a13
Bumps [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) from 2.0.0a10 to 2.0.0a13.
- [Release notes](https://github.com/DLR-RM/stable-baselines3/releases)
- [Commits](https://github.com/DLR-RM/stable-baselines3/commits)

---
updated-dependencies:
- dependency-name: stable-baselines3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:56:48 +00:00
dependabot[bot]
a39f23a5c7 Bump pydantic from 1.10.8 to 1.10.9
Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.8 to 1.10.9.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.8...v1.10.9)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-12 03:56:43 +00:00
hippocritical
d748cf6531 Merge branch 'freqtrade:develop' into develop 2023-06-11 22:55:03 +02:00
hippocritical
663cfc6211 fixing tests 2023-06-11 22:53:21 +02:00
steam
bdb535d0e6 add maskable eval callback multiproc 2023-06-11 22:20:15 +03:00
steam
5dee86eda7 fix action_masks typing list 2023-06-11 21:44:57 +03:00
steam
c36547a563 add maskable eval callback 2023-06-11 20:05:53 +03:00
steam
afd54d39a5 add action_masks 2023-06-11 20:00:12 +03:00
Matthias
5844756ba1 Add test and fix for stop-price == limit price
closes #8758
2023-06-11 17:20:35 +02:00
Matthias
4a800fe467 Add explicit test for get_stop_limit_rate 2023-06-11 17:17:41 +02:00
Matthias
fd940dbba2 Merge pull request #8530 from freqtrade/feat/pairlistconfig
Provide pairlists via API
2023-06-11 12:43:38 +02:00
Matthias
320b3e20a6 Use correct variable for candle-type when loading data
closes #8757
2023-06-11 11:58:18 +02:00
Matthias
fc11c79b77 Fix not working date format output 2023-06-11 08:51:20 +02:00
Matthias
87e144a95a Update webserver tags 2023-06-11 08:24:16 +02:00
Matthias
9ef814689e Update endpoint in rest-client 2023-06-11 08:18:01 +02:00
hippocritical
2bd66fbb47 Merge branch 'freqtrade:develop' into develop 2023-06-11 00:21:04 +02:00
hippocritical
9eceb2f38c Merge remote-tracking branch 'origin/develop' into develop 2023-06-11 00:20:02 +02:00
hippocritical
1da1972c18 added test for config overrides 2023-06-11 00:18:34 +02:00
Matthias
e332fbfb47 Add explicit test for okx get_stop_params 2023-06-10 16:56:41 +02:00
Matthias
2806110869 Add explicit test for okx cancel_stop 2023-06-10 16:56:41 +02:00
Matthias
cfe88f06d2 Improve behavior of okx rebuys when using stop on exchange
closes #8755
2023-06-10 16:56:41 +02:00
robcaulk
ad8a4897ce remove unnecessary example in feature_engineering.md 2023-06-10 16:13:28 +02:00
Matthias
4f15b30339 Merge pull request #8590 from AchmadFathoni/develop
Fix disrepancy in freqai doc code example
2023-06-10 15:27:01 +02:00
robcaulk
229ee643cd revert change to deal with FT pinning old scikit-learn version 2023-06-10 13:24:09 +02:00
robcaulk
41e37f9d32 improve docs, update doc strings 2023-06-10 13:11:47 +02:00
robcaulk
d9bdd879ab improve migration doc 2023-06-10 13:00:59 +02:00
robcaulk
f8d7c2e21d add migration guide, add protections and migration assistance 2023-06-10 12:48:27 +02:00
robcaulk
4cdd6bc6c3 avoid using ram for unnecessary train_df, fix some deprecation warnings 2023-06-10 12:07:03 +02:00
robcaulk
e246259792 avoid manual pipeline validation 2023-06-10 11:40:57 +02:00
Matthias
3523f564bd Improve Log reduction and corresponding test 2023-06-10 09:44:20 +02:00
Matthias
265d782af8 Implement the requested changes. 2023-06-10 09:30:34 +02:00
hippocritical
94ca2988a0 updated docs 2023-06-09 23:32:58 +02:00
hippocritical
6656740f21 Moved config overrides to its' own function
Added config overrides to dry_run_wallet and max_open_trades to avoid false positives.
2023-06-09 22:11:30 +02:00
Matthias
99842402f7 Further reduce unnecessary output 2023-06-09 07:18:35 +02:00
Matthias
16b3363970 Fix type problem 2023-06-09 07:16:06 +02:00
Matthias
b89390c06b Reduce log verbosity during bias tester runs 2023-06-09 07:15:36 +02:00
Matthias
c8e827d483 Merge branch 'develop' into pr/hippocritical/8369 2023-06-09 07:03:25 +02:00
Matthias
fc8c6b06ad Extract set-log-levels from main logging module 2023-06-09 06:59:08 +02:00
Matthias
e3056b141a Move logging tests to dedicated test file 2023-06-09 06:51:12 +02:00
Matthias
05ea36f03b Fix performance when running tons of backtests 2023-06-09 06:45:34 +02:00
Matthias
61f1701e56 Bump version to 2023.5.1 2023-06-08 22:02:33 +02:00
Matthias
beaaa94406 Improve test for reload-markets timings, fix bug
closes #8714
2023-06-08 21:03:12 +02:00
Matthias
6b736c49d4 Dont persist Backtesting to avoid memory leak 2023-06-08 20:13:28 +02:00
robcaulk
33b028b104 ensure data kitchen thread count is propagated to pipeline 2023-06-08 12:33:08 +02:00
robcaulk
88337b6c5e convert to using constants in data_drawer. Remove unneeded check_if_pred_in_spaces function 2023-06-08 12:19:42 +02:00
robcaulk
e39e40dc60 improve documentation of pipeline building/customization 2023-06-08 11:56:31 +02:00
Matthias
317e0b5f2b Avoid nested loops in telegram for force* scenarios
closes #8731
2023-06-08 07:08:06 +02:00
Matthias
4404d112a9 Merge pull request #8749 from freqtrade/dependabot/docker/python-3.11.4-slim-bullseye
Bump python from 3.10.11-slim-bullseye to 3.11.4-slim-bullseye
2023-06-08 06:30:36 +02:00
dependabot[bot]
f81139b97c Bump python from 3.10.11-slim-bullseye to 3.11.4-slim-bullseye
Bumps python from 3.10.11-slim-bullseye to 3.11.4-slim-bullseye.

---
updated-dependencies:
- dependency-name: python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-08 03:56:43 +00:00
robcaulk
14557f2d32 merge develop into outsource-data-pipeline 2023-06-07 19:24:21 +02:00
robcaulk
f10f00f5e8 Merge remote-tracking branch 'origin' into use-datasieve 2023-06-07 19:23:36 +02:00
hippocritical
675a97c1cb Merge branch 'freqtrade:develop' into develop 2023-06-07 19:22:42 +02:00
robcaulk
c066f014e3 fix docs 2023-06-07 18:36:07 +02:00
robcaulk
6d39adc739 bump datasieve version 2023-06-07 18:29:49 +02:00
robcaulk
135aaa2be2 update docs, improve the interaction with define_data_pipeline 2023-06-07 18:26:49 +02:00
robcaulk
dc577d2a1a update to new datasieve interface, add noise to pipeline 2023-06-07 17:58:27 +02:00
robcaulk
4d4589becd fix isort in tests 2023-06-07 14:00:00 +02:00
robcaulk
f7f88aa14d fix pickle file name 2023-06-07 09:28:56 +02:00
robcaulk
17d74429b5 Merge remote-tracking branch 'origin/feat/outsource-data-pipeline' into use-datasieve 2023-06-07 09:08:09 +02:00
robcaulk
5ac141f72b convert to new datasieve api 2023-06-06 21:05:51 +02:00
Matthias
0b8ef1b880 Fix devcontainer invalid key 2023-06-05 21:13:52 +02:00
Matthias
c269eef77e Remove unnecessary calc_profit_ratio call 2023-06-05 21:10:29 +02:00
Matthias
21172802de Devcontainer image should contain as many dependencies as possible 2023-06-05 20:30:46 +02:00
Matthias
17b8cb2f7c Merge pull request #8738 from freqtrade/dependabot/pip/develop/ccxt-3.1.23
Bump ccxt from 3.1.13 to 3.1.23
2023-06-05 18:06:29 +02:00
dependabot[bot]
6ec91d11ae Bump ccxt from 3.1.13 to 3.1.23
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.1.13 to 3.1.23.
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/3.1.13...3.1.23)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 07:40:33 +00:00
Matthias
984dec12df Merge pull request #8739 from freqtrade/dependabot/pip/develop/pandas-2.0.2
Bump pandas from 2.0.1 to 2.0.2
2023-06-05 09:39:55 +02:00
Matthias
11f2bbdd08 Merge pull request #8740 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.1
Bump types-requests from 2.31.0.0 to 2.31.0.1
2023-06-05 09:39:37 +02:00
Matthias
41f5c32526 Merge pull request #8741 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.15
Bump mkdocs-material from 9.1.14 to 9.1.15
2023-06-05 08:25:52 +02:00
Matthias
4dcb6395ef Bump pre-commit requests types 2023-06-05 07:13:09 +02:00
Matthias
46ad8afeb9 Merge pull request #8736 from freqtrade/dependabot/pip/develop/orjson-3.9.0
Bump orjson from 3.8.14 to 3.9.0
2023-06-05 07:10:27 +02:00
Matthias
49891967f2 Merge pull request #8734 from freqtrade/dependabot/pip/develop/fastapi-0.96.0
Bump fastapi from 0.95.2 to 0.96.0
2023-06-05 07:07:38 +02:00
Matthias
4acb0830e3 Merge pull request #8735 from freqtrade/dependabot/pip/develop/rich-13.4.1
Bump rich from 13.3.5 to 13.4.1
2023-06-05 07:07:20 +02:00
dependabot[bot]
e61659a2bc Bump mkdocs-material from 9.1.14 to 9.1.15
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.14 to 9.1.15.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.14...9.1.15)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 03:57:43 +00:00
dependabot[bot]
c2125698a7 Bump types-requests from 2.31.0.0 to 2.31.0.1
Bumps [types-requests](https://github.com/python/typeshed) from 2.31.0.0 to 2.31.0.1.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 03:57:22 +00:00
dependabot[bot]
093181e8f2 Bump pandas from 2.0.1 to 2.0.2
Bumps [pandas](https://github.com/pandas-dev/pandas) from 2.0.1 to 2.0.2.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](https://github.com/pandas-dev/pandas/compare/v2.0.1...v2.0.2)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 03:57:15 +00:00
dependabot[bot]
bdaf230bd1 Bump orjson from 3.8.14 to 3.9.0
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.14 to 3.9.0.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.14...3.9.0)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 03:56:45 +00:00
dependabot[bot]
9dcab313b5 Bump rich from 13.3.5 to 13.4.1
Bumps [rich](https://github.com/Textualize/rich) from 13.3.5 to 13.4.1.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.3.5...v13.4.1)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 03:56:40 +00:00
dependabot[bot]
c9bbeedd88 Bump fastapi from 0.95.2 to 0.96.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.95.2 to 0.96.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.95.2...0.96.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-05 03:56:37 +00:00
Robert Caulk
94bc91ef57 Update tests/freqai/test_freqai_datakitchen.py
Co-authored-by: Matthias <xmatthias@outlook.com>
2023-06-04 21:50:13 +02:00
Matthias
7a726da691 Update cached binance leverage tiers 2023-06-04 20:28:08 +02:00
Matthias
71b81ee7cd Add margin_mode to pairlists callback 2023-06-04 13:25:39 +02:00
Matthias
f61ae9c7e2 Merge branch 'develop' into feat/pairlistconfig 2023-06-04 08:33:45 +02:00
Matthias
12e31208e1 Update typedDict type used with pydantic 2023-06-03 12:33:44 +02:00
Matthias
ac7419e975 Split trademode response value into trade_mode and margin-mode 2023-06-03 11:58:55 +02:00
Matthias
72f4e1475c Bump api version 2023-06-03 11:58:55 +02:00
Matthias
74254bb893 Add /exchanges endpoint to list available exchanges 2023-06-03 11:58:55 +02:00
Matthias
54bf1634c7 Refactor validExchangesType to separate types package 2023-06-03 11:58:55 +02:00
Matthias
6f928b826f Update types for build_exchange_list_entry 2023-06-03 11:58:55 +02:00
Matthias
cc04f3279a bump pre-commit mypy version 2023-06-03 11:58:55 +02:00
Matthias
fcb960185e Clarify function naming 2023-06-03 11:58:55 +02:00
Matthias
250ae2d006 Enhance list-exchanges with more information 2023-06-03 11:58:55 +02:00
Matthias
b5d1017779 Update list_exchanges to use a dict internally 2023-06-03 11:58:55 +02:00
Matthias
26ed17fa02 Merge pull request #8725 from freqtrade/dependabot/pip/cryptography-41.0.0
Bump cryptography from 40.0.1 to 41.0.1
2023-06-03 11:32:51 +02:00
Matthias
e890bc0718 Don't bump pi version, but bump regular version 2023-06-03 08:30:38 +02:00
Matthias
10ea2b44c7 Update test line length 2023-06-03 06:59:22 +02:00
Matthias
d9d1735333 Extract ExchangePayload updating 2023-06-03 06:57:25 +02:00
Matthias
48328fb29d reset candle_type_def 2023-06-03 06:52:25 +02:00
dependabot[bot]
49c0fdf367 Bump cryptography from 40.0.1 to 41.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 40.0.1 to 41.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/40.0.1...41.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 20:23:40 +00:00
Matthias
ac046d6a2d Allow setting the exchange explicitly 2023-06-02 10:14:11 +02:00
Matthias
af16ce874c Allow webserver mode to cache multiple exchanges 2023-06-02 09:50:40 +02:00
Matthias
e2594e7494 Align tests to use webserver mode 2023-06-01 20:46:28 +02:00
Matthias
77e3e9e899 Move pairlists and background tasks API's to separate file 2023-06-01 20:40:12 +02:00
Matthias
cafc9479b7 Merge branch 'develop' into feat/pairlistconfig 2023-06-01 20:33:28 +02:00
Matthias
8f02050fde Merge pull request #8721 from freqtrade/robcaulk-patch-1
Update freqai.md
2023-06-01 20:12:52 +02:00
Matthias
565c0496d9 Bump httpx min requirement 2023-06-01 20:10:57 +02:00
Matthias
d0f900f567 set HTTPX level to warning
closes #8717
2023-06-01 20:09:59 +02:00
Robert Caulk
30dd63fcb9 Update freqai.md 2023-06-01 15:54:05 +02:00
Matthias
8aee368f60 auto-inject webserver mode dependency 2023-06-01 07:07:02 +02:00
Matthias
e0d9603e99 Raise correct httperrorcode for webserver-only endpoitns 2023-06-01 07:03:35 +02:00
Matthias
88ecb935b9 Add "failed" state to bgjob task response 2023-05-31 20:22:22 +02:00
Matthias
9c6fee3841 Enable gate futures for spread-filter again
closes #8687
2023-05-31 17:14:22 +02:00
Matthias
5fc8426b9b Improve handling of order cancelation failures with force_exit
closes #8708
2023-05-31 17:06:51 +02:00
Matthias
430cd24bbc Invert order (exit trade 3 before trade 4) 2023-05-31 15:00:09 +02:00
Matthias
08d040db14 Slightly update force_exit test 2023-05-31 14:59:41 +02:00
Matthias
5311614d54 Update force exit wording 2023-05-31 14:33:09 +02:00
Matthias
193d88c9c8 Double-check cancelling stop order didn't close the trade 2023-05-31 14:12:03 +02:00
Matthias
1f543666f4 Improve test for reload-markets timings, fix bug
closes #8714
2023-05-31 11:46:31 +02:00
Matthias
fd955028a8 Update tests for new background method 2023-05-31 07:08:27 +02:00
Matthias
7bccf2129f Introduce background_job endpoints 2023-05-31 07:00:20 +02:00
robcaulk
f6a32f4ffd bump version 2023-05-29 23:35:24 +02:00
Matthias
b666c418bb Don't use variables for simple debug values 2023-05-29 17:33:11 +02:00
Matthias
af1dbf7dff Extract get_rate_from_ticker from get_rate method 2023-05-29 17:31:57 +02:00
Matthias
f074383d6a Extract orderbook logic into separate method 2023-05-29 17:24:04 +02:00
robcaulk
785f0d396f bump datasieve version 2023-05-29 16:44:53 +02:00
Matthias
6315516d50 Improve volumepairlist defaults 2023-05-29 15:18:46 +02:00
robcaulk
6237806817 bump datasieve to 0.0.8 2023-05-29 15:18:28 +02:00
robcaulk
e572653616 bring classifier/rl up to new paradigm. ensure tests pass. remove old code. add documentation, add new example transform 2023-05-29 13:33:29 +02:00
Matthias
12e8e29b4e Merge pull request #8703 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.0
Bump types-requests from 2.30.0.0 to 2.31.0.0
2023-05-29 08:39:51 +02:00
Matthias
5ecf93e84b Merge pull request #8705 from freqtrade/dependabot/pip/develop/ccxt-3.1.13
Bump ccxt from 3.1.5 to 3.1.13
2023-05-29 08:39:32 +02:00
Matthias
9f1bdc19aa Bump ruff pre-commit version 2023-05-29 08:10:29 +02:00
Matthias
35836479de Bump requests pre-commit dependency 2023-05-29 08:09:56 +02:00
Matthias
e03e8547c0 Merge pull request #8707 from freqtrade/dependabot/pip/develop/orjson-3.8.14
Bump orjson from 3.8.12 to 3.8.14
2023-05-29 08:08:36 +02:00
Matthias
bcd27f5517 Merge pull request #8706 from freqtrade/dependabot/pip/develop/ruff-0.0.270
Bump ruff from 0.0.269 to 0.0.270
2023-05-29 08:08:21 +02:00
Matthias
ce02a3ff33 Merge pull request #8704 from freqtrade/dependabot/pip/develop/cachetools-5.3.1
Bump cachetools from 5.3.0 to 5.3.1
2023-05-29 08:08:06 +02:00
Matthias
85de8ca63f Merge pull request #8702 from freqtrade/dependabot/pip/develop/pytest-cov-4.1.0
Bump pytest-cov from 4.0.0 to 4.1.0
2023-05-29 08:07:46 +02:00
Matthias
4c54640800 Merge pull request #8701 from freqtrade/dependabot/pip/develop/pydantic-1.10.8
Bump pydantic from 1.10.7 to 1.10.8
2023-05-29 08:07:29 +02:00
dependabot[bot]
cb7a0f9bff Bump orjson from 3.8.12 to 3.8.14
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.12 to 3.8.14.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.12...3.8.14)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:57:23 +00:00
dependabot[bot]
90808683e2 Bump ruff from 0.0.269 to 0.0.270
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.269 to 0.0.270.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.269...v0.0.270)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:57:13 +00:00
dependabot[bot]
8fdec5f3a6 Bump ccxt from 3.1.5 to 3.1.13
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.1.5 to 3.1.13.
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/3.1.5...3.1.13)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:57:05 +00:00
dependabot[bot]
4e9a43ebf6 Bump cachetools from 5.3.0 to 5.3.1
Bumps [cachetools](https://github.com/tkem/cachetools) from 5.3.0 to 5.3.1.
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v5.3.0...v5.3.1)

---
updated-dependencies:
- dependency-name: cachetools
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:56:56 +00:00
dependabot[bot]
3bc390cb2e Bump types-requests from 2.30.0.0 to 2.31.0.0
Bumps [types-requests](https://github.com/python/typeshed) from 2.30.0.0 to 2.31.0.0.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:56:53 +00:00
dependabot[bot]
12af6ea766 Bump pytest-cov from 4.0.0 to 4.1.0
Bumps [pytest-cov](https://github.com/pytest-dev/pytest-cov) from 4.0.0 to 4.1.0.
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v4.0.0...v4.1.0)

---
updated-dependencies:
- dependency-name: pytest-cov
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:56:50 +00:00
dependabot[bot]
51ba4d14e9 Bump pydantic from 1.10.7 to 1.10.8
Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.7 to 1.10.8.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v1.10.8/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.7...v1.10.8)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-29 03:56:46 +00:00
hippocritical
6b3b5f201d export_to_csv: Added forced conversion of float64 to int to remove the .0 values once and for all ... 2023-05-28 22:13:29 +02:00
hippocritical
fc887efd4b Merge branch 'freqtrade:develop' into develop 2023-05-28 20:53:39 +02:00
hippocritical
0874b1a959 Merge remote-tracking branch 'origin/develop' into develop 2023-05-28 20:53:16 +02:00
hippocritical
eec7837167 - modified help-string for the cli-option lookahead_analysis_exportfilename
- moved doc from utils.md to lookahead-analysis.md and modified it (unfinished)
- added a check to automatically edit the config['backtest_cache'] to be 'none'
- adjusted test_lookahead_helper_export_to_csv to catch the new catching of errors
- adjusted test_lookahead_helper_text_table_lookahead_analysis_instances to catch the new catching of errors
- changed lookahead_analysis.start result-reporting to show that not enough trades were caught including x of y
2023-05-28 20:52:58 +02:00
Matthias
43f1537383 Merge pull request #8697 from freqtrade/new_release
New release 2023.5
2023-05-28 19:59:33 +02:00
Matthias
1317de8c1c Add rudimentary description per pairlist 2023-05-28 18:21:23 +02:00
Matthias
dbb92f686f Merge pull request #8696 from freqtrade/feat/no_roi
allow no / empty minimal_roi
2023-05-28 15:36:01 +02:00
hippocritical
aa8eb14461 Merge branch 'freqtrade:develop' into develop 2023-05-28 12:11:29 +02:00
Matthias
3d05669f61 Merge branch 'develop' into feat/pairlistconfig 2023-05-28 10:01:43 +02:00
Matthias
c9f78afe65 Bump version to 2023.5 2023-05-28 10:00:39 +02:00
Matthias
a3473f3f60 Better handling of shift 2023-05-28 10:00:39 +02:00
Matthias
4eb4275331 Fix volatilityfilter behavior
closes #8698
2023-05-28 10:00:38 +02:00
Matthias
8a86169256 Better handling of shift 2023-05-28 09:59:57 +02:00
Matthias
8ec0469b11 Fix volatilityfilter behavior
closes #8698
2023-05-28 09:53:53 +02:00
hippocritical
9bb25be880 modified help-string for the cli-option lookahead_analysis_exportfilename
moved doc from utils.md to lookahead-analysis.md and modified it (unfinished)
added a check to automatically edit the config['backtest_cache'] to be 'none'
2023-05-27 22:31:47 +02:00
hippocritical
0ed84fbcc1 added test_initialize_single_lookahead_analysis
A check for a random variable should be enough, right? :)
2023-05-27 20:47:59 +02:00
hippocritical
a7426755bc added a check for bias1.
Looking at has_bias should be enough to statisfy the test.
The tests could be extended with thecking the buy/sell signals and the dataframe itself -
but this should be sufficient for now.
2023-05-27 20:35:45 +02:00
Matthias
df5e6409a4 Bump develop version to 2023.6-dev 2023-05-27 20:18:39 +02:00
Matthias
b9121274fb Merge branch 'stable' into new_release 2023-05-27 20:01:51 +02:00
Matthias
5649d1d4da Convert minimal_roi to list comprehension 2023-05-27 19:57:12 +02:00
Matthias
36c82ad67c Update documentation for min_roi 2023-05-27 19:40:02 +02:00
Matthias
35a388bf9a Don't force min_roi to have content 2023-05-27 19:39:00 +02:00
hippocritical
ee37693729 Merge branch 'freqtrade:develop' into develop 2023-05-27 19:23:01 +02:00
hippocritical
05f0b32e3b Merge remote-tracking branch 'origin/develop' into develop 2023-05-27 19:22:23 +02:00
hippocritical
636298bb71 added test_lookahead_helper_export_to_csv 2023-05-27 19:15:35 +02:00
Matthias
bd266f654e Properly handle invalid pairlists type before config validation
closes #8695
2023-05-27 08:19:56 +02:00
robcaulk
31e19add27 start transition toward outsourcing the data pipeline with objective of improving pipeline flexibility 2023-05-26 18:40:14 +02:00
hippocritical
eb31b574c1 added returns to text_table_lookahead_analysis_instances
filled in test_lookahead_helper_text_table_lookahead_analysis_instances
2023-05-26 12:55:54 +02:00
hippocritical
9366c77e42 Merge branch 'freqtrade:develop' into develop 2023-05-26 08:38:32 +02:00
Matthias
af7afa80a9 remove gone-wrong import 2023-05-26 06:44:48 +02:00
Matthias
c23a045de4 Merge pull request #8622 from freqtrade/frog-forceenter-price
Add check for None prices in forceenter REST API script
2023-05-25 19:22:03 +02:00
Matthias
61ee77e07e Merge pull request #8690 from freqtrade/remove-tb-warning
Update base_tensorboard.py
2023-05-25 18:21:05 +02:00
Robert Caulk
f647fb342b Update base_tensorboard.py
Remove incorrect warning message.
2023-05-25 16:35:06 +02:00
Robert Caulk
d4183b3fcb Merge pull request #8688 from freqtrade/dependabot/pip/develop/stable-baselines3-2.0.0a10
Bump stable-baselines3 from 2.0.0a9 to 2.0.0a10
2023-05-25 09:24:55 +02:00
Matthias
6b0b62dadf Merge pull request #8686 from freqtrade/fix/8681
okx stop improvements
2023-05-25 06:43:22 +02:00
dependabot[bot]
9e9f9b21e5 Bump stable-baselines3 from 2.0.0a9 to 2.0.0a10
Bumps [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) from 2.0.0a9 to 2.0.0a10.
- [Release notes](https://github.com/DLR-RM/stable-baselines3/releases)
- [Commits](https://github.com/DLR-RM/stable-baselines3/commits)

---
updated-dependencies:
- dependency-name: stable-baselines3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-25 04:24:42 +00:00
Matthias
91e009bf6d Merge pull request #8677 from richardjozsa/develop
Stable baselines 3 seeding update
2023-05-25 06:23:34 +02:00
Matthias
9e75c768c0 Improve responses for evaluate get endpoints 2023-05-24 21:01:39 +02:00
Matthias
4c52109fa3 Handle pairlist evaluation errors gracefully 2023-05-24 20:37:23 +02:00
Matthias
b5ed693bee Extrac OKX convert stop order, call for regular orders, too 2023-05-24 20:15:36 +02:00
Matthias
b8220ee0f7 Improve recovery detection by skipping open orders 2023-05-24 18:19:14 +02:00
Matthias
a0336c83c3 Update method casing in tests 2023-05-23 19:22:58 +02:00
Matthias
6efc62e4cd Add test which verifies #8680 won't happen again 2023-05-23 19:10:10 +02:00
Matthias
6292d1af6d Use camelcase version of private fapi method
closes #8680
2023-05-23 19:07:58 +02:00
Matthias
9ffdaceef3 Bybit - use Proxy 2023-05-23 07:15:41 +02:00
Matthias
b2d9b914ea Merge pull request #8679 from freqtrade/dependabot/pip/requests-2.31.0
Bump requests from 2.30.0 to 2.31.0
2023-05-23 07:15:35 +02:00
dependabot[bot]
1e10b25e3d Bump requests from 2.30.0 to 2.31.0
Bumps [requests](https://github.com/psf/requests) from 2.30.0 to 2.31.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.30.0...v2.31.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 21:58:08 +00:00
Matthias
c2010d160f Merge branch 'develop' into feat/pairlistconfig 2023-05-22 19:59:20 +02:00
Matthias
5b29e710dc Merge pull request #8004 from wizrds/fix/dataframe_json
Revert DataFrame serialization in Producer mode (>pandas 2.0)
2023-05-22 19:58:05 +02:00
Matthias
33e25434b4 Change statuscode to 202 2023-05-22 19:43:27 +02:00
Matthias
e70cafe578 Merge branch 'develop' into pr/wizrds/8004 2023-05-22 18:24:32 +02:00
Matthias
44bdac5e8c Improve developer docs with some minor improvements 2023-05-22 18:23:33 +02:00
Matthias
85c14578e2 Merge pull request #8661 from freqtrade/feat/datetimehelpers
Add datetime helpers, reduce arrow usage to a minimum
2023-05-22 18:22:29 +02:00
Matthias
09aaf894c6 Merge pull request #8673 from freqtrade/dependabot/pip/develop/ruff-0.0.269
Bump ruff from 0.0.267 to 0.0.269
2023-05-22 11:51:27 +02:00
Matthias
795e3e324f Merge pull request #8674 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.15
Bump sqlalchemy from 2.0.13 to 2.0.15
2023-05-22 11:33:55 +02:00
Richard Jozsa
39f4fb8797 Merge branch 'freqtrade:develop' into develop 2023-05-22 08:36:25 +00:00
Richard Jozsa
d26aa231fc Stable baselines updates, and fix
There was a seeding error in SB3 after the gymnasium update, the stable baselines team has patched and fixed the issue, but the reset function has to be aligned.
2023-05-22 10:36:07 +02:00
Matthias
6d9b8a4a99 Merge pull request #8669 from freqtrade/dependabot/pip/develop/ccxt-3.1.5
Bump ccxt from 3.0.103 to 3.1.5
2023-05-22 09:23:56 +02:00
dependabot[bot]
2242d544fc Bump ruff from 0.0.267 to 0.0.269
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.267 to 0.0.269.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.267...v0.0.269)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 07:21:19 +00:00
Matthias
ad5f0307b7 bump sqlalchemy precommit 2023-05-22 09:21:18 +02:00
Matthias
8fccd98eca Merge pull request #8676 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.14
Bump mkdocs-material from 9.1.12 to 9.1.14
2023-05-22 09:20:31 +02:00
Matthias
e71b66f5c2 Merge pull request #8670 from freqtrade/dependabot/pip/develop/fastapi-0.95.2
Bump fastapi from 0.95.1 to 0.95.2
2023-05-22 09:19:38 +02:00
Matthias
0e99fe349c Merge pull request #8671 from freqtrade/dependabot/pip/develop/pre-commit-3.3.2
Bump pre-commit from 3.3.1 to 3.3.2
2023-05-22 09:19:18 +02:00
dependabot[bot]
96eb109b4e Bump mkdocs-material from 9.1.12 to 9.1.14
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.12 to 9.1.14.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.12...9.1.14)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 03:59:01 +00:00
dependabot[bot]
ae52ce8cda Bump sqlalchemy from 2.0.13 to 2.0.15
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.13 to 2.0.15.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 03:58:23 +00:00
dependabot[bot]
811198cc3e Bump pre-commit from 3.3.1 to 3.3.2
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 03:57:15 +00:00
dependabot[bot]
4e3de64c57 Bump fastapi from 0.95.1 to 0.95.2
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.95.1 to 0.95.2.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.95.1...0.95.2)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 03:57:01 +00:00
dependabot[bot]
8c866abad8 Bump ccxt from 3.0.103 to 3.1.5
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.103 to 3.1.5.
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.103...3.1.5)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 03:56:52 +00:00
Matthias
a2d03c4e2c Merge pull request #8047 from freqtrade/dependabot/pip/develop/cachetools-5.3.0
Bump cachetools from 4.2.2 to 5.3.0
2023-05-21 21:59:12 +02:00
dependabot[bot]
68ab147f57 Bump cachetools from 4.2.2 to 5.3.0
Bumps [cachetools](https://github.com/tkem/cachetools) from 4.2.2 to 5.3.0.
- [Release notes](https://github.com/tkem/cachetools/releases)
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v4.2.2...v5.3.0)

---
updated-dependencies:
- dependency-name: cachetools
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-21 12:52:49 +00:00
Matthias
abc82a3fdf Simplify api backtesting by extracting the background_method 2023-05-21 12:04:18 +02:00
Matthias
756e1f5d5b Test pairlist evaluation 2023-05-21 10:08:32 +02:00
Matthias
01984a06af Extract pairlist evaluation from sub-method 2023-05-21 09:58:38 +02:00
Matthias
7cc8da23c2 Update test for available pairlist 2023-05-21 09:56:46 +02:00
Matthias
bf9a6dd6e7 Merge branch 'develop' into feat/pairlistconfig 2023-05-21 09:54:17 +02:00
Matthias
a87b215d67 Fix odd import 2023-05-21 09:50:59 +02:00
Matthias
818a3342b9 move pairlist evaluation to the background 2023-05-21 09:38:14 +02:00
Matthias
680e7ba98f Get exchange through DI 2023-05-21 09:21:22 +02:00
Matthias
5ad6652e55 Merge branch 'develop' into feat/pairlistconfig 2023-05-21 09:15:50 +02:00
Matthias
914195acf4 Ensure one test can't fail 20 others 2023-05-21 09:14:00 +02:00
Matthias
96d74063fc Don't have public attributes marked as private 2023-05-21 09:12:02 +02:00
Matthias
5316227219 Extract api backtest logic from ApiServer class 2023-05-21 09:08:52 +02:00
Matthias
70a0c2e625 Fix test mishap 2023-05-21 08:21:08 +02:00
Matthias
3e6a2bf9b0 Add parameters for analysis tests ... 2023-05-20 20:12:04 +02:00
Matthias
104fa9e32d Use logger, not the logging module 2023-05-20 19:58:14 +02:00
Matthias
e73cd1487e Add somewhat sensible assert 2023-05-20 19:57:26 +02:00
Matthias
9869a21951 Move strategy to it's own directory to avoid having other 2023-05-20 19:51:54 +02:00
Matthias
3f5c18a035 Add some tests as todo 2023-05-20 19:51:54 +02:00
Matthias
e183707979 Further test lookahead_helpers 2023-05-20 19:51:54 +02:00
Matthias
ceddcd9242 Move most of the logic to lookahead_analysis helper 2023-05-20 19:51:54 +02:00
Matthias
d8af0dc9c4 Slightly improve testcase 2023-05-20 19:51:54 +02:00
Matthias
1c4a7c7a05 Split Lookahead helper to separate file 2023-05-20 19:51:54 +02:00
Matthias
7b9f82c71a Remove needless check for "None" list 2023-05-20 19:51:54 +02:00
hippocritical
5142b6bc0d Merge branch 'freqtrade:develop' into develop 2023-05-20 19:50:31 +02:00
Matthias
209eb63ede Add startup test case 2023-05-20 11:28:52 +02:00
Matthias
2e675efa13 Initial fix - test 2023-05-20 11:15:30 +02:00
Matthias
073dac8d5f Move lookahead analysis tests to optimize subdir 2023-05-20 11:08:22 +02:00
Matthias
a0edbe4797 Switch to using config instead of args. 2023-05-20 11:06:50 +02:00
Matthias
2e79aaae00 Remove usage of args.
It's clumsy to use and prevents specifying settings in the configuration.
2023-05-20 11:02:13 +02:00
Matthias
5488789bc4 Arguments should be in the configuration. 2023-05-20 11:01:42 +02:00
Matthias
fcb75560c4 Merge pull request #8565 from vinistation/develop
GPU Enable in docker-compose
2023-05-20 07:30:30 +02:00
robcaulk
c4c0371ed3 add docker comment to docker usage freqai doc section 2023-05-19 14:48:17 +00:00
robcaulk
dd1a0156b9 resolve conflict, ensure gpu works with transformer 2023-05-19 14:39:16 +00:00
Matthias
7ecc2f76a2 Merge pull request #8650 from freqtrade/feat/secure_keys
Better secure the user's exchange keys during runtime
2023-05-19 08:45:17 +02:00
Matthias
a2cbe5df04 Remove trailing spaces 2023-05-19 07:26:11 +02:00
Matthias
0d4010a0be Add sample docker-compose file for freqAI, comment about that 2023-05-19 07:25:02 +02:00
Matthias
9d0f488de7 Some more edits due to arrow 2023-05-19 07:15:24 +02:00
Matthias
707c6744b9 Fix doc and example indentation 2023-05-19 07:02:54 +02:00
Matthias
ebfc9a6039 Remove some humanize occurances 2023-05-18 19:29:37 +02:00
hippocritical
b2ecfd28a7 Merge branch 'freqtrade:develop' into develop 2023-05-18 19:12:25 +02:00
Matthias
5d0cff2f76 Add dt_humanize helper 2023-05-18 07:07:22 +02:00
Matthias
f657d06e91 Move shorten_date to datetime helpers 2023-05-18 07:00:36 +02:00
Matthias
b40c45ee42 Timerange -> datetime 2023-05-18 07:00:36 +02:00
Matthias
adcf751340 Bump min-requirement of arrow 2023-05-18 07:00:36 +02:00
Matthias
261822147c Fix remaining arrow testcases 2023-05-18 07:00:36 +02:00
Matthias
3ec55885bd Remove arrow from more tests 2023-05-18 07:00:36 +02:00
Matthias
9421ca2628 Remove arrow from test_persistence 2023-05-18 07:00:36 +02:00
Matthias
3a4d103bc8 Properly check wallets with new type 2023-05-18 07:00:36 +02:00
Matthias
7a2ff60255 Fix more tests 2023-05-18 07:00:36 +02:00
Matthias
915cb5ffbd add dt_utc helper 2023-05-18 07:00:36 +02:00
Matthias
c0713eb77f More tests to dt_helpers 2023-05-18 07:00:36 +02:00
Matthias
29fdcdbf56 reduce arrow in tests 2023-05-18 07:00:36 +02:00
Matthias
d131dd4050 Fix wrong transition 2023-05-18 07:00:36 +02:00
Matthias
cfae98ae00 dt_now for tests 2023-05-18 07:00:36 +02:00
Matthias
e4f701fd0d Don't use arrow for everything 2023-05-18 07:00:36 +02:00
Matthias
5b66ef4bea Implement datetime.floor 2023-05-18 07:00:36 +02:00
Matthias
7f73e99437 Simplify exchange_utils 2023-05-18 07:00:36 +02:00
Matthias
55ce58d79f Reduce some arrow usages in favor of dt helpers 2023-05-18 07:00:36 +02:00
Matthias
000f72942a Improve dt_now_ts helper 2023-05-18 07:00:36 +02:00
Matthias
aa949153eb Add now ts helper 2023-05-18 07:00:36 +02:00
Matthias
5c6f3ea439 Improve wallets time handling 2023-05-18 07:00:36 +02:00
Matthias
261df527d9 dt_now 2023-05-18 07:00:36 +02:00
Matthias
6b735bc683 Implement dt_now 2023-05-18 07:00:36 +02:00
Matthias
6044bbb6b1 Add datetime helpers to unify code 2023-05-18 07:00:36 +02:00
Matthias
2477ef57f9 Reduce arrow usage throughout code 2023-05-18 07:00:36 +02:00
Matthias
1d03e8bc5f Reduce arrow usage further 2023-05-18 07:00:36 +02:00
Matthias
d3382fbe04 Reduce usage of arrow 2023-05-18 07:00:36 +02:00
Matthias
292bd62973 Reduce verbosity of httpx (we don't need to see telegram calls) 2023-05-18 07:00:18 +02:00
Matthias
c54f28ada8 Merge pull request #8623 from freqtrade/feat/tensorboard-logger
Add Tensorboard logger for PyTorch and XGBoost
2023-05-18 06:41:15 +02:00
hippocritical
7a5f457b2f Merge branch 'freqtrade:develop' into develop 2023-05-17 22:14:51 +02:00
robcaulk
adeab13bdf cleanup tests, cross fingers that mac will pass 2023-05-17 07:21:48 +00:00
Matthias
2ab732480f Ensure pi image can be built 2023-05-17 06:26:57 +02:00
Matthias
45ee12e257 reload_trade should be a post endpoint 2023-05-16 20:27:07 +02:00
Matthias
63294c4d3a Merge pull request #8652 from freqtrade/dependabot/pip/docs/pymdown-extensions-10.0
Bump pymdown-extensions from 9.11 to 10.0 in /docs
2023-05-16 11:03:20 +02:00
Matthias
bb760a47d5 Bump pymdown-extensions to 10.0.1 2023-05-16 10:15:46 +02:00
dependabot[bot]
61ea3d817a Bump pymdown-extensions from 9.11 to 10.0 in /docs
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 9.11 to 10.0.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/9.11...10.0)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-16 07:45:08 +00:00
Matthias
7d15c379cb Fix faulty removed import 2023-05-15 19:26:51 +02:00
Matthias
c7f7dd1d4b Avoid unnecessary type ignore 2023-05-15 18:27:12 +02:00
Matthias
1b714fdb00 Fix wrong "first trade" date in UI, improve interface
closes https://github.com/freqtrade/freqtrade-strategies/issues/301
2023-05-15 18:06:17 +02:00
Matthias
9b10287899 Improve typing 2023-05-15 17:53:18 +02:00
Matthias
2a388e2db3 Merge pull request #8643 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.13
Bump sqlalchemy from 2.0.12 to 2.0.13
2023-05-15 11:52:41 +02:00
Robert Caulk
f5b570663a Merge pull request #8647 from freqtrade/dependabot/pip/develop/torch-2.0.1
Bump torch from 2.0.0 to 2.0.1
2023-05-15 10:34:38 +02:00
Matthias
78f9e09a4a Merge branch 'develop' into dependabot/pip/develop/sqlalchemy-2.0.13 2023-05-15 09:53:13 +02:00
Matthias
3a0e123c67 Bump pre-commit sqlalchemy 2023-05-15 09:39:55 +02:00
Matthias
f5c851fa84 Merge pull request #8645 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.13
Bump types-python-dateutil from 2.8.19.12 to 2.8.19.13
2023-05-15 09:25:57 +02:00
Matthias
ef15b7b3d8 pre-commit dateutil types 2023-05-15 08:42:28 +02:00
Matthias
901bd74077 Merge pull request #8644 from freqtrade/dependabot/pip/develop/ruff-0.0.267
Bump ruff from 0.0.265 to 0.0.267
2023-05-15 08:21:02 +02:00
dependabot[bot]
28905885e5 Bump sqlalchemy from 2.0.12 to 2.0.13
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.12 to 2.0.13.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 06:18:13 +00:00
Matthias
cebdb421a3 Merge pull request #8641 from freqtrade/dependabot/pip/develop/ccxt-3.0.103
Bump ccxt from 3.0.97 to 3.0.103
2023-05-15 08:17:15 +02:00
Matthias
00168425c2 Merge pull request #8646 from freqtrade/dependabot/pip/develop/pyjwt-2.7.0
Bump pyjwt from 2.6.0 to 2.7.0
2023-05-15 08:14:15 +02:00
Matthias
68f67c5ae8 Test proper removal of exchange keys 2023-05-15 07:22:40 +02:00
Matthias
c242d89cda Improve test format 2023-05-15 07:22:40 +02:00
Matthias
66c3eb2820 Remove keys from config before loading strategy 2023-05-15 07:22:40 +02:00
Matthias
b2a631e93a refactor remove_exchange_credentials 2023-05-15 07:22:40 +02:00
Matthias
fe36e77412 Split exchange_config before passing through the strategy 2023-05-15 07:22:40 +02:00
Matthias
fffb056ad3 load_exchange - force kwargs for non-required arguments 2023-05-15 07:22:40 +02:00
Matthias
0ea47118e1 Create test Utils package 2023-05-15 07:21:26 +02:00
Matthias
c1ac0f186c Merge pull request #8642 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.12
Bump mkdocs-material from 9.1.10 to 9.1.12
2023-05-15 07:00:15 +02:00
dependabot[bot]
dd76245393 Bump ruff from 0.0.265 to 0.0.267
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.265 to 0.0.267.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.265...v0.0.267)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 04:31:22 +00:00
Matthias
ed6958d05f Merge pull request #8640 from freqtrade/dependabot/pip/develop/mypy-1.3.0
Bump mypy from 1.2.0 to 1.3.0
2023-05-15 06:30:38 +02:00
dependabot[bot]
acdd50aada Bump torch from 2.0.0 to 2.0.1
Bumps [torch](https://github.com/pytorch/pytorch) from 2.0.0 to 2.0.1.
- [Release notes](https://github.com/pytorch/pytorch/releases)
- [Changelog](https://github.com/pytorch/pytorch/blob/main/RELEASE.md)
- [Commits](https://github.com/pytorch/pytorch/compare/v2.0.0...v2.0.1)

---
updated-dependencies:
- dependency-name: torch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 03:57:51 +00:00
dependabot[bot]
33a0ed67df Bump pyjwt from 2.6.0 to 2.7.0
Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.6.0 to 2.7.0.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jpadilla/pyjwt/compare/2.6.0...2.7.0)

---
updated-dependencies:
- dependency-name: pyjwt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 03:57:33 +00:00
dependabot[bot]
f21a7a25d2 Bump types-python-dateutil from 2.8.19.12 to 2.8.19.13
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.12 to 2.8.19.13.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 03:57:21 +00:00
dependabot[bot]
5f01b823da Bump mkdocs-material from 9.1.10 to 9.1.12
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.10 to 9.1.12.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.10...9.1.12)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 03:56:55 +00:00
dependabot[bot]
b0e7b43958 Bump ccxt from 3.0.97 to 3.0.103
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.97 to 3.0.103.
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.97...3.0.103)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 03:56:45 +00:00
dependabot[bot]
675ab840f2 Bump mypy from 1.2.0 to 1.3.0
Bumps [mypy](https://github.com/python/mypy) from 1.2.0 to 1.3.0.
- [Commits](https://github.com/python/mypy/compare/v1.2.0...v1.3.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-15 03:56:38 +00:00
robcaulk
a225ab71e4 revert file count 2023-05-14 16:18:33 +00:00
robcaulk
9242dfa355 try reactivating tb for some tests 2023-05-14 16:05:49 +00:00
robcaulk
505f36a95f try even more deactivation 2023-05-14 15:49:24 +00:00
robcaulk
1ed084557a try even more deactivation 2023-05-14 15:44:41 +00:00
robcaulk
73e9047cd5 try to deactivate any test that has a callback 2023-05-14 14:53:12 +00:00
robcaulk
340d2191ff deactivate tensorboard by default 2023-05-14 14:39:23 +00:00
robcaulk
55a1a3afd6 add config option for activating and deactivating tensorboard logger, ensure the various flavors are never activated simultaneously 2023-05-14 14:08:00 +00:00
robcaulk
ab7a474ab6 try limiting tb_logger to pytorch only (XGBoost still gets its callback) 2023-05-14 12:03:15 +00:00
robcaulk
8a9b2fc16f fix merge conflicts with develop 2023-05-14 12:00:03 +00:00
Matthias
af8fbad281 Improve Date timezone useage 2023-05-14 08:54:26 +02:00
Matthias
bbce738523 Improve tests around timezone 2023-05-14 08:42:30 +02:00
hippocritical
36f14249d4 Merge branch 'freqtrade:develop' into develop 2023-05-13 22:41:02 +02:00
hippocritical
7d871faf04 added exportfilename to args_to_config
introduced strategy_test_v3_with_lookahead_bias.py for checking lookahead_bias#
introduced test_lookahead_analysis which currently is broken
2023-05-13 22:40:11 +02:00
Matthias
66a97ff45d Remove some utcnow usages 2023-05-13 20:43:37 +02:00
Matthias
7266279768 Improve docs around pytho 3.11 2023-05-13 20:22:15 +02:00
Matthias
59d6ae17be Merge pull request #8327 from skinner12/develop
Support for python 3.11 via setup.sh script
2023-05-13 19:57:44 +02:00
Matthias
1aa9dd02d6 Merge pull request #8588 from freqtrade/catboost_1.2
Bump catboost to 1.2, disable some constraints
2023-05-13 19:56:56 +02:00
Matthias
784087384c darwin excludes must use "sys_platform" 2023-05-13 17:22:11 +02:00
Matthias
838fbb76ab Improve version constraints 2023-05-13 16:43:45 +02:00
Matthias
7bba034efd Merge pull request #8560 from freqtrade/feat/recoverTrades
Recover trades after selling on exchange
2023-05-13 16:35:08 +02:00
Matthias
106db716f8 Force smaller catboost version on 3.8 macos 2023-05-13 16:32:46 +02:00
Matthias
e76356aff5 Bump catboost to 1.2, disable some constraints 2023-05-13 16:25:25 +02:00
Matthias
0db1869356 Update cached binance leverage tiers 2023-05-13 16:22:04 +02:00
Matthias
dc4268b6e7 Convert Exchange arguments to be kw only 2023-05-13 16:17:26 +02:00
Matthias
af95d56ceb Import deepcopy specifically 2023-05-13 16:16:35 +02:00
Matthias
0d4010c38c maint: Remove faulty config setting from default_conf 2023-05-13 16:16:20 +02:00
Matthias
90ac387444 Merge pull request #8634 from freqtrade/bug-fix/continual_learning
fix bug in continual_learning for PyTorch* models
2023-05-13 15:32:49 +02:00
robcaulk
18c1eda09b remove commented lines 2023-05-13 11:27:36 +00:00
robcaulk
2ec1302c10 add warnings in the doc for users to better understand the limitations of continual_learning 2023-05-13 11:23:57 +00:00
robcaulk
fad1c19856 add warnings in the doc for users to better understand the limitations of continual_learning 2023-05-13 11:21:43 +00:00
robcaulk
3ae3cc63df fix bug in continual_learning for PyTorch* models 2023-05-13 11:14:16 +00:00
Matthias
d50e221e62 Update active ccxt.futures test init 2023-05-13 11:03:26 +02:00
Matthias
1552d81f45 Simplify load_exchange interface 2023-05-13 11:03:26 +02:00
Matthias
b2a3fe6879 Improve remove credentials 2023-05-13 11:03:26 +02:00
Matthias
6541782758 Merge pull request #8631 from freqtrade/add-disclaimers-everwhere
Clarify expectations about the FreqAI + Freqtrade tool
2023-05-13 10:56:46 +02:00
Matthias
ab0f9d78ee Mock tensorboard callbacks for all freqAI tests 2023-05-13 08:08:30 +02:00
Matthias
23e8932a44 Mock tensorboard callbacks 2023-05-12 20:20:17 +02:00
Matthias
400cbd1836 Fix types 2023-05-12 19:47:53 +02:00
Matthias
871f1aabb7 Use tensorboard fallback for mac tests 2023-05-12 18:33:46 +02:00
Matthias
6d7172ac44 Re-add init file 2023-05-12 18:26:34 +02:00
Matthias
49b9b463b4 Move tensorboard callback exports to freqai.tensorboard. 2023-05-12 18:26:01 +02:00
Matthias
43213cc6ff Revert testing Reinforcement lerning on Mac 2023-05-12 18:07:28 +02:00
robcaulk
6e5a9fe4c9 mac strikes again 2023-05-12 13:55:41 +00:00
robcaulk
ca7ad8a49b good old macos 2023-05-12 12:50:11 +00:00
robcaulk
8261c988b9 try to fix mac CI 2023-05-12 09:11:14 +00:00
robcaulk
db0645ed1b add helpful hints for reward creation 2023-05-12 08:32:52 +00:00
robcaulk
31d15da49e add disclaimers everywhere about how example strategies are meant as examples 2023-05-12 08:16:48 +00:00
robcaulk
692fa390c6 fix the import logic, fix tests, put all tensorboard in a single folder 2023-05-12 07:56:44 +00:00
Matthias
ad2080ab3e Merge pull request #8630 from freqtrade/maint/test_user_data
Maint/test user data
2023-05-12 06:37:38 +02:00
Matthias
6000e68420 bump ccxt min dependency 2023-05-11 20:51:33 +02:00
Matthias
1d36878938 Bump min-requirements for python-telegram bot 2023-05-11 20:50:52 +02:00
Matthias
b970ddeb66 Fix unused import 2023-05-11 20:44:41 +02:00
Matthias
f7179f7c93 Fix last test with dependency on local user_data dir 2023-05-11 20:30:24 +02:00
Matthias
a00f0ff687 Merge pull request #8626 from freqtrade/ci/repochange
Check for repository changes
2023-05-11 20:11:31 +02:00
Matthias
1c1005247e Don't hardcode user_data in tests 2023-05-11 20:09:24 +02:00
Matthias
963ff8c620 Run Repo check on windows, too. 2023-05-11 10:57:24 +02:00
Matthias
395bf49198 Run Repo-check for macOS, too 2023-05-11 10:55:29 +02:00
Matthias
2ecd63234d Remove git status again 2023-05-11 10:54:46 +02:00
Matthias
bd6d4d5d2d Event-name for concurrency group? 2023-05-11 10:50:09 +02:00
Matthias
1ec1abdc33 Fix syntax 2023-05-11 10:45:52 +02:00
Matthias
800c6223ed Quote concurrency group 2023-05-11 10:45:30 +02:00
Matthias
3ba1eb6baa Improve concurrency group 2023-05-11 10:45:17 +02:00
Matthias
c60c4b9abb Update user_dir fixture to return user_data path 2023-05-11 07:10:34 +02:00
Matthias
7e023419de Auto-mock user_dir to tmpdir
This will avoid depending on the user directory being present for tests
2023-05-11 07:05:43 +02:00
Matthias
a74a081e61 Check for repository changes 2023-05-11 06:58:57 +02:00
hippocritical
91ce1cb2ae removed overwrite_existing_exportfilename_content (won't use it myself, wouldn't make sense for others to not overwrite something they re-calculated)
switched from args to config (args still work)
renamed exportfilename to lookahead_analysis_exportfilename so if users decide to put something into it then it won't compete with other configurations
2023-05-10 22:41:27 +02:00
robcaulk
6df5cb8878 add install requirement to tensorboard doc 2023-05-10 10:18:52 +00:00
robcaulk
b01aaa4d03 ensure backtesting also produces tb_logs, make sure tests are working 2023-05-10 10:11:33 +00:00
Robert Davey
242247be47 Fix var name 2023-05-10 10:56:14 +01:00
robcaulk
172b2587ab Merge remote-tracking branch 'originssh/develop' into develop 2023-05-10 09:48:54 +00:00
robcaulk
ffc4d87263 add tensorboard integration to XGBoost and PyTorch et al 2023-05-10 09:48:36 +00:00
Robert Davey
3a7e41e177 Update rest_client.py
Add fix for forceenter to avoid passing None prices back to the API
2023-05-10 10:32:00 +01:00
Robert Caulk
deeca484d8 Merge pull request #8619 from freqtrade/bug-fix-live_retrain_hours
Bug fix `live_retrain_hours`
2023-05-10 09:02:13 +02:00
Matthias
1f6a6ae86f Merge pull request #8620 from freqtrade/pytorch_tests_fix
Properly enable pytorch tests
2023-05-09 20:40:36 +02:00
Matthias
d9cc45851e Properly enable pytorch tests 2023-05-09 19:42:15 +02:00
Matthias
6731d6c505 Merge pull request #8616 from freqtrade/dependabot/pip/develop/pyarrow-12.0.0
Bump pyarrow from 11.0.0 to 12.0.0
2023-05-09 16:35:19 +02:00
robcaulk
2c0230ba93 avoid mutating new_trained_timerange 2023-05-09 12:42:02 +00:00
robcaulk
35ce88f1e5 ensure that the buffered timerange is not the trained timestamp so that live_retrain_hours functions properly 2023-05-09 10:00:33 +00:00
Matthias
55777eba73 Add pre-build arm wheel for pyarrow 2023-05-09 07:09:46 +02:00
hippocritical
9aac367534 Merge remote-tracking branch 'origin/develop' into develop 2023-05-08 22:58:30 +02:00
hippocritical
b8357c36ca Merge branch 'freqtrade:develop' into develop 2023-05-08 22:58:03 +02:00
hippocritical
b252bdd3c7 made purging of config.freqai.identifier variable 2023-05-08 22:35:13 +02:00
Matthias
d02cf8f0b7 Merge pull request #8613 from freqtrade/dependabot/pip/develop/nbconvert-7.4.0
Bump nbconvert from 7.3.1 to 7.4.0
2023-05-08 20:15:49 +02:00
Matthias
2f25206fd5 Merge pull request #8615 from freqtrade/dependabot/pip/develop/urllib3-2.0.2
Bump urllib3 from 1.26.15 to 2.0.2
2023-05-08 19:54:16 +02:00
Matthias
f47db6e9fa Merge pull request #8617 from freqtrade/dependabot/pip/develop/ccxt-3.0.97
Bump ccxt from 3.0.85 to 3.0.97
2023-05-08 19:53:21 +02:00
Matthias
45c5b503c0 Merge pull request #8603 from freqtrade/dependabot/pip/develop/pre-commit-3.3.1
Bump pre-commit from 3.2.2 to 3.3.1
2023-05-08 19:47:40 +02:00
Matthias
33c2e754af Merge pull request #8611 from freqtrade/torch_ci_11
Run Torch tests on 3.11
2023-05-08 19:47:04 +02:00
Matthias
f9d16b5bbb Merge pull request #8614 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.10
Bump mkdocs-material from 9.1.9 to 9.1.10
2023-05-08 19:30:46 +02:00
dependabot[bot]
f2a65437a6 Bump ccxt from 3.0.85 to 3.0.97
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.85 to 3.0.97.
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.85...3.0.97)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 16:18:57 +00:00
dependabot[bot]
5a27245fcc Bump pyarrow from 11.0.0 to 12.0.0
Bumps [pyarrow](https://github.com/apache/arrow) from 11.0.0 to 12.0.0.
- [Commits](https://github.com/apache/arrow/compare/go/v11.0.0...go/v12.0.0)

---
updated-dependencies:
- dependency-name: pyarrow
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 16:18:40 +00:00
dependabot[bot]
3e39453905 Bump urllib3 from 1.26.15 to 2.0.2
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.15 to 2.0.2.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.15...2.0.2)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 16:17:19 +00:00
dependabot[bot]
7e31cc4100 Bump mkdocs-material from 9.1.9 to 9.1.10
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.9 to 9.1.10.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.9...9.1.10)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 16:17:04 +00:00
dependabot[bot]
591a51e4bc Bump nbconvert from 7.3.1 to 7.4.0
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.3.1 to 7.4.0.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.3.1...v7.4.0)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 16:16:45 +00:00
Matthias
081a8b0ed0 Merge pull request #8609 from freqtrade/dependabot/pip/develop/types-requests-2.30.0.0
Bump types-requests from 2.29.0.0 to 2.30.0.0
2023-05-08 10:42:35 +02:00
dependabot[bot]
9d7c90e9da Bump pre-commit from 3.2.2 to 3.3.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.2.2 to 3.3.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.2.2...v3.3.1)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 08:11:43 +00:00
Matthias
0336e5275c Merge pull request #8608 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.9
Bump mkdocs-material from 9.1.8 to 9.1.9
2023-05-08 10:01:37 +02:00
Matthias
c9533fc9fd Merge pull request #8610 from freqtrade/dependabot/pip/develop/ruff-0.0.265
Bump ruff from 0.0.263 to 0.0.265
2023-05-08 09:59:34 +02:00
Matthias
3952232214 Bump pre-commit requests types 2023-05-08 08:59:15 +02:00
Matthias
335f763c80 Merge pull request #8606 from freqtrade/dependabot/pip/develop/tensorboard-2.13.0
Bump tensorboard from 2.12.2 to 2.13.0
2023-05-08 08:48:56 +02:00
Matthias
8b8604b6e2 Merge pull request #8607 from freqtrade/dependabot/pip/develop/python-telegram-bot-20.3
Bump python-telegram-bot from 20.2 to 20.3
2023-05-08 08:43:20 +02:00
Matthias
225ae7fe6a Merge pull request #8605 from freqtrade/dependabot/pip/develop/requests-2.30.0
Bump requests from 2.29.0 to 2.30.0
2023-05-08 08:42:25 +02:00
Matthias
60b666feee Merge pull request #8604 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.6
Bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6
2023-05-08 08:42:01 +02:00
dependabot[bot]
e0c63e12e4 Bump mkdocs-material from 9.1.8 to 9.1.9
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.8 to 9.1.9.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.8...9.1.9)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 05:15:49 +00:00
Matthias
e386d60831 Merge pull request #8602 from freqtrade/dependabot/pip/develop/mkdocs-1.4.3
Bump mkdocs from 1.4.2 to 1.4.3
2023-05-08 07:06:23 +02:00
Matthias
b0b0eb66df Merge pull request #8601 from freqtrade/dependabot/pip/develop/websockets-11.0.3
Bump websockets from 11.0.2 to 11.0.3
2023-05-08 07:06:06 +02:00
Matthias
10604bf49c Run Torch tests on 3.11 2023-05-08 06:46:30 +02:00
Matthias
a64cec2bdc Merge pull request #8600 from freqtrade/dependabot/pip/develop/orjson-3.8.12
Bump orjson from 3.8.11 to 3.8.12
2023-05-08 06:27:13 +02:00
dependabot[bot]
75e5f325a9 Bump ruff from 0.0.263 to 0.0.265
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.263 to 0.0.265.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.263...v0.0.265)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:59:08 +00:00
dependabot[bot]
bf7c52a9ee Bump types-requests from 2.29.0.0 to 2.30.0.0
Bumps [types-requests](https://github.com/python/typeshed) from 2.29.0.0 to 2.30.0.0.
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:58:37 +00:00
dependabot[bot]
7bd33be8f7 Bump python-telegram-bot from 20.2 to 20.3
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 20.2 to 20.3.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v20.2...v20.3)

---
updated-dependencies:
- dependency-name: python-telegram-bot
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:58:16 +00:00
dependabot[bot]
68a37cb71b Bump tensorboard from 2.12.2 to 2.13.0
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.12.2 to 2.13.0.
- [Release notes](https://github.com/tensorflow/tensorboard/releases)
- [Changelog](https://github.com/tensorflow/tensorboard/blob/master/RELEASE.md)
- [Commits](https://github.com/tensorflow/tensorboard/compare/2.12.2...2.13.0)

---
updated-dependencies:
- dependency-name: tensorboard
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:58:05 +00:00
dependabot[bot]
ecd34ce470 Bump requests from 2.29.0 to 2.30.0
Bumps [requests](https://github.com/psf/requests) from 2.29.0 to 2.30.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.29.0...v2.30.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:57:54 +00:00
dependabot[bot]
4a911bbe90 Bump pypa/gh-action-pypi-publish from 1.8.5 to 1.8.6
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.5 to 1.8.6.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.5...v1.8.6)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:57:44 +00:00
dependabot[bot]
3bb872a5e7 Bump mkdocs from 1.4.2 to 1.4.3
Bumps [mkdocs](https://github.com/mkdocs/mkdocs) from 1.4.2 to 1.4.3.
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.4.2...1.4.3)

---
updated-dependencies:
- dependency-name: mkdocs
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:57:22 +00:00
dependabot[bot]
fa40e4e888 Bump websockets from 11.0.2 to 11.0.3
Bumps [websockets](https://github.com/aaugustin/websockets) from 11.0.2 to 11.0.3.
- [Release notes](https://github.com/aaugustin/websockets/releases)
- [Commits](https://github.com/aaugustin/websockets/compare/11.0.2...11.0.3)

---
updated-dependencies:
- dependency-name: websockets
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:57:11 +00:00
dependabot[bot]
4b1cb96446 Bump orjson from 3.8.11 to 3.8.12
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.11 to 3.8.12.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.11...3.8.12)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-08 03:56:59 +00:00
Robert Caulk
950eaf230e Merge pull request #8580 from freqtrade/feat/add-transformer
Add transformer to FreqAI
2023-05-07 11:32:38 +02:00
Matthias
89c60bbee6 Merge pull request #8598 from freqtrade/bug-fix-backtesting
bug fix backtest feature validation
2023-05-07 08:14:34 +02:00
hippocritical
ac4aa8ed2b Merge branch 'freqtrade:develop' into develop 2023-05-06 21:59:04 +02:00
hippocritical
2306c74dc1 adjusted code to matthias' specifications
did not change the code so that it only loads data once yet.
2023-05-06 21:56:11 +02:00
robcaulk
36e1e58dad fix arch 2023-05-06 17:40:04 +00:00
robcaulk
3bbb7e38ea improve transformer architecture, remove 3.10 install constraint, add documentation for torch.compile() 2023-05-06 16:12:10 +00:00
robcaulk
c2beeb4c79 bug fix backtest feature validation 2023-05-06 15:53:58 +00:00
Robert Caulk
e365e913c7 Merge pull request #8596 from autoscatto/bugfix/tensor-to-numpy
Bugfix/tensor to numpy
2023-05-06 17:31:49 +02:00
Matthias
efb5cd6545 Merge pull request #7861 from froggleston/reject_report
Add support for collating and analysing rejected signals in backtest
2023-05-06 14:28:24 +02:00
Tommaso Falchi
908a2e817a Align BasePyTorchRegressor tensors to cpu as in BasePyTorchClassifier 2023-05-05 15:43:48 +02:00
Tommaso Falchi
306dfc4ae8 refactor(BasePyTorchClassifier.py): convert tensor to list before creating DataFrame to avoid TypeError.
docs(BasePyTorchClassifier.py): add missing parameter description in predict method
2023-05-05 13:04:53 +02:00
Matthias
e3ff2ccc97 Slightly reword documentation to be more clear 2023-05-05 06:45:39 +02:00
Matthias
24804f066c Update test comment, uncomment last test section 2023-05-03 20:24:59 +02:00
Matthias
775ea1c8c6 Improve type safety 2023-05-03 06:25:02 +00:00
Matthias
80930d72a6 Dont loop trades twice
closes #8591
2023-05-03 07:03:14 +02:00
Matthias
0adac268ee Add test for #8591 2023-05-03 07:01:57 +02:00
Matthias
976cc1ab15 Extract order_obj existence check to separate function 2023-05-03 06:48:17 +02:00
Matthias
1cc5b6126d Bump pre-commit ruff version 2023-05-03 06:48:02 +02:00
Matthias
0d1d25e868 Improve error-handling 2023-05-02 21:44:19 +02:00
Matthias
13974d2508 Reduce error severity when maintenance-ratio fails 2023-05-02 21:44:19 +02:00
Matthias
f419d7870d Add freqaimodel to pair history endpoint
closes #8566
2023-05-02 20:07:16 +02:00
Matthias
fb5fac164d add Packaging dependency explicitly 2023-05-02 19:28:09 +02:00
Matthias
a935f1e4de Remove no longer necessary dependency from setup.py 2023-05-02 19:27:01 +02:00
Matthias
f61bf346c0 Merge pull request #8589 from alxtrkhv/fix/update-setup-py
Add missing dependencies to setup.py
2023-05-02 19:25:55 +02:00
Matthias
d8a9c9422a Update missing "requirements" install in documentation 2023-05-02 18:17:35 +02:00
Achmad Fathoni
5abd616ae9 Fix disrepancy in freqai doc code example 2023-05-02 23:01:51 +07:00
Matthias
12a64c0ffc Merge pull request #8587 from freqtrade/maint/cleanup_gym_workarounds
Remove dependency workarounds in place for gym
2023-05-02 14:21:27 +02:00
Alexander Terekhov
220f8c6b5f Add missing freqai-rl dependencies 2023-05-02 09:16:12 +03:00
Alexander Terekhov
e3f983729f Update freqai dependencies 2023-05-02 09:11:31 +03:00
Alexander Terekhov
8f5fb4e32b Add missing dev dependencies 2023-05-02 09:09:38 +03:00
Alexander Terekhov
75daa44c5a Add missing core dependencies 2023-05-02 09:02:52 +03:00
Matthias
1c2dd884e9 Remove dependency workarounds in place for gym 2023-05-02 07:12:46 +02:00
Matthias
238581ee7a Remove <3.11 pin for tqdm 2023-05-02 07:08:47 +02:00
Matthias
127b0a2e50 Merge pull request #8582 from freqtrade/dependabot/pip/develop/ccxt-3.0.85
Bump ccxt from 3.0.84 to 3.0.85
2023-05-01 20:31:51 +02:00
dependabot[bot]
3f58c19976 Bump ccxt from 3.0.84 to 3.0.85
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.84 to 3.0.85.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.84...3.0.85)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 17:48:30 +00:00
Matthias
5e32182c72 Bump types requests 2023-05-01 19:34:21 +02:00
Matthias
009db49502 Merge pull request #8578 from freqtrade/dependabot/pip/develop/types-requests-2.29.0.0
Bump types-requests from 2.28.11.17 to 2.29.0.0
2023-05-01 19:33:48 +02:00
Matthias
01124292b1 Merge pull request #8575 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.12
Bump sqlalchemy from 2.0.10 to 2.0.12
2023-05-01 19:24:36 +02:00
Matthias
103f27cfd0 Bump sqlalchemy pre-commit 2023-05-01 17:54:21 +02:00
dependabot[bot]
a31ceb51a0 Bump sqlalchemy from 2.0.10 to 2.0.12
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.10 to 2.0.12.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 15:54:14 +00:00
Matthias
d778beacbb Merge pull request #8576 from freqtrade/dependabot/pip/develop/ccxt-3.0.84
Bump ccxt from 3.0.75 to 3.0.84
2023-05-01 17:53:32 +02:00
Matthias
94488c86af Merge pull request #8573 from freqtrade/dependabot/pip/develop/ruff-0.0.263
Bump ruff from 0.0.262 to 0.0.263
2023-05-01 17:51:32 +02:00
Matthias
0800ed725f Merge pull request #8577 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.8
Bump mkdocs-material from 9.1.7 to 9.1.8
2023-05-01 17:50:51 +02:00
Matthias
2fd5fd8e49 Merge pull request #8574 from freqtrade/dependabot/pip/develop/uvicorn-0.22.0
Bump uvicorn from 0.21.1 to 0.22.0
2023-05-01 17:50:31 +02:00
Matthias
9e2d83f542 Merge pull request #8571 from freqtrade/dependabot/pip/develop/requests-2.29.0
Bump requests from 2.28.2 to 2.29.0
2023-05-01 17:50:10 +02:00
Matthias
cb8c91ea8e Merge pull request #8572 from freqtrade/dependabot/pip/develop/orjson-3.8.11
Bump orjson from 3.8.10 to 3.8.11
2023-05-01 17:49:51 +02:00
Matthias
2893af870e Merge pull request #8570 from freqtrade/dependabot/pip/develop/rich-13.3.5
Bump rich from 13.3.4 to 13.3.5
2023-05-01 17:49:27 +02:00
robcaulk
af139ffbab add transformer with positional encoding, fix some odds and ends in pytorch, upgrade to PyTorch 2.0 2023-05-01 13:18:03 +00:00
Robert Caulk
c26099280f Merge pull request #8336 from richardjozsa/develop
Added the latest Gymnasium version 0.28(will be released shortly),
2023-05-01 07:32:37 +02:00
dependabot[bot]
fe9f2d005e Bump types-requests from 2.28.11.17 to 2.29.0.0
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.17 to 2.29.0.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:59:14 +00:00
dependabot[bot]
1d73c7c27d Bump mkdocs-material from 9.1.7 to 9.1.8
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.7 to 9.1.8.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.7...9.1.8)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:59:08 +00:00
dependabot[bot]
d023e75920 Bump ccxt from 3.0.75 to 3.0.84
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.75 to 3.0.84.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.75...3.0.84)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:58:44 +00:00
dependabot[bot]
063ddd62e6 Bump uvicorn from 0.21.1 to 0.22.0
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.21.1 to 0.22.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.21.1...0.22.0)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:58:00 +00:00
dependabot[bot]
7f9a6ffc53 Bump ruff from 0.0.262 to 0.0.263
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.262 to 0.0.263.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.262...v0.0.263)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:57:51 +00:00
dependabot[bot]
7dda3f5803 Bump orjson from 3.8.10 to 3.8.11
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.10 to 3.8.11.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.10...3.8.11)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:57:24 +00:00
dependabot[bot]
d928792eb4 Bump requests from 2.28.2 to 2.29.0
Bumps [requests](https://github.com/psf/requests) from 2.28.2 to 2.29.0.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.28.2...v2.29.0)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:57:14 +00:00
dependabot[bot]
9dd077d69e Bump rich from 13.3.4 to 13.3.5
Bumps [rich](https://github.com/Textualize/rich) from 13.3.4 to 13.3.5.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.3.4...v13.3.5)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-01 03:57:08 +00:00
Richard Jozsa
ceb2631a56 Merge branch 'freqtrade:develop' into develop 2023-05-01 01:00:34 +02:00
hippocritical
ce979b21f9 Merge branch 'freqtrade:develop' into develop 2023-04-30 10:20:40 +02:00
vinistation
a66e8768c9 Update docker-compose.yml
Enable GPU Image and GPU Resources
2023-04-28 15:21:56 -05:00
vinistation
d1eb6d4fed Update BasePyTorchRegressor.py
Denormalization of prediction added to te PytorchMLP Model
2023-04-28 14:48:16 -05:00
Matthias
023c155a25 Extract signals generation from backtesting class 2023-04-28 16:14:16 +02:00
Matthias
6e395ad7c9 Refactor methods in backtesting 2023-04-28 16:09:09 +02:00
Matthias
0753f427b1 Simplify storage 2023-04-28 15:29:15 +02:00
Matthias
e20d9c8f98 Impoved errorhandling, better typesafety 2023-04-28 15:25:25 +02:00
Matthias
fc2a3c9f17 Implement further improvements, improve typehinting 2023-04-28 15:17:35 +02:00
Matthias
703ec3ccc4 Fix help text to show correct format 2023-04-28 15:01:47 +02:00
Matthias
8dd8c24595 Merge branch 'develop' into pr/froggleston/7861 2023-04-28 14:59:03 +02:00
Matthias
76ae539e61 Minor edit 2023-04-28 14:59:00 +02:00
Matthias
8e0788cf5f Merge branch 'develop' into feat/pairlistconfig 2023-04-27 20:40:55 +02:00
Matthias
877d53f439 Add airlists test endpoint (so pairlist configurations can be tested) 2023-04-27 20:35:24 +02:00
Matthias
2a9e50a6a9 Add test testing create-table statement creation for different sql dialects
closes #8561
2023-04-27 19:43:33 +02:00
Matthias
daf564b62f Invert logic for webhook
closes #8562
2023-04-27 18:27:09 +02:00
Matthias
1d9933412a improve /version output formatting 2023-04-27 06:43:57 +02:00
Matthias
395ac5f6dc Update integration test 2023-04-27 06:23:34 +02:00
Matthias
491d2cb024 Explicit test for handle_onexchange_order 2023-04-26 20:32:51 +02:00
Matthias
8cf0e4a316 Fix mypy typing errors 2023-04-26 19:43:42 +02:00
Matthias
6d3c94a739 type: ignore the offending tensorflow call 2023-04-26 18:08:55 +02:00
robcaulk
c6f3a3bbca avoid typing issues in the tensorboard callback 2023-04-26 14:11:26 +02:00
robcaulk
e86980befa remove typing from callback init 2023-04-26 13:42:10 +02:00
robcaulk
e29ce218eb fix typing in TensorboardCallback 2023-04-26 10:54:54 +02:00
Matthias
e88e259033 explicitly test check_exit_amount 2023-04-26 07:12:54 +02:00
Matthias
d29a425baa Update parameter type in RPC modules 2023-04-26 07:03:28 +02:00
Matthias
b0b036c457 Fix logic lapsus in check_exit_amount 2023-04-26 07:02:46 +02:00
Matthias
d0b5c7d216 update telegram/api documentation with new endpoint 2023-04-25 19:40:05 +02:00
Matthias
25bed7bb87 Update telegram help with reload_trade 2023-04-25 19:39:52 +02:00
Matthias
7287e9da1d Add telegram endpoint for reload_trade 2023-04-25 19:34:37 +02:00
Matthias
0c22710ddd Add API endpoint to force trade reloading 2023-04-25 19:30:29 +02:00
Matthias
f2696c9609 Force special exit reason for "recovered" exits 2023-04-25 18:09:46 +02:00
Matthias
24cab00479 Extract amount checking to wallets, implement for futures 2023-04-25 17:49:20 +02:00
Matthias
974cf6c365 Move comment to more appropriate spot 2023-04-25 17:41:59 +02:00
Matthias
95b35e452d Emulate fetch_orders if it ain't supported natively 2023-04-25 17:13:02 +02:00
Matthias
81633b7c2e Add "handle_onexchange_order" functionality 2023-04-25 16:19:14 +02:00
Matthias
d14f50f50d temporary comment fetch_orders logic 2023-04-25 16:19:14 +02:00
Matthias
531b5727f2 add fetch_orders exchange wrapper 2023-04-25 16:19:14 +02:00
Matthias
8364fc1bd2 Merge pull request #8553 from freqtrade/new_release
New release 2023.4
2023-04-25 16:15:47 +02:00
Matthias
c4a0910908 Handle special case where exit order is for more than the trade amount ... 2023-04-25 15:56:51 +02:00
Matthias
1b228e3705 Improve test resiliance by removing unneeded MagicMock 2023-04-25 15:52:10 +02:00
Matthias
e8fedb685b Update missleading docstring 2023-04-25 11:52:13 +02:00
Matthias
11c9f96d23 Use lock for trade entries, too 2023-04-25 11:45:35 +02:00
Matthias
59f9f4d467 Fix exception typos due to newlines 2023-04-25 09:27:33 +02:00
Matthias
1e9fa4c041 Improve test to cover to_ccxt better 2023-04-25 09:04:02 +02:00
Matthias
6a271317bc use stop_price_param for dry stops
closes #8555
2023-04-25 08:53:02 +02:00
Matthias
1df01a2634 Merge pull request #8554 from freqtrade/dependabot/pip/develop/pandas-2.0.1
Bump pandas from 1.5.3 to 2.0.1
2023-04-24 17:35:04 +02:00
dependabot[bot]
c19d6b4e29 Bump pandas from 1.5.3 to 2.0.1
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.5.3 to 2.0.1.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.5.3...v2.0.1)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 14:01:01 +00:00
Matthias
459e5e67bd Merge pull request #8394 from freqtrade/dependabot/pip/develop/python-telegram-bot-20.2
Bump python-telegram-bot from 13.15 to 20.2
2023-04-24 15:58:39 +02:00
Matthias
b49ff3d5bc Improve type safety 2023-04-24 14:27:56 +02:00
Matthias
2615b0297e Move httpx to regular dependencies, losely-pin 2023-04-24 14:27:56 +02:00
Matthias
c06759223e Improve telegram async tests 2023-04-24 14:27:56 +02:00
Matthias
516b49ff50 Fix bad types 2023-04-24 14:27:56 +02:00
Matthias
d25e82d095 Mock exchange loop 2023-04-24 14:27:56 +02:00
Matthias
5608aaca26 Simplify mocking 2023-04-24 14:27:56 +02:00
Matthias
7171fd1132 Test telegram startup 2023-04-24 14:27:56 +02:00
Matthias
c9e6137ad0 Fix test_telegram _init test 2023-04-24 14:27:56 +02:00
Matthias
cf0b37057c update telegram "cleanup" test 2023-04-24 14:27:56 +02:00
Matthias
69f61ef767 Further telegram async tests 2023-04-24 14:27:56 +02:00
Matthias
4177afdf8b More async test updates 2023-04-24 14:27:56 +02:00
Matthias
678c9ae67f Fix some more async telegram tests 2023-04-24 14:27:56 +02:00
Matthias
c475c81841 Update several tests to async behavior 2023-04-24 14:27:56 +02:00
Matthias
fb56889b43 Update a few tests ... 2023-04-24 14:27:56 +02:00
Matthias
914d7350fa Update mocks in apimanager tests 2023-04-24 14:27:36 +02:00
Matthias
b1367ac46f Update decorator typehint 2023-04-24 14:27:36 +02:00
Matthias
3d0e1d142f Convert endpoints to async 2023-04-24 14:27:36 +02:00
Matthias
54732b72fd Manage startup/teardown of telegram manually 2023-04-24 14:26:50 +02:00
Matthias
e7e6f719e4 _update_msg to async 2023-04-24 14:26:50 +02:00
Matthias
5134bf8ec3 Authorized-only and /version to async 2023-04-24 14:26:50 +02:00
Matthias
cb45689c1d Small fixes to new telegram implementation 2023-04-24 14:26:50 +02:00
Matthias
14b501a4f7 Initial changes for telegram migration 2023-04-24 14:26:50 +02:00
Matthias
68ac934929 Update command list to handle frozenSets 2023-04-24 14:26:50 +02:00
Matthias
57eed50acb Fix some test failures caused by v20 update 2023-04-24 14:26:50 +02:00
Matthias
c37b7b77e4 move telegram fixture to telegram file 2023-04-24 14:26:50 +02:00
Matthias
da261003df Fix telegram imports to match v20.0 2023-04-24 14:26:49 +02:00
dependabot[bot]
99a4a64052 Bump python-telegram-bot from 13.15 to 20.2
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 13.15 to 20.2.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v13.15...v20.2)

---
updated-dependencies:
- dependency-name: python-telegram-bot
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 14:26:49 +02:00
Matthias
4690810d5d Merge pull request #8537 from freqtrade/feat/balance_improve
Improve balance output
2023-04-24 14:26:05 +02:00
Matthias
98db27e8f4 Bump develop version to 2023.5-dev 2023-04-24 14:05:35 +02:00
Matthias
d40a631565 Version bump 2023.4 2023-04-24 13:53:27 +02:00
Matthias
5a8f34feac Merge branch 'stable' into new_release 2023-04-24 13:53:15 +02:00
Matthias
8086d90535 Update some tests for balance updates 2023-04-24 12:34:59 +02:00
Matthias
829724c0ec Fallback to "initialMargin" if collateral is not set 2023-04-24 12:13:24 +02:00
Matthias
68a8c79c08 Improve output for futures 2023-04-24 12:03:00 +02:00
Matthias
e99af87b6d store periodic breakdown in backtest results
This will enable the webserver to use this data.
2023-04-24 10:59:30 +02:00
Matthias
3948890c3b Add --breakdown to backtest-show 2023-04-24 10:35:46 +02:00
Matthias
d1e9e70396 Improve Resample-period test 2023-04-24 09:41:36 +02:00
Matthias
f761dc4e1b Merge pull request #8552 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.7
Bump mkdocs-material from 9.1.6 to 9.1.7
2023-04-24 09:22:32 +02:00
Matthias
666b3bf718 Merge pull request #8547 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.10
Bump sqlalchemy from 2.0.9 to 2.0.10
2023-04-24 08:49:05 +02:00
dependabot[bot]
f7c6828e6a Bump mkdocs-material from 9.1.6 to 9.1.7
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.6 to 9.1.7.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.6...9.1.7)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 06:02:27 +00:00
Matthias
0329c0c3f9 pre-commit - bump sqlalchemy 2023-04-24 07:59:21 +02:00
Matthias
2dddf7fbc7 Merge pull request #8550 from freqtrade/dependabot/pip/develop/filelock-3.12.0
Bump filelock from 3.11.0 to 3.12.0
2023-04-24 07:58:42 +02:00
Matthias
0ff2c66642 Merge pull request #8549 from freqtrade/dependabot/pip/develop/psutil-5.9.5
Bump psutil from 5.9.4 to 5.9.5
2023-04-24 07:58:24 +02:00
dependabot[bot]
c513d1077f Bump sqlalchemy from 2.0.9 to 2.0.10
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.9 to 2.0.10.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 05:32:38 +00:00
Matthias
fc39504cc2 Merge pull request #8544 from freqtrade/dependabot/pip/develop/ccxt-3.0.75
Bump ccxt from 3.0.69 to 3.0.75
2023-04-24 07:31:38 +02:00
Matthias
1976a79645 Merge pull request #8548 from freqtrade/dependabot/pip/develop/numpy-1.24.3
Bump numpy from 1.24.2 to 1.24.3
2023-04-24 07:26:40 +02:00
Matthias
5cc472e2ed Merge pull request #8545 from freqtrade/dependabot/pip/develop/ruff-0.0.262
Bump ruff from 0.0.261 to 0.0.262
2023-04-24 07:13:34 +02:00
Matthias
17c16fd4cb Merge pull request #8543 from freqtrade/dependabot/pip/develop/websockets-11.0.2
Bump websockets from 11.0.1 to 11.0.2
2023-04-24 07:11:33 +02:00
dependabot[bot]
598478e48d Bump filelock from 3.11.0 to 3.12.0
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.11.0 to 3.12.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.11.0...3.12.0)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 04:00:11 +00:00
dependabot[bot]
15fdaecd7f Bump psutil from 5.9.4 to 5.9.5
Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.4 to 5.9.5.
- [Release notes](https://github.com/giampaolo/psutil/releases)
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.4...release-5.9.5)

---
updated-dependencies:
- dependency-name: psutil
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 03:59:43 +00:00
dependabot[bot]
43d0c7ff98 Bump numpy from 1.24.2 to 1.24.3
Bumps [numpy](https://github.com/numpy/numpy) from 1.24.2 to 1.24.3.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.24.2...v1.24.3)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 03:59:22 +00:00
dependabot[bot]
a64b641fdf Bump ruff from 0.0.261 to 0.0.262
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.261 to 0.0.262.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.261...v0.0.262)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 03:57:40 +00:00
dependabot[bot]
d320ea052f Bump ccxt from 3.0.69 to 3.0.75
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.69 to 3.0.75.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.69...3.0.75)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 03:57:22 +00:00
dependabot[bot]
185ea9c98c Bump websockets from 11.0.1 to 11.0.2
Bumps [websockets](https://github.com/aaugustin/websockets) from 11.0.1 to 11.0.2.
- [Release notes](https://github.com/aaugustin/websockets/releases)
- [Commits](https://github.com/aaugustin/websockets/compare/11.0.1...11.0.2)

---
updated-dependencies:
- dependency-name: websockets
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-24 03:56:58 +00:00
Matthias
2dd3b34136 Fix malrendering in freqAI docs 2023-04-23 19:36:27 +02:00
Matthias
ad4996259e Further increase typehints in freqAI interface 2023-04-23 19:36:17 +02:00
Matthias
c5dc21e80c Update freqAI documentation with missing typehints 2023-04-23 19:30:30 +02:00
Matthias
c20b074880 Add FAQ entry about permission error 2023-04-23 19:20:24 +02:00
Matthias
94a6bc608c Update stake-currency behavior 2023-04-22 17:42:09 +02:00
Matthias
741834301f Update tests 2023-04-22 17:21:03 +02:00
Matthias
f937818b80 Add "owned" fields to balance 2023-04-22 17:13:53 +02:00
Matthias
c4f8ff95dd Update tests 2023-04-22 16:13:27 +02:00
Matthias
dbf1f0897e Add /balance full, reduce regular balance output
closes #4497
2023-04-22 15:51:28 +02:00
Matthias
7a47500b22 Add "is_bot_managed" flag to API 2023-04-22 14:57:13 +02:00
Matthias
cb09ef7180 Extract converting wallet to est_stake 2023-04-22 11:48:59 +02:00
Matthias
ce75a032d0 Balance ratio calculation should ignore non-relevant assets
closes #8532
2023-04-22 11:48:59 +02:00
Matthias
5dccfab89c Add test for start_cap_ratio 2023-04-22 11:48:59 +02:00
Matthias
e836fe58b1 Merge pull request #8525 from tijptjik/develop
Docs : Correct user namespace from `cust_` to `custom_`
2023-04-22 11:48:54 +02:00
robcaulk
0a05099713 fix mypy 2023-04-21 22:52:19 +02:00
Matthias
3d4be92cc6 Add option pairlist parameter type 2023-04-21 19:30:32 +02:00
Matthias
9bc17a9232 Downgrade wheel to isntall gym 2023-04-21 06:19:57 +00:00
Matthias
4a4be27ebc use orderid from order, the trade one has been reset
part of #8526
2023-04-21 07:14:03 +02:00
Matthias
ca1a616b89 use Fstrings for log message 2023-04-21 07:08:14 +02:00
Matthias
c5bf029701 Better type response 2023-04-20 19:38:55 +02:00
Matthias
9e4f9798e6 Add pairlist "is-generator" to api 2023-04-20 19:33:36 +02:00
Matthias
3ef2a57bca Add "is_pairlist_generator" field to pairlists 2023-04-20 19:33:33 +02:00
Mart van de Ven
818da02f6c Edit Advanced Strategies intro for clarify and brevity 2023-04-20 14:01:01 +08:00
Mart van de Ven
b545fc5590 Correct user namespace from cust_ to custom_ 2023-04-20 13:36:31 +08:00
Matthias
e20b94d836 Add more filter param descriptions 2023-04-20 07:22:12 +02:00
Matthias
4636de30cd Improve pairlistparam types 2023-04-20 07:03:27 +02:00
Matthias
2ea157d9d3 Add some more pairlist parameter definitions 2023-04-20 06:58:05 +02:00
Matthias
987da010c9 Start pairlist parameter listing 2023-04-19 21:08:44 +02:00
Matthias
5ad352fdf1 add /pairlists to rest client 2023-04-19 21:08:28 +02:00
Matthias
1056ff0d18 Update variable to better reflect it's content 2023-04-19 20:20:29 +02:00
Matthias
b973b6255c Merge pull request #8524 from tijptjik/develop
Docs: Edited configuration.md for consistency
2023-04-19 19:40:31 +02:00
Matthias
f30fc29da0 Merge branch 'develop' into pr/richardjozsa/8336 2023-04-19 19:37:51 +02:00
Matthias
4a295d1910 Merge pull request #8521 from TheJoeSchr/develop
docs: use helper function `stoploss_from_absolute` in strategy callba…
2023-04-19 19:19:58 +02:00
Matthias
2df80fc49a Add /pairlists endpoint to api 2023-04-19 18:35:52 +02:00
Matthias
f1e03a6873 Update variable to better reflect it's content 2023-04-19 18:20:25 +02:00
Mart van de Ven
670a584d7e Fix markdown inconsistencies 2023-04-19 22:00:31 +08:00
Matthias
2f9e6c990c Update docs/strategy-callbacks.md 2023-04-19 15:26:33 +02:00
Mart van de Ven
66f5f76a6c Fix anchor for missing heading 2023-04-19 20:53:25 +08:00
Mart van de Ven
46f4fd79af Fix anchor for missing heading 2023-04-19 20:43:41 +08:00
Mart van de Ven
5ed072c489 Remove extraneous code block 2023-04-19 20:18:56 +08:00
TheJoeSchr
94e190b954 docs: strategy-callbacks: revert leverage=trade.leverage removal 2023-04-19 13:22:52 +02:00
Matthias
9851d67f07 Merge pull request #8499 from bkamuz/develop
Telegram. Fixed the blacklist removal message
2023-04-19 08:59:38 +02:00
Bohdan Kamuz
f99bdc4393 Merge branch 'freqtrade:develop' into develop 2023-04-18 23:49:06 +03:00
Matthias
caf524c685 Don't fail on leverage tier loading error
closes #8512
2023-04-18 18:01:12 +02:00
Joe Schr
f9124ef5b9 docs: strategy-callbacks: removes outdated leverage argument 2023-04-18 17:36:36 +02:00
hippocritical
e990b9fb13 Merge branch 'freqtrade:develop' into develop 2023-04-18 16:55:10 +02:00
Bohdan Kamuz
c297d99975 Telegram. Fixed the blacklist removal message 2023-04-18 10:09:48 +00:00
Joe Schr
6f401a9e15 docs: use helper function stoploss_from_absolute in strategy callbacks "absolute" example 2023-04-18 11:26:55 +02:00
Matthias
ea566c6eb7 Merge pull request #8517 from freqtrade/dependabot/pip/develop/ccxt-3.0.69
Bump ccxt from 3.0.59 to 3.0.69
2023-04-17 20:34:02 +02:00
Matthias
dfe8b3e832 Improve ruff rule selection 2023-04-17 20:33:19 +02:00
Matthias
3fb5cd3df6 Improve formatting 2023-04-17 20:27:18 +02:00
Matthias
7ff35fea3c Default weekly report to monday
closes #8502
2023-04-17 20:20:38 +02:00
dependabot[bot]
f049268354 Bump ccxt from 3.0.59 to 3.0.69
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.59 to 3.0.69.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.59...3.0.69)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 18:03:14 +00:00
Matthias
362974b831 Update test to properly capture errors from leverage initialization 2023-04-17 20:00:57 +02:00
Matthias
14bca509da Cleanup some code 2023-04-17 19:55:58 +02:00
Matthias
b2ea464250 Handle individual exceptions when initializing leverage tiers
closes #8515
closes #8512
closes #8514
2023-04-17 19:52:19 +02:00
Matthias
d73e7f292a simplify Leverage tier code 2023-04-17 19:52:19 +02:00
Bohdan Kamuz
70e48ca43a Merge branch 'freqtrade:develop' into develop 2023-04-17 12:46:00 +03:00
Bohdan Kamuz
d34b15d6a9 Telegram. Fixed the blacklist removal message 2023-04-17 09:40:41 +00:00
Matthias
8dbe6b1c16 Merge pull request #8508 from freqtrade/dependabot/pip/develop/cryptography-40.0.2
Bump cryptography from 40.0.1 to 40.0.2
2023-04-17 10:23:12 +02:00
Matthias
daabc8ffbe Merge pull request #8426 from initrv/add-sb3-learn-progress-bar
Add sb3 learn progress bar
2023-04-17 10:22:49 +02:00
Matthias
45193127e3 Merge pull request #8511 from freqtrade/dependabot/pip/develop/fastapi-0.95.1
Bump fastapi from 0.95.0 to 0.95.1
2023-04-17 10:22:01 +02:00
Matthias
ccc59619d1 Merge pull request #8509 from freqtrade/dependabot/pip/develop/rich-13.3.4
Bump rich from 13.3.3 to 13.3.4
2023-04-17 10:20:58 +02:00
Bohdan Kamuz
c291d69533 Merge branch 'freqtrade:develop' into develop 2023-04-17 08:35:40 +03:00
Matthias
8aec71e27e Add bitvavo sublass to properly set ohlcv limit 2023-04-17 07:25:13 +02:00
Matthias
6c6d2a0f43 Improve live test resiliance 2023-04-17 07:25:13 +02:00
Matthias
8a8cd67988 Improve ccxt_ohlcv test debuggability 2023-04-17 07:25:13 +02:00
Matthias
b67bb0fe28 Merge pull request #8507 from freqtrade/dependabot/pip/develop/pytest-7.3.1
Bump pytest from 7.3.0 to 7.3.1
2023-04-17 07:03:53 +02:00
dependabot[bot]
d1b600e7b0 Bump fastapi from 0.95.0 to 0.95.1
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.95.0 to 0.95.1.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.95.0...0.95.1)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 04:29:10 +00:00
Matthias
e58f8e36c4 Merge pull request #8506 from freqtrade/dependabot/pip/develop/httpx-0.24.0
Bump httpx from 0.23.3 to 0.24.0
2023-04-17 06:28:25 +02:00
Matthias
342d43e6bb Merge pull request #8505 from freqtrade/dependabot/pip/develop/tensorboard-2.12.2
Bump tensorboard from 2.12.1 to 2.12.2
2023-04-17 06:27:38 +02:00
dependabot[bot]
7c95848271 Bump rich from 13.3.3 to 13.3.4
Bumps [rich](https://github.com/Textualize/rich) from 13.3.3 to 13.3.4.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.3.3...v13.3.4)

---
updated-dependencies:
- dependency-name: rich
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 03:57:33 +00:00
dependabot[bot]
864f53bc4b Bump cryptography from 40.0.1 to 40.0.2
Bumps [cryptography](https://github.com/pyca/cryptography) from 40.0.1 to 40.0.2.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/40.0.1...40.0.2)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 03:57:23 +00:00
dependabot[bot]
f1fcd0760d Bump pytest from 7.3.0 to 7.3.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.3.0 to 7.3.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.3.0...7.3.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 03:57:07 +00:00
dependabot[bot]
f1730ab51b Bump httpx from 0.23.3 to 0.24.0
Bumps [httpx](https://github.com/encode/httpx) from 0.23.3 to 0.24.0.
- [Release notes](https://github.com/encode/httpx/releases)
- [Changelog](https://github.com/encode/httpx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpx/compare/0.23.3...0.24.0)

---
updated-dependencies:
- dependency-name: httpx
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 03:56:52 +00:00
dependabot[bot]
dba21c815a Bump tensorboard from 2.12.1 to 2.12.2
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.12.1 to 2.12.2.
- [Release notes](https://github.com/tensorflow/tensorboard/releases)
- [Changelog](https://github.com/tensorflow/tensorboard/blob/master/RELEASE.md)
- [Commits](https://github.com/tensorflow/tensorboard/commits)

---
updated-dependencies:
- dependency-name: tensorboard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-17 03:56:47 +00:00
hippocritical
2b416d3b62 - Added a first version of docs (needs checking)
- optimized pairs for entry_varholder and exit_varholder to only check a single pair instead of all pairs.
- bias-check of freqai strategies now possible
- added condition to not crash when compared_df is empty (meaning no differences have been found)
2023-04-16 23:47:10 +02:00
Richard Jozsa
c055f82e9a Pip release follow up 2023-04-16 19:28:36 +02:00
Matthias
9caa74c796 Merge branch 'develop' into pr/initrv/8426 2023-04-16 18:16:16 +02:00
Richard Jozsa
8620f1178d Merge branch 'freqtrade:develop' into develop 2023-04-16 14:29:57 +02:00
Bohdan Kamuz
1370ee498c Merge branch 'freqtrade:develop' into develop 2023-04-16 14:39:44 +03:00
Matthias
501a290f81 Pin pip also for windows installs 2023-04-16 09:56:26 +02:00
Matthias
4ed670f828 pin pip installation to <23.1 - which breaks gym installation 2023-04-16 08:56:47 +02:00
Matthias
f6e93114e6 Update binance leverage tiers file 2023-04-16 08:35:17 +02:00
Robert Caulk
6bc8759321 Update constants.py
Make progress bar true by default
2023-04-15 20:01:12 +02:00
Bohdan Kamuz
22efd0bee6 Merge branch 'freqtrade:develop' into develop 2023-04-15 20:41:13 +03:00
Bohdan Kamuz
1d40162e9d Telegram. Fixed the blacklist removal message. 2023-04-15 15:57:31 +00:00
Matthias
20d17cbc52 Disable telegram from default_conf 2023-04-15 17:39:23 +02:00
hippocritical
d5c98a3c39 Merge branch 'freqtrade:develop' into develop 2023-04-15 14:31:27 +02:00
hippocritical
46b97d2be4 Merge remote-tracking branch 'origin/develop' into develop 2023-04-15 14:31:12 +02:00
hippocritical
767442198e saving and updating the csv file now works
open ended timeranges now work
if a file fails then it will not report as non-bias, but report in the table as error and the csv file will not have it listed.
2023-04-15 14:29:52 +02:00
Matthias
a78672c10b Improve log message formatting 2023-04-15 09:47:01 +02:00
Matthias
6a0a33739b order cost should be with leverage, not leverage-cleared
closes #8495
2023-04-15 09:09:28 +02:00
Matthias
b9f142c31e Add failing tests with leverage
related to #8495
2023-04-15 09:07:43 +02:00
Matthias
6e814af36d Add test asserting cost 2023-04-15 09:05:21 +02:00
Matthias
f814146093 Update ta-lib link
closes #8497
2023-04-14 18:06:06 +02:00
Robert Caulk
daa9f6cc19 Merge pull request #8494 from freqtrade/bug-fix-pytorch
Bug fix: ensure data is on same device as model
2023-04-14 00:31:43 +02:00
Matthias
a23ae6a979 Merge pull request #8468 from freqtrade/dependabot/pip/develop/ta-lib-0.4.26
Bump ta-lib from 0.4.25 to 0.4.26
2023-04-13 20:29:56 +02:00
Matthias
90ce2ae7e4 Merge branch 'develop' into pr/initrv/8426 2023-04-13 20:01:35 +02:00
Matthias
3c64c6b034 Merge pull request #8461 from freqtrade/feat/hyperopt_progressbar
hyperopt progressbar -> rich
2023-04-13 20:00:27 +02:00
Matthias
e25f6986d6 Improve windows doc wordings, remove reference to outdated binary provider. 2023-04-13 19:58:54 +02:00
Matthias
95cdb8aa04 Update ta-lib windows wheels 2023-04-13 19:58:34 +02:00
Matthias
4557701daa Merge pull request #8491 from Bloodhunter4rc/remotepairlist
Remotepairlist - fix continous fetching every x bot_loop seconds
2023-04-13 19:52:05 +02:00
Matthias
3b377149e4 Add clarifying comment, simplify code 2023-04-13 18:19:52 +02:00
Matthias
c0045bad34 Merge branch 'develop' into feat/hyperopt_progressbar 2023-04-13 18:01:29 +02:00
robcaulk
dcf9bbdaea ensure data is on same device as the model 2023-04-13 12:19:34 +02:00
hippocritical
a9ef4c3ab0 partial progress commit:
added terminal tabulate-output
added yet non-working csv output using pandas
2023-04-12 21:03:59 +02:00
Bloodhunter4rc
84d2d5e2a6 Change ["Dummy"] to [None]. 2023-04-12 19:32:28 +02:00
Matthias
0afd5a7385 Improve stoploss documentation
closes #8492
2023-04-12 18:13:16 +02:00
Bloodhunter4rc
44bf59668b prevents continous fetching every x bot_loop seconds , adheres to refresh_period, in case the pairlist returned from the remote end is empty. 2023-04-12 13:16:53 +02:00
Matthias
2131205db6 Bump tag length to 255 2023-04-12 07:19:36 +02:00
Matthias
b2b19915e6 Limit enter_tag and exit_reason to their actual field lenght
closes #8486
2023-04-12 07:19:36 +02:00
Matthias
bba6f8e133 Use length constant for tests 2023-04-12 07:19:36 +02:00
Matthias
a6d2233b95 Use constant for custom field lengths 2023-04-11 21:05:14 +02:00
Matthias
9857675a5e Update torch import 2023-04-11 19:38:24 +02:00
Robert Caulk
4ab047dfa7 Merge pull request #8297 from Yinon-Polak/feat/add-pytorch-model-support
Feat/add pytorch model support
2023-04-11 15:40:12 +02:00
Matthias
476ed938f5 Extract custom_tag limit from interface file 2023-04-11 07:26:38 +02:00
Matthias
40ffac9de0 Prevent random test failures by freezing time for certain tests 2023-04-10 19:45:24 +02:00
Matthias
b892d373cd Improve timerange parsing when accepting values from API 2023-04-10 19:45:24 +02:00
Matthias
c3647e49ad Merge pull request #8484 from freqtrade/dependabot/pip/develop/nbconvert-7.3.1
Bump nbconvert from 7.2.10 to 7.3.1
2023-04-10 19:38:12 +02:00
Matthias
37ed37dc76 Merge pull request #8485 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.6
Bump mkdocs-material from 9.1.5 to 9.1.6
2023-04-10 19:37:54 +02:00
Matthias
5cb688c112 Merge pull request #8482 from freqtrade/dependabot/pip/develop/websockets-11.0.1
Bump websockets from 11.0 to 11.0.1
2023-04-10 19:37:37 +02:00
Matthias
3e394d0612 Merge pull request #8480 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.9
Bump sqlalchemy from 2.0.8 to 2.0.9
2023-04-10 19:37:17 +02:00
dependabot[bot]
c4c2298686 Bump mkdocs-material from 9.1.5 to 9.1.6
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.5 to 9.1.6.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.5...9.1.6)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 16:17:10 +00:00
dependabot[bot]
8564dc10b2 Bump nbconvert from 7.2.10 to 7.3.1
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.2.10 to 7.3.1.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.2.10...v7.3.1)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 16:16:42 +00:00
Matthias
3fb892fcb8 Merge pull request #8483 from freqtrade/dependabot/pip/develop/ruff-0.0.261
Bump ruff from 0.0.260 to 0.0.261
2023-04-10 18:16:24 +02:00
Matthias
9968348324 Merge pull request #8481 from freqtrade/dependabot/pip/develop/ccxt-3.0.59
Bump ccxt from 3.0.58 to 3.0.59
2023-04-10 18:15:44 +02:00
dependabot[bot]
fa293c54f8 Bump websockets from 11.0 to 11.0.1
Bumps [websockets](https://github.com/aaugustin/websockets) from 11.0 to 11.0.1.
- [Release notes](https://github.com/aaugustin/websockets/releases)
- [Commits](https://github.com/aaugustin/websockets/compare/11.0...11.0.1)

---
updated-dependencies:
- dependency-name: websockets
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 15:46:40 +00:00
Matthias
95449ca886 Merge pull request #8478 from freqtrade/dependabot/pip/develop/schedule-1.2.0
Bump schedule from 1.1.0 to 1.2.0
2023-04-10 17:45:44 +02:00
Matthias
70fa4a53cd pre-commit - bump sqlalchemy 2023-04-10 17:45:23 +02:00
dependabot[bot]
467c63ff01 Bump ruff from 0.0.260 to 0.0.261
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.260 to 0.0.261.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.260...v0.0.261)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 15:25:04 +00:00
Matthias
b8a9c200fe Merge pull request #8479 from freqtrade/dependabot/pip/develop/pre-commit-3.2.2
Bump pre-commit from 3.2.1 to 3.2.2
2023-04-10 17:24:02 +02:00
Matthias
7c10af65a1 Merge pull request #8477 from freqtrade/dependabot/pip/develop/plotly-5.14.1
Bump plotly from 5.14.0 to 5.14.1
2023-04-10 16:44:35 +02:00
Matthias
e2cd23b1d2 Remove deprecated pandas option 2023-04-10 16:33:56 +02:00
dependabot[bot]
0d408d3d43 Bump ccxt from 3.0.58 to 3.0.59
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.58 to 3.0.59.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.58...3.0.59)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 14:20:19 +00:00
dependabot[bot]
2309197771 Bump sqlalchemy from 2.0.8 to 2.0.9
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.8 to 2.0.9.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 14:20:14 +00:00
dependabot[bot]
66fe9abce0 Bump pre-commit from 3.2.1 to 3.2.2
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.2.1...v3.2.2)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 14:20:03 +00:00
dependabot[bot]
200c18f3e4 Bump schedule from 1.1.0 to 1.2.0
Bumps [schedule](https://github.com/dbader/schedule) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/dbader/schedule/releases)
- [Changelog](https://github.com/dbader/schedule/blob/master/HISTORY.rst)
- [Commits](https://github.com/dbader/schedule/compare/1.1.0...1.2.0)

---
updated-dependencies:
- dependency-name: schedule
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 14:19:59 +00:00
dependabot[bot]
351b5f6e65 Bump plotly from 5.14.0 to 5.14.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.14.0 to 5.14.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v5.14.0...v5.14.1)

---
updated-dependencies:
- dependency-name: plotly
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 14:19:56 +00:00
Matthias
605cc20a21 Merge pull request #8459 from freqtrade/feat/kvstore
Add initial bot start time to /profit endpoint
2023-04-10 14:49:01 +02:00
Matthias
f73d2a5371 Ensure bot_start is called when visualizing results 2023-04-10 14:48:02 +02:00
Matthias
485a074674 Merge pull request #8472 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.12
Bump types-python-dateutil from 2.8.19.11 to 2.8.19.12
2023-04-10 14:42:53 +02:00
Matthias
865cf5232b Merge pull request #8471 from freqtrade/dependabot/pip/develop/mypy-1.2.0
Bump mypy from 1.1.1 to 1.2.0
2023-04-10 14:42:35 +02:00
Matthias
95a24c3133 Merge pull request #8467 from freqtrade/dependabot/pip/develop/orjson-3.8.10
Bump orjson from 3.8.9 to 3.8.10
2023-04-10 14:41:25 +02:00
hippocritical
e5e63d5bee Merge branch 'freqtrade:develop' into develop 2023-04-10 08:26:51 +02:00
Matthias
6833059c70 Merge pull request #8474 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.5
Bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5
2023-04-10 08:03:55 +02:00
Matthias
3833dc0b78 pre-commit - bump dateutil 2023-04-10 07:54:01 +02:00
Matthias
e0d3c771db Merge pull request #8465 from freqtrade/dependabot/pip/develop/ccxt-3.0.58
Bump ccxt from 3.0.50 to 3.0.58
2023-04-10 07:53:21 +02:00
dependabot[bot]
5a18ab0784 Bump mypy from 1.1.1 to 1.2.0
Bumps [mypy](https://github.com/python/mypy) from 1.1.1 to 1.2.0.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v1.1.1...v1.2.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 05:51:33 +00:00
Matthias
1d66f82b1d Merge pull request #8469 from freqtrade/dependabot/pip/develop/filelock-3.11.0
Bump filelock from 3.10.6 to 3.11.0
2023-04-10 07:50:48 +02:00
Matthias
2e765fe6d1 Merge pull request #8470 from freqtrade/dependabot/pip/develop/pymdown-extensions-9.11
Bump pymdown-extensions from 9.10 to 9.11
2023-04-10 07:50:25 +02:00
Matthias
21ea02bbcf Merge pull request #8466 from freqtrade/dependabot/pip/develop/pytest-7.3.0
Bump pytest from 7.2.2 to 7.3.0
2023-04-10 07:49:57 +02:00
dependabot[bot]
2ea0157197 Bump pypa/gh-action-pypi-publish from 1.8.4 to 1.8.5
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.4 to 1.8.5.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.4...v1.8.5)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:57:51 +00:00
dependabot[bot]
03352f3b62 Bump types-python-dateutil from 2.8.19.11 to 2.8.19.12
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.11 to 2.8.19.12.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:57:04 +00:00
dependabot[bot]
26eb4f7fe6 Bump pymdown-extensions from 9.10 to 9.11
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 9.10 to 9.11.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/9.10...9.11)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:56:57 +00:00
dependabot[bot]
7e1f3aa545 Bump filelock from 3.10.6 to 3.11.0
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.10.6 to 3.11.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.10.6...3.11.0)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:56:51 +00:00
dependabot[bot]
3505fbe783 Bump ta-lib from 0.4.25 to 0.4.26
Bumps [ta-lib](https://github.com/ta-lib/ta-lib-python) from 0.4.25 to 0.4.26.
- [Release notes](https://github.com/ta-lib/ta-lib-python/releases)
- [Changelog](https://github.com/TA-Lib/ta-lib-python/blob/master/CHANGELOG)
- [Commits](https://github.com/ta-lib/ta-lib-python/compare/TA_Lib-0.4.25...TA_Lib-0.4.26)

---
updated-dependencies:
- dependency-name: ta-lib
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:56:48 +00:00
dependabot[bot]
14532e3a56 Bump orjson from 3.8.9 to 3.8.10
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.9 to 3.8.10.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.9...3.8.10)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:56:42 +00:00
dependabot[bot]
a449f7c78c Bump pytest from 7.2.2 to 7.3.0
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.2 to 7.3.0.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.2.2...7.3.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:56:38 +00:00
dependabot[bot]
8854ef8cba Bump ccxt from 3.0.50 to 3.0.58
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.50 to 3.0.58.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.50...3.0.58)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 03:56:33 +00:00
Matthias
526943f29e Remove freqUI alpha warning 2023-04-09 19:44:38 +02:00
Matthias
cf770d496b Improve visual display of progressbar 2023-04-09 18:25:50 +02:00
Matthias
bfd9e35e34 Replace hyperopt progressbar with rich progressbar 2023-04-09 18:17:22 +02:00
Matthias
299e788891 Dump progressbar2 dependency 2023-04-09 18:07:38 +02:00
Matthias
4c1de4ad56 Update tests 2023-04-09 18:07:38 +02:00
Matthias
ed57e7d43b Refactor logging to be a package, instead of a module 2023-04-09 16:48:18 +02:00
Matthias
818d18d4e0 Add StdErrStreamHandler to logging 2023-04-09 16:23:00 +02:00
Matthias
b6aac5079b REmove Rich-progress wrapper again 2023-04-09 16:21:30 +02:00
Matthias
40450ebecc Add dependency on Rich 2023-04-09 16:05:23 +02:00
Matthias
d532da9071 Add Rich Progressbar Wrapper 2023-04-09 16:04:31 +02:00
Matthias
df51111c33 Always show strategy summary 2023-04-09 08:53:36 +02:00
Matthias
dd8900a1c6 Improve ordering of backtest output 2023-04-09 08:53:36 +02:00
Matthias
5404905d28 Fix typos in docs 2023-04-08 17:13:51 +02:00
Matthias
bed51fa790 Properly build specific Torch image 2023-04-08 17:00:25 +02:00
Matthias
f5a5c2d6b9 Improve imports 2023-04-08 16:44:33 +02:00
Matthias
a102cfdfc9 Add new /profit fields to API 2023-04-08 16:41:25 +02:00
Matthias
be72670ca2 Add documentation about /profit change 2023-04-08 16:40:14 +02:00
Matthias
cf2cb94f8d Add bot start date to /profit output 2023-04-08 16:38:44 +02:00
Matthias
fa3a81b022 convert Keys to enum 2023-04-08 16:28:50 +02:00
Matthias
7ff30c6df8 Add additional, typesafe getters 2023-04-08 16:24:38 +02:00
Matthias
7751768b2e Store initial_time value 2023-04-08 16:13:16 +02:00
Matthias
9c2cdd4fb9 Merge pull request #8388 from freqtrade/patch-pair-colon-bug
Bug fix: FreqAI backtest target setting
2023-04-08 14:16:41 +02:00
robcaulk
69b9b35a08 Merge remote-tracking branch 'origin/develop' into feat/add-pytorch-model-support 2023-04-08 13:22:25 +02:00
robcaulk
c2c97d9f78 make a fake pair_dict instead of MagicMocking it 2023-04-08 13:20:29 +02:00
robcaulk
48d3c8e62e fix model loading from disk bug, improve doc, clarify installation/docker instructions, add a torch tag to the freqairl docker image. Fix seriously outdated prediction_model docstrings 2023-04-08 12:09:53 +02:00
Matthias
ac817b7808 Improve docstrings for key-value store 2023-04-08 10:09:31 +02:00
Matthias
4d4f4bf23e Add test for key_value_store 2023-04-08 10:07:21 +02:00
Matthias
c083723698 Add initial version of key value store 2023-04-08 10:07:03 +02:00
Matthias
f8d89c46e5 Don't reset open_order_id if the order didn't cancel 2023-04-07 19:49:13 +02:00
Matthias
1952e453bb Improved formatting for fetch order_or_stop calls 2023-04-07 17:35:11 +02:00
Matthias
77985fa591 Update thread name for uvicorn worker 2023-04-07 14:49:53 +02:00
Matthias
a75d891007 Ensure minimum sqlalchemy version is respected 2023-04-07 14:45:06 +02:00
Matthias
dae3f72be7 Bump Dockerfile to latest 3.10 2023-04-07 14:11:31 +02:00
Matthias
f03a99918a Ensure hyper param file can be loaded
closes #8452
2023-04-04 20:04:28 +02:00
Yinon Polak
a655524221 pytorch mlp rename input to fix mypy error 2023-04-04 12:24:29 +03:00
Yinon Polak
26738370c7 pytorch mlp add explicit annotation to fix mypy error 2023-04-04 12:12:02 +03:00
Matthias
fe02f611fb Fix typo in reinforcement learning
closes #8431
2023-04-04 06:46:35 +02:00
Matthias
1b10a3a2bf Merge branch 'develop' of github.com:freqtrade/freqtrade into develop 2023-04-03 20:24:58 +02:00
Matthias
92a060c5b4 Make stop_price_parameter configurable by exchange 2023-04-03 20:18:57 +02:00
hippocritical
0fb155d6ee Merge branch 'freqtrade:develop' into develop 2023-04-03 20:17:36 +02:00
Matthias
096fd1916c Merge pull request #8445 from freqtrade/dependabot/pip/develop/tensorboard-2.12.1
Bump tensorboard from 2.12.0 to 2.12.1
2023-04-03 19:14:29 +02:00
Matthias
fb09a16127 Merge pull request #8438 from freqtrade/dependabot/pip/develop/types-tabulate-0.9.0.2
Bump types-tabulate from 0.9.0.1 to 0.9.0.2
2023-04-03 18:12:30 +02:00
Yinon Polak
6b204c97ed fix pytorch data convertor type hints 2023-04-03 19:02:07 +03:00
Yinon Polak
0c4574b3b7 prevent mypy error, explicitly unpack input list of pytorch mlp model, 2023-04-03 18:10:47 +03:00
Yinon Polak
d9d9993179 add documentation 2023-04-03 17:06:39 +03:00
Yinon Polak
7b494c8333 add documentation to pytorch data convertor 2023-04-03 16:39:49 +03:00
Yinon Polak
bc9454e0f9 add device to data convertor class doc 2023-04-03 16:36:38 +03:00
Yinon Polak
36a0a14a23 clean code 2023-04-03 16:26:42 +03:00
Yinon Polak
c137666230 fix imports 2023-04-03 16:03:15 +03:00
Matthias
7fed0782d5 pre-commit types-tabulate 2023-04-03 14:19:11 +02:00
Yinon Polak
bd3b70293f add pytorch data convertor 2023-04-03 15:19:10 +03:00
dependabot[bot]
30fc24bd8c Bump types-tabulate from 0.9.0.1 to 0.9.0.2
Bumps [types-tabulate](https://github.com/python/typeshed) from 0.9.0.1 to 0.9.0.2.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-tabulate
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 12:18:15 +00:00
Matthias
7e3de178e1 Merge pull request #8447 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.11
Bump types-python-dateutil from 2.8.19.10 to 2.8.19.11
2023-04-03 14:17:24 +02:00
Matthias
0c9c9fff0e Merge branch 'develop' into dependabot/pip/develop/types-python-dateutil-2.8.19.11 2023-04-03 13:41:10 +02:00
Matthias
b96f6670e3 pre-commit dateutil 2023-04-03 13:28:17 +02:00
Matthias
6e02743256 Merge pull request #8446 from freqtrade/dependabot/pip/develop/types-requests-2.28.11.17
Bump types-requests from 2.28.11.16 to 2.28.11.17
2023-04-03 13:27:31 +02:00
Matthias
2b4fa92d09 Merge pull request #8444 from freqtrade/dependabot/pip/develop/ruff-0.0.260
Bump ruff from 0.0.259 to 0.0.260
2023-04-03 11:40:07 +02:00
Matthias
be250230b6 Merge pull request #8443 from freqtrade/dependabot/pip/develop/plotly-5.14.0
Bump plotly from 5.13.1 to 5.14.0
2023-04-03 11:39:42 +02:00
Matthias
5d33ffc015 Merge pull request #8442 from freqtrade/dependabot/pip/develop/orjson-3.8.9
Bump orjson from 3.8.8 to 3.8.9
2023-04-03 11:04:17 +02:00
Matthias
b48498f27f Types pre-commit 2023-04-03 10:16:56 +02:00
Matthias
e582d8bacb Merge pull request #8434 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.8
Bump sqlalchemy from 2.0.7 to 2.0.8
2023-04-03 10:16:00 +02:00
dependabot[bot]
ff40ee655b Bump types-python-dateutil from 2.8.19.10 to 2.8.19.11
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.10 to 2.8.19.11.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 07:49:24 +00:00
dependabot[bot]
57deaad806 Bump types-requests from 2.28.11.16 to 2.28.11.17
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.16 to 2.28.11.17.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 07:49:21 +00:00
dependabot[bot]
7779b82277 Bump tensorboard from 2.12.0 to 2.12.1
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.12.0 to 2.12.1.
- [Release notes](https://github.com/tensorflow/tensorboard/releases)
- [Changelog](https://github.com/tensorflow/tensorboard/blob/2.12.1/RELEASE.md)
- [Commits](https://github.com/tensorflow/tensorboard/compare/2.12.0...2.12.1)

---
updated-dependencies:
- dependency-name: tensorboard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 07:49:18 +00:00
dependabot[bot]
2bd2058afa Bump ruff from 0.0.259 to 0.0.260
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.259 to 0.0.260.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.259...v0.0.260)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 07:49:12 +00:00
dependabot[bot]
bf7936b0af Bump plotly from 5.13.1 to 5.14.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.13.1 to 5.14.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v5.13.1...v5.14.0)

---
updated-dependencies:
- dependency-name: plotly
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 07:48:50 +00:00
dependabot[bot]
8236bbfd48 Bump orjson from 3.8.8 to 3.8.9
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.8 to 3.8.9.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.8...3.8.9)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 07:48:43 +00:00
Matthias
4dc13ac16a Merge pull request #8437 from freqtrade/dependabot/pip/develop/ccxt-3.0.50
Bump ccxt from 3.0.37 to 3.0.50
2023-04-03 09:47:27 +02:00
Matthias
eb5423469a Merge pull request #8435 from freqtrade/dependabot/pip/develop/xgboost-1.7.5
Bump xgboost from 1.7.4 to 1.7.5
2023-04-03 09:47:09 +02:00
Matthias
43496d7929 bump sqlalchemy pre-commit 2023-04-03 09:46:32 +02:00
Matthias
92c70b6b90 Merge pull request #8441 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.4
Bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.4
2023-04-03 09:45:51 +02:00
Matthias
77897c7d6b Merge pull request #8439 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.5
Bump mkdocs-material from 9.1.4 to 9.1.5
2023-04-03 09:45:26 +02:00
Matthias
531861573a Merge pull request #8436 from freqtrade/dependabot/pip/develop/types-cachetools-5.3.0.5
Bump types-cachetools from 5.3.0.4 to 5.3.0.5
2023-04-03 09:45:10 +02:00
Matthias
c9b904eb0e Fix typos in documentation 2023-04-03 06:49:30 +02:00
Matthias
372f1cb37f Reduce verbosity for stop orders 2023-04-03 06:37:31 +02:00
Matthias
a3acdd5240 apply stop-reserve to minimum limits only when necessary
it's unnecessary for amount - but necessary for Cost / price limits.
2023-04-03 06:37:31 +02:00
Matthias
e6a125719e Slightly refactor _get_stake_amount_limit 2023-04-03 06:37:31 +02:00
Matthias
78a1551798 Reorder get_stake_limit 2023-04-03 06:37:31 +02:00
Matthias
6f79d14c9c pre-commit - bump cachetools 2023-04-03 06:37:15 +02:00
Matthias
28d8722fa7 Merge pull request #8433 from freqtrade/dependabot/pip/develop/websockets-11.0
Bump websockets from 10.4 to 11.0
2023-04-03 06:36:30 +02:00
dependabot[bot]
2715b2ccf0 Bump pypa/gh-action-pypi-publish from 1.8.3 to 1.8.4
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.3 to 1.8.4.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 03:58:12 +00:00
dependabot[bot]
2ea575cb31 Bump mkdocs-material from 9.1.4 to 9.1.5
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.4 to 9.1.5.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.4...9.1.5)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 03:57:30 +00:00
dependabot[bot]
1b31c54162 Bump ccxt from 3.0.37 to 3.0.50
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.37 to 3.0.50.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.37...3.0.50)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 03:57:19 +00:00
dependabot[bot]
e289c10b6c Bump types-cachetools from 5.3.0.4 to 5.3.0.5
Bumps [types-cachetools](https://github.com/python/typeshed) from 5.3.0.4 to 5.3.0.5.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-cachetools
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 03:57:10 +00:00
dependabot[bot]
26ed1ca07c Bump xgboost from 1.7.4 to 1.7.5
Bumps [xgboost](https://github.com/dmlc/xgboost) from 1.7.4 to 1.7.5.
- [Release notes](https://github.com/dmlc/xgboost/releases)
- [Changelog](https://github.com/dmlc/xgboost/blob/master/NEWS.md)
- [Commits](https://github.com/dmlc/xgboost/compare/v1.7.4...v1.7.5)

---
updated-dependencies:
- dependency-name: xgboost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 03:57:05 +00:00
dependabot[bot]
b1e20bcd1e Bump sqlalchemy from 2.0.7 to 2.0.8
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.7 to 2.0.8.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 03:57:00 +00:00
dependabot[bot]
12a73bc151 Bump websockets from 10.4 to 11.0
Bumps [websockets](https://github.com/aaugustin/websockets) from 10.4 to 11.0.
- [Release notes](https://github.com/aaugustin/websockets/releases)
- [Commits](https://github.com/aaugustin/websockets/compare/10.4...11.0)

---
updated-dependencies:
- dependency-name: websockets
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-03 03:56:46 +00:00
Matthias
19e112f399 Merge pull request #8427 from initrv/typo-fix-constants
Typo fix constants
2023-04-02 07:42:15 +02:00
initrv
cfc0410388 use rl_config get instead of freqai_info 2023-04-02 04:08:07 +03:00
initrv
cccf4f305b fix randomize_starting_position typo 2023-04-02 03:42:05 +03:00
initrv
4c608e7167 remove misplaced param 2023-04-02 03:12:24 +03:00
initrv
cab82e8e60 Add sb3 learn progress bar 2023-04-02 02:59:02 +03:00
Matthias
dc7e834911 Fix some type issues 2023-04-01 20:17:56 +02:00
Matthias
a630799984 Merge pull request #8423 from freqtrade/add-profit-trade-history
make trade_type value more explicit, add profit to trade_history dict
2023-04-01 15:19:54 +02:00
Matthias
916e1bbc7c Merge pull request #8412 from freqtrade/fix/partial_stops
support partially filled stops
2023-04-01 15:18:42 +02:00
Robert Caulk
631cb44f5c ensure python code block renders 2023-04-01 15:16:48 +02:00
Robert Caulk
367186cc34 Update freqai-feature-engineering.md
The `metadata` section of `freqai-feature-engineering.md` had a misplaced whitespace in front of the title. 

This PR removes the whitespace.
2023-04-01 15:16:43 +02:00
robcaulk
92f34f262e make trade_type value more explicit, add profit to trade_history dict 2023-04-01 10:05:58 +02:00
Matthias
5e13b48648 Merge pull request #8386 from freqtrade/feature/price_to_precision_round
price to precision rounding
2023-03-31 07:20:10 +02:00
Matthias
038a111b45 Merge pull request #8421 from freqtrade/new_release
New release 2023.3
2023-03-31 07:09:11 +02:00
Matthias
6dfb1a1d14 Improve docker regular build caching 2023-03-31 06:49:12 +02:00
Matthias
f8330800d1 Improve docker arm builds 2023-03-31 06:49:02 +02:00
Matthias
3ec7c72da1 Bump develop version to 2023.4.dev 2023-03-30 07:06:23 +02:00
Matthias
2ea77b22e0 Bump version to 2023.3 2023-03-30 06:56:49 +02:00
Matthias
a8b1352021 Merge branch 'stable' into new_release 2023-03-30 06:56:35 +02:00
robcaulk
355fde3bca revert setting dk to live in test_plot_feature_importances 2023-03-29 22:01:54 +02:00
hippocritical
bad2cdabf2 Merge branch 'freqtrade:develop' into develop 2023-03-29 20:51:59 +02:00
Matthias
fa7c29fe9f Update producer docs to reflect proper datatype
closes #8419
2023-03-29 20:43:23 +02:00
Matthias
861c577138 Support partially filled stop orders
closes #8374
2023-03-29 07:05:39 +02:00
Matthias
e062a74e70 Add test for partial stop order canceling
part of #8374
2023-03-29 06:57:17 +02:00
Matthias
c330c493d5 test for Handle stop on exchange partial filled
part of #8374
2023-03-29 06:57:17 +02:00
Matthias
8a49d62068 Don't update liquidation price for closed trades 2023-03-29 06:49:22 +02:00
Matthias
a642524928 Improve integration test correctness 2023-03-29 06:48:00 +02:00
hippocritical
7bd55971dc strategy_updater:
removed args_common_optimize for strategy-updater

backtest_lookahead_bias_checker:
added args and cli-options for minimum and target trade amounts
fixed code according to best-practice coding requests of matthias (CamelCase etc)
2023-03-28 22:20:00 +02:00
Matthias
eb96490c99 Improve some more stoploss tests 2023-03-28 20:28:05 +02:00
Matthias
6282b42741 Remove further Magicmock trade 2023-03-28 19:38:43 +02:00
Matthias
513df4515b Improve stoploss tests 2023-03-28 19:19:55 +02:00
Matthias
411e21f430 Improve stop test 2023-03-28 18:13:26 +02:00
Matthias
f0b5f95fd6 Remove missleading comment 2023-03-28 18:10:26 +02:00
Matthias
736c396d98 Use correct amount for stoploss test 2023-03-28 16:45:54 +02:00
Yinon Polak
5a7ca35c6b declare class names in FreqaiExampleHybridStrategy 2023-03-28 16:24:49 +03:00
Yinon Polak
077a947972 clean code 2023-03-28 15:18:10 +03:00
Yinon Polak
8ac3a94358 add note to pytorch docs - setting class names for classifiers 2023-03-28 15:17:40 +03:00
Yinon Polak
dfbebdea9b improve comment on class_names in freqai interface 2023-03-28 14:44:44 +03:00
Yinon Polak
b795a70102 fix config example in pytorch mlp documentation 2023-03-28 14:44:43 +03:00
Yinon Polak
026b6a39a9 bugfix skip test split when empty 2023-03-28 14:40:23 +03:00
Matthias
2860e817bd Update cached binance leverage Tiers 2023-03-28 07:05:37 +02:00
Matthias
19b78fbc22 Override ccxt's marketOrderRequiresPrice settings for gate 2023-03-28 06:57:18 +02:00
Matthias
cde432fef0 Enable gate market orders
closes #8368
2023-03-28 06:56:11 +02:00
Richard Jozsa
7cbc0ce80a Merge branch 'freqtrade:develop' into develop 2023-03-28 01:23:24 +02:00
Matthias
8ae44c204e Merge pull request #8361 from TheJoeSchr/feature/trades-feather
featherdatahandler: implement trades_store/_trades_load
2023-03-27 21:05:30 +02:00
Matthias
ed0e7ead31 Fix wrong import 2023-03-27 20:36:05 +02:00
Matthias
3928051baf Revert unneeded formatting changes 2023-03-27 20:35:26 +02:00
Matthias
e35c85000e Excude raspberry from catboost installs
closes #8404
2023-03-27 20:19:23 +02:00
robcaulk
3cabcabcbd ensure labels are properly defined in backtesting 2023-03-27 15:23:01 +02:00
Matthias
85776db692 Merge pull request #8401 from freqtrade/dependabot/pip/develop/ccxt-3.0.37
Bump ccxt from 3.0.36 to 3.0.37
2023-03-27 11:02:44 +02:00
Matthias
ce81af08d8 Merge pull request #8398 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.4
Bump mkdocs-material from 9.1.3 to 9.1.4
2023-03-27 11:00:57 +02:00
Matthias
5aa6c1dfae Merge pull request #8402 from freqtrade/dependabot/pip/develop/pydantic-1.10.7
Bump pydantic from 1.10.6 to 1.10.7
2023-03-27 11:00:40 +02:00
dependabot[bot]
4f4dfa2a59 Bump pydantic from 1.10.6 to 1.10.7
Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.6 to 1.10.7.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v1.10.7/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.6...v1.10.7)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 07:50:06 +00:00
dependabot[bot]
90669e0ba9 Bump ccxt from 3.0.36 to 3.0.37
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.36 to 3.0.37.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.36...3.0.37)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 07:49:56 +00:00
Matthias
bc9f6d30c1 Merge pull request #8391 from freqtrade/dependabot/pip/develop/types-requests-2.28.11.16
Bump types-requests from 2.28.11.15 to 2.28.11.16
2023-03-27 09:47:34 +02:00
Matthias
4ae2333306 Merge pull request #8399 from freqtrade/dependabot/pip/develop/filelock-3.10.6
Bump filelock from 3.10.0 to 3.10.6
2023-03-27 09:47:16 +02:00
Matthias
8c63e3dc4f Merge pull request #8396 from freqtrade/dependabot/pip/develop/cryptography-40.0.1
Bump cryptography from 39.0.2 to 40.0.1
2023-03-27 09:47:02 +02:00
Matthias
b0dddd35ca Merge pull request #8395 from freqtrade/dependabot/pip/develop/pre-commit-3.2.1
Bump pre-commit from 3.2.0 to 3.2.1
2023-03-27 09:45:57 +02:00
Matthias
96ba75179b Merge pull request #8400 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.3
Bump pypa/gh-action-pypi-publish from 1.8.1 to 1.8.3
2023-03-27 08:28:18 +02:00
Matthias
2589717375 Merge pull request #8397 from freqtrade/dependabot/pip/develop/orjson-3.8.8
Bump orjson from 3.8.7 to 3.8.8
2023-03-27 08:00:46 +02:00
dependabot[bot]
bc0816aa66 Bump cryptography from 39.0.2 to 40.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 39.0.2 to 40.0.1.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/39.0.2...40.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 05:15:59 +00:00
dependabot[bot]
1743ad7946 Bump pre-commit from 3.2.0 to 3.2.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.2.0 to 3.2.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.2.0...v3.2.1)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 05:14:04 +00:00
Matthias
9367cbcfd3 Merge pull request #8390 from freqtrade/dependabot/pip/develop/ccxt-3.0.36
Bump ccxt from 3.0.23 to 3.0.36
2023-03-27 07:10:39 +02:00
Matthias
43a7b9236b Merge pull request #8393 from freqtrade/dependabot/pip/develop/ruff-0.0.259
Bump ruff from 0.0.257 to 0.0.259
2023-03-27 07:00:38 +02:00
Matthias
4891174a71 list-data should sort pairs also in timerange mode 2023-03-27 06:44:36 +02:00
Matthias
8845f765db pre-commit - bump requests 2023-03-27 06:25:11 +02:00
dependabot[bot]
7e11bce4f4 Bump pypa/gh-action-pypi-publish from 1.8.1 to 1.8.3
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.1 to 1.8.3.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.1...v1.8.3)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 03:58:02 +00:00
dependabot[bot]
8955e09175 Bump filelock from 3.10.0 to 3.10.6
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.10.0 to 3.10.6.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.10.0...3.10.6)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 03:58:00 +00:00
dependabot[bot]
d13ea71a58 Bump mkdocs-material from 9.1.3 to 9.1.4
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.3 to 9.1.4.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.3...9.1.4)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 03:57:55 +00:00
dependabot[bot]
b72f61080b Bump orjson from 3.8.7 to 3.8.8
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.7 to 3.8.8.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.7...3.8.8)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 03:57:46 +00:00
dependabot[bot]
75c31cc8cc Bump ruff from 0.0.257 to 0.0.259
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.257 to 0.0.259.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.257...v0.0.259)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 03:57:14 +00:00
dependabot[bot]
1b3d9efedd Bump types-requests from 2.28.11.15 to 2.28.11.16
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.15 to 2.28.11.16.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 03:56:55 +00:00
dependabot[bot]
2f8f60373e Bump ccxt from 3.0.23 to 3.0.36
Bumps [ccxt](https://github.com/ccxt/ccxt) from 3.0.23 to 3.0.36.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/3.0.23...3.0.36)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 03:56:49 +00:00
robcaulk
55781e7f10 fix tests 2023-03-26 19:22:52 +02:00
Matthias
72284317c2 Fix failing backtest test 2023-03-26 18:21:21 +02:00
Matthias
80a27bc0db Fix random uvicorn error 2023-03-26 18:18:52 +02:00
Matthias
1c9abd9e35 Properly respect can_short flag in backtesting
closes  #8387
2023-03-26 17:27:52 +02:00
Matthias
c14ac8a205 Properly handle non-replaced first entry orders 2023-03-26 16:46:41 +02:00
Matthias
b09fb5826f don't use "can_short" in backtesting to determine application of leverage 2023-03-26 16:21:51 +02:00
Matthias
fb1541bdf6 Explicitly close loop in async tests 2023-03-26 16:21:51 +02:00
Matthias
444d18aa39 Revert binance PO fix, since ccxt has fixed this bug. 2023-03-26 16:21:51 +02:00
Matthias
91ab4abba8 Merge pull request #8389 from escanoro/patch-1
typo:  above should be below
2023-03-26 15:45:29 +02:00
escanoro
16057da6cc typo: above should be below 2023-03-26 14:09:41 +02:00
Matthias
d97500581d Merge pull request #8379 from xmatthias/type_sendmsg
Type sendmsg
2023-03-26 14:09:01 +02:00
robcaulk
f1e831a7b8 fix bug in backtest target setting 2023-03-26 13:43:59 +02:00
Matthias
31a396bc25 Merge pull request #8272 from paranoidandy/bot-loop-start-every-candle-bt
Make strategy.bot_loop_start run once per candle in backtest
2023-03-26 13:21:08 +02:00
Matthias
7cdcd97c26 Update tests for new logic. 2023-03-26 11:30:44 +02:00
Matthias
73b59df77b Merge branch 'develop' into pr/paranoidandy/8272 2023-03-26 11:22:24 +02:00
Matthias
86aef7cf9d Add current_time to bot_loop_start callbak 2023-03-26 11:22:19 +02:00
Matthias
159090c0e7 Add explicit tests for TRUNCATE mode 2023-03-26 11:14:34 +02:00
Matthias
0cb28f3d82 Use kwarg for rounding_mode, update tests with additional parameter 2023-03-26 11:00:41 +02:00
Matthias
d0d0cbe1d1 Implement price_to_precision logic for stoploss 2023-03-26 10:37:18 +02:00
Matthias
02078456fc Merge branch 'develop' into pr/asuiu/8296 2023-03-26 10:28:02 +02:00
Matthias
01dfb1cba8 Revert having price_rounding_mode as configuration 2023-03-26 10:24:47 +02:00
Matthias
ee205ddc86 Improve trade.from_json when stops are used 2023-03-25 20:26:56 +01:00
Matthias
298f5685ee Reuse existing "cancel_stoploss" call 2023-03-25 20:06:21 +01:00
Matthias
486d8a48a0 Fix docs (buffer_train_data_candles is an integer, not a boolean)
closes #8384
2023-03-25 19:36:28 +01:00
Matthias
d426077445 Merge branch 'develop' of github.com:freqtrade/freqtrade into develop 2023-03-25 16:33:07 +01:00
Matthias
9aa455fcd4 Merge pull request #8364 from freqtrade/robcaulk-patch-1
Update freqai_interface.py
2023-03-25 16:27:25 +01:00
Robert Caulk
d9c8b322ce Update freqai_interface.py 2023-03-25 13:37:07 +01:00
robcaulk
68154a1f52 document why users cant arbitrarily change parameter spaces... 2023-03-25 11:57:52 +01:00
Matthias
f7c1ee6d3e add precision values to api schema 2023-03-25 11:55:47 +01:00
Matthias
9c6a49436b Export amount/price precisions per trade 2023-03-25 11:42:19 +01:00
Matthias
75464c22f5 Merge pull request #8382 from linquanisaac/develop
docs(protections): fix typo
2023-03-25 11:36:35 +01:00
linquanisaac
cdd44a4005 docs(protections): fix typo 2023-03-25 17:19:58 +08:00
Matthias
34313a7af6 Merge remote-tracking branch 'origin/develop' into type_sendmsg 2023-03-25 09:23:00 +01:00
Matthias
4053ee4581 Merge pull request #8380 from freqtrade/fix/talibinstall
use github to download guess instead of gnu.org
2023-03-25 09:22:43 +01:00
Matthias
56170dba19 use github to download guess instead of gnu.org
gnu.org seems down rn (dns does no longer resolve),
and doesn't have good uptime history
2023-03-25 08:55:36 +01:00
Matthias
79a2de7a64 Reduce impact of short outages 2023-03-25 08:31:35 +01:00
Matthias
c0a57d352f send base_currency with messages that need it. 2023-03-25 08:16:07 +01:00
hippocritical
efefcb240b Merge branch 'freqtrade:develop' into develop 2023-03-24 22:37:21 +01:00
Matthias
cbdd86d777 Fix test failures due to additional field 2023-03-24 21:05:10 +01:00
Matthias
281dd7785e Fix some remaining type errors 2023-03-24 20:56:18 +01:00
Matthias
ad58bac810 Type WS messagetypes 2023-03-24 20:54:28 +01:00
Matthias
8928d3616a Improve msgtypes 2023-03-24 20:47:53 +01:00
Matthias
e8cffeeffd Update RPCStatusMessage type 2023-03-24 20:36:29 +01:00
Matthias
76d289f0ce Don't overwrite types 2023-03-24 20:35:01 +01:00
Matthias
245ae99273 Further typing ... 2023-03-24 20:33:00 +01:00
Matthias
70ad7b42b1 Improve msg typing 2023-03-24 20:33:00 +01:00
Matthias
0ece73578c Add typedDict for RPC messages
Currently not fully functional.
2023-03-24 20:33:00 +01:00
Matthias
b317524ed7 protect adjust_trade_position from crashing in case of unsafe code 2023-03-24 20:27:45 +01:00
Yinon Polak
8903ba5d89 fix enf of file 2023-03-24 20:35:55 +03:00
Matthias
469166636c Set initial stoploss when creating the order
This ensures that a trade never has "None" as stoploss
2023-03-24 07:27:45 +01:00
Yinon Polak
eabd321281 small docs change 2023-03-23 15:59:57 +02:00
Yinon Polak
45c6ae446f small docs change 2023-03-23 15:04:29 +02:00
Yinon Polak
952e641213 small docs change 2023-03-23 12:43:37 +02:00
Yinon Polak
c44b5b1b3a add pytorch parameters to parameter table docs 2023-03-23 12:41:20 +02:00
Yinon Polak
fc8625c5c5 add pytorch classes uml diagram 2023-03-23 12:13:27 +02:00
Matthias
150c5510c7 Don''t fully fail bot when invalid price value is reached
closes #8300
2023-03-22 19:46:07 +01:00
Yinon Polak
36a005754a add pytorch documentation 2023-03-22 18:15:57 +02:00
Yinon Polak
479aafc331 rename Torch to PyTorch 2023-03-22 17:50:00 +02:00
hippocritical
f57787882d Merge remote-tracking branch 'origin/develop' into develop 2023-03-22 12:44:29 +01:00
hippocritical
d12a7ff18b freqtrades' merge broke my side, fixed it by porting it over to my develop branch, no changes with this commit logic-wise. 2023-03-22 12:32:39 +01:00
Robert Caulk
bdf19f1d66 Update freqai_interface.py 2023-03-21 22:44:56 +01:00
Matthias
8cf3e9f91b Accept "insufficient funds" error on set_leverage from stop calls
closes #8341
2023-03-21 19:29:27 +01:00
Matthias
ebebcb886c Move build-system to the top of pyproject.toml 2023-03-21 19:28:26 +01:00
Matthias
36c45fd14f Remove unused argument from set_leverage 2023-03-21 19:14:09 +01:00
Joe Schr
0128b63c1c add 'feather' to AVAILABLE_DATAHANDLERS_TRADES 2023-03-21 19:13:32 +01:00
Joe Schr
e16db814fa featherdatahandler: implement trades_store/_trades_load 2023-03-21 17:56:51 +01:00
Yinon Polak
f81e3d8667 sort imports 2023-03-21 16:42:13 +02:00
Yinon Polak
b9c7d338b3 fix test_start_backtesting 2023-03-21 16:38:05 +02:00
Yinon Polak
4f93106755 Merge remote-tracking branch 'origin/feat/add-pytorch-model-support' into feat/add-pytorch-model-support 2023-03-21 16:26:42 +02:00
Yinon Polak
02bccd0097 add pytorch mlp models to test_start_backtesting 2023-03-21 16:20:35 +02:00
robcaulk
1ba01746a0 organize pytorch files 2023-03-21 15:09:54 +01:00
Yinon Polak
83a7d888bc type hint init in pytorch mlp classes 2023-03-21 15:19:34 +02:00
Yinon Polak
eba82360fa skip pytorch tests on python 3.11 and intel based mac os 2023-03-21 15:18:05 +02:00
Yinon Polak
3fa23860c0 skip pytorch tests on python 3.11 and intel based mac os 2023-03-21 14:34:27 +02:00
Yinon Polak
a80afc8f1b add optional target tensor squeezing to pytorch trainer 2023-03-21 13:20:54 +02:00
Yinon Polak
97339e14cf round up divisions in calc_n_epochs 2023-03-21 12:29:05 +02:00
Yinon Polak
443263803c unsqueeze target tensor when 1 dimensional 2023-03-21 11:42:05 +02:00
Yinon Polak
9906e7d646 clean code 2023-03-21 11:23:45 +02:00
Yinon Polak
e8f040bfbd add class_name attribute to freqai interface 2023-03-20 20:38:43 +02:00
Matthias
97c420b2df Add explicit test for okx lev_prep 2023-03-20 19:27:48 +01:00
Yinon Polak
a4b617e482 type hints fixes 2023-03-20 20:22:28 +02:00
Matthias
7b5e322ef2 Merge pull request #8360 from freqtrade/okx_stop
Okx stoploss on exchange
2023-03-20 19:19:59 +01:00
Yinon Polak
c06cd38951 clean code 2023-03-20 19:55:39 +02:00
Yinon Polak
0a55753faf move default attributes of pytorch classifier to initializer,
to prevent mypy from complaining
2023-03-20 19:40:36 +02:00
Yinon Polak
6b4d9f97c1 clean code 2023-03-20 19:28:30 +02:00
Matthias
639987cbab Prevent parameter reuse 2023-03-20 18:19:17 +01:00
Matthias
56c2aa89bc Merge pull request #8344 from freqtrade/fix/db_concurrent
Fix db concurrent problem
2023-03-20 18:17:09 +01:00
Yinon Polak
bf4aa91aab Merge remote-tracking branch 'origin/feat/add-pytorch-model-support' into feat/add-pytorch-model-support
# Conflicts:
#	freqtrade/freqai/base_models/PyTorchModelTrainer.py
#	freqtrade/freqai/prediction_models/PyTorchClassifier.py
#	freqtrade/freqai/prediction_models/PyTorchMLPClassifier.py
#	freqtrade/freqai/prediction_models/PyTorchMLPModel.py
#	tests/freqai/test_freqai_interface.py
2023-03-20 18:44:24 +02:00
Yinon Polak
500c401b75 improve pytorch classifier documentation 2023-03-20 18:41:04 +02:00
Yinon Polak
81a2cbb4eb fix tests 2023-03-20 18:41:04 +02:00
Yinon Polak
0510cf4491 add config params to tests 2023-03-20 18:41:04 +02:00
Yinon Polak
68728409aa add pytorch regressor test 2023-03-20 18:41:04 +02:00
Yinon Polak
c00ffcee59 fix pytorch classifier test 2023-03-20 18:41:04 +02:00
Yinon Polak
9aec1ddb17 sort imports 2023-03-20 18:41:04 +02:00
Yinon Polak
d98890f32e sort imports 2023-03-20 18:41:04 +02:00
Yinon Polak
f659f8e309 remove unused imports 2023-03-20 18:41:04 +02:00
Yinon Polak
54db239175 add pytorch regressor example 2023-03-20 18:41:04 +02:00
Yinon Polak
601c37f862 refactor classifiers class names 2023-03-20 18:41:04 +02:00
Yinon Polak
501e746c52 improve mlp documentation 2023-03-20 18:41:04 +02:00
Yinon Polak
d04146d1b1 improve mlp documentation 2023-03-20 18:41:04 +02:00
Yinon Polak
ea08931ab3 add mlp documentation 2023-03-20 18:41:04 +02:00
Yinon Polak
ddd1b5c0ff modify feedforward net, move layer norm to start of thr block 2023-03-20 18:41:04 +02:00
Yinon Polak
e08d8190ae fix test 2023-03-20 18:41:04 +02:00
Yinon Polak
fbf7049ac5 sort imports 2023-03-20 18:41:04 +02:00
Yinon Polak
2a1a8c0e64 fix test 2023-03-20 18:41:04 +02:00
Yinon Polak
833aaf8e10 create children class to PyTorchClassifier to implement the fit method where we initialize the trainer and model objects 2023-03-20 18:41:04 +02:00
Yinon Polak
566346dd87 classifier test - set model file extension 2023-03-20 18:41:03 +02:00
Yinon Polak
d0a33d2ee7 fix tests 2023-03-20 18:41:03 +02:00
robcaulk
fab505be1b cheat flake8 for now until we can refactor save into the model class 2023-03-20 18:41:03 +02:00
Richard Jozsa
66c326b789 Add proper handling of multiple environments 2023-03-20 15:54:58 +01:00
Yinon Polak
2f386913ac refactor classifiers class names 2023-03-20 11:54:17 +02:00
Matthias
4f4bfdac4d Adjustments to okx stoploss 2023-03-20 09:00:00 +01:00
Matthias
8b6ea32c4c Merge pull request #8357 from freqtrade/dependabot/pip/develop/pytest-asyncio-0.21.0
Bump pytest-asyncio from 0.20.3 to 0.21.0
2023-03-20 08:59:19 +01:00
Matthias
ff497d5c90 Merge pull request #8356 from freqtrade/dependabot/pip/develop/fastapi-0.95.0
Bump fastapi from 0.94.0 to 0.95.0
2023-03-20 08:54:49 +01:00
Matthias
c05db6742c Merge pull request #8351 from freqtrade/dependabot/pip/develop/ccxt-3.0.23
Bump ccxt from 2.9.12 to 3.0.23
2023-03-20 08:52:12 +01:00
Matthias
75f75f3881 Merge pull request #8358 from freqtrade/dependabot/pip/develop/ast-comments-1.0.1
Bump ast-comments from 1.0.0 to 1.0.1
2023-03-20 08:51:56 +01:00
dependabot[bot]
a4e4310d40 Bump pytest-asyncio from 0.20.3 to 0.21.0
Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.20.3 to 0.21.0.
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.20.3...v0.21.0)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 07:11:18 +00:00
Matthias
dfc3524334 Merge pull request #8355 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.1
Bump pypa/gh-action-pypi-publish from 1.7.1 to 1.8.1
2023-03-20 08:10:17 +01:00
Matthias
a0913588b8 Merge pull request #8353 from freqtrade/dependabot/pip/develop/pre-commit-3.2.0
Bump pre-commit from 3.1.1 to 3.2.0
2023-03-20 08:10:04 +01:00
Matthias
c56b344077 Merge pull request #8354 from freqtrade/dependabot/pip/develop/ruff-0.0.257
Bump ruff from 0.0.255 to 0.0.257
2023-03-20 08:09:08 +01:00
dependabot[bot]
cb1f971d4b Bump ccxt from 2.9.12 to 3.0.23
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.9.12 to 3.0.23.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/2.9.12...3.0.23)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 06:39:13 +00:00
Matthias
78e64be04e Merge pull request #8349 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.7
Bump sqlalchemy from 2.0.5.post1 to 2.0.7
2023-03-20 07:38:07 +01:00
dependabot[bot]
3175121030 Bump ast-comments from 1.0.0 to 1.0.1
Bumps [ast-comments](https://github.com/t3rn0/ast-comments) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/t3rn0/ast-comments/releases)
- [Commits](https://github.com/t3rn0/ast-comments/compare/1.0.0...1.0.1)

---
updated-dependencies:
- dependency-name: ast-comments
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 05:47:55 +00:00
dependabot[bot]
8d649988ca Bump fastapi from 0.94.0 to 0.95.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.94.0 to 0.95.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.94.0...0.95.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 05:47:47 +00:00
Matthias
ec7e7e744b Merge pull request #8352 from freqtrade/dependabot/pip/develop/uvicorn-0.21.1
Bump uvicorn from 0.21.0 to 0.21.1
2023-03-20 06:46:46 +01:00
Matthias
5c754eb4d3 Merge pull request #8350 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.3
Bump mkdocs-material from 9.1.2 to 9.1.3
2023-03-20 06:46:25 +01:00
Matthias
54d8aa7782 Test stoploss_adjust okx 2023-03-20 06:46:00 +01:00
Matthias
4690244673 Enable okx stop-price types 2023-03-20 06:40:57 +01:00
Matthias
2de5a59d89 Add test for dry-run fetching 2023-03-20 06:38:42 +01:00
Matthias
98685f1c98 Merge pull request #8348 from freqtrade/dependabot/pip/develop/python-rapidjson-1.10
Bump python-rapidjson from 1.9 to 1.10
2023-03-20 06:29:35 +01:00
Matthias
88e93b4902 Merge pull request #8346 from freqtrade/dependabot/pip/develop/nbconvert-7.2.10
Bump nbconvert from 7.2.9 to 7.2.10
2023-03-20 06:29:02 +01:00
Matthias
dcca51985d sqlalchemy - pre-commit 2023-03-20 06:27:39 +01:00
Matthias
21f2f67ffa Merge pull request #8347 from freqtrade/dependabot/pip/develop/filelock-3.10.0
Bump filelock from 3.9.0 to 3.10.0
2023-03-20 06:24:50 +01:00
dependabot[bot]
c78342b194 Bump pypa/gh-action-pypi-publish from 1.7.1 to 1.8.1
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.7.1 to 1.8.1.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.7.1...v1.8.1)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:58:15 +00:00
dependabot[bot]
29b9be9bd0 Bump ruff from 0.0.255 to 0.0.257
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.255 to 0.0.257.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.255...v0.0.257)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:57:47 +00:00
dependabot[bot]
4543a1fe02 Bump pre-commit from 3.1.1 to 3.2.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.1.1 to 3.2.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.1.1...v3.2.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:57:33 +00:00
dependabot[bot]
fc7c8cce3c Bump uvicorn from 0.21.0 to 0.21.1
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.21.0 to 0.21.1.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.21.0...0.21.1)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:57:28 +00:00
dependabot[bot]
7d1559f319 Bump mkdocs-material from 9.1.2 to 9.1.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.2 to 9.1.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.2...9.1.3)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:57:13 +00:00
dependabot[bot]
a43502093d Bump sqlalchemy from 2.0.5.post1 to 2.0.7
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.5.post1 to 2.0.7.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:57:07 +00:00
dependabot[bot]
47e84ad106 Bump python-rapidjson from 1.9 to 1.10
Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 1.9 to 1.10.
- [Release notes](https://github.com/python-rapidjson/python-rapidjson/releases)
- [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v1.9...v1.10)

---
updated-dependencies:
- dependency-name: python-rapidjson
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:56:54 +00:00
dependabot[bot]
5ade5777e8 Bump filelock from 3.9.0 to 3.10.0
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.9.0 to 3.10.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.9.0...3.10.0)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:56:49 +00:00
dependabot[bot]
fb0e824a83 Bump nbconvert from 7.2.9 to 7.2.10
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.2.9 to 7.2.10.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.2.9...v7.2.10)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-20 03:56:45 +00:00
Matthias
a7c7f720c0 Add test for okx fetch_stop 2023-03-19 20:03:34 +01:00
Matthias
224f289ec8 OKX Stop: Add some more okx specific logic 2023-03-19 19:45:30 +01:00
Matthias
d84ece7258 Use conditional orders for stop orders 2023-03-19 19:44:35 +01:00
Matthias
6c5dc7e0a9 OKX: improve stop order handling 2023-03-19 19:44:35 +01:00
Matthias
df20757d21 OKX stop: implement proper stoploss fetching 2023-03-19 19:44:35 +01:00
Matthias
a2ce288241 Add okx stoploss on exchange (non-working for futures). 2023-03-19 19:44:35 +01:00
Matthias
ce3efa8f00 Remove pointless asserts 2023-03-19 18:05:08 +01:00
Matthias
c92f28bf6f ruff: Activate UP ruleset 2023-03-19 17:57:56 +01:00
Matthias
222ecdecd2 Improve code quality 2023-03-19 17:50:08 +01:00
Yinon Polak
1c11a5f048 improve mlp documentation 2023-03-19 18:10:57 +02:00
Yinon Polak
903a1dc3e5 improve mlp documentation 2023-03-19 18:04:01 +02:00
Yinon Polak
6f9a8a089c add mlp documentation 2023-03-19 17:45:30 +02:00
Yinon Polak
8bee499328 modify feedforward net, move layer norm to start of thr block 2023-03-19 17:03:36 +02:00
Matthias
236499a195 Reorder push logic for ghcr 2023-03-19 15:47:42 +01:00
Matthias
3d91dd8a98 Support post-only orders for Binance spot
closes #8044
2023-03-19 15:36:35 +01:00
Matthias
9ccc3e52ec Simplify time in force code structure 2023-03-19 15:30:27 +01:00
Matthias
f5f151fcc5 Fix typing error 2023-03-19 15:06:56 +01:00
Matthias
f455e3327c Simplify method further 2023-03-19 15:01:37 +01:00
Matthias
cd9c2c4c23 Merge branch 'develop' into pr/froggleston/7861 2023-03-19 15:00:20 +01:00
Matthias
af6fc886f6 Small refactor for new methods 2023-03-19 14:56:41 +01:00
Matthias
7aa56adf15 Merge pull request #7951 from hippocritical/strategy_utils
strategy_updater
2023-03-19 14:28:36 +01:00
Yinon Polak
719faab4b8 fix test 2023-03-19 15:21:34 +02:00
Yinon Polak
9f477aa3c9 sort imports 2023-03-19 15:09:50 +02:00
Yinon Polak
61ac36c576 fix test 2023-03-19 14:49:12 +02:00
Yinon Polak
366c148c10 create children class to PyTorchClassifier to implement the fit method where we initialize the trainer and model objects 2023-03-19 14:38:49 +02:00
Matthias
bf3f2e4de4 Fix failing test 2023-03-19 11:16:54 +01:00
hippocritical
763f4f4a3e Merge branch 'freqtrade:develop' into strategy_utils 2023-03-18 20:15:12 +01:00
hippocritical
4925d8f580 Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils 2023-03-18 20:07:34 +01:00
hippocritical
b1f88e8861 fixed typo from trades to trade 2023-03-18 20:02:55 +01:00
Yinon Polak
a49f62eecb classifier test - set model file extension 2023-03-18 20:51:30 +02:00
Matthias
62c8dd98d5 Use combination of thread-local and asyncio-aware session context 2023-03-18 19:28:22 +01:00
Matthias
b0a7b64d44 Close sessions after telegram calls 2023-03-18 19:28:22 +01:00
Matthias
d808dd49e8 Fix ruff violation 2023-03-18 19:28:13 +01:00
Matthias
818d2bf92a Fix stoploss on exchange value in /show_config call 2023-03-18 18:02:46 +01:00
Matthias
f98a12c26c Merge pull request #8343 from freqtrade/freqai/add_pair
Add pair output to "tossed" messages
2023-03-18 18:02:36 +01:00
Matthias
477dc50425 Add pair output to "tossed" messages 2023-03-18 16:32:07 +00:00
Yinon Polak
fab9ff1294 fix tests 2023-03-18 15:27:38 +02:00
Yinon Polak
1c91b4427b Merge remote-tracking branch 'origin/feat/add-pytorch-model-support' into feat/add-pytorch-model-support 2023-03-18 14:14:38 +02:00
Yinon Polak
244662b1a4 set class names attribute in the general classifier testing strategy 2023-03-18 14:12:31 +02:00
Robert Caulk
186fe5933b Merge pull request #8338 from freqtrade/freqai_exception
Fix exceptions when training fails
2023-03-18 12:56:25 +01:00
Matthias
8ab35bbaf3 Merge pull request #8340 from freqtrade/sqlalchemy2_queyr
remove Sqlalchemy .query usage
2023-03-18 08:10:56 +01:00
Matthias
9044052b4e Fix exceptions when training fails 2023-03-17 18:29:10 +01:00
hippocritical
209811d23a Merge branch 'freqtrade:develop' into strategy_utils 2023-03-17 08:48:52 +01:00
Matthias
764d5507a3 Fix typo in docker param 2023-03-17 07:05:13 +01:00
Matthias
628f6b8b7c Fix crane docker permissions 2023-03-17 07:05:13 +01:00
Matthias
0d3de07012 use Crane to move images around 2023-03-17 07:05:13 +01:00
Matthias
db0f449d93 Use docker manifest for GHCR builds 2023-03-17 07:05:13 +01:00
Matthias
774eacc561 Attempt push to ghcr.io 2023-03-17 07:05:13 +01:00
Matthias
e3e4fbd5ba Minor test fix 2023-03-16 19:24:37 +01:00
Matthias
b7709126f9 remove .query completely 2023-03-16 18:07:22 +01:00
Matthias
4cfbc55d34 Update remaining tests to get rid of .query 2023-03-16 18:07:06 +01:00
Robert Caulk
00054dcfde Merge pull request #8307 from initrv/tensorboard-category
Improve tensorboard_log
2023-03-16 11:10:29 +01:00
Matthias
9d6e973e5b remove .query from most tests 2023-03-16 07:25:04 +01:00
Matthias
6ed337faa3 Update several tests to remove .query 2023-03-16 07:04:15 +01:00
Matthias
e579ff9532 Simplify pairlock querying 2023-03-16 06:48:12 +01:00
Matthias
ae361e1d5d Update more .query usages 2023-03-16 06:44:53 +01:00
Richard Jozsa
d03fe1f8ee add latest experimental version of gymnasium 2023-03-16 00:53:37 +01:00
Matthias
8865af9104 Remove .query from pairlock 2023-03-15 21:21:00 +01:00
Matthias
aa54b77702 Rename _session to sessoin 2023-03-15 21:12:06 +01:00
Matthias
8073989c98 Remove more usages of .query 2023-03-15 21:10:47 +01:00
Matthias
d45599ca3b Fix some type errors 2023-03-15 21:09:25 +01:00
Matthias
b469addffb remove usage of .query from regular models 2023-03-15 21:00:30 +01:00
Matthias
47ab285252 Minor test fix 2023-03-15 20:49:35 +01:00
Matthias
95ff59a21c Improve documentation for get_trades_proxy 2023-03-15 07:23:54 +01:00
Matthias
7e08e3a59a Update example to use get_trades_proxy 2023-03-15 07:22:07 +01:00
robcaulk
4550447409 cheat flake8 for now until we can refactor save into the model class 2023-03-14 21:13:30 +01:00
Matthias
8f29312c9e Minimum re-entry stake should not include stoploss 2023-03-14 08:14:01 +01:00
Matthias
5c280d5649 Improve emergency_exit handling 2023-03-13 20:28:13 +01:00
Matthias
b23cea6e59 Bump ruff to 0.0.255 2023-03-13 20:16:12 +01:00
Matthias
487469680f Use correct exception type for ccxt.InvalidOrder 2023-03-13 20:13:12 +01:00
Matthias
8fd13933c3 Improve variable naming 2023-03-13 19:51:03 +01:00
Matthias
cf70deaf8d Disallow negative liquidation prices
part of #8300
2023-03-13 19:41:39 +01:00
Matthias
3d31eca365 Update Exception to contain more info
part of #8300
2023-03-13 19:40:52 +01:00
Matthias
d723979c42 Move total_trades to explicit variable 2023-03-13 19:21:53 +01:00
Yinon Polak
366740885a reduce mlp number of parameters for testing 2023-03-13 20:18:26 +02:00
Yinon Polak
918889a2bd reduce mlp number of parameters for testing 2023-03-13 20:09:12 +02:00
pbs
fc6d7f012e Support for python 3.11 2023-03-13 17:34:34 +00:00
Matthias
1947fab3d7 Merge pull request #8315 from freqtrade/dependabot/pip/develop/uvicorn-0.21.0
Bump uvicorn from 0.20.0 to 0.21.0
2023-03-13 18:11:13 +01:00
Matthias
cdb97e64ab Merge pull request #8323 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.7.1
Bump pypa/gh-action-pypi-publish from 1.6.4 to 1.7.1
2023-03-13 18:10:04 +01:00
Matthias
daa59f6248 Merge pull request #8322 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.2
Bump mkdocs-material from 9.1.1 to 9.1.2
2023-03-13 18:08:08 +01:00
Yinon Polak
9c8c30b0e8 add test 2023-03-13 17:17:00 +02:00
initrv
f3a1177bad bring inc back 2023-03-13 17:53:35 +03:00
dependabot[bot]
ad5afd3047 Bump uvicorn from 0.20.0 to 0.21.0
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.20.0 to 0.21.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.20.0...0.21.0)

---
updated-dependencies:
- dependency-name: uvicorn
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 08:08:57 +00:00
Matthias
458bfcc89b Merge pull request #8324 from freqtrade/dependabot/pip/develop/urllib3-1.26.15
Bump urllib3 from 1.26.14 to 1.26.15
2023-03-13 09:02:17 +01:00
Matthias
d4122c36ac Merge pull request #8317 from freqtrade/dependabot/pip/develop/fastapi-0.94.0
Bump fastapi from 0.92.0 to 0.94.0
2023-03-13 09:01:59 +01:00
Matthias
0e663a5bf8 Refresh binance cached leverage tiers 2023-03-13 07:06:59 +01:00
Matthias
562efd1841 Merge pull request #8320 from freqtrade/dependabot/pip/develop/pytest-7.2.2
Bump pytest from 7.2.1 to 7.2.2
2023-03-13 06:59:00 +01:00
Matthias
7baa2b9005 Merge pull request #8321 from freqtrade/dependabot/pip/develop/mypy-1.1.1
Bump mypy from 1.0.1 to 1.1.1
2023-03-13 06:58:32 +01:00
dependabot[bot]
10c5adfa50 Bump fastapi from 0.92.0 to 0.94.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.92.0 to 0.94.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.92.0...0.94.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 05:37:55 +00:00
Matthias
44c4729a9d Merge pull request #8319 from freqtrade/dependabot/pip/develop/pydantic-1.10.6
Bump pydantic from 1.10.5 to 1.10.6
2023-03-13 06:28:28 +01:00
dependabot[bot]
dc6af9a1a7 Bump urllib3 from 1.26.14 to 1.26.15
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.14 to 1.26.15.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.14...1.26.15)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 03:57:54 +00:00
dependabot[bot]
82707be7d0 Bump pypa/gh-action-pypi-publish from 1.6.4 to 1.7.1
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.6.4 to 1.7.1.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.6.4...v1.7.1)

---
updated-dependencies:
- dependency-name: pypa/gh-action-pypi-publish
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 03:57:48 +00:00
dependabot[bot]
b800f27092 Bump mkdocs-material from 9.1.1 to 9.1.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.1 to 9.1.2.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.1.1...9.1.2)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 03:57:46 +00:00
dependabot[bot]
31daf72cc6 Bump mypy from 1.0.1 to 1.1.1
Bumps [mypy](https://github.com/python/mypy) from 1.0.1 to 1.1.1.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v1.0.1...v1.1.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 03:57:40 +00:00
dependabot[bot]
22ebf04daa Bump pytest from 7.2.1 to 7.2.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.1 to 7.2.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.2.1...7.2.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 03:57:29 +00:00
dependabot[bot]
52a091e063 Bump pydantic from 1.10.5 to 1.10.6
Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.5 to 1.10.6.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v1.10.6/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.5...v1.10.6)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 03:57:23 +00:00
Yinon Polak
d7ea750823 revert to using model_training_parameters 2023-03-13 00:35:51 +02:00
Yinon Polak
b6096efadd logging change 2023-03-13 00:35:14 +02:00
Yinon Polak
b927c9dc01 remove train loss calculation from estimate_loss 2023-03-13 00:17:34 +02:00
Yinon Polak
523a58d3d6 simplify statement for pytorch file_type extension 2023-03-13 00:16:44 +02:00
Matthias
fbca8e6587 Allow empty pairlock reasons through api
closes #8312
2023-03-12 21:31:08 +01:00
initrv
a10f78e3ef fix increment in case of 0 2023-03-12 23:29:27 +03:00
hippocritical
8987e5f108 Merge branch 'freqtrade:develop' into strategy_utils 2023-03-12 20:14:40 +01:00
Matthias
f584edf809 Improve tests by simply running a full strategy through everything 2023-03-12 16:45:56 +01:00
Matthias
f5848ea891 Add test for successful_buys 2023-03-12 16:29:18 +01:00
Matthias
b5c4f9ebe2 Split updater_tests to be clearer 2023-03-12 16:27:54 +01:00
Matthias
0911cd72a2 Add test for strategy-updater start method 2023-03-12 15:59:14 +01:00
Matthias
d2a412d2c6 Simplify start_strategy_update 2023-03-12 15:47:03 +01:00
Matthias
cb086f79ff Improve doc wording and command parameters 2023-03-12 15:46:44 +01:00
Matthias
d9bff68501 Merge pull request #8311 from froggleston/develop
Fix None limit on pair_candles RPC call
2023-03-12 15:25:30 +01:00
Matthias
5bfee44bba Whitespace fix 2023-03-12 15:24:27 +01:00
Yinon Polak
0012fe36ca sort imports 2023-03-12 16:16:04 +02:00
hippocritical
d186f8f1e1 Merge branch 'freqtrade:develop' into strategy_utils 2023-03-12 14:40:02 +01:00
Yinon Polak
cb17b36981 simplify file_type check comparisons 2023-03-12 14:50:08 +02:00
froggleston
aa283a0447 Fix None limit on pair_candles RPC call 2023-03-12 12:44:12 +00:00
Yinon Polak
f9fdf1c31b generalize mlp model 2023-03-12 14:31:08 +02:00
Yinon Polak
1cf0e7be24 use one iteration on all test and train data for evaluation 2023-03-12 12:48:15 +02:00
initrv
82cb107520 add tensorboard category 2023-03-12 01:32:55 +03:00
Matthias
b23841fbfe Bump ccxt to 2.9.12 2023-03-11 17:35:30 +01:00
Matthias
8726a4645d Don't use deprecated Type construct 2023-03-11 15:15:32 +01:00
Matthias
59d2ff3ffa Simplify handle_cancel_exit 2023-03-11 15:15:10 +01:00
Matthias
39c651e40c Remove pointless reset of close_profit 2023-03-11 15:15:02 +01:00
Matthias
a2336f256b Add profit descriptions
closes #8234
2023-03-11 08:25:45 +01:00
Matthias
a76ca771f8 telegram: Fix sending telegram message with exception 2023-03-10 18:09:05 +01:00
hippocritical
f722823b0d Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils 2023-03-10 09:24:08 +01:00
hippocritical
a3988f56b2 Sorry matthias, did not see that you already committed something and did overwrite you.
Added your version to it instead of mine and pushed again (since it was already overwritten by me).
2023-03-10 09:23:56 +01:00
hippocritical
5a467eb969 Merge branch 'freqtrade:develop' into strategy_utils 2023-03-10 09:18:44 +01:00
hippocritical
5f8202e1b5 Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils
# Conflicts:
#	freqtrade/commands/strategy_utils_commands.py
#	tests/test_strategy_updater.py
2023-03-10 09:00:00 +01:00
hippocritical
bfc7f48f17 added checks for python3.8 or lower since ast_comments.unparse() needs python 3.9 or higher.
testing with python 3.8 would make the build fail tests, skipping it there.
2023-03-10 08:59:07 +01:00
Matthias
5b2a291109 Merge pull request #8273 from freqtrade/stop_from_open_lev
Stop from open lev
2023-03-09 19:44:16 +01:00
Matthias
d3a3ddbc61 Check if exchang provides bid/ask via fetch_tickers - and fail with spread filter if it doesn't.
closes #8286
2023-03-09 19:42:43 +01:00
Yinon Polak
8a9f2aedbb improve documentation 2023-03-09 14:55:52 +02:00
Yinon Polak
e88a0d5248 convert single quotes to double quotes 2023-03-09 13:29:11 +02:00
Yinon Polak
2ef11faba7 reformat documentation 2023-03-09 13:25:20 +02:00
Yinon Polak
c9eee2944b reformat documentation 2023-03-09 13:01:04 +02:00
Yinon Polak
6f962362f2 expand pytorch trainer documentation 2023-03-09 12:45:46 +02:00
Yinon Polak
ba5de0cd00 add documentation 2023-03-09 11:21:10 +02:00
Yinon Polak
3081b9402b add documentation 2023-03-09 11:14:54 +02:00
Matthias
30fd1e742e Add 3.8 block for strategyUpdater 2023-03-09 07:46:58 +00:00
Matthias
4d8e3c25bd Merge branch 'develop' into strategy_utils 2023-03-09 07:12:48 +00:00
ASU
1132fa6093 feat: Added price_rounding modes in config 2023-03-09 02:11:31 +02:00
Matthias
29dfb5c169 Merge pull request #8291 from freqtrade/allow-ohlc-removal
allow user to drop ohlc from features in RL
2023-03-08 21:04:34 +01:00
robcaulk
d10ee0979a ensure training_features_list is updated properly 2023-03-08 19:37:11 +01:00
Matthias
0318486bee Update stoploss_from_open documentation for leverage adjustment 2023-03-08 19:35:26 +01:00
Robert Caulk
85e345fc48 Update BaseReinforcementLearningModel.py 2023-03-08 19:29:39 +01:00
Yinon Polak
1597c3aa89 set class names in IStrategy.set_freqai_targets method, also save class name with model meta data 2023-03-08 18:36:44 +02:00
Yinon Polak
7d26df01b8 fix tensor type hint 2023-03-08 16:17:19 +02:00
Yinon Polak
c8296ccb2d sort imports 2023-03-08 16:13:35 +02:00
Yinon Polak
8d60327d60 add missing import 2023-03-08 16:12:47 +02:00
Yinon Polak
04564dc134 add missing import 2023-03-08 16:11:51 +02:00
Yinon Polak
6161b858c4 sort imports 2023-03-08 16:10:25 +02:00
Yinon Polak
1921a07b89 sort imports 2023-03-08 16:08:04 +02:00
Yinon Polak
b65ade51be revert config_freqai_example changes 2023-03-08 16:05:02 +02:00
Yinon Polak
dfbb2e2b35 sort imports 2023-03-08 16:03:36 +02:00
Yinon Polak
1805db2b07 change documentation and small bugfix 2023-03-08 15:38:22 +02:00
Yinon Polak
76fbec0c17 ad multiclass target names encoder to ints 2023-03-08 14:29:38 +02:00
robcaulk
29d337fa02 ensure ohlc is dropped from both train and predict 2023-03-08 11:26:28 +01:00
Matthias
2c7ae756f5 Improve mock behavior 2023-03-08 07:05:59 +01:00
robcaulk
d9dc831772 allow user to drop ohlc from features in RL 2023-03-07 11:33:54 +01:00
Yinon Polak
4241bff32a type hints fixes 2023-03-06 20:15:36 +02:00
Yinon Polak
5dd60eda36 type hints fixes 2023-03-06 19:37:08 +02:00
Yinon Polak
8acdd0b47c type hints fixes 2023-03-06 19:14:54 +02:00
Yinon Polak
125085fbaf add freqai.model_exists pytorch file type support 2023-03-06 18:10:49 +02:00
Yinon Polak
7eedcb9c14 reformat code 2023-03-06 17:56:07 +02:00
Yinon Polak
e6e747bcd8 reformat code 2023-03-06 17:50:02 +02:00
Yinon Polak
348a08f1c4 add todo - currently assuming class labels are strings ['0.0', '1.0' .. n_classes]. need to resolve it per ClassifierModel 2023-03-06 16:41:47 +02:00
Yinon Polak
b1ac2bf515 use data loader, add evaluation on epoch 2023-03-06 16:16:45 +02:00
Matthias
b710bdaf6c Merge pull request #8284 from freqtrade/dependabot/pip/develop/ccxt-2.9.4
Bump ccxt from 2.8.98 to 2.9.4
2023-03-06 10:49:10 +01:00
Matthias
27fa297209 Merge pull request #8282 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.10
Bump types-python-dateutil from 2.8.19.9 to 2.8.19.10
2023-03-06 09:13:42 +01:00
dependabot[bot]
85e64cd121 Bump ccxt from 2.8.98 to 2.9.4
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.8.98 to 2.9.4.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/2.8.98...2.9.4)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 07:21:23 +00:00
Matthias
0d876d7a89 Merge branch 'develop' into dependabot/pip/develop/types-python-dateutil-2.8.19.10 2023-03-06 08:20:59 +01:00
Matthias
69e5377f3d Merge pull request #8280 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.5.post1
Bump sqlalchemy from 2.0.4 to 2.0.5.post1
2023-03-06 08:20:17 +01:00
Matthias
532ecaf2c8 Merge pull request #8276 from freqtrade/dependabot/pip/develop/pymdown-extensions-9.10
Bump pymdown-extensions from 9.9.2 to 9.10
2023-03-06 08:07:20 +01:00
Matthias
d779d60812 Expose total_profit_ratio through API 2023-03-06 07:10:02 +01:00
Matthias
c4a80e33ea Fix missing newline in telegram /status 2023-03-06 07:01:25 +01:00
Matthias
cab1b750b3 Improve test accuracy 2023-03-06 06:39:05 +01:00
Matthias
9d285e3dc0 Add total_profit_ratio to telegram output
part of #8234
2023-03-06 06:39:05 +01:00
Matthias
fff08f737f /status msg - improve formatting further 2023-03-06 06:39:05 +01:00
Matthias
ca789b3282 /status - whitespace 2023-03-06 06:39:05 +01:00
Matthias
11eea9b4e1 Fix formatting for /status Realized profit 2023-03-06 06:39:05 +01:00
Matthias
de015a2d7e Improve telegram message formatting 2023-03-06 06:39:05 +01:00
Matthias
4cfc7e4427 Merge pull request #8275 from freqtrade/dependabot/pip/develop/ruff-0.0.254
Bump ruff from 0.0.253 to 0.0.254
2023-03-06 06:38:57 +01:00
Matthias
0a525c6d32 Merge pull request #8274 from freqtrade/dependabot/pip/develop/orjson-3.8.7
Bump orjson from 3.8.6 to 3.8.7
2023-03-06 06:37:43 +01:00
Matthias
ae8c426025 Merge pull request #8278 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.38
Bump prompt-toolkit from 3.0.37 to 3.0.38
2023-03-06 06:37:21 +01:00
dependabot[bot]
0fe72510d5 Bump pymdown-extensions from 9.9.2 to 9.10
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 9.9.2 to 9.10.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/9.9.2...9.10)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 05:36:16 +00:00
Matthias
fecb9db072 Merge pull request #8277 from freqtrade/dependabot/pip/develop/cryptography-39.0.2
Bump cryptography from 39.0.1 to 39.0.2
2023-03-06 06:36:16 +01:00
Matthias
30ac648539 Merge pull request #8279 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.1
Bump mkdocs-material from 9.0.15 to 9.1.1
2023-03-06 06:35:31 +01:00
Matthias
25fd4a04d6 Update sqlalchemy QueryPropertyDescriptor to match latest version 2023-03-06 06:34:37 +01:00
Matthias
9750e9ca4e pre-commit python-dateutil 2023-03-06 06:32:33 +01:00
dependabot[bot]
a57b033745 Bump types-python-dateutil from 2.8.19.9 to 2.8.19.10
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.9 to 2.8.19.10.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 03:57:27 +00:00
dependabot[bot]
48e16f6aba Bump sqlalchemy from 2.0.4 to 2.0.5.post1
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.4 to 2.0.5.post1.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 03:57:18 +00:00
dependabot[bot]
d1d9e25c2e Bump mkdocs-material from 9.0.15 to 9.1.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.0.15 to 9.1.1.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.0.15...9.1.1)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 03:57:03 +00:00
dependabot[bot]
57969f8b01 Bump prompt-toolkit from 3.0.37 to 3.0.38
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.37 to 3.0.38.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.37...3.0.38)

---
updated-dependencies:
- dependency-name: prompt-toolkit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 03:56:58 +00:00
dependabot[bot]
8484427cf8 Bump cryptography from 39.0.1 to 39.0.2
Bumps [cryptography](https://github.com/pyca/cryptography) from 39.0.1 to 39.0.2.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/39.0.1...39.0.2)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 03:56:54 +00:00
dependabot[bot]
f4c17be8de Bump ruff from 0.0.253 to 0.0.254
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.253 to 0.0.254.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.253...v0.0.254)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 03:56:44 +00:00
dependabot[bot]
0bdd238d7f Bump orjson from 3.8.6 to 3.8.7
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.6 to 3.8.7.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.6...3.8.7)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-06 03:56:37 +00:00
hippocritical
1bb697e58c Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils 2023-03-05 18:48:54 +01:00
hippocritical
b072fae507 added strategy-updater compartment inside utils.md 2023-03-05 18:48:32 +01:00
hippocritical
9fa6bfa655 Merge branch 'freqtrade:develop' into strategy_utils 2023-03-05 16:25:17 +01:00
hippocritical
da44b39423 Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils 2023-03-05 16:20:46 +01:00
hippocritical
d0d6f53dec fixed github formatting errors 2023-03-05 16:19:26 +01:00
Yinon Polak
751b205618 initial commit 2023-03-05 16:59:24 +02:00
Matthias
d80760d20c bump ccxt to 2.8.98 2023-03-05 14:16:53 +01:00
hippocritical
5dd919b7ad Merge branch 'freqtrade:develop' into strategy_utils 2023-03-05 12:30:26 +01:00
Matthias
108a578772 Update tests to latest rpc changes 2023-03-04 20:17:19 +01:00
Matthias
9444bbb6f3 /maxentries should be in single tics. 2023-03-04 20:09:39 +01:00
Matthias
7c0c98a368 Properly format first entry value, too. 2023-03-04 20:08:20 +01:00
Matthias
c1d395a7d8 Revert "Bump ccxt to 2.8.88"
This reverts commit 51c15d894b.
2023-03-04 20:02:20 +01:00
Matthias
3f6795962f Update bybit orderbook test 2023-03-04 19:49:59 +01:00
Matthias
60e651b481 Updat bybit ohlcv data to v5 2023-03-04 19:49:37 +01:00
Matthias
548db18857 Improve wording on partial exit notifications 2023-03-04 19:27:55 +01:00
Matthias
aec11618ce Telegram improved formatting 2023-03-04 18:28:15 +01:00
Matthias
f0cbb4f949 Expose relative realized profit 2023-03-04 18:20:31 +01:00
Matthias
027e023443 Stop from open with leverage 2023-03-04 18:02:47 +01:00
Matthias
51c15d894b Bump ccxt to 2.8.88
closes #8270
2023-03-04 15:27:01 +01:00
Andy Lawless
b262f0b374 Update docs re: bot_loop_start in backtest 2023-03-03 20:46:43 +00:00
Andy Lawless
a3dee9350f Move bot_loop_start call to run on every candle 2023-03-03 20:37:05 +00:00
Matthias
d0045673fa Add explicit test for stoploss_from_open 2023-03-03 20:32:33 +01:00
hippocritical
d92971cca1 Merge branch 'freqtrade:develop' into strategy_utils 2023-03-03 18:56:00 +01:00
hippocritical
87b7513401 fixed --strategy-list
moved ast comments to requirements.txt >=1.0.0 (since that is the first version that adds the comments unparsing)
2023-03-03 18:53:09 +01:00
Matthias
c03c3a5706 improve order REPR display 2023-03-03 18:12:41 +01:00
Matthias
9573974c47 Update deprecations document 2023-03-03 06:36:35 +01:00
Matthias
6e9ff5fdd8 Merge pull request #8202 from freqtrade/remove-populate-any-indicators
remove populate_any_indicators
2023-03-03 06:33:25 +01:00
Matthias
022f85095e Show Number of exits
part of #8234
2023-03-03 06:31:40 +01:00
Matthias
6a0848a3a9 Merge pull request #8267 from freqtrade/python_3.11
Python 3.11
2023-03-03 06:31:33 +01:00
Matthias
13376fdad8 Merge pull request #8220 from eSAMTrade/remove-redundant-dependencies
removed redundant dependencies from environment.yml
2023-03-03 06:25:22 +01:00
Matthias
5b0c143713 Update some comments about 3.11 2023-03-02 19:39:31 +01:00
Matthias
5d0e14b564 Don't mock full modules 2023-03-02 18:23:49 +01:00
Matthias
38050b5346 Simplify "model-run" conditions 2023-03-02 18:23:49 +01:00
Matthias
b1a5776f14 Skip reinforcement learning for python 3.11 2023-03-02 18:23:49 +01:00
Matthias
7a7f16b658 Skip catboost tests on py3.11 2023-03-02 18:23:49 +01:00
Matthias
684d310ea0 Limit catboost to python <3.11 2023-03-02 18:23:49 +01:00
Matthias
49bfa556bf Update CI to test against python 3.11 2023-03-02 18:23:49 +01:00
Matthias
e228733f1a Merge pull request #8264 from xmatthias/sqlalchemy_2
Sqlalchemy 2
2023-03-02 18:23:01 +01:00
Matthias
103bd9e2f2 keep Trade.session private 2023-03-02 07:26:50 +01:00
Matthias
ba38a826e9 Update missing mocks 2023-03-02 06:46:17 +01:00
Matthias
8103656ae1 Bump mypy in pre-commit 2023-03-02 06:36:03 +01:00
Matthias
b980f45b2b Fix test mypy errors 2023-03-02 06:23:01 +01:00
Matthias
b4b8dde4fb Add sqlalchemy to pre-commit dependencies 2023-03-01 20:41:49 +01:00
Matthias
59d57d3466 Improve test resiliance 2023-03-01 20:32:56 +01:00
Matthias
f0f72fdd33 Don't define "mapped" on LocalTrade class 2023-03-01 20:32:32 +01:00
Matthias
388dfec50b Remove last type error 2023-03-01 20:32:32 +01:00
Matthias
874413ccc5 Fix some style violations 2023-03-01 20:32:32 +01:00
Matthias
4a35d32b6a Improve trade stop types 2023-03-01 20:32:32 +01:00
Matthias
a1166b1077 allow null fee on calc_base_close 2023-03-01 20:32:32 +01:00
Matthias
e5c9cde36f Update trades_proxy typing 2023-03-01 20:32:32 +01:00
Matthias
b5f55c9b14 Improve type safety in backtesting 2023-03-01 20:32:32 +01:00
Matthias
7c09c01788 Add some more typehints 2023-03-01 20:32:32 +01:00
Matthias
0f914cf2bd Use Mapped for LocalTrade
this won't initialize sqlalchemy, as the base class is not inheriting from sqlalchemy.
2023-03-01 20:32:32 +01:00
Matthias
d175ab495b Move SessionType to base module 2023-03-01 20:32:32 +01:00
Matthias
f2f4158974 Bump sqlalchemy to 2.0.4 2023-03-01 20:32:32 +01:00
Matthias
764001a4c2 Don't reuse variable 2023-03-01 20:32:32 +01:00
Matthias
b65cff0adc Update "Query" type 2023-03-01 20:32:32 +01:00
Matthias
db4f4498dc Experimentally type query property ... 2023-03-01 20:32:32 +01:00
Matthias
c2c039151c Improve typesafety around trade object 2023-03-01 20:32:32 +01:00
Matthias
8765e3a4d6 Fix some Type issues 2023-03-01 20:32:32 +01:00
Matthias
f6b3998bbd Fix backtesting type incompatibilities 2023-03-01 20:32:32 +01:00
Matthias
0691bbaad9 Update some db types 2023-03-01 20:32:32 +01:00
Matthias
101d9ab87f Improvements - tests runnable again 2023-03-01 20:32:32 +01:00
Matthias
65a5cf64df Re-type session 2023-03-01 20:32:32 +01:00
Matthias
608a7c2d38 Add safe_close_rate 2023-03-01 20:32:31 +01:00
Matthias
e59eaf33e0 Update _session to session 2023-03-01 20:32:31 +01:00
Matthias
47b66f3220 More fun with types 2023-03-01 20:32:31 +01:00
Matthias
491f49388c "Mapped" for trade_model 2023-03-01 20:32:31 +01:00
Matthias
bb116456a9 Update Types for Order object 2023-03-01 20:32:31 +01:00
Matthias
13b1a3e737 Properly pairlock columns using mapped 2023-03-01 20:32:31 +01:00
Matthias
98791752a9 Update TradeModels to mapped_column 2023-03-01 20:32:31 +01:00
Matthias
0bd9b00132 Pairlock to mappedColumn 2023-03-01 20:32:31 +01:00
Matthias
39a658eac2 Update DeclarativeBase 2023-03-01 20:32:31 +01:00
Matthias
3c019e0e16 tentative augmented typing of Trade object 2023-03-01 20:32:31 +01:00
Matthias
41e27ba621 Enhance some type info 2023-03-01 20:32:31 +01:00
Matthias
3a9d83f86c Mypy: define sqlalchemy plugin 2023-03-01 20:32:31 +01:00
Matthias
9d455f58b1 Improve some trade model Types 2023-03-01 20:32:31 +01:00
Matthias
829e10ff87 Improve Type for models.py 2023-03-01 20:32:31 +01:00
Matthias
b62830031f Dummy-type query objects 2023-03-01 20:32:31 +01:00
Matthias
a553a9923a Update types for pairlock 2023-03-01 20:32:31 +01:00
dependabot[bot]
a629d455fb Bump sqlalchemy from 1.4.46 to 2.0.3
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.4.46 to 2.0.3.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-01 20:32:31 +01:00
Matthias
feabed30a3 Update remaining exchange mock occurances 2023-03-01 20:27:15 +01:00
Matthias
2ca8b0b12e Update more exchange mocks to use EXMS 2023-03-01 20:27:15 +01:00
Matthias
bcdf4e0fe8 Use variable for exchange mocks to shorten lines 2023-03-01 20:27:15 +01:00
Matthias
78e5ec13bb Use absolute path for generic mocks 2023-03-01 20:27:15 +01:00
Matthias
8b51f5f563 Lowercase exchange ID 2023-03-01 20:27:15 +01:00
Matthias
756c284ecd Merge pull request #8225 from freqtrade/ruff2
Ruff - add PTH rule and subsequent changes
2023-03-01 20:27:06 +01:00
Matthias
d1b2e38ae9 if a stoploss order exists, always allow canceling that 2023-02-28 20:39:17 +01:00
Matthias
dd10dec73d Improve variable wording 2023-02-28 20:31:02 +01:00
Matthias
f822f1795a Reduce /status verbosity 2023-02-28 19:54:56 +01:00
Matthias
386915378b Improve /status message (show Total profit) 2023-02-28 19:54:47 +01:00
Matthias
2f1c5cf143 Remove pointless pylint rules 2023-02-28 18:22:17 +01:00
Matthias
3706d28125 use pytest.approx in favor of "prec_satoshi" ... 2023-02-28 18:20:37 +01:00
Matthias
0707e70183 Remove deprecated current_profit from api responses 2023-02-28 18:20:37 +01:00
Matthias
bebee15d10 Improve TradeSchema readability 2023-02-28 18:20:36 +01:00
Matthias
5660036f47 Merge pull request #8245 from eSAMTrade/bugfix-8244
Fix last_process related bug in RPC.health (BUG-#8231)
2023-02-28 18:18:53 +01:00
Matthias
262f03bc92 Add backtest warning for market_direction feature 2023-02-28 17:26:38 +01:00
Matthias
244fd0e731 Merge pull request #8184 from LangLazy/feature
Feature market direction
2023-02-28 17:22:31 +01:00
Matthias
fe6af0ef5d Merge pull request #8258 from freqtrade/dependabot/pip/develop/xgboost-1.7.4
Bump xgboost from 1.7.3 to 1.7.4
2023-02-28 12:06:17 +01:00
Matthias
fd63f50221 Merge pull request #8257 from freqtrade/dependabot/pip/develop/ccxt-2.8.54
Bump ccxt from 2.8.17 to 2.8.54
2023-02-28 12:05:42 +01:00
Matthias
5c13fbb0b8 Merge pull request #8256 from freqtrade/dependabot/pip/develop/types-cachetools-5.3.0.4
Bump types-cachetools from 5.3.0.0 to 5.3.0.4
2023-02-28 12:02:39 +01:00
Matthias
9a5b090894 pre-commit cachetools 2023-02-28 11:23:11 +01:00
dependabot[bot]
5a3f23f00c Bump types-cachetools from 5.3.0.0 to 5.3.0.4
Bumps [types-cachetools](https://github.com/python/typeshed) from 5.3.0.0 to 5.3.0.4.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-cachetools
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 09:26:32 +00:00
Matthias
8b347dfdcf Merge pull request #8259 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.9
Bump types-python-dateutil from 2.8.19.8 to 2.8.19.9
2023-02-28 10:25:35 +01:00
Matthias
deca5479f0 pre-commit dateutil-types 2023-02-28 10:05:38 +01:00
Matthias
2ea71d466c Merge pull request #8255 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.37
Bump prompt-toolkit from 3.0.36 to 3.0.37
2023-02-28 09:53:24 +01:00
Matthias
200f5ac157 Merge pull request #8252 from freqtrade/dependabot/pip/develop/ruff-0.0.253
Bump ruff from 0.0.252 to 0.0.253
2023-02-28 09:53:06 +01:00
Matthias
9e77effacb Merge pull request #8253 from freqtrade/dependabot/pip/develop/pre-commit-3.1.1
Bump pre-commit from 3.1.0 to 3.1.1
2023-02-28 09:52:35 +01:00
Matthias
f5f883202d Merge pull request #8254 from freqtrade/dependabot/pip/develop/plotly-5.13.1
Bump plotly from 5.13.0 to 5.13.1
2023-02-28 09:52:02 +01:00
dependabot[bot]
594757d27d Bump types-python-dateutil from 2.8.19.8 to 2.8.19.9
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.8 to 2.8.19.9.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 05:52:58 +00:00
dependabot[bot]
fed5d87cfd Bump xgboost from 1.7.3 to 1.7.4
Bumps [xgboost](https://github.com/dmlc/xgboost) from 1.7.3 to 1.7.4.
- [Release notes](https://github.com/dmlc/xgboost/releases)
- [Changelog](https://github.com/dmlc/xgboost/blob/master/NEWS.md)
- [Commits](https://github.com/dmlc/xgboost/compare/v1.7.3...v1.7.4)

---
updated-dependencies:
- dependency-name: xgboost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 05:52:55 +00:00
dependabot[bot]
adf5b7f233 Bump ccxt from 2.8.17 to 2.8.54
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.8.17 to 2.8.54.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/2.8.17...2.8.54)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 05:52:48 +00:00
dependabot[bot]
1b4c831469 Bump prompt-toolkit from 3.0.36 to 3.0.37
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.36 to 3.0.37.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.36...3.0.37)

---
updated-dependencies:
- dependency-name: prompt-toolkit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 05:52:40 +00:00
dependabot[bot]
78e7ab92d8 Bump plotly from 5.13.0 to 5.13.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.13.0 to 5.13.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v5.13.0...v5.13.1)

---
updated-dependencies:
- dependency-name: plotly
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 05:52:35 +00:00
dependabot[bot]
6e45e998ac Bump pre-commit from 3.1.0 to 3.1.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.1.0...v3.1.1)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 05:52:29 +00:00
dependabot[bot]
a75e9f193f Bump ruff from 0.0.252 to 0.0.253
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.252 to 0.0.253.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.252...v0.0.253)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 05:52:21 +00:00
Matthias
0899e5cb83 Improve documentation wording 2023-02-28 06:41:18 +01:00
Rahul
39331b59ed Fixed issues raised in PR 2023-02-27 22:51:22 +00:00
Matthias
65d1598a90 Show absolute profit in /status command 2023-02-27 21:17:02 +01:00
Matthias
46b987042b Include realized_profit in api output 2023-02-27 20:47:07 +01:00
Matthias
75d1dd2793 Properly round Stake currencies in telegram message 2023-02-27 20:47:07 +01:00
Matthias
e5c68661fe Simplify code line wrapping 2023-02-27 19:57:28 +01:00
Matthias
e482feed7d Further improve behavior for telegram /status with stop on exchange 2023-02-27 19:40:02 +01:00
Matthias
87fe4108a2 Fix order numeration to also work with stoploss on exchange 2023-02-27 18:24:19 +01:00
Matthias
02c831a4e7 Improve Note wording
closes #8235
2023-02-27 18:04:21 +01:00
ASU
bcd416c83d Removed unresolved FreqTrade typehint 2023-02-27 16:18:24 +02:00
ASU
1d5608d627 Fix last_process related bug in RPC.health 2023-02-27 12:14:38 +02:00
Matthias
79a14bcbe7 Merge pull request #8237 from freqtrade/dependabot/pip/develop/types-tabulate-0.9.0.1
Bump types-tabulate from 0.9.0.0 to 0.9.0.1
2023-02-27 10:44:54 +01:00
Matthias
81bc515e5d Bump tabulate types for pre-commit 2023-02-27 10:00:41 +01:00
dependabot[bot]
201522f1b1 Bump types-tabulate from 0.9.0.0 to 0.9.0.1
Bumps [types-tabulate](https://github.com/python/typeshed) from 0.9.0.0 to 0.9.0.1.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-tabulate
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 07:10:51 +00:00
Matthias
44b1005077 Merge pull request #8240 from freqtrade/dependabot/pip/develop/types-requests-2.28.11.15
Bump types-requests from 2.28.11.13 to 2.28.11.15
2023-02-27 08:02:57 +01:00
Matthias
48b21d00d2 bump pre-commit requests 2023-02-27 07:12:12 +01:00
dependabot[bot]
e83eefb71d Bump types-requests from 2.28.11.13 to 2.28.11.15
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.13 to 2.28.11.15.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 06:10:08 +00:00
Matthias
345a47ede7 Merge pull request #8238 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.8
Bump types-python-dateutil from 2.8.19.6 to 2.8.19.8
2023-02-27 07:06:51 +01:00
Matthias
03d41bdf46 Merge pull request #8243 from freqtrade/dependabot/pip/develop/mkdocs-material-9.0.15
Bump mkdocs-material from 9.0.13 to 9.0.15
2023-02-27 06:32:31 +01:00
Matthias
05f3884722 bump pre-commit dateutil 2023-02-27 06:25:13 +01:00
Matthias
aaa0f49f31 Merge pull request #8241 from freqtrade/dependabot/pip/develop/ruff-0.0.252
Bump ruff from 0.0.251 to 0.0.252
2023-02-27 06:24:24 +01:00
Matthias
303c628998 Merge pull request #8239 from freqtrade/dependabot/pip/develop/pre-commit-3.1.0
Bump pre-commit from 3.0.4 to 3.1.0
2023-02-27 06:23:26 +01:00
Matthias
8cab2e85be Merge pull request #8236 from freqtrade/dependabot/pip/develop/pydantic-1.10.5
Bump pydantic from 1.10.4 to 1.10.5
2023-02-27 06:23:04 +01:00
dependabot[bot]
a4423778d5 Bump mkdocs-material from 9.0.13 to 9.0.15
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.0.13 to 9.0.15.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.0.13...9.0.15)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 03:58:01 +00:00
dependabot[bot]
2a7f86bfb4 Bump ruff from 0.0.251 to 0.0.252
Bumps [ruff](https://github.com/charliermarsh/ruff) from 0.0.251 to 0.0.252.
- [Release notes](https://github.com/charliermarsh/ruff/releases)
- [Changelog](https://github.com/charliermarsh/ruff/blob/main/BREAKING_CHANGES.md)
- [Commits](https://github.com/charliermarsh/ruff/compare/v0.0.251...v0.0.252)

---
updated-dependencies:
- dependency-name: ruff
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 03:57:22 +00:00
dependabot[bot]
7add902bc7 Bump pre-commit from 3.0.4 to 3.1.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.0.4 to 3.1.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.0.4...v3.1.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 03:57:04 +00:00
dependabot[bot]
cc78054b8c Bump types-python-dateutil from 2.8.19.6 to 2.8.19.8
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.6 to 2.8.19.8.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 03:56:57 +00:00
dependabot[bot]
533f97f080 Bump pydantic from 1.10.4 to 1.10.5
Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.4 to 1.10.5.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v1.10.5/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.4...v1.10.5)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-27 03:56:50 +00:00
Matthias
5b0bc5bbc5 Don't "fix" dry-run kucoin orders
closes #8229
2023-02-26 16:17:41 +01:00
Matthias
6f7ab97fc3 Improve bybit test coverage 2023-02-26 16:17:41 +01:00
Matthias
27676f4aa2 Add explicit bybit test 2023-02-26 16:17:41 +01:00
Matthias
79dc972e5a Add explicit test for kucoin 2023-02-26 16:17:41 +01:00
Matthias
66c2e145cb Merge pull request #7975 from freqtrade/improve-freqai-gap-handling
handle data gaps between FreqAI and DP better
2023-02-26 15:26:46 +01:00
Matthias
d3d7cb1b14 Merge pull request #8216 from freqtrade/close-rl-env
Close training and eval environments in ReinforcementLearner_multiproc
2023-02-26 15:20:32 +01:00
Matthias
e88bb4e05c Revert small change - otherwise the data is never updated. 2023-02-26 15:09:25 +01:00
Matthias
a31045874e Merge pull request #8224 from freqtrade/new_release
New release 2023.2
2023-02-26 14:53:52 +01:00
ASU
7e7ae144a9 Merge branch 'develop' into remove-redundant-dependencies 2023-02-26 04:29:30 +02:00
Matthias
305eda74e2 Enable Complexity for ruff 2023-02-25 20:50:26 +01:00
Matthias
84d905a648 Fix missed test 2023-02-25 17:39:18 +01:00
ASU
32ce819889 Removed environment.yml and updated documentation 2023-02-25 18:23:07 +02:00
Matthias
26315b6bc2 add PTH ruff selection 2023-02-25 17:17:05 +01:00
Matthias
d014e4590e use Path.open() instead of open 2023-02-25 17:15:54 +01:00
Matthias
c8a4a773ee Fix _pairs_last_refresh_time storing the wrong date
Depending on the drop_incomplete settings, this can lead to implicit bugs
2023-02-25 16:18:46 +01:00
Matthias
ff3aa7c1a9 Bump Version to 2023.3.dev 2023-02-25 16:18:33 +01:00
Matthias
84b8cee004 Merge branch 'stable' into develop 2023-02-25 16:18:25 +01:00
Matthias
6d9e50d60c Merge pull request #8209 from freqtrade/ruff
Ruff
2023-02-25 16:14:26 +01:00
Matthias
25724ef729 Version bump 2023.2 2023-02-25 16:02:36 +01:00
Matthias
46458bf5eb Merge branch 'stable' into new_release 2023-02-25 16:02:26 +01:00
Matthias
be352ae014 Update more enums 2023-02-25 15:49:45 +01:00
Matthias
563742f13c Fix enum behavior for python 3.11
closes #8221
closes #8217
2023-02-25 15:49:45 +01:00
Matthias
dc2cfee056 Don't request sorted candles from HitBTC.
Apparently hitBTC cannot properly handle this anymore.

closes #8214
2023-02-25 13:49:16 +01:00
Matthias
c6455c4131 Pin scikit-learn to <1.2.0 for conda as well
closes #8223
2023-02-25 13:39:48 +01:00
ASU
7bcae7b665 removed redundant dependencies from environment.yml 2023-02-25 00:26:20 +02:00
Matthias
3471f5204b Don't reuse variable 2023-02-24 14:34:41 +01:00
Matthias
521025037d Merge pull request #8203 from freqtrade/add-bufer-train-data-candles
Add buffer_train_data_candles feature
2023-02-24 13:25:18 +01:00
Matthias
ac2a2512ef Merge pull request #8210 from freqtrade/clean-data-drawer
Allow user to control number of historical model files
2023-02-24 13:19:38 +01:00
Robert Caulk
607d90ca5d Merge pull request #8215 from freqtrade/fix-freqai-index
fix link in freqai index.md
2023-02-24 12:38:56 +01:00
robcaulk
cb80d7c26f close the multi_proc env before creating new ones in an attempt to avoid increasing processes 2023-02-24 11:19:54 +01:00
robcaulk
c283e22325 fix purge_old_models description in parameter table 2023-02-24 10:54:43 +01:00
robcaulk
5ac4b81a5d fix link in freqai index.md 2023-02-24 10:50:39 +01:00
Matthias
34c42be74f Fix minor stylistic errors 2023-02-23 20:06:10 +01:00
Matthias
659140e190 Add bt-error to UI backtest method. 2023-02-23 20:06:10 +01:00
Matthias
63e5d33028 Better handle backtest errors 2023-02-23 20:06:10 +01:00
Matthias
2fed924a0d Merge pull request #8211 from TheJoeSchr/refactor-1
refactor(if-gate): use temp variable instead of if-gate
2023-02-23 18:14:21 +01:00
Joe Schr
7d906fd4c2 refactor(if-gate): use temp variable instead of if-gate 2023-02-23 10:58:43 +01:00
Matthias
6b829d839b Improve ruff config 2023-02-23 07:12:54 +01:00
Matthias
bf968a9fd8 Use actions as documented 2023-02-23 06:51:03 +01:00
Matthias
cdc96136bc Merge pull request #8207 from freqtrade/add-freqai-disclaimer
add imposter disclaimer to FreqAI front page
2023-02-23 06:49:18 +01:00
Matthias
23a71680de Update Doc-box typo 2023-02-23 06:29:58 +01:00
robcaulk
150b7f9c87 lighten the disclaimer message 2023-02-22 22:33:41 +01:00
robcaulk
b8f011a2ab give users ability to decide how many models to keep in dry/live 2023-02-22 22:27:56 +01:00
robcaulk
9633081c31 remove remnants of follower, clean data-drawer, improve doc 2023-02-22 22:01:41 +01:00
Matthias
b4ea37d598 Remove flake8 in favor of ruff 2023-02-22 21:08:17 +01:00
Matthias
549a0e1c44 Add ruff linting - initial configuration 2023-02-22 21:06:11 +01:00
Matthias
2bc9413be1 Fix minor stylistic errors 2023-02-22 20:58:24 +01:00
Matthias
e6766b9b82 Add bt-error to UI backtest method. 2023-02-22 20:22:59 +01:00
Matthias
75bc5809a9 Better handle backtest errors 2023-02-22 20:02:51 +01:00
Matthias
0f878daa98 Remove some too generic noqa statements 2023-02-22 19:56:32 +01:00
Matthias
01d51aa979 Add necesary noqa statements 2023-02-22 19:56:32 +01:00
Matthias
f8fa5bd969 Fix gone wrong noqa ... 2023-02-22 19:56:32 +01:00
Matthias
18bbfa10e5 Reduce amount of variables for API backtesting 2023-02-22 19:56:32 +01:00
Matthias
ff1258fd20 Better handle random UI backtest errors 2023-02-22 19:56:32 +01:00
Matthias
e56bf067c4 Merge pull request #8205 from amalysh/develop
* fixed filename in model_exists
2023-02-22 17:43:57 +01:00
robcaulk
3fbbc57a37 add imposter disclaimer to FreqAI front page 2023-02-22 17:08:30 +01:00
Alexander Malysh
070a7efd73 * fixed filename in model_exists 2023-02-22 14:52:20 +01:00
robcaulk
986bc63e54 raise OperationalException if latest historical data candle is older than earliest dataprovider candle 2023-02-21 21:23:58 +01:00
robcaulk
2b5c11c7b4 allow users to buffer train data with buffer_train_data_candles parameter 2023-02-21 21:08:34 +01:00
Matthias
62e120a602 Remove special treatment of cryptography for raspberries 2023-02-21 20:34:55 +01:00
Matthias
48ecc7f6dc Update freqai-reinforcement-learning docs
closes #8199
2023-02-21 19:55:32 +01:00
Matthias
43962476aa Remove non-working links, update links to https 2023-02-21 19:53:09 +01:00
Matthias
a4a3d27ac6 Improve FAQ page 2023-02-21 19:52:22 +01:00
Matthias
f4bd424226 Remove deprecated ubuntu image
Follows anouncement in https://github.blog/changelog/2022-08-09-github-actions-the-ubuntu-18-04-actions-runner-image-is-being-deprecated-and-will-be-removed-by-12-1-22/
2023-02-21 18:29:00 +01:00
Matthias
af137188f4 Update wrong FAQ entry 2023-02-21 18:05:20 +01:00
robcaulk
fd4e27d889 remove populate_any_indicators 2023-02-21 14:22:40 +01:00
Rahul Gudise
2261cbd92e fixed command regex and updated documentation 2023-02-20 16:22:17 -05:00
Rahul Gudise
3033e27466 Added documentation for new telegram command 2023-02-20 15:53:29 -05:00
Matthias
352f4962da Merge pull request #8198 from AchmadFathoni/develop
Fix outdated systemd related exception text.
2023-02-20 11:05:42 +01:00
Achmad Fathoni
789c867c8f Fix outdated systemd related exception text. 2023-02-20 16:30:23 +07:00
Matthias
4f794aae61 Merge pull request #8191 from freqtrade/dependabot/pip/develop/mkdocs-material-9.0.13
Bump mkdocs-material from 9.0.12 to 9.0.13
2023-02-20 08:06:53 +01:00
Matthias
bf6560e45b Merge pull request #8194 from freqtrade/dependabot/pip/develop/types-requests-2.28.11.13
Bump types-requests from 2.28.11.12 to 2.28.11.13
2023-02-20 08:06:37 +01:00
Matthias
ccf4fbed60 Merge pull request #8192 from freqtrade/dependabot/pip/develop/ccxt-2.8.17
Bump ccxt from 2.7.93 to 2.8.17
2023-02-20 07:11:49 +01:00
Matthias
250faf012d Bump types-requests for pre-commit 2023-02-20 06:55:58 +01:00
Matthias
3a9ffdf135 Merge pull request #8190 from freqtrade/dependabot/pip/develop/fastapi-0.92.0
Bump fastapi from 0.91.0 to 0.92.0
2023-02-20 06:55:17 +01:00
Matthias
ec1991d165 Merge pull request #8189 from freqtrade/dependabot/pip/develop/scipy-1.10.1
Bump scipy from 1.10.0 to 1.10.1
2023-02-20 06:54:16 +01:00
Matthias
4e1f5354fe Merge pull request #8196 from freqtrade/dependabot/pip/develop/mypy-1.0.1
Bump mypy from 1.0.0 to 1.0.1
2023-02-20 06:53:28 +01:00
dependabot[bot]
0cd28e2cab Bump mypy from 1.0.0 to 1.0.1
Bumps [mypy](https://github.com/python/mypy) from 1.0.0 to 1.0.1.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v1.0.0...v1.0.1)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 03:58:03 +00:00
dependabot[bot]
eb08ef6ced Bump types-requests from 2.28.11.12 to 2.28.11.13
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.12 to 2.28.11.13.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 03:57:41 +00:00
dependabot[bot]
a4e69574d3 Bump ccxt from 2.7.93 to 2.8.17
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.7.93 to 2.8.17.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/2.7.93...2.8.17)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 03:57:17 +00:00
dependabot[bot]
c85fc6c8ca Bump mkdocs-material from 9.0.12 to 9.0.13
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.0.12 to 9.0.13.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.0.12...9.0.13)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 03:57:10 +00:00
dependabot[bot]
f19128ad21 Bump fastapi from 0.91.0 to 0.92.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.91.0 to 0.92.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.91.0...0.92.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 03:56:55 +00:00
dependabot[bot]
2ef656fac0 Bump scipy from 1.10.0 to 1.10.1
Bumps [scipy](https://github.com/scipy/scipy) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.10.0...v1.10.1)

---
updated-dependencies:
- dependency-name: scipy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 03:56:50 +00:00
Matthias
e9c64c5839 Update dependency to cysystemd
closes #8187
2023-02-19 19:30:27 +01:00
Rahul
8927a92eaf fixed lint issue 2023-02-19 16:11:21 +00:00
Matthias
b0ec35d526 Merge pull request #7904 from freqtrade/feat/shuffle_after_split
add shuffle_after_split option
2023-02-19 15:03:04 +01:00
Rahul
5fb539190d addressed some issues mentioned in PR 2023-02-18 23:50:02 +00:00
Matthias
f89b63b0c5 Fix dry-run stoploss orders filling "in place" after restart. 2023-02-18 19:25:11 +01:00
Matthias
2c0fbd8500 Simplify test slightly 2023-02-18 18:07:35 +01:00
Rahul Gudise
ade64f25d3 fixed formatting 2023-02-17 17:08:39 -05:00
Rahul
72af1912ca added new text 2023-02-17 22:01:00 +00:00
hippocritical
08ca0f7c0f Merge branch 'freqtrade:develop' into strategy_utils 2023-02-17 21:07:23 +01:00
hippocritical
bcef00edee changed to ast_comments, added tests for comments. 2023-02-17 21:04:26 +01:00
hippocritical
06edc5c044 changed to ast_comments, added tests for comments. 2023-02-17 21:01:09 +01:00
Matthias
c4ec4db050 Merge pull request #8183 from th0rntwig/improve-freqai-docs
fix minor typos
2023-02-17 07:14:39 +01:00
Matthias
31c7b3e136 Update binance leverage tiers 2023-02-17 06:37:03 +01:00
Matthias
22700527ac Convert limit orders to market orders if they cross a threshold
closes #7786
2023-02-17 06:37:03 +01:00
Matthias
9600039686 Update dry-run fill method naming 2023-02-17 06:37:03 +01:00
Rahul
1a74ede126 Merge branch 'feature' of github.com:LangLazy/freqtrade into feature 2023-02-16 17:54:20 -05:00
Rahul Gudise
07c886a2b1 Merge branch 'freqtrade:develop' into feature 2023-02-16 17:54:14 -05:00
Rahul
b73089deb8 fixed a test 2023-02-16 17:51:50 -05:00
thorntwig
35fe37199d fix minor typos 2023-02-16 20:04:42 +01:00
robcaulk
351c5fbf7f add shuffle_after_split to conftest 2023-02-16 19:48:22 +01:00
Robert Caulk
f68543b151 Merge pull request #8182 from freqtrade/generalize-model-exists
generalize model_exists() for RL and Keras
2023-02-16 19:41:07 +01:00
robcaulk
be85ef2707 add documentation for shuffle_after_split, add to constants 2023-02-16 18:50:11 +01:00
robcaulk
b6a741b421 merge develop into feat/shuffle_after_split 2023-02-16 18:46:01 +01:00
robcaulk
36d65e00f9 generalize model_exists() for RL and Keras 2023-02-16 18:33:40 +01:00
Matthias
a2e1389943 Update Binance leverage code 2023-02-16 18:06:34 +01:00
Matthias
8ef110cc5f Rename ob variable to orderbook 2023-02-16 06:38:58 +01:00
Matthias
de7d274fcf Pass orderbook to dry-run fill logic 2023-02-16 06:38:58 +01:00
Matthias
7c10921564 Improve Orderbook typing to align for diff. exchanges 2023-02-16 06:38:58 +01:00
Matthias
a11f081d2d Merge pull request #8176 from freqtrade/robcaulk-patch-1
Update freqai.md
2023-02-16 06:14:56 +01:00
Robert Caulk
020c9a5cec Update freqai.md 2023-02-15 21:54:45 +01:00
Matthias
ecff21ac21 type Orderbook 2023-02-15 07:01:36 +01:00
Matthias
3397e47ccf Rename stoploss() to create_stoploss() 2023-02-14 20:42:08 +01:00
Matthias
6e55a873b3 Rename edge.stoploss to get_stoploss
this will make it clear that it's different from
2023-02-14 07:18:11 +01:00
Matthias
bddec476f9 Fix missing typehint in hyper.py 2023-02-13 20:13:26 +01:00
Matthias
cdd324d0a9 Rename stoploss_reached to ft_stoploss_reached 2023-02-13 20:08:54 +01:00
Matthias
ce7d24f529 Extract ft_stoploss_adjust to seperate method 2023-02-13 19:53:04 +01:00
Matthias
a0e2f98086 Merge pull request #8164 from freqtrade/dependabot/pip/develop/tensorboard-2.12.0
Bump tensorboard from 2.11.2 to 2.12.0
2023-02-13 19:34:14 +01:00
Matthias
69d5459460 Improve stop behavior in SIGTERM cases (docker). 2023-02-13 18:25:15 +01:00
Matthias
aafaff877b Merge pull request #8170 from freqtrade/dependabot/pip/develop/ccxt-2.7.93
Bump ccxt from 2.7.80 to 2.7.93
2023-02-13 18:17:29 +01:00
dependabot[bot]
9061c04f1d Bump ccxt from 2.7.80 to 2.7.93
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.7.80 to 2.7.93.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.7.80...2.7.93)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 16:09:57 +00:00
Matthias
9a2f6d2416 Merge pull request #8165 from freqtrade/dependabot/pip/develop/aiofiles-23.1.0
Bump aiofiles from 22.1.0 to 23.1.0
2023-02-13 09:50:11 +01:00
Matthias
b5121d3f4c Merge pull request #8166 from freqtrade/dependabot/pip/develop/aiohttp-3.8.4
Bump aiohttp from 3.8.3 to 3.8.4
2023-02-13 09:49:56 +01:00
Matthias
f3a6897870 Bump Docker images to latest minor version 2023-02-13 07:12:46 +01:00
Matthias
f16fd0ad23 Reenable binanceus active test 2023-02-13 07:12:46 +01:00
dependabot[bot]
f681ee7942 Bump aiohttp from 3.8.3 to 3.8.4
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.3 to 3.8.4.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.8.3...v3.8.4)

---
updated-dependencies:
- dependency-name: aiohttp
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 06:11:49 +00:00
dependabot[bot]
50a9df9b29 Bump aiofiles from 22.1.0 to 23.1.0
Bumps [aiofiles](https://github.com/Tinche/aiofiles) from 22.1.0 to 23.1.0.
- [Release notes](https://github.com/Tinche/aiofiles/releases)
- [Commits](https://github.com/Tinche/aiofiles/compare/v22.1.0...v23.1.0)

---
updated-dependencies:
- dependency-name: aiofiles
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 06:11:37 +00:00
dependabot[bot]
2a87ad044d Bump tensorboard from 2.11.2 to 2.12.0
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.11.2 to 2.12.0.
- [Release notes](https://github.com/tensorflow/tensorboard/releases)
- [Changelog](https://github.com/tensorflow/tensorboard/blob/master/RELEASE.md)
- [Commits](https://github.com/tensorflow/tensorboard/compare/2.11.2...2.12.0)

---
updated-dependencies:
- dependency-name: tensorboard
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 06:11:33 +00:00
Matthias
a573976406 Merge pull request #8158 from freqtrade/dependabot/pip/develop/types-requests-2.28.11.12
Bump types-requests from 2.28.11.8 to 2.28.11.12
2023-02-13 07:09:58 +01:00
Matthias
0b5b8e4c97 Merge pull request #8163 from freqtrade/dependabot/pip/develop/fastapi-0.91.0
Bump fastapi from 0.89.1 to 0.91.0
2023-02-13 07:09:44 +01:00
Matthias
ee158c1f55 Merge pull request #8162 from freqtrade/dependabot/pip/develop/mypy-1.0.0
Bump mypy from 0.991 to 1.0.0
2023-02-13 07:08:53 +01:00
Matthias
bf242ac4a2 Merge pull request #8156 from freqtrade/dependabot/pip/develop/mkdocs-material-9.0.12
Bump mkdocs-material from 9.0.11 to 9.0.12
2023-02-13 06:39:34 +01:00
Matthias
a800c19c14 Merge pull request #8157 from freqtrade/dependabot/pip/develop/orjson-3.8.6
Bump orjson from 3.8.5 to 3.8.6
2023-02-13 06:37:39 +01:00
Matthias
d14283b0e7 types-requests - precommit 2023-02-13 06:22:13 +01:00
dependabot[bot]
9faa926803 Bump fastapi from 0.89.1 to 0.91.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.89.1 to 0.91.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.89.1...0.91.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 03:58:55 +00:00
dependabot[bot]
48c331785c Bump mypy from 0.991 to 1.0.0
Bumps [mypy](https://github.com/python/mypy) from 0.991 to 1.0.0.
- [Release notes](https://github.com/python/mypy/releases)
- [Commits](https://github.com/python/mypy/compare/v0.991...v1.0.0)

---
updated-dependencies:
- dependency-name: mypy
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 03:58:34 +00:00
dependabot[bot]
bbb62c8a4b Bump types-requests from 2.28.11.8 to 2.28.11.12
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.8 to 2.28.11.12.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 03:57:16 +00:00
dependabot[bot]
b05999f6d5 Bump orjson from 3.8.5 to 3.8.6
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.5 to 3.8.6.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.5...3.8.6)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 03:57:11 +00:00
dependabot[bot]
ee209e3b44 Bump mkdocs-material from 9.0.11 to 9.0.12
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.0.11 to 9.0.12.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.0.11...9.0.12)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-13 03:56:56 +00:00
hippocritical
69a63975c1 Merge branch 'freqtrade:develop' into strategy_utils 2023-02-12 20:11:15 +01:00
Rahul
a3cc001f1b initial commit 2023-02-11 18:31:25 -05:00
Matthias
b3fbb263ce Merge pull request #8152 from Shadyzpop/patch-1
Typo on freqai docs
2023-02-11 20:22:16 +01:00
Shadyzpop
b95ff827d3 Typo on freqai docs
1. `a the` - there is an extra "a" before `the features`
2. `historic` - it should be "historical" to match the correct adjective form.
2023-02-11 17:12:57 +03:00
Matthias
a3b4678ad6 stoploss_price_type for gate 2023-02-11 13:02:55 +01:00
Matthias
a2759b495b Merge pull request #8149 from freqtrade/gate_rename
Update gateio terminology to Gate
2023-02-11 12:40:58 +01:00
Matthias
bedd3688d0 Properly format proxy configuration 2023-02-11 12:37:40 +01:00
Matthias
c229ba97a9 Update gateio terminology to Gate 2023-02-11 08:15:11 +01:00
Matthias
07e6932a17 Reenable longrun test mark 2023-02-11 08:14:55 +01:00
Matthias
0713fc6a6a Merge pull request #8148 from stash86/bt-metrics
Add explicit warning that supported price types gonna differ
2023-02-11 08:14:23 +01:00
Stefano Ariestasia
73992dde8d Add explicit warning that supported price types gonna differ on each exchanges 2023-02-11 11:15:31 +09:00
Matthias
42c76d9e0c Merge pull request #8147 from freqtrade/add-pair-to-env
Add pair to environment for access inside calculate_reward
2023-02-10 19:38:10 +01:00
Matthias
45e24d21d3 Bump ccxt to 2.7.78
closes #8141
2023-02-10 19:35:45 +01:00
Matthias
f440d66210 Add sample_order for gate 2023-02-10 18:12:21 +01:00
robcaulk
8873a565ee expose raw features to the environment for use in calculate_reward 2023-02-10 15:48:18 +01:00
robcaulk
154b6711b3 use function level noqa ignore 2023-02-10 15:26:17 +01:00
robcaulk
4fc0edb8b7 add pair to environment for access inside calculate_reward 2023-02-10 14:45:50 +01:00
Matthias
d47d8c135b Add windows wheel for ta-lib on python 3.11 2023-02-10 07:17:12 +01:00
Matthias
22cbc16238 Merge pull request #8120 from freqtrade/fut/stop_price_type
stoploss price type
2023-02-10 07:02:25 +01:00
Matthias
eab724fe54 Merge branch 'develop' into fut/stop_price_type 2023-02-09 20:02:59 +01:00
Matthias
8d156b2770 Bump ccxt to 2.7.66
closes  #8132
2023-02-08 20:35:24 +01:00
Matthias
3d22ad36b8 Show Config should contain stoploss-on-exchange status 2023-02-08 07:08:42 +01:00
Matthias
102c1e799c realign binance set_leverage override 2023-02-08 07:08:42 +01:00
Matthias
980ffa6bfb Add test for binance rounding leverage 2023-02-08 07:08:42 +01:00
Matthias
997df2032e Add response_log for set_leverage 2023-02-08 07:08:42 +01:00
Matthias
d19ee9c95f Update okx position mode terminology 2023-02-08 07:08:42 +01:00
Matthias
e2d81b0ce0 Skip binanceus ccxt test 2023-02-08 07:08:42 +01:00
Matthias
c15e10fe1f Improve logic for initially placed stoploss 2023-02-08 07:08:42 +01:00
Matthias
2b0e281113 Merge pull request #8136 from freqtrade/dependabot/pip/cryptography-39.0.1
Bump cryptography from 38.0.1 to 39.0.1
2023-02-08 06:33:49 +01:00
dependabot[bot]
67a2cd7086 Bump cryptography from 38.0.1 to 39.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 38.0.1 to 39.0.1.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/38.0.1...39.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-08 04:07:21 +00:00
Matthias
5a61e076d7 Remove unused import 2023-02-07 19:19:59 +01:00
Matthias
953be8a7f8 Split validate_order_types to 2 functions to allow selective application 2023-02-07 18:00:44 +01:00
Matthias
8c0c2496c2 Temporarily disable gate advanced stop orders 2023-02-07 07:13:57 +01:00
Matthias
e8dc3dd59a Merge pull request #8126 from freqtrade/dependabot/pip/develop/types-cachetools-5.3.0.0
Bump types-cachetools from 5.2.1 to 5.3.0.0
2023-02-07 06:21:03 +01:00
Matthias
81619fb4a0 Properly use sqlalchemy column types 2023-02-06 19:51:51 +01:00
Matthias
82dad7ab17 Merge pull request #8086 from freqtrade/feat/cancel_order
Cancel open orders through UI/telegram
2023-02-06 19:43:21 +01:00
Matthias
a6adcb485e Bump several pre-commit hooks versions 2023-02-06 19:34:30 +01:00
Matthias
be335c401d Merge pull request #8125 from freqtrade/dependabot/pip/develop/ccxt-2.7.45
Bump ccxt from 2.7.12 to 2.7.45
2023-02-06 19:24:23 +01:00
Matthias
b6eb1f9395 Bump pre-commit 2023-02-06 07:09:59 +01:00
Matthias
7f5a624cfd Merge pull request #8127 from freqtrade/dependabot/pip/develop/numpy-1.24.2
Bump numpy from 1.24.1 to 1.24.2
2023-02-06 07:08:27 +01:00
Matthias
b215329456 Merge pull request #8128 from freqtrade/dependabot/pip/develop/pymdown-extensions-9.9.2
Bump pymdown-extensions from 9.9.1 to 9.9.2
2023-02-06 07:07:47 +01:00
dependabot[bot]
c6601cbd89 Bump pymdown-extensions from 9.9.1 to 9.9.2
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 9.9.1 to 9.9.2.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/9.9.1...9.9.2)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 03:01:25 +00:00
dependabot[bot]
f96cb47727 Bump numpy from 1.24.1 to 1.24.2
Bumps [numpy](https://github.com/numpy/numpy) from 1.24.1 to 1.24.2.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.24.1...v1.24.2)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 03:01:17 +00:00
dependabot[bot]
365522f5c8 Bump types-cachetools from 5.2.1 to 5.3.0.0
Bumps [types-cachetools](https://github.com/python/typeshed) from 5.2.1 to 5.3.0.0.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-cachetools
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 03:00:52 +00:00
dependabot[bot]
8dde7ab6b8 Bump ccxt from 2.7.12 to 2.7.45
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.7.12 to 2.7.45.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.7.12...2.7.45)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 03:00:49 +00:00
Matthias
e964377edf Add new field to full config 2023-02-05 14:58:12 +01:00
Matthias
d904e91663 Add documentation for new setting 2023-02-05 14:55:11 +01:00
Matthias
61ba1a0dc7 Pin telegram in conda environment to <20
closes #8111
2023-02-05 14:39:20 +01:00
Matthias
48d78d8df9 Merge pull request #8116 from freqtrade/dependabot/pip/develop/technical-1.4.0
Bump technical from 1.3.0 to 1.4.0
2023-02-05 13:16:23 +01:00
Matthias
797993d0b7 Merge pull request #8118 from freqtrade/dependabot/pip/develop/isort-5.12.0
Bump isort from 5.11.4 to 5.12.0
2023-02-05 13:15:37 +01:00
Matthias
79d279b99b Merge pull request #8114 from freqtrade/dependabot/pip/develop/plotly-5.13.0
Bump plotly from 5.11.0 to 5.13.0
2023-02-05 12:43:46 +01:00
Matthias
a577d6ab36 Merge pull request #8112 from freqtrade/dependabot/pip/develop/mkdocs-material-9.0.11
Bump mkdocs-material from 9.0.8 to 9.0.11
2023-02-05 12:42:58 +01:00
Matthias
389e576b3e Merge pull request #8113 from freqtrade/dependabot/pip/develop/nbconvert-7.2.9
Bump nbconvert from 7.2.8 to 7.2.9
2023-02-05 12:42:17 +01:00
Matthias
47f47a33e3 Merge pull request #8115 from freqtrade/dependabot/pip/develop/pre-commit-3.0.4
Bump pre-commit from 2.21.0 to 3.0.4
2023-02-05 12:41:47 +01:00
Matthias
b8a527e4a0 Add gateio price type field 2023-02-05 10:46:24 +01:00
Matthias
3497de3dd5 Add more validation 2023-02-05 10:38:58 +01:00
Matthias
cf9e99b8e1 Add tests for ordertype validation 2023-02-05 10:38:58 +01:00
Matthias
2738c37845 Test stoploss validation ... 2023-02-05 10:38:58 +01:00
Matthias
c4fc811619 Add stop_price_type support (futures only!). 2023-02-05 10:38:58 +01:00
Matthias
a9241f61f9 Add Price Type Enum 2023-02-05 10:38:58 +01:00
dependabot[bot]
e38e41ab97 Bump isort from 5.11.4 to 5.12.0
Bumps [isort](https://github.com/pycqa/isort) from 5.11.4 to 5.12.0.
- [Release notes](https://github.com/pycqa/isort/releases)
- [Changelog](https://github.com/PyCQA/isort/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pycqa/isort/compare/5.11.4...5.12.0)

---
updated-dependencies:
- dependency-name: isort
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-05 09:20:10 +00:00
dependabot[bot]
e3f0e66b9a Bump technical from 1.3.0 to 1.4.0
Bumps [technical](https://github.com/freqtrade/technical) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/freqtrade/technical/releases)
- [Commits](https://github.com/freqtrade/technical/compare/1.3.0...1.4.0)

---
updated-dependencies:
- dependency-name: technical
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-05 09:19:44 +00:00
dependabot[bot]
b80d196d56 Bump pre-commit from 2.21.0 to 3.0.4
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.21.0 to 3.0.4.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v2.21.0...v3.0.4)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-05 09:19:39 +00:00
dependabot[bot]
c61995aad9 Bump plotly from 5.11.0 to 5.13.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.11.0 to 5.13.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v5.11.0...v5.13.0)

---
updated-dependencies:
- dependency-name: plotly
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-05 09:19:31 +00:00
dependabot[bot]
34711eb683 Bump nbconvert from 7.2.8 to 7.2.9
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.2.8 to 7.2.9.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.2.8...v7.2.9)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-05 09:19:25 +00:00
dependabot[bot]
5ed06cd79b Bump mkdocs-material from 9.0.8 to 9.0.11
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.0.8 to 9.0.11.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.0.8...9.0.11)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-05 09:19:18 +00:00
Matthias
a7fec1f871 Merge pull request #8109 from freqtrade/add-metadata-to-feature-engineering
Pass metadata dictionary to feature_engineering_* and set_freqai_targets()
2023-02-05 09:56:21 +01:00
Matthias
801714a588 Update function signatures in all templates
add typehints to help the user's editor suggest the right things.
2023-02-04 20:04:16 +01:00
robcaulk
0dd2472385 add metadata param to docstrings 2023-02-04 16:56:36 +01:00
robcaulk
e569f6f6df add explicit metadata argument to example strat, include it with backtesting 2023-02-04 16:53:17 +01:00
robcaulk
5da60b718d pass metadata dictionary to feature_engineering_* and set_freqai_targets functions. Add doc 2023-02-04 13:47:11 +01:00
Matthias
55850a5ccd Skip orders when correlated trade was deleted.
closes #8107
2023-02-04 08:39:25 +01:00
Matthias
7991124794 Merge pull request #8102 from TheJoeSchr/develop
setup.sh: checks if git directory is dirty before bothering user with…
2023-02-03 16:56:52 +01:00
Joe Schr
02c0f91f4d fix: removes duplicated if branch 2023-02-03 16:16:30 +01:00
Joe Schr
3fd6d72984 setup.sh: fix truty/falsy return of check_git_changes() 2023-02-03 08:52:26 +01:00
Matthias
3c4ff2e037 Merge pull request #8095 from freqtrade/remove-follow-mode
remove follow mode in favor of producer consumer
2023-02-03 07:02:56 +01:00
Matthias
ef1738fbf6 Remove follow_mode from docs 2023-02-02 19:30:59 +01:00
Matthias
618eb951d3 Add ft_bot_start to notebook docs
part of #8066
2023-02-02 19:26:48 +01:00
Joe Schr
330461cf1e setup.sh: checks if git directory is dirty before bothering user with potentially scary question 2023-02-02 17:00:07 +01:00
Matthias
e95eb220c5 Merge pull request #8101 from obseries/develop
[kucoin] manage kucoin numeric password passed as environment variabl…
2023-02-02 16:58:29 +01:00
Matthias
c093934c24 Merge pull request #8099 from raphaelstar/raphaelstar-patch-2
`order.amount` -> `order.safe_amount`
2023-02-02 16:28:04 +01:00
Luca Forni
b7787a9846 [kucoin] manage kucoin numeric password passed as environment variable as a string 2023-02-02 16:15:23 +01:00
raphaelstar
b4c3e1fd58 order.amount -> order.safe_amount 2023-02-02 15:52:27 +01:00
Matthias
300e9acd37 Merge pull request #8096 from raphaelstar/raphaelstar-patch-1
Make test for `None` explicit
2023-02-02 14:53:46 +01:00
raphaelstar
36f95fb35d Make test for None explicit
Make test for `None` explicit
2023-02-02 13:29:37 +01:00
robcaulk
ccb4efbe88 remove follow mode in favor of producer consumer 2023-02-02 11:40:23 +01:00
Matthias
1d6738778b Merge pull request #8088 from Ezrahel/patch-1
Update README.md
2023-02-02 10:22:09 +01:00
Ezrahel
ba7883f549 Update README.md 2023-02-02 03:02:52 +01:00
Matthias
ceaaac6c3a Improve install sequence to install ta-lib after user interactivity 2023-02-01 18:36:48 +00:00
Matthias
21618594b2 Update setup.sh queries to not ask redundant questions 2023-02-01 17:16:11 +00:00
Matthias
8c9de445e7 Merge pull request #8089 from freqtrade/dependabot/pip/setuptools-65.5.1
Bump setuptools from 65.5.0 to 65.5.1
2023-02-01 12:32:43 +01:00
Matthias
d8583ab6e6 Bump setuptools in setup.sh 2023-02-01 11:06:30 +00:00
dependabot[bot]
7569e72f55 Bump setuptools from 65.5.0 to 65.5.1
Bumps [setuptools](https://github.com/pypa/setuptools) from 65.5.0 to 65.5.1.
- [Release notes](https://github.com/pypa/setuptools/releases)
- [Changelog](https://github.com/pypa/setuptools/blob/main/CHANGES.rst)
- [Commits](https://github.com/pypa/setuptools/compare/v65.5.0...v65.5.1)

---
updated-dependencies:
- dependency-name: setuptools
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-01 10:11:12 +00:00
Ezrahel
1e12e888d1 Update README.md 2023-02-01 11:06:32 +01:00
Matthias
fb742361e9 Merge pull request #8083 from leonardocustodio/patch-1
Gym aid
2023-02-01 11:05:38 +01:00
Matthias
322d4b5351 improve fix for setup.sh 2023-02-01 09:20:40 +00:00
Matthias
c1a34396d0 Merge branch 'develop' into feat/cancel_order 2023-02-01 07:06:17 +00:00
Matthias
72a98943b1 bybit: Add correct funding_fee_timeframe 2023-02-01 06:58:45 +01:00
Matthias
9bb376296d Update parse_order test 2023-01-31 20:59:55 +01:00
Matthias
839215c437 Fix Doc box error 2023-01-31 20:58:20 +01:00
Matthias
8a0fabed0e Ensure we don't overwrite valid values by invalid exchange responses 2023-01-31 20:55:11 +01:00
Matthias
680136f57d Add workaround patch for kucoin create_order returning empty
While the actual problem is caused by a ccxt change, the change itself makes sense.
once ccxt starts returning the correct status (open) for create-orders, we can remove the fix.

closes #8079
2023-01-31 20:46:34 +01:00
Matthias
448505fbfb Fix minor issue where amount could be empty in rest calls 2023-01-31 20:38:18 +01:00
Matthias
50d3b7bdef Add bybit sample order 2023-01-31 20:00:05 +01:00
Matthias
42f07e6ec2 Improve order_parse tests 2023-01-31 19:45:27 +01:00
Matthias
6012a55828 Improve test 2023-01-31 19:40:42 +01:00
Matthias
9cfbb21cd7 Improve error messages 2023-01-31 19:38:43 +01:00
Matthias
bbc663fce1 Add telegram test 2023-01-31 19:26:26 +01:00
Matthias
1c47c118d6 Add cancel-order api test 2023-01-31 19:26:21 +01:00
Matthias
daafc1c90f Update test and help 2023-01-31 18:16:59 +01:00
Matthias
bd2839fa40 Reorder documentation 2023-01-31 18:13:42 +01:00
Matthias
e291d1bb17 Document telegram /coo command 2023-01-31 18:12:18 +01:00
Matthias
1bdc0e3917 Add coo command to telegram 2023-01-31 18:09:40 +01:00
Leonardo Custodio
152aa994a6 Fix test 2023-01-31 12:46:21 -03:00
Leonardo Custodio
baf2090f9e Just change the docs 2023-01-31 12:42:39 -03:00
Leonardo Custodio
592eebe516 Add to setup 2023-01-31 12:10:41 -03:00
Leonardo Custodio
8b307357f3 Add to setup 2023-01-31 12:09:14 -03:00
Leonardo Custodio
d27d5624e0 Merge branch 'freqtrade:develop' into patch-1 2023-01-31 12:00:00 -03:00
Matthias
5073c780d8 .agg would like strings, not the sum function. 2023-01-31 11:22:04 +00:00
Matthias
2c1457fb95 Ensure limit is integer (on server) 2023-01-31 11:06:23 +00:00
Matthias
1dc3c58775 Convert missing candle count to int
closes #8082
2023-01-31 11:04:56 +00:00
Matthias
410324ac19 time-jump detection should happen on the trimmed dataframe
Fixes comment in #7615
2023-01-31 10:13:21 +00:00
Matthias
9e619ecc50 Update rest api documentation 2023-01-31 07:26:12 +01:00
Matthias
03302fa0b0 Add cancel_open_order to rest script 2023-01-31 07:24:19 +01:00
Matthias
c43e857cbc Bump API version 2023-01-31 07:09:07 +01:00
Matthias
c855e2d79c Add delete open order endpoint 2023-01-31 07:09:03 +01:00
Matthias
a704c43402 provide cancel-reason to handle_cancel_order 2023-01-31 07:08:12 +01:00
Leonardo Custodio
2b09f01293 Fixes gym issue
https://github.com/freqtrade/freqtrade/issues/8078
2023-01-30 18:52:56 -03:00
Matthias
5a7008f377 rename handle_timedout to handle_cancel_order 2023-01-30 20:02:01 +01:00
Matthias
cd6602882c Merge pull request #8076 from freqtrade/new_release
New release 2023.1
2023-01-30 18:11:08 +01:00
Matthias
c3ef8ebb10 Merge pull request #8059 from freqtrade/bybit
Bybit futures support 🎉
2023-01-30 18:10:46 +01:00
Matthias
b5c0daa069 Merge pull request #8028 from freqtrade/dependabot/pip/develop/sb3-contrib-1.7.0
Bump sb3-contrib from 1.6.2 to 1.7.0
2023-01-30 11:42:24 +01:00
Matthias
da0ac8190f Merge pull request #8075 from freqtrade/dependabot/pip/develop/pyarrow-11.0.0
Bump pyarrow from 10.0.1 to 11.0.0
2023-01-30 11:33:23 +01:00
Matthias
3cb9cc63b3 add pyarrow-11 rpi wheel file 2023-01-30 10:04:10 +00:00
Matthias
e77c16d510 Merge pull request #8073 from freqtrade/dependabot/pip/develop/lightgbm-3.3.5
Bump lightgbm from 3.3.4 to 3.3.5
2023-01-30 09:42:14 +01:00
Matthias
f57394c1ce Merge branch 'develop' into bybit 2023-01-30 07:23:41 +01:00
Matthias
f22f613b24 Merge pull request #8074 from freqtrade/dependabot/pip/develop/mkdocs-material-9.0.8
Bump mkdocs-material from 9.0.5 to 9.0.8
2023-01-30 07:22:46 +01:00
Matthias
2593a929d4 Bump version to 2023.2.dev 2023-01-30 07:19:35 +01:00
Matthias
786f746958 Version bump to 2023.1 2023-01-30 07:16:16 +01:00
Matthias
c4482d56ab Merge branch 'stable' into new_release 2023-01-30 07:10:32 +01:00
dependabot[bot]
411ad5641a Bump pyarrow from 10.0.1 to 11.0.0
Bumps [pyarrow](https://github.com/apache/arrow) from 10.0.1 to 11.0.0.
- [Release notes](https://github.com/apache/arrow/releases)
- [Commits](https://github.com/apache/arrow/compare/go/v10.0.1...apache-arrow-11.0.0)

---
updated-dependencies:
- dependency-name: pyarrow
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 03:02:06 +00:00
dependabot[bot]
0dd852516a Bump mkdocs-material from 9.0.5 to 9.0.8
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.0.5 to 9.0.8.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.0.5...9.0.8)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 03:01:33 +00:00
dependabot[bot]
2fea23d31a Bump lightgbm from 3.3.4 to 3.3.5
Bumps [lightgbm](https://github.com/microsoft/LightGBM) from 3.3.4 to 3.3.5.
- [Release notes](https://github.com/microsoft/LightGBM/releases)
- [Commits](https://github.com/microsoft/LightGBM/compare/v3.3.4...v3.3.5)

---
updated-dependencies:
- dependency-name: lightgbm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 03:01:12 +00:00
Matthias
ede79590da Update ccxt compat tests with kucoin order 2023-01-29 19:56:13 +01:00
Matthias
fee7b792e1 Bump ccxt 2023-01-29 19:33:13 +01:00
Matthias
507d3d6d9b Add ci for binance.us 2023-01-29 15:14:55 +01:00
Matthias
25dfbb5a08 Compare stake amout >= in backtesting
closes #8067
2023-01-29 12:47:16 +01:00
Matthias
9286cbed86 add partial Docstring to backtesting enter_trade 2023-01-29 11:02:31 +01:00
Matthias
c1e528e116 Version bump ccxt
closes #8010
2023-01-28 19:54:28 +01:00
Matthias
f6ba0fe6ae bybit: fix broken ccxt tests 2023-01-28 18:23:23 +01:00
Matthias
7294db81e2 Bump ccxt to 2.7.7 2023-01-28 18:17:09 +01:00
Matthias
adf29fe1d7 Merge pull request #8065 from Shadyzpop/patch-1
Docs typo fix
2023-01-28 18:11:36 +01:00
Shadyzpop
f7f936c14f Typo fix 2023-01-28 03:43:18 +03:00
Matthias
d1b069abfb bybit: Update test to align with defaultType change 2023-01-27 20:33:34 +01:00
Matthias
7029b9602c Merge branch 'develop' into bybit 2023-01-27 20:30:05 +01:00
Matthias
020dc3c6e1 filled-date shouldn't update again 2023-01-27 20:21:29 +01:00
Matthias
aa15837589 Add test for filled_date not updating if it's already set 2023-01-27 20:20:15 +01:00
Matthias
fa033965c8 use "swap" for bybit 2023-01-27 19:34:29 +01:00
Matthias
08ede37795 Add documentation note about stoploss on exchange 2023-01-26 19:58:58 +01:00
Matthias
8665d0866d Add test for bybit startup magic 2023-01-26 19:58:42 +01:00
Matthias
1431f7cc3e Set position mode to one-way on startup 2023-01-26 19:54:35 +01:00
Matthias
73ef1d5191 Improve exception wording on binance 2023-01-26 19:53:14 +01:00
Matthias
8647c0192c Fix typo 2023-01-26 07:08:38 +01:00
Matthias
2333dbae40 Update reinforcement learning docs to use correct naming 2023-01-26 07:07:49 +01:00
Matthias
bd913bc24d Disable provenance in buildx config for pi image 2023-01-25 14:34:52 +01:00
Matthias
9652c00acb Don't amend docker manifest 2023-01-25 12:20:10 +01:00
Matthias
c12fb1a49c bybit: Some final cleanup 2023-01-24 20:12:50 +01:00
Matthias
25fa6bee74 Override get_funding_fees for bybit 2023-01-24 07:21:56 +01:00
Matthias
051c3be99e add test case for bybit 2023-01-24 07:21:56 +01:00
Matthias
3a83427f92 Add Bybit stoploss support 2023-01-24 07:21:56 +01:00
Matthias
c14553bacb Add bybit to supported Futures exchanges 2023-01-24 07:21:56 +01:00
Matthias
c2b33a0f58 Fix set-leverage function sig 2023-01-24 07:21:56 +01:00
Matthias
7a18e96042 bybit: hot-fix funding fees (temporary - must be changed) 2023-01-24 07:21:56 +01:00
Matthias
f681ce9139 Allow margin and leverage setting failures
(this is important when an exchange "fails" a request if the setting didn't change).
2023-01-24 07:21:56 +01:00
Matthias
31745a9dc2 bybit: Initial implementation liquidation calculation 2023-01-24 07:21:56 +01:00
Matthias
93ce963e9b Update test name 2023-01-24 07:21:56 +01:00
Matthias
752110a268 Add online tests for bybit 2023-01-24 07:21:56 +01:00
Matthias
d05ecd630f Update tests for new liquidation parameter 2023-01-24 07:21:56 +01:00
Matthias
34e7433844 Add leverage to dry-run liquidation price calculation 2023-01-24 07:21:56 +01:00
Matthias
a7b030fff9 Add note about bybit futures 2023-01-24 07:21:56 +01:00
Matthias
3192af8df8 Limit bybit futures markets to USDT 2023-01-24 07:21:56 +01:00
Matthias
63c732a560 Bybit futures data download 2023-01-24 07:21:56 +01:00
Matthias
6c0fa0dc1f Fix typo in docstring 2023-01-24 07:21:43 +01:00
Matthias
078b430828 Add ccxt compat tests for order parsing 2023-01-23 18:22:07 +01:00
Matthias
b0720fdcf5 Bump ccxt to latest version to fix timestamp parsing issues 2023-01-23 18:10:56 +01:00
Matthias
1e43154bc5 Merge pull request #8049 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.6
Bump types-python-dateutil from 2.8.19.5 to 2.8.19.6
2023-01-23 09:31:34 +01:00
Matthias
228fc757e9 Merge pull request #8050 from freqtrade/dependabot/pip/develop/ccxt-2.6.58
Bump ccxt from 2.6.39 to 2.6.58
2023-01-23 09:31:18 +01:00
dependabot[bot]
7fc39eafbd Bump ccxt from 2.6.39 to 2.6.58
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.6.39 to 2.6.58.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.6.39...2.6.58)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 07:36:53 +00:00
Matthias
3397225df2 Merge pull request #8051 from freqtrade/dependabot/pip/develop/pandas-1.5.3
Bump pandas from 1.5.2 to 1.5.3
2023-01-23 08:10:48 +01:00
Matthias
14d9789f1e Bump types-dateutil for precommit 2023-01-23 08:04:45 +01:00
dependabot[bot]
d3fbd41f59 Bump types-python-dateutil from 2.8.19.5 to 2.8.19.6
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.5 to 2.8.19.6.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 06:18:40 +00:00
Matthias
b80c9dfd1e Merge pull request #8052 from freqtrade/dependabot/pip/develop/types-requests-2.28.11.8
Bump types-requests from 2.28.11.7 to 2.28.11.8
2023-01-23 07:16:41 +01:00
Matthias
5ef6ea4d91 Merge pull request #8048 from freqtrade/dependabot/pip/develop/nbconvert-7.2.8
Bump nbconvert from 7.2.7 to 7.2.8
2023-01-23 06:48:15 +01:00
Matthias
73414e0fbd Bump types-requests in pre-commit 2023-01-23 06:47:27 +01:00
dependabot[bot]
673f5c325c Bump types-requests from 2.28.11.7 to 2.28.11.8
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.7 to 2.28.11.8.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 03:08:24 +00:00
dependabot[bot]
b104b54e6a Bump pandas from 1.5.2 to 1.5.3
Bumps [pandas](https://github.com/pandas-dev/pandas) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Changelog](https://github.com/pandas-dev/pandas/blob/main/RELEASE.md)
- [Commits](https://github.com/pandas-dev/pandas/compare/v1.5.2...v1.5.3)

---
updated-dependencies:
- dependency-name: pandas
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 03:08:20 +00:00
dependabot[bot]
13f6529cca Bump nbconvert from 7.2.7 to 7.2.8
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.2.7 to 7.2.8.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.2.7...v7.2.8)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-23 03:07:48 +00:00
Matthias
95987663f4 Merge pull request #8040 from xmatthias/mypy_fixes
Enable mypy defaults for Optional typechecking
2023-01-22 11:18:53 +01:00
Matthias
0642a2768e Add missing bracket
closes #8041
2023-01-22 11:17:31 +01:00
Matthias
58ad5a683a Fix wrong import order in script 2023-01-21 22:48:30 +01:00
Matthias
79d0fd937c Update pyright config to align with mypy 2023-01-21 20:05:33 +01:00
Matthias
741d2db334 Enable implicit_optional for telegram 2023-01-21 20:02:16 +01:00
Matthias
795934116d Remove optional_untyped from config 2023-01-21 20:02:12 +01:00
Matthias
2bf4cf7d5a Update scripts to PEP484 2023-01-21 20:02:07 +01:00
Matthias
8108a48f39 Follow PEP 484 - no implicit optionals 2023-01-21 20:01:56 +01:00
Matthias
bb355cfac5 improve naming of backtest function 2023-01-21 19:46:27 +01:00
Matthias
80bb120026 Simplify backtesting by removing now unnecessary private function 2023-01-21 18:01:01 +01:00
Matthias
89eb1b0084 funding-fees need to be recalculated for detailed timeframes, too.
closes #7978
2023-01-21 17:47:37 +01:00
Matthias
1211b72255 Add test to show behavior reported in #7978 2023-01-21 16:23:32 +01:00
Matthias
772800bf74 Fix bug in stake_amount adjustment
This was preventing a DCA order to take the remaining stake
2023-01-21 08:52:10 +01:00
Matthias
865d678304 Add backtest_detail test for futures 2023-01-20 09:45:02 +00:00
Matthias
28e51e2dfb Simplify some test setups 2023-01-20 08:28:50 +00:00
Matthias
58d48e79da Convert tests/datadir to path object - better mirroring an initialized configuration 2023-01-20 08:07:02 +00:00
Matthias
a5d87859dc Refactor test to reuse variable 2023-01-20 07:27:35 +00:00
Matthias
6e22607387 Add 5m futures testdata to support detail-backtest tests 2023-01-20 07:08:38 +00:00
Matthias
dbddc4c8aa Improve wording on adjust_trade_position callback warning 2023-01-20 07:08:15 +01:00
Matthias
20093ea090 Add warning about callback call frequency in backtesting 2023-01-20 07:06:54 +01:00
Matthias
81349c2a03 Remove edge section from config template 2023-01-19 19:57:34 +01:00
Matthias
07c391322e Remove edge from sample configs (except full).
Edge is barely used, but everyone drags it's config around.
2023-01-19 18:26:22 +01:00
Matthias
a398f4730b Add documentation note about RSA exchange keys
part of #8034
2023-01-19 18:15:50 +01:00
Matthias
a27e63a547 Bump ccxt to 2.6.39
closes #8034
2023-01-19 18:15:50 +01:00
Matthias
cd2a41e76e Merge pull request #8035 from freqtrade/enable_plotconfig_wsmode
Enable plotconfig wsmode
2023-01-19 06:55:49 +01:00
Matthias
892fb77ec3 Update mypy pre-commit hook 2023-01-18 19:31:20 +01:00
Matthias
634b80f0e7 Add tests for plotconfig in ws mode 2023-01-18 18:15:35 +01:00
Matthias
2298656e45 Bump api_version to 2.23 2023-01-18 18:15:14 +01:00
Matthias
3216a05a9e Enable plot_config to work in webserver mode
(requires strategy argument)
2023-01-18 18:15:07 +01:00
Matthias
da0992f859 add Config typehint in rpc 2023-01-18 06:45:31 +01:00
Matthias
25f89ac194 Merge pull request #8033 from stash86/bt-metrics
update config-freqai-example to match latest binance futures pair syntax
2023-01-18 06:33:37 +01:00
Stefano Ariestasia
00fa904422 update config-freqai-example to match latest binance futures pair syntax 2023-01-18 09:56:15 +09:00
Matthias
4aaa439221 Merge pull request #7976 from adarkforce/max-open-trades
Hyperopt Max open trades
2023-01-17 20:41:48 +01:00
Matthias
c8ecedf6d5 Clarify a variable via typehint 2023-01-17 20:05:18 +01:00
Matthias
6a4fc33c30 Remove <3.8 bandaid 2023-01-17 19:46:56 +01:00
Matthias
7092212ed5 re-add futures tickers quoteVolume assert 2023-01-17 06:57:48 +01:00
Matthias
7713f343a9 Bump ccxt to 2.6.26
closes #8032
2023-01-17 06:46:49 +01:00
Matthias
98dcab49ab Add fetch_tickers test for futures 2023-01-16 23:06:18 +01:00
Matthias
b4fcda2c11 add aiohttp proxy 2023-01-16 22:37:21 +01:00
Matthias
92a5efad0e Fix set_test_proxy usage 2023-01-16 22:09:53 +01:00
Matthias
b193d8418d Deepcopy config before adding proxies 2023-01-16 21:31:01 +01:00
Matthias
f46b62f1a7 Attempt to use and setup a proxy for CI 2023-01-16 21:15:05 +01:00
Matthias
394a973bbb Revert "Attempt to use and setup a proxy for CI"
This reverts commit 48ae248d2d.
2023-01-16 21:14:46 +01:00
Matthias
48ae248d2d Attempt to use and setup a proxy for CI 2023-01-16 21:14:19 +01:00
Antonio Della Fortuna
5e10bb2cca Merge branch 'develop' of https://github.com/freqtrade/freqtrade into max-open-trades 2023-01-16 20:19:46 +01:00
Matthias
75804a7f85 Bump stable-baselines3 alongside with sb3-contrib. 2023-01-16 15:53:44 +01:00
Matthias
81eb9ebc6e Merge pull request #8031 from froggleston/eea_grp5
Add a new analysis group to output stats grouped by exit_tag
2023-01-16 15:50:47 +01:00
Matthias
8cfa5934db Catch AttributeError when importing modules
closes #8023
2023-01-16 13:54:25 +00:00
froggleston
813724bd82 Add a new analysis group to output stats grouped by exit_tag 2023-01-16 13:28:40 +00:00
Matthias
05dc29e60b Merge pull request #8021 from freqtrade/dependabot/pip/develop/mkdocs-material-9.0.5
Bump mkdocs-material from 9.0.3 to 9.0.5
2023-01-16 13:31:30 +01:00
Matthias
41d4e516f1 Merge pull request #8024 from freqtrade/dependabot/pip/develop/cryptography-39.0.0
Bump cryptography from 38.0.1 to 39.0.0
2023-01-16 13:31:06 +01:00
Matthias
3ab40358a2 Merge pull request #8026 from freqtrade/dependabot/pip/develop/tensorboard-2.11.2
Bump tensorboard from 2.11.0 to 2.11.2
2023-01-16 13:29:04 +01:00
dependabot[bot]
8de10e3746 Bump mkdocs-material from 9.0.3 to 9.0.5
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.0.3 to 9.0.5.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.0.3...9.0.5)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 11:34:02 +00:00
Matthias
d7bd9de60e Merge pull request #8025 from freqtrade/dependabot/pip/develop/fastapi-0.89.1
Bump fastapi from 0.89.0 to 0.89.1
2023-01-16 12:28:08 +01:00
Matthias
d0ad822034 Merge pull request #8029 from freqtrade/dependabot/pip/develop/pymdown-extensions-9.9.1
Bump pymdown-extensions from 9.9 to 9.9.1
2023-01-16 12:27:44 +01:00
dependabot[bot]
7f4883008f Bump pymdown-extensions from 9.9 to 9.9.1
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 9.9 to 9.9.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/9.9...9.9.1)

---
updated-dependencies:
- dependency-name: pymdown-extensions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 08:53:34 +00:00
dependabot[bot]
a77fdb1594 Bump sb3-contrib from 1.6.2 to 1.7.0
Bumps [sb3-contrib](https://github.com/Stable-Baselines-Team/stable-baselines3-contrib) from 1.6.2 to 1.7.0.
- [Release notes](https://github.com/Stable-Baselines-Team/stable-baselines3-contrib/releases)
- [Commits](https://github.com/Stable-Baselines-Team/stable-baselines3-contrib/compare/v1.6.2...v1.7.0)

---
updated-dependencies:
- dependency-name: sb3-contrib
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 08:53:21 +00:00
dependabot[bot]
a4b2dc30b4 Bump tensorboard from 2.11.0 to 2.11.2
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.11.0 to 2.11.2.
- [Release notes](https://github.com/tensorflow/tensorboard/releases)
- [Changelog](https://github.com/tensorflow/tensorboard/blob/2.11.2/RELEASE.md)
- [Commits](https://github.com/tensorflow/tensorboard/compare/2.11.0...2.11.2)

---
updated-dependencies:
- dependency-name: tensorboard
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 08:53:12 +00:00
dependabot[bot]
8dce617ada Bump fastapi from 0.89.0 to 0.89.1
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.89.0 to 0.89.1.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.89.0...0.89.1)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 08:53:06 +00:00
dependabot[bot]
283c1968bf Bump cryptography from 38.0.1 to 39.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 38.0.1 to 39.0.0.
- [Release notes](https://github.com/pyca/cryptography/releases)
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/38.0.1...39.0.0)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 08:52:52 +00:00
Matthias
76c4b2a975 Merge pull request #8019 from freqtrade/dependabot/pip/develop/requests-2.28.2
Bump requests from 2.28.1 to 2.28.2
2023-01-16 09:50:37 +01:00
Matthias
7c2bfae92e Merge pull request #8018 from freqtrade/dependabot/pip/develop/ccxt-2.6.24
Bump ccxt from 2.6.6 to 2.6.24
2023-01-16 08:13:47 +01:00
Matthias
0296061e49 Fix version comparison to use packaging.version 2023-01-16 06:54:29 +01:00
Matthias
d226f9706b Merge pull request #8020 from freqtrade/dependabot/pip/develop/xgboost-1.7.3
Bump xgboost from 1.7.2 to 1.7.3
2023-01-16 06:49:47 +01:00
Matthias
7f61fdd9a3 Merge pull request #8022 from freqtrade/dependabot/pip/develop/pytest-7.2.1
Bump pytest from 7.2.0 to 7.2.1
2023-01-16 06:48:49 +01:00
Matthias
77bb6561d5 Merge pull request #8017 from freqtrade/dependabot/pip/develop/orjson-3.8.5
Bump orjson from 3.8.4 to 3.8.5
2023-01-16 06:46:22 +01:00
dependabot[bot]
178a4c8867 Bump requests from 2.28.1 to 2.28.2
Bumps [requests](https://github.com/psf/requests) from 2.28.1 to 2.28.2.
- [Release notes](https://github.com/psf/requests/releases)
- [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md)
- [Commits](https://github.com/psf/requests/compare/v2.28.1...v2.28.2)

---
updated-dependencies:
- dependency-name: requests
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 05:32:39 +00:00
Matthias
6fd9690477 Merge pull request #8015 from freqtrade/dependabot/pip/develop/urllib3-1.26.14
Bump urllib3 from 1.26.13 to 1.26.14
2023-01-16 06:31:39 +01:00
dependabot[bot]
7785809f4a Bump pytest from 7.2.0 to 7.2.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.2.0 to 7.2.1.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.2.0...7.2.1)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 03:02:08 +00:00
dependabot[bot]
59e6f19dd8 Bump xgboost from 1.7.2 to 1.7.3
Bumps [xgboost](https://github.com/dmlc/xgboost) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/dmlc/xgboost/releases)
- [Changelog](https://github.com/dmlc/xgboost/blob/master/NEWS.md)
- [Commits](https://github.com/dmlc/xgboost/compare/v1.7.2...v1.7.3)

---
updated-dependencies:
- dependency-name: xgboost
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 03:01:28 +00:00
dependabot[bot]
dc7b8ac7ba Bump ccxt from 2.6.6 to 2.6.24
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.6.6 to 2.6.24.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.6.6...2.6.24)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 03:01:13 +00:00
dependabot[bot]
d24fce83d2 Bump orjson from 3.8.4 to 3.8.5
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.4 to 3.8.5.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.4...3.8.5)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 03:01:03 +00:00
dependabot[bot]
9b97ddd0f7 Bump urllib3 from 1.26.13 to 1.26.14
Bumps [urllib3](https://github.com/urllib3/urllib3) from 1.26.13 to 1.26.14.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/1.26.13...1.26.14)

---
updated-dependencies:
- dependency-name: urllib3
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-16 03:00:47 +00:00
Matthias
fc9e0ede0b Merge pull request #8014 from freqtrade/binance_mig
Binance futures naming migration
2023-01-15 21:57:21 +01:00
Matthias
270eed7e14 Fail if detecting invalid ccxt version for binance futures 2023-01-15 19:38:50 +01:00
Antonio Della Fortuna
ab12aace5f changed trades_space to max_open_trades_space 2023-01-15 11:50:40 +01:00
Antonio Della Fortuna
5e64980319 Merge branch 'develop' of https://github.com/freqtrade/freqtrade into max-open-trades 2023-01-15 11:44:35 +01:00
Antonio Della Fortuna
b0f1d914c8 Changed max_open_trades type to int or inf 2023-01-15 11:44:10 +01:00
Matthias
ce323e66ac Remove note about binance futures naming 2023-01-14 21:40:48 +01:00
Matthias
e14f2cc275 Add db migration test 2023-01-14 21:26:00 +01:00
Matthias
5d4a247fa0 Add test for binance data migration 2023-01-14 20:34:04 +01:00
Matthias
cbcee02ded call data migration from backtesting 2023-01-14 20:07:33 +01:00
Matthias
1fc97a8008 use Unified futures naming for futures throughout tests 2023-01-13 21:16:19 +01:00
Matthias
9d1cf040f0 Update test leverage tiers 2023-01-13 20:44:45 +01:00
Matthias
4ea8962ca2 Rename futures test data 2023-01-13 20:44:32 +01:00
Matthias
47b50a8a29 Udpate binance leverage tiers to new pair format 2023-01-13 20:32:25 +01:00
Matthias
c93b265ec8 Run migration commands on certain data commands 2023-01-13 07:27:18 +01:00
Matthias
0be0ef9e77 Remove duplicate binance test
The same test exists in test_exchange, but for most exchanges.
2023-01-13 07:11:44 +01:00
Matthias
0d1172ca43 Update binance future test 2023-01-13 07:04:29 +01:00
Matthias
e43b9b65fa increase minimium ccxt version to 2.6.6 2023-01-13 07:00:13 +01:00
Matthias
b024fafaf8 Use futures_pair in ccxt test correctly 2023-01-12 23:39:02 +01:00
Matthias
5b3304189c trading_mode is not necessarily mandatory 2023-01-12 23:38:53 +01:00
Matthias
183bf6819f Update binance pair naming in ccxt test 2023-01-12 23:35:32 +01:00
Matthias
5ad664aaca Update binance futures name to swap 2023-01-12 23:35:16 +01:00
Matthias
9cb7d6c26e Run binance futures migrations on startup 2023-01-12 23:35:06 +01:00
Matthias
5d45adb37d Merge pull request #8009 from freqtrade/robcaulk-patch-1
Update freqai-reinforcement-learning.md
2023-01-12 23:33:54 +01:00
Robert Caulk
bfd7803fd8 Update freqai-reinforcement-learning.md 2023-01-12 22:18:22 +01:00
Matthias
ee7b505dcb Add data migration method 2023-01-12 20:59:43 +01:00
Matthias
b1bfd76741 Add binance futures db migration 2023-01-12 20:36:06 +01:00
Matthias
518e8d24dc Merge pull request #8007 from TheJoeSchr/fix/version-cwd
fix "--version": needs to change working directory
2023-01-12 20:24:28 +01:00
Joe Schr
1cf69f139c refactor "--version" to use "pathlib" instead of "os" 2023-01-12 19:27:41 +01:00
Matthias
1a533668b5 Merge pull request #8008 from freqtrade/fix/NaT_ser_deser
Fix websockets for dataframes with NaT entries
2023-01-12 08:10:14 +01:00
Antonio Della Fortuna
192f75254f Merge branch 'develop' of https://github.com/freqtrade/freqtrade into max-open-trades 2023-01-11 22:21:46 +01:00
Matthias
9d647fd193 Fix websockets for dataframes with NaT entreis 2023-01-11 22:07:20 +01:00
Matthias
ec5d464ff2 Merge pull request #8005 from TheJoeSchr/develop
docs: fix broken link to quickstart
2023-01-11 21:37:34 +01:00
Matthias
684de1937a Fix link syntax to actually work 2023-01-11 21:35:18 +01:00
Joe Schr
08748dd021 fix "--version": needs to change working directory
before calling `git`. otherwise it would display git commit id from the
directory where you are calling `freqtrade` from instead of freqtrade's
current commit id
2023-01-11 21:12:06 +01:00
Joe Schr
4abf06119b docs: fix broken link to quickstart 2023-01-11 20:29:40 +01:00
Antonio Della Fortuna
534aa8f7ff Merge branch 'develop' of https://github.com/freqtrade/freqtrade into max-open-trades
# Conflicts:
#	freqtrade/optimize/backtesting.py
2023-01-11 18:55:57 +01:00
Matthias
00dbc195ac Update huobi ci to use BTC markets 2023-01-11 08:43:07 +00:00
Timothy Pogue
97a6fb285f revert to dataframe.to_json 2023-01-10 17:52:24 -07:00
Matthias
f677dea6a4 Merge pull request #7950 from freqtrade/freqai_feature_engineering_functions
FreqAI Strategy - Improve user experience
2023-01-10 20:04:53 +01:00
Wagner Costa
2241f24290 moved deprecated warning to start function 2023-01-10 09:10:30 -03:00
Matthias
a261ee327d Merge pull request #7994 from freqtrade/dependabot/pip/develop/scipy-1.10.0
Bump scipy from 1.9.3 to 1.10.0
2023-01-10 08:07:24 +01:00
Matthias
67495530b7 Add FreqAI migration documentation 2023-01-10 07:22:28 +01:00
Matthias
6fc3d0e5e1 Merge pull request #7995 from freqtrade/dependabot/pip/develop/httpx-0.23.3
Bump httpx from 0.23.1 to 0.23.3
2023-01-09 20:47:32 +01:00
robcaulk
93aff9325e improve deprecation note 2023-01-09 20:15:03 +01:00
robcaulk
a61274ae18 ensure cached corr-pairs works with new framework 2023-01-09 20:04:36 +01:00
Matthias
811f13e09a Merge pull request #7981 from freqtrade/backtest_detail_speed
Improve backtest detail speed
2023-01-09 18:21:54 +01:00
Matthias
30bc45a1ba Merge pull request #7991 from freqtrade/order_amount_price
Separately store Order amount price
2023-01-09 18:15:55 +01:00
Matthias
fbdda8cd15 Always pass Dictionaries to testclient post requests 2023-01-09 18:12:20 +01:00
Matthias
3e5ca0438f Merge pull request #8000 from freqtrade/dependabot/pip/develop/mkdocs-material-9.0.3
Bump mkdocs-material from 8.5.11 to 9.0.3
2023-01-09 13:37:04 +01:00
dependabot[bot]
3ca2dfc079 Bump httpx from 0.23.1 to 0.23.3
Bumps [httpx](https://github.com/encode/httpx) from 0.23.1 to 0.23.3.
- [Release notes](https://github.com/encode/httpx/releases)
- [Changelog](https://github.com/encode/httpx/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/httpx/compare/0.23.1...0.23.3)

---
updated-dependencies:
- dependency-name: httpx
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 09:10:30 +00:00
Matthias
d59c48c638 Merge pull request #7996 from freqtrade/dependabot/pip/develop/sqlalchemy-1.4.46
Bump sqlalchemy from 1.4.45 to 1.4.46
2023-01-09 09:33:26 +01:00
Matthias
0aca0d20d9 Add some feature flags for mkdocs migration 2023-01-09 07:24:18 +01:00
Matthias
8abe1e1c2e Merge pull request #8001 from freqtrade/dependabot/pip/develop/orjson-3.8.4
Bump orjson from 3.8.3 to 3.8.4
2023-01-09 06:52:02 +01:00
Matthias
bd7eeb8701 Merge pull request #7998 from freqtrade/dependabot/pip/develop/fastapi-0.89.0
Bump fastapi from 0.88.0 to 0.89.0
2023-01-09 06:51:12 +01:00
Matthias
8a5aef20aa Merge pull request #7999 from freqtrade/dependabot/pip/develop/ccxt-2.5.56
Bump ccxt from 2.5.46 to 2.5.56
2023-01-09 06:49:29 +01:00
Matthias
7de72a2425 Merge pull request #7993 from freqtrade/dependabot/pip/develop/lightgbm-3.3.4
Bump lightgbm from 3.3.3 to 3.3.4
2023-01-09 06:47:37 +01:00
dependabot[bot]
43b49fef4f Bump orjson from 3.8.3 to 3.8.4
Bumps [orjson](https://github.com/ijl/orjson) from 3.8.3 to 3.8.4.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.8.3...3.8.4)

---
updated-dependencies:
- dependency-name: orjson
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 03:01:33 +00:00
dependabot[bot]
25fd1ea639 Bump mkdocs-material from 8.5.11 to 9.0.3
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 8.5.11 to 9.0.3.
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Upgrade guide](https://github.com/squidfunk/mkdocs-material/blob/master/docs/upgrade.md)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/8.5.11...9.0.3)

---
updated-dependencies:
- dependency-name: mkdocs-material
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 03:01:26 +00:00
dependabot[bot]
3b69745c3b Bump ccxt from 2.5.46 to 2.5.56
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.5.46 to 2.5.56.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.5.46...2.5.56)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 03:01:18 +00:00
dependabot[bot]
79fe8fd85b Bump fastapi from 0.88.0 to 0.89.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.88.0 to 0.89.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.88.0...0.89.0)

---
updated-dependencies:
- dependency-name: fastapi
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 03:01:07 +00:00
dependabot[bot]
d32d70d2ea Bump sqlalchemy from 1.4.45 to 1.4.46
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 1.4.45 to 1.4.46.
- [Release notes](https://github.com/sqlalchemy/sqlalchemy/releases)
- [Changelog](https://github.com/sqlalchemy/sqlalchemy/blob/main/CHANGES.rst)
- [Commits](https://github.com/sqlalchemy/sqlalchemy/commits)

---
updated-dependencies:
- dependency-name: sqlalchemy
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 03:00:58 +00:00
dependabot[bot]
c198ca2967 Bump scipy from 1.9.3 to 1.10.0
Bumps [scipy](https://github.com/scipy/scipy) from 1.9.3 to 1.10.0.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.9.3...v1.10.0)

---
updated-dependencies:
- dependency-name: scipy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 03:00:45 +00:00
dependabot[bot]
2f0eb95d03 Bump lightgbm from 3.3.3 to 3.3.4
Bumps [lightgbm](https://github.com/microsoft/LightGBM) from 3.3.3 to 3.3.4.
- [Release notes](https://github.com/microsoft/LightGBM/releases)
- [Commits](https://github.com/microsoft/LightGBM/compare/v3.3.3...v3.3.4)

---
updated-dependencies:
- dependency-name: lightgbm
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 03:00:38 +00:00
Antonio Della Fortuna
7d27afd4b8 Fixed test broken due to change in trades_space range 2023-01-08 16:11:41 +01:00
Matthias
ad49541947 Adapt Tests for new mandatory columns 2023-01-08 13:55:52 +01:00
Matthias
305b067e48 Support having no Amount/Price available from the exchange initially 2023-01-08 13:55:09 +01:00
Matthias
fd694f14c2 Add new order columns, ft_amount and ft_price 2023-01-08 13:53:08 +01:00
Antonio Della Fortuna
10d8b016e4 Changed max_open_trades default range for optimization 2023-01-08 12:48:36 +01:00
Antonio Della Fortuna
f77dffc951 align to develop 2023-01-08 12:46:27 +01:00
Antonio Della Fortuna
24ace646c3 Merge branch 'develop' of https://github.com/freqtrade/freqtrade into max-open-trades 2023-01-08 12:40:01 +01:00
Antonio Della Fortuna
464cb4761c Fixed max_open_trades update from hyperopt
Fixed max_open_trades update from hyperopt + removed max_open_trades as a param to backtesting + refactoring
2023-01-08 12:39:39 +01:00
Matthias
550ab2b8e8 Improve select_order to only consider filled where needed. 2023-01-08 11:24:04 +01:00
Matthias
8d4f7341c9 Merge pull request #7987 from stash86/bt-metrics
update calmar, sharpe, and sortino hyperopt losses to use latest formula
2023-01-08 10:37:24 +01:00
Matthias
34dbe9deaa Improve fixture fake results 2023-01-08 10:08:54 +01:00
Matthias
f958459a84 Merge pull request #7989 from freqtrade/dependabot/pip/develop/ccxt-2.5.46
Bump ccxt from 2.4.60 to 2.5.46
2023-01-07 16:32:11 +01:00
dependabot[bot]
1d5440ff71 Bump ccxt from 2.4.60 to 2.5.46
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.4.60 to 2.5.46.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.4.60...2.5.46)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-07 14:19:48 +00:00
Matthias
c7f485687f Fix ccxt test failure
as identified and analyzed https://github.com/ccxt/ccxt/issues/16335
2023-01-07 15:13:22 +01:00
Antonio Della Fortuna
8c3ac56bc5 Merge branch 'develop' of https://github.com/freqtrade/freqtrade into max-open-trades 2023-01-07 11:11:59 +01:00
root
7bf531c8b8 isort fix 2023-01-07 09:50:05 +09:00
Stefano Ariestasia
c1042996db flake8 fix 2023-01-07 09:46:46 +09:00
Stefano Ariestasia
6198b21001 update calmar loss 2023-01-07 09:30:16 +09:00
Stefano Ariestasia
d3b1aa7f01 update sortino calc 2023-01-07 09:19:06 +09:00
Stefano Ariestasia
157bf962f7 add missing imports 2023-01-07 09:14:56 +09:00
Stefano Ariestasia
86ba7dae92 change sharpe hyperopt loss 2023-01-07 08:56:40 +09:00
Matthias
8b456441a9 Merge pull request #7971 from paranoidandy/patch-1
Update FreqaiExampleStrategy.py
2023-01-06 15:16:31 +01:00
Matthias
349d67f582 Merge pull request #7983 from stash86/bt-metrics
Fix typo in calculate_expectancy's description
2023-01-06 07:30:09 +01:00
Stefano Ariestasia
329d95366a Merge branch 'freqtrade:develop' into bt-metrics 2023-01-06 08:04:00 +08:00
hippocritical
feb6accc6c Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils 2023-01-05 22:56:29 +01:00
hippocritical
4435c4fd0d removed prints for strategy could not be loaded
Changed logic to contain much less if conditions

currently still missing:
Webhook terminology, Telegram notification settings, Strategy/Config settings
2023-01-05 22:56:06 +01:00
Matthias
787d292ba0 Move "drop_candle" decision to coroutine 2023-01-05 22:31:32 +01:00
Wagner Costa
d82264ced9 Merge branch 'develop' into freqai_feature_engineering_functions 2023-01-05 17:55:35 -03:00
Wagner Costa
abdeb72eb0 fix tests 2023-01-05 17:54:56 -03:00
robcaulk
d91ac8b669 improve wording in freqai doc 2023-01-05 20:13:48 +01:00
Matthias
bdf6537c60 Remove unused (and pointless) exchange method 2023-01-05 11:45:15 +01:00
Matthias
4bac66ff0e Type ohlcv coroutine 2023-01-05 11:33:47 +01:00
Matthias
75b0a3e63d Use dedicated type for OHLCV response 2023-01-05 11:30:15 +01:00
Matthias
92800930e9 Improve backtest detail speed 2023-01-05 10:14:58 +01:00
Matthias
5257e8b3ed Fix random test failures on 3.8 2023-01-05 09:12:09 +01:00
hippocritical
e55638ed03 Merge branch 'freqtrade:develop' into strategy_utils 2023-01-04 23:52:35 +01:00
hippocritical
ed55296d20 removed prints for strategy could not be loaded
Changed logic to contain much less if conditions

currently still missing:
Webhook terminology, Telegram notification settings, Strategy/Config settings
2023-01-04 23:49:33 +01:00
Wagner Costa
ed99e7f857 fix corr_pairs startup candle count bug 2023-01-04 14:21:37 -03:00
Matthias
8e5b4750d6 Continue in "regular backtest" case (no detail-data available).
link to #7967
2023-01-04 18:08:45 +01:00
Matthias
6470635753 In cases of no losing trade, sortino ratio can't be calculated.
closes #7977
2023-01-04 17:55:24 +01:00
Matthias
7a43f37eb7 Merge pull request #7972 from Undertoned/develop
Fix Backtesting  Analysis Column Wrong
2023-01-04 16:38:29 +01:00
Antonio Della Fortuna
f2fa476dc6 max_open_trades should be an integer
Max open trades will be always an integer in the strategy (-1 for infinity), but in the config -1 will be parsed as infinity
2023-01-04 16:09:27 +01:00
Wagner Costa
ed2b1b1ed1 Merge branch 'develop' into freqai_feature_engineering_functions 2023-01-04 10:40:20 -03:00
Wagner Costa
801ab39a24 fix get dataframe data to include startup_candle 2023-01-04 10:36:19 -03:00
robcaulk
3cbe51c3ca remove duplicated line 2023-01-04 13:58:25 +01:00
Antonio Della Fortuna
1c5e172683 docs update 2023-01-04 12:54:35 +01:00
Matthias
38a780ef63 Merge pull request #7973 from freqtrade/robcaulk-patch-1
Fix file name in FreqaiExampleStrategy.py
2023-01-04 12:51:14 +01:00
robcaulk
dc25668468 handle data gaps between FreqAI and DP better 2023-01-04 11:41:06 +01:00
Antonio Della Fortuna
ce661cb58b Merge branch 'develop' of https://github.com/freqtrade/freqtrade into max-open-trades 2023-01-04 10:35:09 +01:00
Antonio Della Fortuna
5fd85368a9 Added support for max_open_trades hyperopting 2023-01-04 10:34:44 +01:00
Robert Caulk
c384d1357e Update FreqaiExampleStrategy.py 2023-01-03 21:52:16 +01:00
Matthias
6f031f005d Fix flake error 2023-01-03 20:29:08 +01:00
zhanglei14
63db1fd894 Fix Backtesting Analysis Column Wrong 2023-01-04 01:38:07 +08:00
Wagner Costa
314c0925bf fix get dataframe data to include startup_candle 2023-01-03 14:02:42 -03:00
paranoidandy
73114b93c2 Update FreqaiExampleStrategy.py
Change can_short to True to enable shorting
2023-01-03 15:11:46 +00:00
hippocritical
71ec32ac9e removed prints for strategy could not be loaded
changed back to ast, astor is not really needed.
2023-01-02 23:35:51 +01:00
hippocritical
697fad0ac4 Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils 2023-01-02 20:46:05 +01:00
hippocritical
0817e1698f requirements thinned out again
StrategyResolver.search_all_objects(enum_failed) set to False since we got no use in True
shortened update_code call
added modified_code8 test which currently still fails. (and thereby is commented out)
2023-01-02 20:45:56 +01:00
Matthias
91d8370909 Merge pull request #7966 from freqtrade/frog-hyper-docs
Fix ROI table comma and spacing
2023-01-02 20:35:05 +01:00
Robert Davey
2c430c806c Fix ROI table comma and spacing
THanks to `@topdollar` in discord for noticing the typos.
2023-01-02 15:54:49 +00:00
hippocritical
61d7129d7c Update freqtrade/commands/strategy_utils_commands.py
Co-authored-by: Matthias <xmatthias@outlook.com>
2023-01-02 16:51:05 +01:00
Robert Caulk
52dfb0452c Update freqai-feature-engineering.md 2023-01-02 16:06:54 +01:00
Matthias
72f9c248f5 Merge pull request #7961 from freqtrade/dependabot/pip/develop/time-machine-2.9.0
Bump time-machine from 2.8.2 to 2.9.0
2023-01-02 09:21:55 +01:00
Matthias
df25dbc048 Don't require a configuration for strategy-updater 2023-01-02 08:52:18 +01:00
Matthias
a712c5d42c Improve if formatting 2023-01-02 08:52:01 +01:00
Matthias
e89609dc3a Fix crash due to invalid parameter 2023-01-02 08:51:54 +01:00
Matthias
5bb1f4a845 Merge pull request #7962 from freqtrade/dependabot/pip/develop/pydantic-1.10.4
Bump pydantic from 1.10.2 to 1.10.4
2023-01-02 08:26:14 +01:00
Matthias
d1a0ae45e8 Merge pull request #7960 from freqtrade/dependabot/pip/develop/filelock-3.9.0
Bump filelock from 3.8.2 to 3.9.0
2023-01-02 08:25:11 +01:00
dependabot[bot]
724465c798 Bump pydantic from 1.10.2 to 1.10.4
Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.2 to 1.10.4.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v1.10.4/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v1.10.2...v1.10.4)

---
updated-dependencies:
- dependency-name: pydantic
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 03:01:07 +00:00
dependabot[bot]
488b4512e0 Bump time-machine from 2.8.2 to 2.9.0
Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.8.2 to 2.9.0.
- [Release notes](https://github.com/adamchainz/time-machine/releases)
- [Changelog](https://github.com/adamchainz/time-machine/blob/main/HISTORY.rst)
- [Commits](https://github.com/adamchainz/time-machine/compare/2.8.2...2.9.0)

---
updated-dependencies:
- dependency-name: time-machine
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 03:01:00 +00:00
dependabot[bot]
d304f95c13 Bump filelock from 3.8.2 to 3.9.0
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.8.2 to 3.9.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/py-filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.8.2...3.9.0)

---
updated-dependencies:
- dependency-name: filelock
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-02 03:00:55 +00:00
hippocritical
66f7c91357 Adding tests
added more code inside NameUpdater to grab more variables.
2023-01-01 22:03:45 +01:00
hippocritical
762dd4f024 Adding tests
added more code inside NameUpdater to grab more variables.
2023-01-01 18:57:38 +01:00
hippocritical
a51e44eea3 Adding tests 2023-01-01 12:37:15 +01:00
Matthias
74b924471a type ccxt_compat tests 2022-12-31 10:59:42 +01:00
Matthias
cd7bd9bf9a Update gate liquidation price link 2022-12-31 10:25:21 +01:00
Matthias
6498e352c1 Remove pointless default 2022-12-31 10:23:39 +01:00
Matthias
97e8bb09e8 Update exchange documentation with note about leverage 2022-12-31 10:17:30 +01:00
hippocritical
82218d01f4 sped up the function generic_visit that now skips unnecessary fields
added mentioning of skipped class names since they could not be found
2022-12-30 21:49:09 +01:00
Stefano Ariestasia
5188464fc0 fix typo 2022-12-31 02:03:02 +09:00
Wagner Costa
c8aa7720a2 added again feature check in BT from pred files 2022-12-30 11:16:35 -03:00
Wagner Costa
b39fc6b924 remove add pair to column from docs, fix keyerror bug and adjust hybrid strategy example 2022-12-30 10:42:31 -03:00
robcaulk
b2bab68fba move price assignment to feature_engineering_standard() to reduce un-requested feature additions in RL. Ensure old method of price assignment still works, add deprecation warning to help users migrate their strategies 2022-12-30 13:02:39 +01:00
Matthias
798438df9d Extract funding-rate call to separate method
this will allow overwriting in subclasses.
2022-12-30 07:32:59 +01:00
Matthias
499cc5bae1 Better visualize downloaded candletype in debug mode 2022-12-30 07:15:24 +01:00
hippocritical
a6356c2821 Merge remote-tracking branch 'origin/strategy_utils' into strategy_utils 2022-12-29 22:32:02 +01:00
hippocritical
c6f045afa9 fixing issues of the maintainer
found a bug meaning elts could contain lists of elts (now recurively gone through)

Next in line: writing tests based on StrategyUpdater.update_code
2022-12-29 22:31:33 +01:00
Wagner Costa
2e30bdb9b2 freqai bt - fix tests 2022-12-29 16:35:11 -03:00
Matthias
9a46613975 Merge pull request #7954 from freqtrade/new_release
New release 2022.12
2022-12-29 17:45:08 +01:00
Wagner Costa
2b89f643b7 adjust backtest to new feature engineering functions 2022-12-28 19:03:41 -03:00
Matthias
c78b2080cc Add exception test for interest function 2022-12-28 17:42:35 +01:00
Matthias
6ef15802eb make tables an optional dependency
requirements will still install this though.
2022-12-28 16:04:21 +01:00
Matthias
973cfd0182 Merge pull request #7810 from stash86/bt-metrics
Add more calculations for backtest metrics
2022-12-28 15:57:07 +01:00
Matthias
f0bd6b9589 Merge pull request #7939 from freqtrade/dependabot/pip/develop/tables-3.8.0
Bump tables from 3.7.0 to 3.8.0
2022-12-28 15:55:43 +01:00
Matthias
2805e83c9f Bump Develop version to 2023.1 2022-12-28 15:53:43 +01:00
Matthias
8e8f71ade5 Version bump 2022.12 2022-12-28 15:42:38 +01:00
Matthias
149539d3f9 Merge branch 'stable' into new_release 2022-12-28 15:42:29 +01:00
Matthias
5cb8fe1a50 Add JOSS badge to freqtrade docs and readme.md 2022-12-28 15:40:12 +01:00
Matthias
c52910f28b Improve resiliance against invalid data
closes #7947
2022-12-28 15:30:57 +01:00
Matthias
6434bf6745 Document new backtesting metrics 2022-12-28 15:29:55 +01:00
Matthias
32bbe603cb Fix sortino std calculation 2022-12-28 14:59:49 +01:00
robcaulk
6f7eb71bbb ensure RL works with new naming scheme 2022-12-28 14:52:33 +01:00
Matthias
d5b516842c Fix 2 docstrings 2022-12-28 14:44:23 +01:00
Matthias
f21185d1c4 Add tests for new metrics 2022-12-28 14:05:04 +01:00
Matthias
02eb00fa33 Merge branch 'develop' into pr/stash86/7810 2022-12-28 14:04:54 +01:00
robcaulk
c2936d551b improve doc, update test strats, change function names 2022-12-28 13:25:40 +01:00
Matthias
4d112def17 Remove binance AD from docs page
fixes #7921
2022-12-28 07:10:11 +01:00
hippocritical
126b8dac07 Merge branch 'freqtrade:develop' into strategy_utils 2022-12-27 22:34:24 +01:00
hippocritical
70e9fa6136 implementing the strategy_updater in a first version 2022-12-27 20:43:43 +01:00
Matthias
cd4faa9c59 keep max_stake_amount through backtests 2022-12-27 18:08:20 +01:00
Wagner Costa
8227b4aafe freqAI Strategy - improve user experience 2022-12-27 11:37:01 -03:00
Matthias
62c4675e29 Remove some deprecated fields from the API 2022-12-27 14:28:07 +01:00
Matthias
cb66663fd2 show max_stake_amount in API 2022-12-27 14:28:07 +01:00
Matthias
55001bf321 Keep max_stake_amount (only relevant for DCA orders). 2022-12-27 14:28:07 +01:00
Matthias
6f2c3e2528 Split migration and persistence tests 2022-12-27 14:28:07 +01:00
Matthias
2d6ca5c8bf Merge pull request #7949 from freqtrade/freqai-doc-update
Improve `purge_old_models` explanation
2022-12-27 13:25:58 +01:00
Robert Caulk
20901c833a Improve purge_old_models explanation 2022-12-27 10:08:09 +01:00
Matthias
8a37eba0d9 Merge pull request #7946 from freqtrade/dependabot/pip/develop/numpy-1.24.1
Bump numpy from 1.23.5 to 1.24.1
2022-12-26 20:50:26 +01:00
Matthias
882e68c68b Rename backtest-result from new to "not new". 2022-12-26 15:33:14 +01:00
Matthias
6a15a9b412 Update backtest-result_new
fixing the calculation of profit_abs - which was incorrect previously.
2022-12-26 15:33:14 +01:00
dependabot[bot]
1cef40a134 Bump numpy from 1.23.5 to 1.24.1
Bumps [numpy](https://github.com/numpy/numpy) from 1.23.5 to 1.24.1.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v1.23.5...v1.24.1)

---
updated-dependencies:
- dependency-name: numpy
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 14:31:47 +00:00
Matthias
e881175cc4 Merge pull request #7945 from freqtrade/dependabot/pip/develop/ccxt-2.4.60
Bump ccxt from 2.4.27 to 2.4.60
2022-12-26 15:30:51 +01:00
Matthias
63f114395a is_short should be a boolean 2022-12-26 14:02:47 +01:00
dependabot[bot]
aaeeb86622 Bump ccxt from 2.4.27 to 2.4.60
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.4.27 to 2.4.60.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.4.27...2.4.60)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 12:40:26 +00:00
Matthias
19913e8dc5 Merge pull request #7940 from freqtrade/dependabot/pip/develop/isort-5.11.4
Bump isort from 5.11.3 to 5.11.4
2022-12-26 13:39:39 +01:00
dependabot[bot]
d60b38dad2 Bump tables from 3.7.0 to 3.8.0
Bumps [tables](https://github.com/PyTables/PyTables) from 3.7.0 to 3.8.0.
- [Release notes](https://github.com/PyTables/PyTables/releases)
- [Changelog](https://github.com/PyTables/PyTables/blob/master/RELEASE_NOTES.rst)
- [Commits](https://github.com/PyTables/PyTables/compare/v3.7.0...v3.8.0)

---
updated-dependencies:
- dependency-name: tables
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 09:04:53 +00:00
Matthias
d01def3c61 Merge pull request #7941 from freqtrade/dependabot/pip/develop/pre-commit-2.21.0
Bump pre-commit from 2.20.0 to 2.21.0
2022-12-26 10:03:25 +01:00
Matthias
faab4b2342 Merge pull request #7943 from freqtrade/dependabot/pip/develop/types-requests-2.28.11.7
Bump types-requests from 2.28.11.5 to 2.28.11.7
2022-12-26 10:02:49 +01:00
dependabot[bot]
c5b246af80 Bump isort from 5.11.3 to 5.11.4
Bumps [isort](https://github.com/pycqa/isort) from 5.11.3 to 5.11.4.
- [Release notes](https://github.com/pycqa/isort/releases)
- [Changelog](https://github.com/PyCQA/isort/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pycqa/isort/compare/5.11.3...5.11.4)

---
updated-dependencies:
- dependency-name: isort
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 08:24:40 +00:00
Matthias
9296ad23d9 Merge pull request #7938 from freqtrade/dependabot/pip/develop/nbconvert-7.2.7
Bump nbconvert from 7.2.6 to 7.2.7
2022-12-26 09:21:43 +01:00
Matthias
00112d81d2 Bump types-requests pre-commit 2022-12-26 09:21:18 +01:00
Matthias
9a556d2639 Remove all mac conflicts 2022-12-26 08:57:01 +01:00
Matthias
18709406c5 use link overwrite 2022-12-26 08:50:55 +01:00
Matthias
9ea8792d3c Attempt brew fix 2022-12-26 08:45:02 +01:00
dependabot[bot]
3993bd7c1c Bump types-requests from 2.28.11.5 to 2.28.11.7
Bumps [types-requests](https://github.com/python/typeshed) from 2.28.11.5 to 2.28.11.7.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-requests
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 03:01:11 +00:00
dependabot[bot]
e0f60e175f Bump pre-commit from 2.20.0 to 2.21.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 2.20.0 to 2.21.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v2.20.0...v2.21.0)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 03:01:00 +00:00
dependabot[bot]
b1bf6d8dc9 Bump nbconvert from 7.2.6 to 7.2.7
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.2.6 to 7.2.7.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.2.6...v7.2.7)

---
updated-dependencies:
- dependency-name: nbconvert
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-26 03:00:41 +00:00
Stefano Ariestasia
6353f3ac1a fix formulas and implement new metrics 2022-12-26 08:19:51 +09:00
Matthias
7a5439321c Show new metrics in backtesting 2022-12-25 21:29:37 +01:00
Matthias
ce13ce4b10 Update binance stoploss order types
closes #7927
an update to the most recent ccxt version (>2.4.55) would have the same effect.
2022-12-25 09:05:53 +01:00
Matthias
4601705814 Merge pull request #7923 from freqtrade/freqai_backtest
Freqai backtest
2022-12-23 19:17:12 +01:00
Matthias
524da3c7ab Don't actually load models to avoid random failures 2022-12-23 16:19:12 +01:00
Matthias
ad0d7c9a9e Don't allow DCA trades to go beyond max order size
closes  #7924
2022-12-23 16:09:35 +01:00
Matthias
2a7369b56a fix macos CI 2022-12-23 07:38:33 +01:00
Matthias
73792fd6ce Don't attempt to convert None to dict 2022-12-21 06:28:55 +01:00
Matthias
70531224e6 Allow setting identifier via UI 2022-12-20 19:44:01 +01:00
Matthias
07606a9e23 Simplify APi backtest config merging 2022-12-20 19:32:29 +01:00
Matthias
6d9f1fafb7 allow backtest_cache to be provided via backtest API 2022-12-20 19:20:39 +01:00
Matthias
256fac2a2b Add test for freqaimodels endpoint 2022-12-20 07:24:54 +01:00
Matthias
5dbd5c235a Add endpoint for freqAI models 2022-12-20 07:24:54 +01:00
Matthias
3012c55ec5 Merge pull request #7867 from Bloodhunter4rc/remotepairlist
Add Remotepairlist
2022-12-19 19:28:49 +01:00
Matthias
a119fbd895 Small error-message finetuning 2022-12-19 18:19:55 +01:00
Bloodhunter4rc
ebf60d85da self._init_done placed wrong. fixed 2022-12-19 16:25:22 +01:00
Bloodhunter4rc
43f5a16006 parse exception handling, remove info, cache change 2022-12-19 15:36:28 +01:00
Robert Caulk
cc30210b3f Merge pull request #7908 from freqtrade/add-3action-rl-env
Add 3 Action RL Env
2022-12-19 14:47:57 +01:00
Matthias
095bedf54e Merge pull request #7915 from freqtrade/dependabot/pip/develop/blosc-1.11.1
Bump blosc from 1.10.6 to 1.11.1
2022-12-19 14:12:00 +01:00
Matthias
4bad2b5c04 Apply suggestions from code review
Co-authored-by: Emre <aemr3@users.noreply.github.com>
2022-12-19 13:27:07 +01:00
robcaulk
5b9e3af276 improve wording 2022-12-19 12:22:15 +01:00
robcaulk
5405d8fa6f add discussion and tips for Base3ActionRLEnvironment 2022-12-19 12:14:53 +01:00
robcaulk
a276ef4b06 ensure long only RL is tested 2022-12-19 11:49:31 +01:00
Matthias
ec3d49ce4c Merge pull request #7916 from freqtrade/dependabot/pip/develop/types-python-dateutil-2.8.19.5
Bump types-python-dateutil from 2.8.19.4 to 2.8.19.5
2022-12-19 11:20:21 +01:00
Matthias
86b30d2d66 Improve emc test resiliancy 2022-12-19 07:01:32 +01:00
Matthias
2711605df6 Merge pull request #7914 from freqtrade/dependabot/pip/develop/isort-5.11.3
Bump isort from 5.10.1 to 5.11.3
2022-12-19 06:59:28 +01:00
Matthias
daf7653988 Merge pull request #7918 from freqtrade/dependabot/pip/develop/torch-1.13.1
Bump torch from 1.13.0 to 1.13.1
2022-12-19 06:40:27 +01:00
Matthias
cc0d8fa590 Merge pull request #7920 from freqtrade/dependabot/pip/develop/ccxt-2.4.27
Bump ccxt from 2.2.92 to 2.4.27
2022-12-19 06:36:46 +01:00
Matthias
0c8d657d92 update types-dateutil precommit 2022-12-19 06:27:38 +01:00
dependabot[bot]
fa87e08071 Bump ccxt from 2.2.92 to 2.4.27
Bumps [ccxt](https://github.com/ccxt/ccxt) from 2.2.92 to 2.4.27.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/exchanges.cfg)
- [Commits](https://github.com/ccxt/ccxt/compare/2.2.92...2.4.27)

---
updated-dependencies:
- dependency-name: ccxt
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 03:01:26 +00:00
dependabot[bot]
7216d140de Bump torch from 1.13.0 to 1.13.1
Bumps [torch](https://github.com/pytorch/pytorch) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/pytorch/pytorch/releases)
- [Changelog](https://github.com/pytorch/pytorch/blob/master/RELEASE.md)
- [Commits](https://github.com/pytorch/pytorch/compare/v1.13.0...v1.13.1)

---
updated-dependencies:
- dependency-name: torch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 03:01:09 +00:00
dependabot[bot]
06225b9501 Bump types-python-dateutil from 2.8.19.4 to 2.8.19.5
Bumps [types-python-dateutil](https://github.com/python/typeshed) from 2.8.19.4 to 2.8.19.5.
- [Release notes](https://github.com/python/typeshed/releases)
- [Commits](https://github.com/python/typeshed/commits)

---
updated-dependencies:
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 03:00:54 +00:00
dependabot[bot]
d86885c7f9 Bump blosc from 1.10.6 to 1.11.1
Bumps [blosc](https://github.com/blosc/python-blosc) from 1.10.6 to 1.11.1.
- [Release notes](https://github.com/blosc/python-blosc/releases)
- [Changelog](https://github.com/Blosc/python-blosc/blob/main/RELEASE_NOTES.rst)
- [Commits](https://github.com/blosc/python-blosc/compare/v1.10.6...v1.11.1)

---
updated-dependencies:
- dependency-name: blosc
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 03:00:46 +00:00
dependabot[bot]
b61fc161bf Bump isort from 5.10.1 to 5.11.3
Bumps [isort](https://github.com/pycqa/isort) from 5.10.1 to 5.11.3.
- [Release notes](https://github.com/pycqa/isort/releases)
- [Changelog](https://github.com/PyCQA/isort/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pycqa/isort/compare/5.10.1...5.11.3)

---
updated-dependencies:
- dependency-name: isort
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-19 03:00:43 +00:00
Bloodhunter4rc
6380c3d462 reduce duplicate code, fix cache check 2022-12-18 23:37:18 +01:00
Bloodhunter4rc
bb33b96ba7 init cache on first iteration, init checks, limit length and charmap to info replace if invalid, move filter logic 2022-12-18 22:28:12 +01:00
Matthias
1f4cc145c4 Move trade docs to advanced section 2022-12-18 20:02:38 +01:00
Matthias
eda72ef26c Add documentation for Order object 2022-12-18 19:40:49 +01:00
Matthias
a439488b74 Add initial trade_object documentation 2022-12-18 17:42:05 +01:00
Matthias
bad6fe77d3 Remove deprecated trade property 2022-12-18 17:21:50 +01:00
Matthias
cb81613aa5 Merge pull request #7907 from freqtrade/add-joss-citation
Add JOSS citation to freqai doc
2022-12-17 19:22:35 +01:00
Robert Caulk
329a0a3f45 Update docs/freqai.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2022-12-17 18:43:20 +01:00
Emre
c293401b22 Add can_short to freqai base model 2022-12-16 23:19:08 +03:00
Emre
e604047158 Enable RL tests on arm mac 2022-12-16 22:57:55 +03:00
Emre
a8c9aa01fb Add 3ac test 2022-12-16 22:31:44 +03:00
Emre
7727f31507 Add 3 Action RL env 2022-12-16 22:18:49 +03:00
Emre
dde363343c Add can_short param to base env 2022-12-16 22:16:19 +03:00
Robert Caulk
439914caef Merge pull request #7906 from initrv/fix-base-env-done-condition
fix base4 env done condition
2022-12-16 15:25:58 +01:00
robcaulk
e4284f4e7b add citation to freqai doc. Update credits 2022-12-16 15:20:46 +01:00
initrv
36948e2a74 fix base4 env done condition 2022-12-16 14:14:05 +03:00
robcaulk
c9bc91c75b add shuffle_after_split option 2022-12-16 11:20:37 +01:00
Matthias
6fa3db3a1d Fix failing tests 2022-12-15 19:36:21 +01:00
Bloodhunter4rc
cd1b8b9cee single space removed for the unit test to pass.. 2022-12-15 18:14:37 +01:00
Bloodhunter4rc
9e20d13e50 Merge branch 'freqtrade:develop' into remotepairlist 2022-12-15 17:38:56 +01:00
Bloodhunter4rc
1d5c66da3b + Unit Tests 2022-12-15 17:38:21 +01:00
Bloodhunter4rc
7f3524949c - print 2022-12-13 21:00:23 +01:00
Bloodhunter4rc
d52c1c7554 Add unit tests 2022-12-13 20:21:06 +01:00
Bloodhunter4rc
6f92c58e33 add docs, add bearer token. 2022-12-12 13:24:33 +01:00
Bloodhunter4rc
f6b90595fa remove html. change var names. 2022-12-12 11:05:03 +01:00
froggleston
3adb3d9b1e Merge branch 'reject_report' of github.com:froggleston/freqtrade into reject_report 2022-12-08 18:49:17 +00:00
froggleston
6f08b610d6 Merge branch 'develop' of github.com:froggleston/freqtrade into reject_report 2022-12-08 18:48:33 +00:00
froggleston
f5359985e8 Make CLI option and docs clearer that we're handling signals not trades 2022-12-08 18:47:09 +00:00
Robert Davey
d3443beaf9 Merge branch 'freqtrade:develop' into reject_report 2022-12-08 18:33:10 +00:00
Bloodhunter4rc
66412bfa58 Remove unnecessary loop 2022-12-08 01:51:12 +01:00
Bloodhunter4rc
7efcbbb457 Local File Loading 2022-12-08 01:09:17 +01:00
Bloodhunter4rc
da2747d487 Add Local .json file Loading 2022-12-08 00:52:54 +01:00
Bloodhunter4rc
b144a6357d Remove Duplicate 2022-12-07 18:24:55 +01:00
Bloodhunter4rc
547a75d9c1 Fix Info 2022-12-07 17:49:21 +01:00
Bloodhunter4rc
607d5b2f8f Split to fetch_pairlist function, Info Message 2022-12-07 17:47:38 +01:00
Bloodhunter4rc
48160f3fe9 Flake 8 fix, Json Fetching 2022-12-07 17:01:45 +01:00
Bloodhunter4rc
199fd2d074 +Remote Pairlist 2022-12-07 15:08:33 +01:00
Stefano Ariestasia
89c7c2fec6 isort fix 2022-12-07 18:09:57 +09:00
Stefano Ariestasia
611e35ed81 flake8 fix 2022-12-07 15:47:58 +09:00
froggleston
854f056eaf Fix missing Path constructors 2022-12-05 16:16:36 +00:00
froggleston
5a4e99b413 Add support for collating and analysing rejected trades in backtest 2022-12-05 15:34:31 +00:00
Stefano Ariestasia
f410b1b14d Update metrics.py 2022-11-28 08:56:49 +09:00
Matthias
77826ebf78 Merge pull request #7806 from freqtrade/new_release
New release 2022.11
2022-11-27 17:10:48 +01:00
Matthias
5c571f565f Version bump 2022.11 2022-11-27 15:34:00 +01:00
Matthias
178e5a195a Merge branch 'stable' into new_release 2022-11-27 15:33:45 +01:00
Matthias
9adce8d167 Merge pull request #7657 from freqtrade/new_release
New release 2022.10
2022-10-29 09:04:34 +02:00
Matthias
ec7d663496 Version bump 2022.10 2022-10-28 19:34:30 +02:00
Matthias
a56465e049 Merge branch 'stable' into new_release 2022-10-28 19:34:15 +02:00
Matthias
851d1e9da1 Version bump 2022.9.1 2022-10-02 06:59:10 +02:00
Matthias
59cfde3767 Fix pandas deprecation warnings from freqAI 2022-10-02 06:59:10 +02:00
Matthias
c53ff94b8e Force joblib update via setup.py 2022-10-02 06:54:08 +02:00
Robert Caulk
03256fc776 Merge pull request #7508 from aemr3/fix-pca-errors
Fix feature list match for PCA
2022-10-02 06:53:08 +02:00
Matthias
19b3669d97 Decrease message throughput
fixes memory leak by queue raising indefinitely
2022-10-02 06:50:34 +02:00
Matthias
6841bdaa81 Update test to verify webhook won't log-spam on new messagetypes 2022-10-02 06:50:19 +02:00
Matthias
8e101a9f1c Disable log spam from analyze_df in webhook/discord 2022-10-02 06:50:12 +02:00
Matthias
0680ca2fe8 Merge pull request #7497 from freqtrade/new_release
New release 2022.9
2022-09-29 18:06:57 +02:00
Matthias
d0456b698c Version bump 2022.9 2022-09-29 07:22:41 +02:00
Matthias
f3085443d5 Merge branch 'stable' into new_release 2022-09-29 07:22:29 +02:00
Matthias
958a4565db Merge pull request #7313 from freqtrade/new_release
New release 2022.8
2022-08-30 23:01:19 +02:00
Matthias
2403a03fcb Version bump 2022.8 2022-08-29 06:28:53 +02:00
374 changed files with 37906 additions and 19941 deletions

View File

@@ -1,11 +1,12 @@
FROM freqtradeorg/freqtrade:develop
FROM freqtradeorg/freqtrade:develop_freqairl
USER root
# Install dependencies
COPY requirements-dev.txt /freqtrade/
RUN apt-get update \
&& apt-get -y install git mercurial sudo vim build-essential \
&& apt-get -y install --no-install-recommends apt-utils dialog \
&& apt-get -y install --no-install-recommends git sudo vim build-essential \
&& apt-get clean \
&& mkdir -p /home/ftuser/.vscode-server /home/ftuser/.vscode-server-insiders /home/ftuser/commandhistory \
&& echo "export PROMPT_COMMAND='history -a'" >> /home/ftuser/.bashrc \

View File

@@ -19,23 +19,24 @@
"postCreateCommand": "freqtrade create-userdir --userdir user_data/",
"workspaceFolder": "/workspaces/freqtrade",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
"editor.insertSpaces": true,
"files.trimTrailingWhitespace": true,
"[markdown]": {
"files.trimTrailingWhitespace": false,
"customizations": {
"settings": {
"terminal.integrated.shell.linux": "/bin/bash",
"editor.insertSpaces": true,
"files.trimTrailingWhitespace": true,
"[markdown]": {
"files.trimTrailingWhitespace": false,
},
"python.pythonPath": "/usr/local/bin/python",
},
"python.pythonPath": "/usr/local/bin/python",
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"davidanson.vscode-markdownlint",
"ms-azuretools.vscode-docker",
"vscode-icons-team.vscode-icons",
],
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"ms-python.python",
"ms-python.vscode-pylance",
"davidanson.vscode-markdownlint",
"ms-azuretools.vscode-docker",
"vscode-icons-team.vscode-icons",
],
}
}

View File

@@ -14,17 +14,18 @@ on:
- cron: '0 5 * * 4'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: "${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}"
cancel-in-progress: true
permissions:
repository-projects: read
jobs:
build_linux:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-18.04, ubuntu-20.04, ubuntu-22.04 ]
python-version: ["3.8", "3.9", "3.10"]
os: [ ubuntu-20.04, ubuntu-22.04 ]
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
@@ -76,6 +77,17 @@ jobs:
# Allow failure for coveralls
coveralls || true
- name: Check for repository changes
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "Repository is dirty, changes detected:"
git status
git diff
exit 1
else
echo "Repository is clean, no changes detected."
fi
- name: Backtesting (multi)
run: |
cp config_examples/config_bittrex.example.json config.json
@@ -90,14 +102,14 @@ jobs:
freqtrade create-userdir --userdir user_data
freqtrade hyperopt --datadir tests/testdata -e 6 --strategy SampleStrategy --hyperopt-loss SharpeHyperOptLossDaily --print-all
- name: Flake8
run: |
flake8
- name: Sort imports (isort)
run: |
isort --check .
- name: Run Ruff
run: |
ruff check --format=github .
- name: Mypy
run: |
mypy freqtrade scripts tests
@@ -115,7 +127,7 @@ jobs:
strategy:
matrix:
os: [ macos-latest ]
python-version: ["3.8", "3.9", "3.10"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
@@ -124,6 +136,7 @@ jobs:
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Cache_dependencies
uses: actions/cache@v3
@@ -147,7 +160,21 @@ jobs:
- name: Installation - macOS
if: runner.os == 'macOS'
run: |
brew update
# brew update
# TODO: Should be the brew upgrade
# homebrew fails to update python due to unlinking failures
# https://github.com/actions/runner-images/issues/6817
rm /usr/local/bin/2to3 || true
rm /usr/local/bin/2to3-3.11 || true
rm /usr/local/bin/idle3 || true
rm /usr/local/bin/idle3.11 || true
rm /usr/local/bin/pydoc3 || true
rm /usr/local/bin/pydoc3.11 || true
rm /usr/local/bin/python3 || true
rm /usr/local/bin/python3.11 || true
rm /usr/local/bin/python3-config || true
rm /usr/local/bin/python3.11-config || true
brew install hdf5 c-blosc
python -m pip install --upgrade pip wheel
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
@@ -160,6 +187,17 @@ jobs:
run: |
pytest --random-order
- name: Check for repository changes
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "Repository is dirty, changes detected:"
git status
git diff
exit 1
else
echo "Repository is clean, no changes detected."
fi
- name: Backtesting
run: |
cp config_examples/config_bittrex.example.json config.json
@@ -173,14 +211,14 @@ jobs:
freqtrade create-userdir --userdir user_data
freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt-loss SharpeHyperOptLossDaily --print-all
- name: Flake8
run: |
flake8
- name: Sort imports (isort)
run: |
isort --check .
- name: Run Ruff
run: |
ruff check --format=github .
- name: Mypy
run: |
mypy freqtrade scripts
@@ -199,7 +237,7 @@ jobs:
strategy:
matrix:
os: [ windows-latest ]
python-version: ["3.8", "3.9", "3.10"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
@@ -223,6 +261,18 @@ jobs:
run: |
pytest --random-order
- name: Check for repository changes
run: |
if (git status --porcelain) {
Write-Host "Repository is dirty, changes detected:"
git status
git diff
exit 1
}
else {
Write-Host "Repository is clean, no changes detected."
}
- name: Backtesting
run: |
cp config_examples/config_bittrex.example.json config.json
@@ -235,9 +285,9 @@ jobs:
freqtrade create-userdir --userdir user_data
freqtrade hyperopt --datadir tests/testdata -e 5 --strategy SampleStrategy --hyperopt-loss SharpeHyperOptLossDaily --print-all
- name: Flake8
- name: Run Ruff
run: |
flake8
ruff check --format=github .
- name: Mypy
run: |
@@ -288,7 +338,7 @@ jobs:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
python-version: "3.11"
- name: Documentation build
run: |
@@ -308,7 +358,6 @@ jobs:
build_linux_online:
# Run pytest with "live" checks
runs-on: ubuntu-22.04
# permissions:
steps:
- uses: actions/checkout@v3
@@ -347,6 +396,8 @@ jobs:
pip install -e .
- name: Tests incl. ccxt compatibility tests
env:
CI_WEB_PROXY: http://152.67.78.211:13128
run: |
pytest --random-order --cov=freqtrade --cov-config=.coveragerc --longrun
@@ -410,7 +461,7 @@ jobs:
python setup.py sdist bdist_wheel
- name: Publish to PyPI (Test)
uses: pypa/gh-action-pypi-publish@v1.6.4
uses: pypa/gh-action-pypi-publish@v1.8.8
if: (github.event_name == 'release')
with:
user: __token__
@@ -418,7 +469,7 @@ jobs:
repository_url: https://test.pypi.org/legacy/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.6.4
uses: pypa/gh-action-pypi-publish@v1.8.8
if: (github.event_name == 'release')
with:
user: __token__
@@ -451,12 +502,13 @@ jobs:
- name: Build and test and push docker images
env:
IMAGE_NAME: freqtradeorg/freqtrade
BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }}
run: |
build_helpers/publish_docker_multi.sh
deploy_arm:
permissions:
packages: write
needs: [ deploy ]
# Only run on 64bit machines
runs-on: [self-hosted, linux, ARM64]
@@ -479,8 +531,9 @@ jobs:
- name: Build and test and push docker images
env:
IMAGE_NAME: freqtradeorg/freqtrade
BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }}
GHCR_USERNAME: ${{ github.actor }}
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
build_helpers/publish_docker_arm64.sh

View File

@@ -2,33 +2,40 @@
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pycqa/flake8
rev: "4.0.1"
rev: "6.0.0"
hooks:
- id: flake8
# stages: [push]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v0.942"
rev: "v1.3.0"
hooks:
- id: mypy
exclude: build_helpers
additional_dependencies:
- types-cachetools==5.2.1
- types-cachetools==5.3.0.6
- types-filelock==3.2.7
- types-requests==2.28.11.5
- types-tabulate==0.9.0.0
- types-python-dateutil==2.8.19.4
- types-requests==2.31.0.2
- types-tabulate==0.9.0.3
- types-python-dateutil==2.8.19.14
- SQLAlchemy==2.0.19
# stages: [push]
- repo: https://github.com/pycqa/isort
rev: "5.10.1"
rev: "5.12.0"
hooks:
- id: isort
name: isort (python)
# stages: [push]
- repo: https://github.com/charliermarsh/ruff-pre-commit
# Ruff version.
rev: 'v0.0.270'
hooks:
- id: ruff
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.4.0
rev: v4.4.0
hooks:
- id: end-of-file-fixer
exclude: |

View File

@@ -45,16 +45,17 @@ pytest tests/test_<file_name>.py::test_<method_name>
### 2. Test if your code is PEP8 compliant
#### Run Flake8
#### Run Ruff
```bash
flake8 freqtrade tests scripts
ruff .
```
We receive a lot of code that fails the `flake8` checks.
We receive a lot of code that fails the `ruff` checks.
To help with that, we encourage you to install the git pre-commit
hook that will warn you when you try to commit code that fails these checks.
Guide for installing them is [here](http://flake8.pycqa.org/en/latest/user/using-hooks.html).
hook that will warn you when you try to commit code that fails these checks.
you can manually run pre-commit with `pre-commit run -a`.
##### Additional styles applied

View File

@@ -1,4 +1,4 @@
FROM python:3.10.7-slim-bullseye as base
FROM python:3.11.4-slim-bullseye as base
# Setup env
ENV LANG C.UTF-8
@@ -25,7 +25,7 @@ FROM base as python-deps
RUN apt-get update \
&& apt-get -y install build-essential libssl-dev git libffi-dev libgfortran5 pkg-config cmake gcc \
&& apt-get clean \
&& pip install --upgrade pip
&& pip install --upgrade pip wheel
# Install TA-lib
COPY build_helpers/* /tmp/

View File

@@ -1,6 +1,7 @@
# ![freqtrade](https://raw.githubusercontent.com/freqtrade/freqtrade/develop/docs/assets/freqtrade_poweredby.svg)
[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/)
[![DOI](https://joss.theoj.org/papers/10.21105/joss.04864/status.svg)](https://doi.org/10.21105/joss.04864)
[![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
[![Documentation](https://readthedocs.org/projects/freqtrade/badge/)](https://www.freqtrade.io)
[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
@@ -39,6 +40,7 @@ Please read the [exchange specific notes](docs/exchanges.md) to learn about even
- [X] [Binance](https://www.binance.com/)
- [X] [Gate.io](https://www.gate.io/ref/6266643)
- [X] [OKX](https://okx.com/)
- [X] [Bybit](https://bybit.com/)
Please make sure to read the [exchange specific notes](docs/exchanges.md), as well as the [trading with leverage](docs/leverage.md) documentation before diving in.
@@ -163,6 +165,10 @@ first. If it hasn't been reported, please
ensure you follow the template guide so that the team can assist you as
quickly as possible.
For every [issue](https://github.com/freqtrade/freqtrade/issues/new/choose) created, kindly follow up and mark satisfaction or reminder to close issue when equilibrium ground is reached.
--Maintain github's [community policy](https://docs.github.com/en/site-policy/github-terms/github-community-code-of-conduct)--
### [Feature Requests](https://github.com/freqtrade/freqtrade/labels/enhancement)
Have you a great idea to improve the bot you want to share? Please,
@@ -204,6 +210,6 @@ To run this bot we recommend you a cloud instance with a minimum of:
- [Python >= 3.8](http://docs.python-guide.org/en/latest/starting/installation/)
- [pip](https://pip.pypa.io/en/stable/installing/)
- [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html)
- [TA-Lib](https://ta-lib.github.io/ta-lib-python/)
- [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended)
- [Docker](https://www.docker.com/products/docker) (Recommended)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -8,8 +8,8 @@ if [ -n "$2" ] || [ ! -f "${INSTALL_LOC}/lib/libta_lib.a" ]; then
tar zxvf ta-lib-0.4.0-src.tar.gz
cd ta-lib \
&& sed -i.bak "s|0.00000001|0.000000000000000001 |g" src/ta_func/ta_utility.h \
&& curl 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' -o config.guess \
&& curl 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' -o config.sub \
&& curl 'https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.guess' -o config.guess \
&& curl 'https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.sub' -o config.sub \
&& ./configure --prefix=${INSTALL_LOC}/ \
&& make
if [ $? -ne 0 ]; then

View File

@@ -1,18 +1,11 @@
# Downloads don't work automatically, since the URL is regenerated via javascript.
# Downloaded from https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib
# vendored Wheels compiled via https://github.com/xmatthias/ta-lib-python/tree/ta_bundled_040
python -m pip install --upgrade pip wheel
$pyv = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"
if ($pyv -eq '3.8') {
pip install build_helpers\TA_Lib-0.4.25-cp38-cp38-win_amd64.whl
}
if ($pyv -eq '3.9') {
pip install build_helpers\TA_Lib-0.4.25-cp39-cp39-win_amd64.whl
}
if ($pyv -eq '3.10') {
pip install build_helpers\TA_Lib-0.4.25-cp310-cp310-win_amd64.whl
}
pip install --find-links=build_helpers\ TA-Lib
pip install -r requirements-dev.txt
pip install -e .

View File

@@ -8,12 +8,17 @@ import yaml
pre_commit_file = Path('.pre-commit-config.yaml')
require_dev = Path('requirements-dev.txt')
require = Path('requirements.txt')
with require_dev.open('r') as rfile:
requirements = rfile.readlines()
with require.open('r') as rfile:
requirements.extend(rfile.readlines())
# Extract types only
type_reqs = [r.strip('\n') for r in requirements if r.startswith('types-')]
type_reqs = [r.strip('\n') for r in requirements if r.startswith(
'types-') or r.startswith('SQLAlchemy')]
with pre_commit_file.open('r') as file:
f = yaml.load(file, Loader=yaml.FullLoader)

View File

@@ -3,18 +3,22 @@
# Use BuildKit, otherwise building on ARM fails
export DOCKER_BUILDKIT=1
IMAGE_NAME=freqtradeorg/freqtrade
CACHE_IMAGE=freqtradeorg/freqtrade_cache
GHCR_IMAGE_NAME=ghcr.io/freqtrade/freqtrade
# Replace / with _ to create a valid tag
TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g")
TAG_PLOT=${TAG}_plot
TAG_FREQAI=${TAG}_freqai
TAG_FREQAI_RL=${TAG_FREQAI}rl
TAG_FREQAI_TORCH=${TAG_FREQAI}torch
TAG_PI="${TAG}_pi"
TAG_ARM=${TAG}_arm
TAG_PLOT_ARM=${TAG_PLOT}_arm
TAG_FREQAI_ARM=${TAG_FREQAI}_arm
TAG_FREQAI_RL_ARM=${TAG_FREQAI_RL}_arm
CACHE_IMAGE=freqtradeorg/freqtrade_cache
echo "Running for ${TAG}"
@@ -38,13 +42,13 @@ if [ $? -ne 0 ]; then
echo "failed building multiarch images"
return 1
fi
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_ARM} -t freqtrade:${TAG_PLOT_ARM} -f docker/Dockerfile.plot .
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_ARM} -t freqtrade:${TAG_FREQAI_ARM} -f docker/Dockerfile.freqai .
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_FREQAI_ARM} -t freqtrade:${TAG_FREQAI_RL_ARM} -f docker/Dockerfile.freqai_rl .
# Tag image for upload and next build step
docker tag freqtrade:$TAG_ARM ${CACHE_IMAGE}:$TAG_ARM
docker build --cache-from freqtrade:${TAG_ARM} --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_ARM} -t freqtrade:${TAG_PLOT_ARM} -f docker/Dockerfile.plot .
docker build --cache-from freqtrade:${TAG_ARM} --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_ARM} -t freqtrade:${TAG_FREQAI_ARM} -f docker/Dockerfile.freqai .
docker build --cache-from freqtrade:${TAG_ARM} --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_ARM} -t freqtrade:${TAG_FREQAI_RL_ARM} -f docker/Dockerfile.freqai_rl .
docker tag freqtrade:$TAG_PLOT_ARM ${CACHE_IMAGE}:$TAG_PLOT_ARM
docker tag freqtrade:$TAG_FREQAI_ARM ${CACHE_IMAGE}:$TAG_FREQAI_ARM
docker tag freqtrade:$TAG_FREQAI_RL_ARM ${CACHE_IMAGE}:$TAG_FREQAI_RL_ARM
@@ -59,7 +63,6 @@ fi
docker images
# docker push ${IMAGE_NAME}
docker push ${CACHE_IMAGE}:$TAG_PLOT_ARM
docker push ${CACHE_IMAGE}:$TAG_FREQAI_ARM
docker push ${CACHE_IMAGE}:$TAG_FREQAI_RL_ARM
@@ -70,25 +73,47 @@ docker push ${CACHE_IMAGE}:$TAG_ARM
# Otherwise installation might fail.
echo "create manifests"
docker manifest create --amend ${IMAGE_NAME}:${TAG} ${CACHE_IMAGE}:${TAG_ARM} ${IMAGE_NAME}:${TAG_PI} ${CACHE_IMAGE}:${TAG}
docker manifest create ${IMAGE_NAME}:${TAG} ${CACHE_IMAGE}:${TAG} ${CACHE_IMAGE}:${TAG_ARM} ${IMAGE_NAME}:${TAG_PI}
docker manifest push -p ${IMAGE_NAME}:${TAG}
docker manifest create ${IMAGE_NAME}:${TAG_PLOT} ${CACHE_IMAGE}:${TAG_PLOT_ARM} ${CACHE_IMAGE}:${TAG_PLOT}
docker manifest create ${IMAGE_NAME}:${TAG_PLOT} ${CACHE_IMAGE}:${TAG_PLOT} ${CACHE_IMAGE}:${TAG_PLOT_ARM}
docker manifest push -p ${IMAGE_NAME}:${TAG_PLOT}
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI} ${CACHE_IMAGE}:${TAG_FREQAI_ARM} ${CACHE_IMAGE}:${TAG_FREQAI}
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI} ${CACHE_IMAGE}:${TAG_FREQAI} ${CACHE_IMAGE}:${TAG_FREQAI_ARM}
docker manifest push -p ${IMAGE_NAME}:${TAG_FREQAI}
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL_ARM} ${CACHE_IMAGE}:${TAG_FREQAI_RL}
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL_ARM}
docker manifest push -p ${IMAGE_NAME}:${TAG_FREQAI_RL}
# Create special Torch tag - which is identical to the RL tag.
docker manifest create ${IMAGE_NAME}:${TAG_FREQAI_TORCH} ${CACHE_IMAGE}:${TAG_FREQAI_RL} ${CACHE_IMAGE}:${TAG_FREQAI_RL_ARM}
docker manifest push -p ${IMAGE_NAME}:${TAG_FREQAI_TORCH}
# copy images to ghcr.io
alias crane="docker run --rm -i -v $(pwd)/.crane:/home/nonroot/.docker/ gcr.io/go-containerregistry/crane"
mkdir .crane
chmod a+rwx .crane
echo "${GHCR_TOKEN}" | crane auth login ghcr.io -u "${GHCR_USERNAME}" --password-stdin
crane copy ${IMAGE_NAME}:${TAG_FREQAI_RL} ${GHCR_IMAGE_NAME}:${TAG_FREQAI_RL}
crane copy ${IMAGE_NAME}:${TAG_FREQAI_RL} ${GHCR_IMAGE_NAME}:${TAG_FREQAI_TORCH}
crane copy ${IMAGE_NAME}:${TAG_FREQAI} ${GHCR_IMAGE_NAME}:${TAG_FREQAI}
crane copy ${IMAGE_NAME}:${TAG_PLOT} ${GHCR_IMAGE_NAME}:${TAG_PLOT}
crane copy ${IMAGE_NAME}:${TAG} ${GHCR_IMAGE_NAME}:${TAG}
# Tag as latest for develop builds
if [ "${TAG}" = "develop" ]; then
echo 'Tagging image as latest'
docker manifest create ${IMAGE_NAME}:latest ${CACHE_IMAGE}:${TAG_ARM} ${IMAGE_NAME}:${TAG_PI} ${CACHE_IMAGE}:${TAG}
docker manifest push -p ${IMAGE_NAME}:latest
crane copy ${IMAGE_NAME}:latest ${GHCR_IMAGE_NAME}:latest
fi
docker images
rm -rf .crane
# Cleanup old images from arm64 node.
docker image prune -a --force --filter "until=24h"

View File

@@ -2,6 +2,8 @@
# The below assumes a correctly setup docker buildx environment
IMAGE_NAME=freqtradeorg/freqtrade
CACHE_IMAGE=freqtradeorg/freqtrade_cache
# Replace / with _ to create a valid tag
TAG=$(echo "${BRANCH_NAME}" | sed -e "s/\//_/g")
TAG_PLOT=${TAG}_plot
@@ -11,7 +13,6 @@ TAG_PI="${TAG}_pi"
PI_PLATFORM="linux/arm/v7"
echo "Running for ${TAG}"
CACHE_IMAGE=freqtradeorg/freqtrade_cache
CACHE_TAG=${CACHE_IMAGE}:${TAG_PI}_cache
# Add commit and commit_message to docker container
@@ -26,7 +27,10 @@ if [ "${GITHUB_EVENT_NAME}" = "schedule" ]; then
--cache-to=type=registry,ref=${CACHE_TAG} \
-f docker/Dockerfile.armhf \
--platform ${PI_PLATFORM} \
-t ${IMAGE_NAME}:${TAG_PI} --push .
-t ${IMAGE_NAME}:${TAG_PI} \
--push \
--provenance=false \
.
else
echo "event ${GITHUB_EVENT_NAME}: building with cache"
# Build regular image
@@ -35,12 +39,16 @@ else
# Pull last build to avoid rebuilding the whole image
# docker pull --platform ${PI_PLATFORM} ${IMAGE_NAME}:${TAG}
# disable provenance due to https://github.com/docker/buildx/issues/1509
docker buildx build \
--cache-from=type=registry,ref=${CACHE_TAG} \
--cache-to=type=registry,ref=${CACHE_TAG} \
-f docker/Dockerfile.armhf \
--platform ${PI_PLATFORM} \
-t ${IMAGE_NAME}:${TAG_PI} --push .
-t ${IMAGE_NAME}:${TAG_PI} \
--push \
--provenance=false \
.
fi
if [ $? -ne 0 ]; then
@@ -50,9 +58,9 @@ fi
# Tag image for upload and next build step
docker tag freqtrade:$TAG ${CACHE_IMAGE}:$TAG
docker build --cache-from freqtrade:${TAG} --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot .
docker build --cache-from freqtrade:${TAG} --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG} -t freqtrade:${TAG_FREQAI} -f docker/Dockerfile.freqai .
docker build --cache-from freqtrade:${TAG_FREQAI} --build-arg sourceimage=${CACHE_IMAGE} --build-arg sourcetag=${TAG_FREQAI} -t freqtrade:${TAG_FREQAI_RL} -f docker/Dockerfile.freqai_rl .
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG} -t freqtrade:${TAG_PLOT} -f docker/Dockerfile.plot .
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG} -t freqtrade:${TAG_FREQAI} -f docker/Dockerfile.freqai .
docker build --build-arg sourceimage=freqtrade --build-arg sourcetag=${TAG_FREQAI} -t freqtrade:${TAG_FREQAI_RL} -f docker/Dockerfile.freqai_rl .
docker tag freqtrade:$TAG_PLOT ${CACHE_IMAGE}:$TAG_PLOT
docker tag freqtrade:$TAG_FREQAI ${CACHE_IMAGE}:$TAG_FREQAI
@@ -68,12 +76,10 @@ fi
docker images
docker push ${CACHE_IMAGE}
docker push ${CACHE_IMAGE}:$TAG
docker push ${CACHE_IMAGE}:$TAG_PLOT
docker push ${CACHE_IMAGE}:$TAG_FREQAI
docker push ${CACHE_IMAGE}:$TAG_FREQAI_RL
docker push ${CACHE_IMAGE}:$TAG
docker images

View File

@@ -59,20 +59,6 @@
"pairlists": [
{"method": "StaticPairList"}
],
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
"stoploss_range_step": -0.01,
"minimum_winrate": 0.60,
"minimum_expectancy": 0.20,
"min_trade_number": 10,
"max_trade_duration_minute": 1440,
"remove_pumps": false
},
"telegram": {
"enabled": false,
"token": "your_telegram_token",

View File

@@ -56,20 +56,6 @@
"pairlists": [
{"method": "StaticPairList"}
],
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
"stoploss_range_step": -0.01,
"minimum_winrate": 0.60,
"minimum_expectancy": 0.20,
"min_trade_number": 10,
"max_trade_duration_minute": 1440,
"remove_pumps": false
},
"telegram": {
"enabled": false,
"token": "your_telegram_token",

View File

@@ -21,8 +21,8 @@
"ccxt_config": {},
"ccxt_async_config": {},
"pair_whitelist": [
"1INCH/USDT",
"ALGO/USDT"
"1INCH/USDT:USDT",
"ALGO/USDT:USDT"
],
"pair_blacklist": []
},
@@ -48,7 +48,7 @@
],
"freqai": {
"enabled": true,
"purge_old_models": true,
"purge_old_models": 2,
"train_period_days": 15,
"backtest_period_days": 7,
"live_retrain_hours": 0,
@@ -60,8 +60,8 @@
"1h"
],
"include_corr_pairlist": [
"BTC/USDT",
"ETH/USDT"
"BTC/USDT:USDT",
"ETH/USDT:USDT"
],
"label_period_candles": 20,
"include_shifted_candles": 2,

View File

@@ -60,6 +60,7 @@
"force_entry": "market",
"stoploss": "market",
"stoploss_on_exchange": false,
"stoploss_price_type": "last",
"stoploss_on_exchange_interval": 60,
"stoploss_on_exchange_limit_ratio": 0.99
},

View File

@@ -64,20 +64,6 @@
"pairlists": [
{"method": "StaticPairList"}
],
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
"stoploss_range_step": -0.01,
"minimum_winrate": 0.60,
"minimum_expectancy": 0.20,
"min_trade_number": 10,
"max_trade_duration_minute": 1440,
"remove_pumps": false
},
"telegram": {
"enabled": false,
"token": "your_telegram_token",

View File

@@ -6,6 +6,15 @@ services:
# image: freqtradeorg/freqtrade:develop
# Use plotting image
# image: freqtradeorg/freqtrade:develop_plot
# # Enable GPU Image and GPU Resources (only relevant for freqAI)
# # Make sure to uncomment the whole deploy section
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: 1
# capabilities: [gpu]
# Build step - only needed when additional dependencies are needed
# build:
# context: .
@@ -16,7 +25,7 @@ services:
- "./user_data:/freqtrade/user_data"
# Expose api on port 8080 (localhost only)
# Please read the https://www.freqtrade.io/en/stable/rest-api/ documentation
# before enabling this.
# for more information.
ports:
- "127.0.0.1:8080:8080"
# Default command used when running `docker compose up`

View File

@@ -1,4 +1,4 @@
FROM python:3.9.12-slim-bullseye as base
FROM python:3.9.16-slim-bullseye as base
# Setup env
ENV LANG C.UTF-8

View File

@@ -0,0 +1,36 @@
---
version: '3'
services:
freqtrade:
image: freqtradeorg/freqtrade:stable_freqaitorch
# # Enable GPU Image and GPU Resources
# # Make sure to uncomment the whole deploy section
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: 1
# capabilities: [gpu]
# Build step - only needed when additional dependencies are needed
# build:
# context: .
# dockerfile: "./docker/Dockerfile.custom"
restart: unless-stopped
container_name: freqtrade
volumes:
- "./user_data:/freqtrade/user_data"
# Expose api on port 8080 (localhost only)
# Please read the https://www.freqtrade.io/en/stable/rest-api/ documentation
# for more information.
ports:
- "127.0.0.1:8080:8080"
# Default command used when running `docker compose up`
command: >
trade
--logfile /freqtrade/user_data/logs/freqtrade.log
--db-url sqlite:////freqtrade/user_data/tradesv3.sqlite
--config /freqtrade/user_data/config.json
--freqaimodel XGBoostRegressor
--strategy FreqaiExampleStrategy

View File

@@ -29,20 +29,22 @@ If all goes well, you should now see a `backtest-result-{timestamp}_signals.pkl`
`user_data/backtest_results` folder.
To analyze the entry/exit tags, we now need to use the `freqtrade backtesting-analysis` command
with `--analysis-groups` option provided with space-separated arguments (default `0 1 2`):
with `--analysis-groups` option provided with space-separated arguments:
``` bash
freqtrade backtesting-analysis -c <config.json> --analysis-groups 0 1 2 3 4
freqtrade backtesting-analysis -c <config.json> --analysis-groups 0 1 2 3 4 5
```
This command will read from the last backtesting results. The `--analysis-groups` option is
used to specify the various tabular outputs showing the profit fo each group or trade,
ranging from the simplest (0) to the most detailed per pair, per buy and per sell tag (4):
* 0: overall winrate and profit summary by enter_tag
* 1: profit summaries grouped by enter_tag
* 2: profit summaries grouped by enter_tag and exit_tag
* 3: profit summaries grouped by pair and enter_tag
* 4: profit summaries grouped by pair, enter_ and exit_tag (this can get quite large)
* 5: profit summaries grouped by exit_tag
More options are available by running with the `-h` option.
@@ -101,6 +103,22 @@ The indicators have to be present in your strategy's main DataFrame (either for
timeframe or for informative timeframes) otherwise they will simply be ignored in the script
output.
There are a range of candle and trade-related fields that are included in the analysis so are
automatically accessible by including them on the indicator-list, and these include:
- **open_date :** trade open datetime
- **close_date :** trade close datetime
- **min_rate :** minimum price seen throughout the position
- **max_rate :** maxiumum price seen throughout the position
- **open :** signal candle open price
- **close :** signal candle close price
- **high :** signal candle high price
- **low :** signal candle low price
- **volume :** signal candle volumne
- **profit_ratio :** trade profit ratio
- **profit_abs :** absolute profit return of the trade
### Filtering the trade output by date
To show only trades between dates within your backtested timerange, supply the usual `timerange` option in `YYYYMMDD-[YYYYMMDD]` format:
@@ -114,3 +132,38 @@ For example, if your backtest timerange was `20220101-20221231` but you only wan
```bash
freqtrade backtesting-analysis -c <config.json> --timerange 20220101-20220201
```
### Printing out rejected signals
Use the `--rejected-signals` option to print out rejected signals.
```bash
freqtrade backtesting-analysis -c <config.json> --rejected-signals
```
### Writing tables to CSV
Some of the tabular outputs can become large, so printing them out to the terminal is not preferable.
Use the `--analysis-to-csv` option to disable printing out of tables to standard out and write them to CSV files.
```bash
freqtrade backtesting-analysis -c <config.json> --analysis-to-csv
```
By default this will write one file per output table you specified in the `backtesting-analysis` command, e.g.
```bash
freqtrade backtesting-analysis -c <config.json> --analysis-to-csv --rejected-signals --analysis-groups 0 1
```
This will write to `user_data/backtest_results`:
* rejected_signals.csv
* group_0.csv
* group_1.csv
To override where the files will be written, also specify the `--analysis-csv-path` option.
```bash
freqtrade backtesting-analysis -c <config.json> --analysis-to-csv --analysis-csv-path another/data/path/
```

View File

@@ -75,7 +75,7 @@ This function needs to return a floating point number (`float`). Smaller numbers
## Overriding pre-defined spaces
To override a pre-defined space (`roi_space`, `generate_roi_table`, `stoploss_space`, `trailing_space`), define a nested class called Hyperopt and define the required spaces as follows:
To override a pre-defined space (`roi_space`, `generate_roi_table`, `stoploss_space`, `trailing_space`, `max_open_trades_space`), define a nested class called Hyperopt and define the required spaces as follows:
```python
from freqtrade.optimize.space import Categorical, Dimension, Integer, SKDecimal
@@ -123,6 +123,12 @@ class MyAwesomeStrategy(IStrategy):
Categorical([True, False], name='trailing_only_offset_is_reached'),
]
# Define a custom max_open_trades space
def max_open_trades_space(self) -> List[Dimension]:
return [
Integer(-1, 10, name='max_open_trades'),
]
```
!!! Note
@@ -130,7 +136,7 @@ class MyAwesomeStrategy(IStrategy):
### Dynamic parameters
Parameters can also be defined dynamically, but must be available to the instance once the * [`bot_start()` callback](strategy-callbacks.md#bot-start) has been called.
Parameters can also be defined dynamically, but must be available to the instance once the [`bot_start()` callback](strategy-callbacks.md#bot-start) has been called.
``` python

View File

@@ -192,7 +192,7 @@ $RepeatedMsgReduction on
### Logging to journald
This needs the `systemd` python package installed as the dependency, which is not available on Windows. Hence, the whole journald logging functionality is not available for a bot running on Windows.
This needs the `cysystemd` python package installed as dependency (`pip install cysystemd`), which is not available on Windows. Hence, the whole journald logging functionality is not available for a bot running on Windows.
To send Freqtrade log messages to `journald` system service use the `--logfile` command line option with the value in the following format:

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -274,19 +274,20 @@ A backtesting result will look like that:
| XRP/BTC | 35 | 0.66 | 22.96 | 0.00114897 | 11.48 | 3:49:00 | 12 0 23 34.3 |
| ZEC/BTC | 22 | -0.46 | -10.18 | -0.00050971 | -5.09 | 2:22:00 | 7 0 15 31.8 |
| TOTAL | 429 | 0.36 | 152.41 | 0.00762792 | 76.20 | 4:12:00 | 186 0 243 43.4 |
========================================================= EXIT REASON STATS ==========================================================
| Exit Reason | Exits | Wins | Draws | Losses |
|:-------------------|--------:|------:|-------:|--------:|
| trailing_stop_loss | 205 | 150 | 0 | 55 |
| stop_loss | 166 | 0 | 0 | 166 |
| exit_signal | 56 | 36 | 0 | 20 |
| force_exit | 2 | 0 | 0 | 2 |
====================================================== LEFT OPEN TRADES REPORT ======================================================
| Pair | Entries | Avg Profit % | Cum Profit % | Tot Profit BTC | Tot Profit % | Avg Duration | Win Draw Loss Win% |
|:---------|---------:|---------------:|---------------:|-----------------:|---------------:|:---------------|--------------------:|
| ADA/BTC | 1 | 0.89 | 0.89 | 0.00004434 | 0.44 | 6:00:00 | 1 0 0 100 |
| LTC/BTC | 1 | 0.68 | 0.68 | 0.00003421 | 0.34 | 2:00:00 | 1 0 0 100 |
| TOTAL | 2 | 0.78 | 1.57 | 0.00007855 | 0.78 | 4:00:00 | 2 0 0 100 |
==================== EXIT REASON STATS ====================
| Exit Reason | Exits | Wins | Draws | Losses |
|:-------------------|--------:|------:|-------:|--------:|
| trailing_stop_loss | 205 | 150 | 0 | 55 |
| stop_loss | 166 | 0 | 0 | 166 |
| exit_signal | 56 | 36 | 0 | 20 |
| force_exit | 2 | 0 | 0 | 2 |
================== SUMMARY METRICS ==================
| Metric | Value |
|-----------------------------+---------------------|
@@ -300,7 +301,11 @@ A backtesting result will look like that:
| Absolute profit | 0.00762792 BTC |
| Total profit % | 76.2% |
| CAGR % | 460.87% |
| Sortino | 1.88 |
| Sharpe | 2.97 |
| Calmar | 6.29 |
| Profit factor | 1.11 |
| Expectancy (Ratio) | -0.15 (-0.05) |
| Avg. stake amount | 0.001 BTC |
| Total trade volume | 0.429 BTC |
| | |
@@ -319,6 +324,7 @@ A backtesting result will look like that:
| Days win/draw/lose | 12 / 82 / 25 |
| Avg. Duration Winners | 4:23:00 |
| Avg. Duration Loser | 6:55:00 |
| Max Consecutive Wins / Loss | 3 / 4 |
| Rejected Entry signals | 3089 |
| Entry/Exit Timeouts | 0 / 0 |
| Canceled Trade Entries | 34 |
@@ -400,7 +406,11 @@ It contains some useful key metrics about performance of your strategy on backte
| Absolute profit | 0.00762792 BTC |
| Total profit % | 76.2% |
| CAGR % | 460.87% |
| Sortino | 1.88 |
| Sharpe | 2.97 |
| Calmar | 6.29 |
| Profit factor | 1.11 |
| Expectancy (Ratio) | -0.15 (-0.05) |
| Avg. stake amount | 0.001 BTC |
| Total trade volume | 0.429 BTC |
| | |
@@ -419,6 +429,7 @@ It contains some useful key metrics about performance of your strategy on backte
| Days win/draw/lose | 12 / 82 / 25 |
| Avg. Duration Winners | 4:23:00 |
| Avg. Duration Loser | 6:55:00 |
| Max Consecutive Wins / Loss | 3 / 4 |
| Rejected Entry signals | 3089 |
| Entry/Exit Timeouts | 0 / 0 |
| Canceled Trade Entries | 34 |
@@ -447,6 +458,9 @@ It contains some useful key metrics about performance of your strategy on backte
- `Absolute profit`: Profit made in stake currency.
- `Total profit %`: Total profit. Aligned to the `TOTAL` row's `Tot Profit %` from the first table. Calculated as `(End capital Starting capital) / Starting capital`.
- `CAGR %`: Compound annual growth rate.
- `Sortino`: Annualized Sortino ratio.
- `Sharpe`: Annualized Sharpe ratio.
- `Calmar`: Annualized Calmar ratio.
- `Profit factor`: profit / loss.
- `Avg. stake amount`: Average stake amount, either `stake_amount` or the average when using dynamic stake amount.
- `Total trade volume`: Volume generated on the exchange to reach the above profit.
@@ -455,6 +469,7 @@ It contains some useful key metrics about performance of your strategy on backte
- `Best day` / `Worst day`: Best and worst day based on daily profit.
- `Days win/draw/lose`: Winning / Losing days (draws are usually days without closed trade).
- `Avg. Duration Winners` / `Avg. Duration Loser`: Average durations for winning and losing trades.
- `Max Consecutive Wins / Loss`: Maximum consecutive wins/losses in a row.
- `Rejected Entry signals`: Trade entry signals that could not be acted upon due to `max_open_trades` being reached.
- `Entry/Exit Timeouts`: Entry/exit orders which did not fill (only applicable if custom pricing is used).
- `Canceled Trade Entries`: Number of trades that have been canceled by user request via `adjust_entry_price`.
@@ -522,6 +537,7 @@ Since backtesting lacks some detailed information about what happens within a ca
- ROI
- exits are compared to high - but the ROI value is used (e.g. ROI = 2%, high=5% - so the exit will be at 2%)
- exits are never "below the candle", so a ROI of 2% may result in a exit at 2.4% if low was at 2.4% profit
- ROI entries which came into effect on the triggering candle (e.g. `120: 0.02` for 1h candles, from `60: 0.05`) will use the candle's open as exit rate
- Force-exits caused by `<N>=-1` ROI entries use low as exit value, unless N falls on the candle open (e.g. `120: -1` for 1h candles)
- Stoploss exits happen exactly at stoploss price, even if low was lower, but the loss will be `2 * fees` higher than the stoploss price
- Stoploss is evaluated before ROI within one candle. So you can often see more trades with the `stoploss` exit reason comparing to the results obtained with the same strategy in the Dry Run/Live Trade modes

View File

@@ -12,6 +12,9 @@ This page provides you some basic concepts on how Freqtrade works and operates.
* **Indicators**: Technical indicators (SMA, EMA, RSI, ...).
* **Limit order**: Limit orders which execute at the defined limit price or better.
* **Market order**: Guaranteed to fill, may move price depending on the order size.
* **Current Profit**: Currently pending (unrealized) profit for this trade. This is mainly used throughout the bot and UI.
* **Realized Profit**: Already realized profit. Only relevant in combination with [partial exits](strategy-callbacks.md#adjust-trade-position) - which also explains the calculation logic for this.
* **Total Profit**: Combined realized and unrealized profit. The relative number (%) is calculated against the total investment in this trade.
## Fee handling
@@ -57,10 +60,10 @@ This loop will be repeated again and again until the bot is stopped.
* Load historic data for configured pairlist.
* Calls `bot_start()` once.
* Calls `bot_loop_start()` once.
* Calculate indicators (calls `populate_indicators()` once per pair).
* Calculate entry / exit signals (calls `populate_entry_trend()` and `populate_exit_trend()` once per pair).
* Loops per candle simulating entry and exit points.
* Calls `bot_loop_start()` strategy callback.
* Check for Order timeouts, either via the `unfilledtimeout` configuration, or via `check_entry_timeout()` / `check_exit_timeout()` strategy callbacks.
* Calls `adjust_entry_price()` strategy callback for open entry orders.
* Check for trade entry signals (`enter_long` / `enter_short` columns).
@@ -75,3 +78,7 @@ This loop will be repeated again and again until the bot is stopped.
!!! Note
Both Backtesting and Hyperopt include exchange default Fees in the calculation. Custom fees can be passed to backtesting / hyperopt by specifying the `--fee` argument.
!!! Warning "Callback call frequency"
Backtesting will call each callback at max. once per candle (`--timeframe-detail` modifies this behavior to once per detailed candle).
Most callbacks will be called once per iteration in live (usually every ~5s) - which can cause backtesting mismatches.

View File

@@ -11,7 +11,7 @@ Per default, the bot loads the configuration from the `config.json` file, locate
You can specify a different configuration file used by the bot with the `-c/--config` command-line option.
If you used the [Quick start](installation.md/#quick-start) method for installing
If you used the [Quick start](docker_quickstart.md#docker-quick-start) method for installing
the bot, the installation script should have already created the default configuration file (`config.json`) for you.
If the default configuration file is not created we recommend to use `freqtrade new-config --config config.json` to generate a basic configuration file.
@@ -134,11 +134,11 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| Parameter | Description |
|------------|-------------|
| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the length of your pairlist is another limitation that can apply. If -1 then it is ignored (i.e. potentially unlimited open trades, limited by the pairlist). [More information below](#configuring-amount-per-trade).<br> **Datatype:** Positive integer or -1.
| `max_open_trades` | **Required.** Number of open trades your bot is allowed to have. Only one open trade per pair is possible, so the length of your pairlist is another limitation that can apply. If -1 then it is ignored (i.e. potentially unlimited open trades, limited by the pairlist). [More information below](#configuring-amount-per-trade). [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Positive integer or -1.
| `stake_currency` | **Required.** Crypto-currency used for trading. <br> **Datatype:** String
| `stake_amount` | **Required.** Amount of crypto-currency your bot will use for each trade. Set it to `"unlimited"` to allow the bot to use all available balance. [More information below](#configuring-amount-per-trade). <br> **Datatype:** Positive float or `"unlimited"`.
| `tradable_balance_ratio` | Ratio of the total account balance the bot is allowed to trade. [More information below](#configuring-amount-per-trade). <br>*Defaults to `0.99` 99%).*<br> **Datatype:** Positive float between `0.1` and `1.0`.
| `available_capital` | Available starting capital for the bot. Useful when running multiple bots on the same exchange account.[More information below](#configuring-amount-per-trade). <br> **Datatype:** Positive float.
| `available_capital` | Available starting capital for the bot. Useful when running multiple bots on the same exchange account. [More information below](#configuring-amount-per-trade). <br> **Datatype:** Positive float.
| `amend_last_stake_amount` | Use reduced last stake amount if necessary. [More information below](#configuring-amount-per-trade). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `last_stake_amount_min_ratio` | Defines minimum stake amount that has to be left and executed. Applies only to the last stake amount when it's amended to a reduced value (i.e. if `amend_last_stake_amount` is set to `true`). [More information below](#configuring-amount-per-trade). <br>*Defaults to `0.5`.* <br> **Datatype:** Float (as ratio)
| `amount_reserve_percent` | Reserve some amount in min pair stake amount. The bot will reserve `amount_reserve_percent` + stoploss value when calculating min pair stake amount in order to avoid possible trade refusals. <br>*Defaults to `0.05` (5%).* <br> **Datatype:** Positive Float as ratio.
@@ -155,25 +155,25 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `trailing_stop_positive_offset` | Offset on when to apply `trailing_stop_positive`. Percentage value which should be positive. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-only-once-the-trade-has-reached-a-certain-offset). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `0.0` (no offset).* <br> **Datatype:** Float
| `trailing_only_offset_is_reached` | Only apply trailing stoploss when the offset is reached. [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `fee` | Fee used during backtesting / dry-runs. Should normally not be configured, which has freqtrade fall back to the exchange default fee. Set as ratio (e.g. 0.001 = 0.1%). Fee is applied twice for each trade, once when buying, once when selling. <br> **Datatype:** Float (as ratio)
| `futures_funding_rate` | User-specified funding rate to be used when historical funding rates are not available from the exchange. This does not overwrite real historical rates. It is recommended that this be set to 0 unless you are testing a specific coin and you understand how the funding rate will affect freqtrade's profit calculations. [More information here](leverage.md#unavailable-funding-rates) <br>*Defaults to None.*<br> **Datatype:** Float
| `futures_funding_rate` | User-specified funding rate to be used when historical funding rates are not available from the exchange. This does not overwrite real historical rates. It is recommended that this be set to 0 unless you are testing a specific coin and you understand how the funding rate will affect freqtrade's profit calculations. [More information here](leverage.md#unavailable-funding-rates) <br>*Defaults to `None`.*<br> **Datatype:** Float
| `trading_mode` | Specifies if you want to trade regularly, trade with leverage, or trade contracts whose prices are derived from matching cryptocurrency prices. [leverage documentation](leverage.md). <br>*Defaults to `"spot"`.* <br> **Datatype:** String
| `margin_mode` | When trading with leverage, this determines if the collateral owned by the trader will be shared or isolated to each trading pair [leverage documentation](leverage.md). <br> **Datatype:** String
| `liquidation_buffer` | A ratio specifying how large of a safety net to place between the liquidation price and the stoploss to prevent a position from reaching the liquidation price [leverage documentation](leverage.md). <br>*Defaults to `0.05`.* <br> **Datatype:** Float
| | **Unfilled timeout**
| `unfilledtimeout.entry` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled entry order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
| `unfilledtimeout.exit` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled exit order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
| `unfilledtimeout.unit` | Unit to use in unfilledtimeout setting. Note: If you set unfilledtimeout.unit to "seconds", "internals.process_throttle_secs" must be inferior or equal to timeout [Strategy Override](#parameters-in-the-strategy). <br> *Defaults to `minutes`.* <br> **Datatype:** String
| `unfilledtimeout.unit` | Unit to use in unfilledtimeout setting. Note: If you set unfilledtimeout.unit to "seconds", "internals.process_throttle_secs" must be inferior or equal to timeout [Strategy Override](#parameters-in-the-strategy). <br> *Defaults to `"minutes"`.* <br> **Datatype:** String
| `unfilledtimeout.exit_timeout_count` | How many times can exit orders time out. Once this number of timeouts is reached, an emergency exit is triggered. 0 to disable and allow unlimited order cancels. [Strategy Override](#parameters-in-the-strategy).<br>*Defaults to `0`.* <br> **Datatype:** Integer
| | **Pricing**
| `entry_pricing.price_side` | Select the side of the spread the bot should look at to get the entry rate. [More information below](#buy-price-side).<br> *Defaults to `same`.* <br> **Datatype:** String (either `ask`, `bid`, `same` or `other`).
| `entry_pricing.price_side` | Select the side of the spread the bot should look at to get the entry rate. [More information below](#entry-price).<br> *Defaults to `"same"`.* <br> **Datatype:** String (either `ask`, `bid`, `same` or `other`).
| `entry_pricing.price_last_balance` | **Required.** Interpolate the bidding price. More information [below](#entry-price-without-orderbook-enabled).
| `entry_pricing.use_order_book` | Enable entering using the rates in [Order Book Entry](#entry-price-with-orderbook-enabled). <br> *Defaults to `True`.*<br> **Datatype:** Boolean
| `entry_pricing.use_order_book` | Enable entering using the rates in [Order Book Entry](#entry-price-with-orderbook-enabled). <br> *Defaults to `true`.*<br> **Datatype:** Boolean
| `entry_pricing.order_book_top` | Bot will use the top N rate in Order Book "price_side" to enter a trade. I.e. a value of 2 will allow the bot to pick the 2nd entry in [Order Book Entry](#entry-price-with-orderbook-enabled). <br>*Defaults to `1`.* <br> **Datatype:** Positive Integer
| `entry_pricing. check_depth_of_market.enabled` | Do not enter if the difference of buy orders and sell orders is met in Order Book. [Check market depth](#check-depth-of-market). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `entry_pricing. check_depth_of_market.bids_to_ask_delta` | The difference ratio of buy orders and sell orders found in Order Book. A value below 1 means sell order size is greater, while value greater than 1 means buy order size is higher. [Check market depth](#check-depth-of-market) <br> *Defaults to `0`.* <br> **Datatype:** Float (as ratio)
| `exit_pricing.price_side` | Select the side of the spread the bot should look at to get the exit rate. [More information below](#exit-price-side).<br> *Defaults to `same`.* <br> **Datatype:** String (either `ask`, `bid`, `same` or `other`).
| `exit_pricing.price_side` | Select the side of the spread the bot should look at to get the exit rate. [More information below](#exit-price-side).<br> *Defaults to `"same"`.* <br> **Datatype:** String (either `ask`, `bid`, `same` or `other`).
| `exit_pricing.price_last_balance` | Interpolate the exiting price. More information [below](#exit-price-without-orderbook-enabled).
| `exit_pricing.use_order_book` | Enable exiting of open trades using [Order Book Exit](#exit-price-with-orderbook-enabled). <br> *Defaults to `True`.*<br> **Datatype:** Boolean
| `exit_pricing.use_order_book` | Enable exiting of open trades using [Order Book Exit](#exit-price-with-orderbook-enabled). <br> *Defaults to `true`.*<br> **Datatype:** Boolean
| `exit_pricing.order_book_top` | Bot will use the top N rate in Order Book "price_side" to exit. I.e. a value of 2 will allow the bot to pick the 2nd ask rate in [Order Book Exit](#exit-price-with-orderbook-enabled)<br>*Defaults to `1`.* <br> **Datatype:** Positive Integer
| `custom_price_max_distance_ratio` | Configure maximum distance ratio between current and custom entry or exit price. <br>*Defaults to `0.02` 2%).*<br> **Datatype:** Positive float
| | **TODO**
@@ -199,10 +199,10 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `exchange.ccxt_sync_config` | Additional CCXT parameters passed to the regular (sync) ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) <br> **Datatype:** Dict
| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://ccxt.readthedocs.io/en/latest/manual.html#instantiation) <br> **Datatype:** Dict
| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded. <br>*Defaults to `60` minutes.* <br> **Datatype:** Positive Integer
| `exchange.skip_pair_validation` | Skip pairlist validation on startup.<br>*Defaults to `false`<br> **Datatype:** Boolean
| `exchange.skip_open_order_update` | Skips open order updates on startup should the exchange cause problems. Only relevant in live conditions.<br>*Defaults to `false`<br> **Datatype:** Boolean
| `exchange.skip_pair_validation` | Skip pairlist validation on startup.<br>*Defaults to `false`*<br> **Datatype:** Boolean
| `exchange.skip_open_order_update` | Skips open order updates on startup should the exchange cause problems. Only relevant in live conditions.<br>*Defaults to `false`*<br> **Datatype:** Boolean
| `exchange.unknown_fee_rate` | Fallback value to use when calculating trading fees. This can be useful for exchanges which have fees in non-tradable currencies. The value provided here will be multiplied with the "fee cost".<br>*Defaults to `None`<br> **Datatype:** float
| `exchange.log_responses` | Log relevant exchange responses. For debug mode only - use with care.<br>*Defaults to `false`<br> **Datatype:** Boolean
| `exchange.log_responses` | Log relevant exchange responses. For debug mode only - use with care.<br>*Defaults to `false`*<br> **Datatype:** Boolean
| `experimental.block_bad_exchanges` | Block exchanges known to not work with freqtrade. Leave on default unless you want to test if that exchange works now. <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| | **Plugins**
| `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation of all possible configuration options.
@@ -213,7 +213,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. <br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `telegram.chat_id` | Your personal Telegram account id. Only required if `telegram.enabled` is `true`. <br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `telegram.balance_dust_level` | Dust-level (in stake currency) - currencies with a balance below this will not be shown by `/balance`. <br> **Datatype:** float
| `telegram.reload` | Allow "reload" buttons on telegram messages. <br>*Defaults to `True`.<br> **Datatype:** boolean
| `telegram.reload` | Allow "reload" buttons on telegram messages. <br>*Defaults to `true`.<br> **Datatype:** boolean
| `telegram.notification_settings.*` | Detailed notification settings. Refer to the [telegram documentation](telegram-usage.md) for details.<br> **Datatype:** dictionary
| `telegram.allow_custom_messages` | Enable the sending of Telegram messages from strategies via the dataprovider.send_msg() function. <br> **Datatype:** Boolean
| | **Webhook**
@@ -263,6 +263,7 @@ Values set in the configuration file always overwrite values set in the strategy
* `minimal_roi`
* `timeframe`
* `stoploss`
* `max_open_trades`
* `trailing_stop`
* `trailing_stop_positive`
* `trailing_stop_positive_offset`
@@ -665,7 +666,7 @@ You should also make sure to read the [Exchanges](exchanges.md) section of the d
### Using proxy with Freqtrade
To use a proxy with freqtrade, export your proxy settings using the variables `"HTTP_PROXY"` and `"HTTPS_PROXY"` set to the appropriate values.
This will have the proxy settings applied to everything (telegram, coingecko, ...) except exchange requests.
This will have the proxy settings applied to everything (telegram, coingecko, ...) **except** for exchange requests.
``` bash
export HTTP_PROXY="http://addr:port"
@@ -681,15 +682,14 @@ To use a proxy for exchange connections - you will have to define the proxies as
{
"exchange": {
"ccxt_config": {
"aiohttp_proxy": "http://addr:port",
"proxies": {
"http": "http://addr:port",
"https": "http://addr:port"
},
"httpsProxy": "http://addr:port",
}
}
}
```
For more information on available proxy types, please consult the [ccxt proxy documentation](https://docs.ccxt.com/#/README?id=proxy).
## Next step
Now you have configured your config.json, the next step is to [start your bot](bot-usage.md).

View File

@@ -6,7 +6,7 @@ To download data (candles / OHLCV) needed for backtesting and hyperoptimization
If no additional parameter is specified, freqtrade will download data for `"1m"` and `"5m"` timeframes for the last 30 days.
Exchange and pairs will come from `config.json` (if specified using `-c/--config`).
Otherwise `--exchange` becomes mandatory.
Without provided configuration, `--exchange` becomes mandatory.
You can use a relative timerange (`--days 20`) or an absolute starting point (`--timerange 20200101-`). For incremental downloads, the relative approach should be used.
@@ -83,40 +83,47 @@ Common arguments:
```
!!! Tip "Downloading all data for one quote currency"
Often, you'll want to download data for all pairs of a specific quote-currency. In such cases, you can use the following shorthand:
`freqtrade download-data --exchange binance --pairs .*/USDT <...>`. The provided "pairs" string will be expanded to contain all active pairs on the exchange.
To also download data for inactive (delisted) pairs, add `--include-inactive-pairs` to the command.
!!! Note "Startup period"
`download-data` is a strategy-independent command. The idea is to download a big chunk of data once, and then iteratively increase the amount of data stored.
For that reason, `download-data` does not care about the "startup-period" defined in a strategy. It's up to the user to download additional days if the backtest should start at a specific point in time (while respecting startup period).
### Pairs file
### Start download
In alternative to the whitelist from `config.json`, a `pairs.json` file can be used.
If you are using Binance for example:
- create a directory `user_data/data/binance` and copy or create the `pairs.json` file in that directory.
- update the `pairs.json` file to contain the currency pairs you are interested in.
A very simple command (assuming an available `config.json` file) can look as follows.
```bash
mkdir -p user_data/data/binance
touch user_data/data/binance/pairs.json
freqtrade download-data --exchange binance
```
The format of the `pairs.json` file is a simple json list.
Mixing different stake-currencies is allowed for this file, since it's only used for downloading.
This will download historical candle (OHLCV) data for all the currency pairs defined in the configuration.
``` json
[
"ETH/BTC",
"ETH/USDT",
"BTC/USDT",
"XRP/ETH"
]
Alternatively, specify the pairs directly
```bash
freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT
```
!!! Tip "Downloading all data for one quote currency"
Often, you'll want to download data for all pairs of a specific quote-currency. In such cases, you can use the following shorthand:
`freqtrade download-data --exchange binance --pairs .*/USDT <...>`. The provided "pairs" string will be expanded to contain all active pairs on the exchange.
To also download data for inactive (delisted) pairs, add `--include-inactive-pairs` to the command.
or as regex (in this case, to download all active USDT pairs)
```bash
freqtrade download-data --exchange binance --pairs .*/USDT
```
### Other Notes
* To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
* To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.)
* To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.
* To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days).
* To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020.
* Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data.
* To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
??? Note "Permission denied errors"
If your configuration directory `user_data` was made by docker, you may get the following error:
@@ -131,39 +138,7 @@ Mixing different stake-currencies is allowed for this file, since it's only used
sudo chown -R $UID:$GID user_data
```
### Start download
Then run:
```bash
freqtrade download-data --exchange binance
```
This will download historical candle (OHLCV) data for all the currency pairs you defined in `pairs.json`.
Alternatively, specify the pairs directly
```bash
freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT
```
or as regex (to download all active USDT pairs)
```bash
freqtrade download-data --exchange binance --pairs .*/USDT
```
### Other Notes
- To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
- To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.)
- To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.
- To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days).
- To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020.
- Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data.
- To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
#### Download additional data before the current timerange
### Download additional data before the current timerange
Assuming you downloaded all data from 2022 (`--timerange 20220101-`) - but you'd now like to also backtest with earlier data.
You can do so by using the `--prepend` flag, combined with `--timerange` - specifying an end-date.
@@ -238,7 +213,36 @@ Size has been taken from the BTC/USDT 1m spot combination for the timerange spec
To have a best performance/size mix, we recommend the use of either feather or parquet.
#### Sub-command convert data
### Pairs file
In alternative to the whitelist from `config.json`, a `pairs.json` file can be used.
If you are using Binance for example:
* create a directory `user_data/data/binance` and copy or create the `pairs.json` file in that directory.
* update the `pairs.json` file to contain the currency pairs you are interested in.
```bash
mkdir -p user_data/data/binance
touch user_data/data/binance/pairs.json
```
The format of the `pairs.json` file is a simple json list.
Mixing different stake-currencies is allowed for this file, since it's only used for downloading.
``` json
[
"ETH/BTC",
"ETH/USDT",
"BTC/USDT",
"XRP/ETH"
]
```
!!! Note
The `pairs.json` file is only used when no configuration is loaded (implicitly by naming, or via `--config` flag).
You can force the usage of this file via `--pairs-file pairs.json` - however we recommend to use the pairlist from within the configuration, either via `exchange.pair_whitelist` or `pairs` setting in the configuration.
## Sub-command convert data
```
usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
@@ -290,7 +294,7 @@ Common arguments:
```
##### Example converting data
### Example converting data
The following command will convert all candle (OHLCV) data available in `~/.freqtrade/data/binance` from json to jsongz, saving diskspace in the process.
It'll also remove original json data files (`--erase` parameter).
@@ -299,7 +303,7 @@ It'll also remove original json data files (`--erase` parameter).
freqtrade convert-data --format-from json --format-to jsongz --datadir ~/.freqtrade/data/binance -t 5m 15m --erase
```
#### Sub-command convert trade data
## Sub-command convert trade data
```
usage: freqtrade convert-trade-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
@@ -342,7 +346,7 @@ Common arguments:
```
##### Example converting trades
### Example converting trades
The following command will convert all available trade-data in `~/.freqtrade/data/kraken` from jsongz to json.
It'll also remove original jsongz data files (`--erase` parameter).
@@ -351,7 +355,7 @@ It'll also remove original jsongz data files (`--erase` parameter).
freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.freqtrade/data/kraken --erase
```
### Sub-command trades to ohlcv
## Sub-command trades to ohlcv
When you need to use `--dl-trades` (kraken only) to download data, conversion of trades data to ohlcv data is the last step.
This command will allow you to repeat this last step for additional timeframes without re-downloading the data.
@@ -400,13 +404,13 @@ Common arguments:
```
#### Example trade-to-ohlcv conversion
### Example trade-to-ohlcv conversion
``` bash
freqtrade trades-to-ohlcv --exchange kraken -t 5m 1h 1d --pairs BTC/EUR ETH/EUR
```
### Sub-command list-data
## Sub-command list-data
You can get a list of downloaded data using the `list-data` sub-command.
@@ -451,7 +455,7 @@ Common arguments:
```
#### Example list-data
### Example list-data
```bash
> freqtrade list-data --userdir ~/.freqtrade/user_data/
@@ -465,7 +469,7 @@ ETH/BTC 5m, 15m, 30m, 1h, 2h, 4h, 6h, 12h, 1d
ETH/USDT 5m, 15m, 30m, 1h, 2h, 4h
```
### Trades (tick) data
## Trades (tick) data
By default, `download-data` sub-command downloads Candles (OHLCV) data. Some exchanges also provide historic trade-data via their API.
This data can be useful if you need many different timeframes, since it is only downloaded once, and then resampled locally to the desired timeframes.

View File

@@ -74,3 +74,8 @@ Webhook terminology changed from "sell" to "exit", and from "buy" to "entry", re
* `webhooksell`, `webhookexit` -> `exit`
* `webhooksellfill`, `webhookexitfill` -> `exit_fill`
* `webhooksellcancel`, `webhookexitcancel` -> `exit_cancel`
## Removal of `populate_any_indicators`
version 2023.3 saw the removal of `populate_any_indicators` in favor of split methods for feature engineering and targets. Please read the [migration document](strategy_migration.md#freqai-strategy) for full details.

View File

@@ -24,7 +24,7 @@ This will spin up a local server (usually on port 8000) so you can see if everyt
To configure a development environment, you can either use the provided [DevContainer](#devcontainer-setup), or use the `setup.sh` script and answer "y" when asked "Do you want to install dependencies for dev [y/N]? ".
Alternatively (e.g. if your system is not supported by the setup.sh script), follow the manual installation process and run `pip3 install -e .[all]`.
This will install all required tools for development, including `pytest`, `flake8`, `mypy`, and `coveralls`.
This will install all required tools for development, including `pytest`, `ruff`, `mypy`, and `coveralls`.
Then install the git hook scripts by running `pre-commit install`, so your changes will be verified locally before committing.
This avoids a lot of waiting for CI already, as some basic formatting checks are done locally on your machine.
@@ -327,18 +327,18 @@ To check how the new exchange behaves, you can use the following snippet:
``` python
import ccxt
from datetime import datetime
from datetime import datetime, timezone
from freqtrade.data.converter import ohlcv_to_dataframe
ct = ccxt.binance()
ct = ccxt.binance() # Use the exchange you're testing
timeframe = "1d"
pair = "XLM/BTC" # Make sure to use a pair that exists on that exchange!
pair = "BTC/USDT" # Make sure to use a pair that exists on that exchange!
raw = ct.fetch_ohlcv(pair, timeframe=timeframe)
# convert to dataframe
df1 = ohlcv_to_dataframe(raw, timeframe, pair=pair, drop_incomplete=False)
print(df1.tail(1))
print(datetime.utcnow())
print(datetime.now(timezone.utc))
```
``` output
@@ -363,7 +363,7 @@ from pathlib import Path
exchange = ccxt.binance({
'apiKey': '<apikey>',
'secret': '<secret>'
'options': {'defaultType': 'future'}
'options': {'defaultType': 'swap'}
})
_ = exchange.load_markets()
@@ -453,7 +453,13 @@ Once the PR against stable is merged (best right after merging):
* Use the button "Draft a new release" in the Github UI (subsection releases).
* Use the version-number specified as tag.
* Use "stable" as reference (this step comes after the above PR is merged).
* Use the above changelog as release comment (as codeblock)
* Use the above changelog as release comment (as codeblock).
* Use the below snippet for the new release
??? Tip "Release template"
````
--8<-- "includes/release_template.md"
````
## Releases

View File

@@ -75,6 +75,25 @@ Binance has been split into 2, and users must use the correct ccxt exchange ID f
* [binance.com](https://www.binance.com/) - International users. Use exchange id: `binance`.
* [binance.us](https://www.binance.us/) - US based users. Use exchange id: `binanceus`.
### Binance RSA keys
Freqtrade supports binance RSA API keys.
We recommend to use them as environment variable.
``` bash
export FREQTRADE__EXCHANGE__SECRET="$(cat ./rsa_binance.private)"
```
They can however also be configured via configuration file. Since json doesn't support multi-line strings, you'll have to replace all newlines with `\n` to have a valid json file.
``` json
// ...
"key": "<someapikey>",
"secret": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBABACAFQA<...>s8KX8=\n-----END PRIVATE KEY-----"
// ...
```
### Binance Futures
Binance has specific (unfortunately complex) [Futures Trading Quantitative Rules](https://www.binance.com/en/support/faq/4f462ebe6ff445d4a170be7d9e897272) which need to be followed, and which prohibit a too low stake-amount (among others) for too many orders.
@@ -224,8 +243,8 @@ OKX requires a passphrase for each api key, you will therefore need to add this
OKX only provides 100 candles per api call. Therefore, the strategy will only have a pretty low amount of data available in backtesting mode.
!!! Warning "Futures"
OKX Futures has the concept of "position mode" - which can be Net or long/short (hedge mode).
Freqtrade supports both modes (we recommend to use net mode) - but changing the mode mid-trading is not supported and will lead to exceptions and failures to place trades.
OKX Futures has the concept of "position mode" - which can be "Buy/Sell" or long/short (hedge mode).
Freqtrade supports both modes (we recommend to use Buy/Sell mode) - but changing the mode mid-trading is not supported and will lead to exceptions and failures to place trades.
OKX also only provides MARK candles for the past ~3 months. Backtesting futures prior to that date will therefore lead to slight deviations, as funding-fees cannot be calculated correctly without this data.
## Gate.io
@@ -236,6 +255,25 @@ OKX requires a passphrase for each api key, you will therefore need to add this
Gate.io allows the use of `POINT` to pay for fees. As this is not a tradable currency (no regular market available), automatic fee calculations will fail (and default to a fee of 0).
The configuration parameter `exchange.unknown_fee_rate` can be used to specify the exchange rate between Point and the stake currency. Obviously, changing the stake-currency will also require changes to this value.
## Bybit
Futures trading on bybit is currently supported for USDT markets, and will use isolated futures mode.
Users with unified accounts (there's no way back) can create a Sub-account which will start as "non-unified", and can therefore use isolated futures.
On startup, freqtrade will set the position mode to "One-way Mode" for the whole (sub)account. This avoids making this call over and over again (slowing down bot operations), but means that changes to this setting may result in exceptions and errors
As bybit doesn't provide funding rate history, the dry-run calculation is used for live trades as well.
API Keys for live futures trading (Subaccount on non-unified) must have the following permissions:
* Read-write
* Contract - Orders
* Contract - Positions
We do strongly recommend to limit all API keys to the IP you're going to use it from.
!!! Tip "Stoploss on Exchange"
Bybit (futures only) supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange.
On futures, Bybit supports both `stop-limit` as well as `stop-market` orders. You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type to use.
## All exchanges
Should you experience constant errors with Nonce (like `InvalidNonce`), it is best to regenerate the API keys. Resetting Nonce is difficult and it's usually easier to regenerate the API keys.

View File

@@ -2,7 +2,7 @@
## Supported Markets
Freqtrade supports spot trading only.
Freqtrade supports spot trading, as well as (isolated) futures trading for some selected exchanges. Please refer to the [documentation start page](index.md#supported-futures-exchanges-experimental) for an uptodate list of supported exchanges.
### Can my bot open short positions?
@@ -142,6 +142,13 @@ To fix this, redefine order types in the strategy to use "limit" instead of "mar
The same fix should be applied in the configuration file, if order types are defined in your custom config rather than in the strategy.
### I'm trying to start the bot live, but get an API permission error
Errors like `Invalid API-key, IP, or permissions for action` mean exactly what they actually say.
Your API key is either invalid (copy/paste error? check for leading/trailing spaces in the config), expired, or the IP you're running the bot from is not enabled in the Exchange's API console.
Usually, the permission "Spot Trading" (or the equivalent in the exchange you use) will be necessary.
Futures will usually have to be enabled specifically.
### How do I search the bot logs for something?
By default, the bot writes its log into stderr stream. This is implemented this way so that you can easily separate the bot's diagnostics messages from Backtesting, Edge and Hyperopt results, output from other various Freqtrade utility sub-commands, as well as from the output of your custom `print()`'s you may have inserted into your strategy. So if you need to search the log messages with the grep utility, you need to redirect stderr to stdout and disregard stdout.
@@ -248,8 +255,26 @@ The Edge module is mostly a result of brainstorming of [@mishaker](https://githu
You can find further info on expectancy, win rate, risk management and position size in the following sources:
- https://www.tradeciety.com/ultimate-math-guide-for-traders/
- http://www.vantharp.com/tharp-concepts/expectancy.asp
- https://samuraitradingacademy.com/trading-expectancy/
- https://www.learningmarkets.com/determining-expectancy-in-your-trading/
- http://www.lonestocktrader.com/make-money-trading-positive-expectancy/
- https://www.lonestocktrader.com/make-money-trading-positive-expectancy/
- https://www.babypips.com/trading/trade-expectancy-matter
## Official channels
Freqtrade is using exclusively the following official channels:
* [Freqtrade discord server](https://discord.gg/p7nuUNVfP7)
* [Freqtrade documentation (https://freqtrade.io)](https://freqtrade.io)
* [Freqtrade github organization](https://github.com/freqtrade)
Nobody affiliated with the freqtrade project will ask you about your exchange keys or anything else exposing your funds to exploitation.
Should you be asked to expose your exchange keys or send funds to some random wallet, then please don't follow these instructions.
Failing to follow these guidelines will not be responsibility of freqtrade.
## "Freqtrade token"
Freqtrade does not have a Crypto token offering.
Token offerings you find on the internet referring Freqtrade, FreqAI or freqUI must be considered to be a scam, trying to exploit freqtrade's popularity for their own, nefarious gains.

View File

@@ -9,7 +9,7 @@ FreqAI is configured through the typical [Freqtrade config file](configuration.m
```json
"freqai": {
"enabled": true,
"purge_old_models": true,
"purge_old_models": 2,
"train_period_days": 30,
"backtest_period_days": 7,
"identifier" : "unique-id",
@@ -43,116 +43,114 @@ The FreqAI strategy requires including the following lines of code in the standa
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# the model will return all labels created by user in `populate_any_indicators`
# the model will return all labels created by user in `set_freqai_targets()`
# (& appended targets), an indication of whether or not the prediction should be accepted,
# the target mean/std values for each of the labels created by user in
# `populate_any_indicators()` for each training period.
# `set_freqai_targets()` for each training period.
dataframe = self.freqai.start(dataframe, metadata, self)
return dataframe
def populate_any_indicators(
self, pair, df, tf, informative=None, set_generalized_indicators=False
):
def feature_engineering_expand_all(self, dataframe: DataFrame, period, **kwargs) -> DataFrame:
"""
Function designed to automatically generate, name and merge features
from user indicated timeframes in the configuration file. User controls the indicators
passed to the training/prediction by prepending indicators with `'%-' + pair `
(see convention below). I.e. user should not prepend any supporting metrics
(e.g. bb_lowerband below) with % unless they explicitly want to pass that metric to the
model.
:param pair: pair to be used as informative
:param df: strategy dataframe which will receive merges from informatives
:param tf: timeframe of the dataframe which will modify the feature names
:param informative: the dataframe associated with the informative pair
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
`indicator_periods_candles`, `include_timeframes`, `include_shifted_candles`, and
`include_corr_pairs`. In other words, a single feature defined in this function
will automatically expand to a total of
`indicator_periods_candles` * `include_timeframes` * `include_shifted_candles` *
`include_corr_pairs` numbers of features added to the model.
All features must be prepended with `%` to be recognized by FreqAI internals.
:param df: strategy dataframe which will receive the features
:param period: period of the indicator - usage example:
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
"""
if informative is None:
informative = self.dp.get_pair_dataframe(pair, tf)
dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
dataframe["%-mfi-period"] = ta.MFI(dataframe, timeperiod=period)
dataframe["%-adx-period"] = ta.ADX(dataframe, timeperiod=period)
dataframe["%-sma-period"] = ta.SMA(dataframe, timeperiod=period)
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
# first loop is automatically duplicating indicators for time periods
for t in self.freqai_info["feature_parameters"]["indicator_periods_candles"]:
t = int(t)
informative[f"%-{pair}rsi-period_{t}"] = ta.RSI(informative, timeperiod=t)
informative[f"%-{pair}mfi-period_{t}"] = ta.MFI(informative, timeperiod=t)
informative[f"%-{pair}adx-period_{t}"] = ta.ADX(informative, window=t)
return dataframe
indicators = [col for col in informative if col.startswith("%")]
# This loop duplicates and shifts all indicators to add a sense of recency to data
for n in range(self.freqai_info["feature_parameters"]["include_shifted_candles"] + 1):
if n == 0:
continue
informative_shift = informative[indicators].shift(n)
informative_shift = informative_shift.add_suffix("_shift-" + str(n))
informative = pd.concat((informative, informative_shift), axis=1)
def feature_engineering_expand_basic(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
`include_timeframes`, `include_shifted_candles`, and `include_corr_pairs`.
In other words, a single feature defined in this function
will automatically expand to a total of
`include_timeframes` * `include_shifted_candles` * `include_corr_pairs`
numbers of features added to the model.
df = merge_informative_pair(df, informative, self.config["timeframe"], tf, ffill=True)
skip_columns = [
(s + "_" + tf) for s in ["date", "open", "high", "low", "close", "volume"]
]
df = df.drop(columns=skip_columns)
Features defined here will *not* be automatically duplicated on user defined
`indicator_periods_candles`
# Add generalized indicators here (because in live, it will call this
# function to populate indicators during training). Notice how we ensure not to
# add them multiple times
if set_generalized_indicators:
All features must be prepended with `%` to be recognized by FreqAI internals.
# user adds targets here by prepending them with &- (see convention below)
# If user wishes to use multiple targets, a multioutput prediction model
# needs to be used such as templates/CatboostPredictionMultiModel.py
df["&-s_close"] = (
df["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean()
/ df["close"]
- 1
:param df: strategy dataframe which will receive the features
dataframe["%-pct-change"] = dataframe["close"].pct_change()
dataframe["%-ema-200"] = ta.EMA(dataframe, timeperiod=200)
"""
dataframe["%-pct-change"] = dataframe["close"].pct_change()
dataframe["%-raw_volume"] = dataframe["volume"]
dataframe["%-raw_price"] = dataframe["close"]
return dataframe
def feature_engineering_standard(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
This optional function will be called once with the dataframe of the base timeframe.
This is the final function to be called, which means that the dataframe entering this
function will contain all the features and columns created by all other
freqai_feature_engineering_* functions.
This function is a good place to do custom exotic feature extractions (e.g. tsfresh).
This function is a good place for any feature that should not be auto-expanded upon
(e.g. day of the week).
All features must be prepended with `%` to be recognized by FreqAI internals.
:param df: strategy dataframe which will receive the features
usage example: dataframe["%-day_of_week"] = (dataframe["date"].dt.dayofweek + 1) / 7
"""
dataframe["%-day_of_week"] = (dataframe["date"].dt.dayofweek + 1) / 7
dataframe["%-hour_of_day"] = (dataframe["date"].dt.hour + 1) / 25
return dataframe
def set_freqai_targets(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
Required function to set the targets for the model.
All targets must be prepended with `&` to be recognized by the FreqAI internals.
:param df: strategy dataframe which will receive the targets
usage example: dataframe["&-target"] = dataframe["close"].shift(-1) / dataframe["close"]
"""
dataframe["&-s_close"] = (
dataframe["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean()
/ dataframe["close"]
- 1
)
return df
return dataframe
```
Notice how the `populate_any_indicators()` is where [features](freqai-feature-engineering.md#feature-engineering) and labels/targets are added. A full example strategy is available in `templates/FreqaiExampleStrategy.py`.
Notice also the location of the labels under `if set_generalized_indicators:` at the bottom of the example. This is where single features and labels/targets should be added to the feature set to avoid duplication of them from various configuration parameters that multiply the feature set, such as `include_timeframes`.
Notice how the `feature_engineering_*()` is where [features](freqai-feature-engineering.md#feature-engineering) are added. Meanwhile `set_freqai_targets()` adds the labels/targets. A full example strategy is available in `templates/FreqaiExampleStrategy.py`.
!!! Note
The `self.freqai.start()` function cannot be called outside the `populate_indicators()`.
!!! Note
Features **must** be defined in `populate_any_indicators()`. Defining FreqAI features in `populate_indicators()`
will cause the algorithm to fail in live/dry mode. In order to add generalized features that are not associated with a specific pair or timeframe, the following structure inside `populate_any_indicators()` should be used
(as exemplified in `freqtrade/templates/FreqaiExampleStrategy.py`):
```python
def populate_any_indicators(self, pair, df, tf, informative=None, set_generalized_indicators=False):
...
# Add generalized indicators here (because in live, it will call only this function to populate
# indicators for retraining). Notice how we ensure not to add them multiple times by associating
# these generalized indicators to the basepair/timeframe
if set_generalized_indicators:
df['%-day_of_week'] = (df["date"].dt.dayofweek + 1) / 7
df['%-hour_of_day'] = (df['date'].dt.hour + 1) / 25
# user adds targets here by prepending them with &- (see convention below)
# If user wishes to use multiple targets, a multioutput prediction model
# needs to be used such as templates/CatboostPredictionMultiModel.py
df["&-s_close"] = (
df["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean()
/ df["close"]
- 1
)
```
Please see the example script located in `freqtrade/templates/FreqaiExampleStrategy.py` for a full example of `populate_any_indicators()`.
Features **must** be defined in `feature_engineering_*()`. Defining FreqAI features in `populate_indicators()`
will cause the algorithm to fail in live/dry mode. In order to add generalized features that are not associated with a specific pair or timeframe, you should use `feature_engineering_standard()`
(as exemplified in `freqtrade/templates/FreqaiExampleStrategy.py`).
## Important dataframe key patterns
@@ -160,18 +158,18 @@ Below are the values you can expect to include/use inside a typical strategy dat
| DataFrame Key | Description |
|------------|-------------|
| `df['&*']` | Any dataframe column prepended with `&` in `populate_any_indicators()` is treated as a training target (label) inside FreqAI (typically following the naming convention `&-s*`). For example, to predict the close price 40 candles into the future, you would set `df['&-s_close'] = df['close'].shift(-self.freqai_info["feature_parameters"]["label_period_candles"])` with `"label_period_candles": 40` in the config. FreqAI makes the predictions and gives them back under the same key (`df['&-s_close']`) to be used in `populate_entry/exit_trend()`. <br> **Datatype:** Depends on the output of the model.
| `df['&*']` | Any dataframe column prepended with `&` in `set_freqai_targets()` is treated as a training target (label) inside FreqAI (typically following the naming convention `&-s*`). For example, to predict the close price 40 candles into the future, you would set `df['&-s_close'] = df['close'].shift(-self.freqai_info["feature_parameters"]["label_period_candles"])` with `"label_period_candles": 40` in the config. FreqAI makes the predictions and gives them back under the same key (`df['&-s_close']`) to be used in `populate_entry/exit_trend()`. <br> **Datatype:** Depends on the output of the model.
| `df['&*_std/mean']` | Standard deviation and mean values of the defined labels during training (or live tracking with `fit_live_predictions_candles`). Commonly used to understand the rarity of a prediction (use the z-score as shown in `templates/FreqaiExampleStrategy.py` and explained [here](#creating-a-dynamic-target-threshold) to evaluate how often a particular prediction was observed during training or historically with `fit_live_predictions_candles`). <br> **Datatype:** Float.
| `df['do_predict']` | Indication of an outlier data point. The return value is integer between -2 and 2, which lets you know if the prediction is trustworthy or not. `do_predict==1` means that the prediction is trustworthy. If the Dissimilarity Index (DI, see details [here](freqai-feature-engineering.md#identifying-outliers-with-the-dissimilarity-index-di)) of the input data point is above the threshold defined in the config, FreqAI will subtract 1 from `do_predict`, resulting in `do_predict==0`. If `use_SVM_to_remove_outliers()` is active, the Support Vector Machine (SVM, see details [here](freqai-feature-engineering.md#identifying-outliers-using-a-support-vector-machine-svm)) may also detect outliers in training and prediction data. In this case, the SVM will also subtract 1 from `do_predict`. If the input data point was considered an outlier by the SVM but not by the DI, or vice versa, the result will be `do_predict==0`. If both the DI and the SVM considers the input data point to be an outlier, the result will be `do_predict==-1`. As with the SVM, if `use_DBSCAN_to_remove_outliers` is active, DBSCAN (see details [here](freqai-feature-engineering.md#identifying-outliers-with-dbscan)) may also detect outliers and subtract 1 from `do_predict`. Hence, if both the SVM and DBSCAN are active and identify a datapoint that was above the DI threshold as an outlier, the result will be `do_predict==-2`. A particular case is when `do_predict == 2`, which means that the model has expired due to exceeding `expired_hours`. <br> **Datatype:** Integer between -2 and 2.
| `df['do_predict']` | Indication of an outlier data point. The return value is integer between -2 and 2, which lets you know if the prediction is trustworthy or not. `do_predict==1` means that the prediction is trustworthy. If the Dissimilarity Index (DI, see details [here](freqai-feature-engineering.md#identifying-outliers-with-the-dissimilarity-index-di)) of the input data point is above the threshold defined in the config, FreqAI will subtract 1 from `do_predict`, resulting in `do_predict==0`. If `use_SVM_to_remove_outliers` is active, the Support Vector Machine (SVM, see details [here](freqai-feature-engineering.md#identifying-outliers-using-a-support-vector-machine-svm)) may also detect outliers in training and prediction data. In this case, the SVM will also subtract 1 from `do_predict`. If the input data point was considered an outlier by the SVM but not by the DI, or vice versa, the result will be `do_predict==0`. If both the DI and the SVM considers the input data point to be an outlier, the result will be `do_predict==-1`. As with the SVM, if `use_DBSCAN_to_remove_outliers` is active, DBSCAN (see details [here](freqai-feature-engineering.md#identifying-outliers-with-dbscan)) may also detect outliers and subtract 1 from `do_predict`. Hence, if both the SVM and DBSCAN are active and identify a datapoint that was above the DI threshold as an outlier, the result will be `do_predict==-2`. A particular case is when `do_predict == 2`, which means that the model has expired due to exceeding `expired_hours`. <br> **Datatype:** Integer between -2 and 2.
| `df['DI_values']` | Dissimilarity Index (DI) values are proxies for the level of confidence FreqAI has in the prediction. A lower DI means the prediction is close to the training data, i.e., higher prediction confidence. See details about the DI [here](freqai-feature-engineering.md#identifying-outliers-with-the-dissimilarity-index-di). <br> **Datatype:** Float.
| `df['%*']` | Any dataframe column prepended with `%` in `populate_any_indicators()` is treated as a training feature. For example, you can include the RSI in the training feature set (similar to in `templates/FreqaiExampleStrategy.py`) by setting `df['%-rsi']`. See more details on how this is done [here](freqai-feature-engineering.md). <br> **Note:** Since the number of features prepended with `%` can multiply very quickly (10s of thousands of features are easily engineered using the multiplictative functionality of, e.g., `include_shifted_candles` and `include_timeframes` as described in the [parameter table](freqai-parameter-table.md)), these features are removed from the dataframe that is returned from FreqAI to the strategy. To keep a particular type of feature for plotting purposes, you would prepend it with `%%`. <br> **Datatype:** Depends on the output of the model.
| `df['%*']` | Any dataframe column prepended with `%` in `feature_engineering_*()` is treated as a training feature. For example, you can include the RSI in the training feature set (similar to in `templates/FreqaiExampleStrategy.py`) by setting `df['%-rsi']`. See more details on how this is done [here](freqai-feature-engineering.md). <br> **Note:** Since the number of features prepended with `%` can multiply very quickly (10s of thousands of features are easily engineered using the multiplictative functionality of, e.g., `include_shifted_candles` and `include_timeframes` as described in the [parameter table](freqai-parameter-table.md)), these features are removed from the dataframe that is returned from FreqAI to the strategy. To keep a particular type of feature for plotting purposes, you would prepend it with `%%`. <br> **Datatype:** Depends on the output of the model.
## Setting the `startup_candle_count`
The `startup_candle_count` in the FreqAI strategy needs to be set up in the same way as in the standard Freqtrade strategy (see details [here](strategy-customization.md#strategy-startup-period)). This value is used by Freqtrade to ensure that a sufficient amount of data is provided when calling the `dataprovider`, to avoid any NaNs at the beginning of the first training. You can easily set this value by identifying the longest period (in candle units) which is passed to the indicator creation functions (e.g., Ta-Lib functions). In the presented example, `startup_candle_count` is 20 since this is the maximum value in `indicators_periods_candles`.
The `startup_candle_count` in the FreqAI strategy needs to be set up in the same way as in the standard Freqtrade strategy (see details [here](strategy-customization.md#strategy-startup-period)). This value is used by Freqtrade to ensure that a sufficient amount of data is provided when calling the `dataprovider`, to avoid any NaNs at the beginning of the first training. You can easily set this value by identifying the longest period (in candle units) which is passed to the indicator creation functions (e.g., TA-Lib functions). In the presented example, `startup_candle_count` is 20 since this is the maximum value in `indicators_periods_candles`.
!!! Note
There are instances where the Ta-Lib functions actually require more data than just the passed `period` or else the feature dataset gets populated with NaNs. Anecdotally, multiplying the `startup_candle_count` by 2 always leads to a fully NaN free training dataset. Hence, it is typically safest to multiply the expected `startup_candle_count` by 2. Look out for this log message to confirm that the data is clean:
There are instances where the TA-Lib functions actually require more data than just the passed `period` or else the feature dataset gets populated with NaNs. Anecdotally, multiplying the `startup_candle_count` by 2 always leads to a fully NaN free training dataset. Hence, it is typically safest to multiply the expected `startup_candle_count` by 2. Look out for this log message to confirm that the data is clean:
```
2022-08-31 15:14:04 - freqtrade.freqai.data_kitchen - INFO - dropped 0 training points due to NaNs in populated dataset 4319.
@@ -208,7 +206,7 @@ All of the aforementioned model libraries implement gradient boosted decision tr
* LightGBM: https://lightgbm.readthedocs.io/en/v3.3.2/#
* XGBoost: https://xgboost.readthedocs.io/en/stable/#
There are also numerous online articles describing and comparing the algorithms. Some relatively light-weight examples would be [CatBoost vs. LightGBM vs. XGBoost — Which is the best algorithm?](https://towardsdatascience.com/catboost-vs-lightgbm-vs-xgboost-c80f40662924#:~:text=In%20CatBoost%2C%20symmetric%20trees%2C%20or,the%20same%20depth%20can%20differ.) and [XGBoost, LightGBM or CatBoost — which boosting algorithm should I use?](https://medium.com/riskified-technology/xgboost-lightgbm-or-catboost-which-boosting-algorithm-should-i-use-e7fda7bb36bc). Keep in mind that the performance of each model is highly dependent on the application and so any reported metrics might not be true for your particular use of the model.
There are also numerous online articles describing and comparing the algorithms. Some relatively lightweight examples would be [CatBoost vs. LightGBM vs. XGBoost — Which is the best algorithm?](https://towardsdatascience.com/catboost-vs-lightgbm-vs-xgboost-c80f40662924#:~:text=In%20CatBoost%2C%20symmetric%20trees%2C%20or,the%20same%20depth%20can%20differ.) and [XGBoost, LightGBM or CatBoost — which boosting algorithm should I use?](https://medium.com/riskified-technology/xgboost-lightgbm-or-catboost-which-boosting-algorithm-should-i-use-e7fda7bb36bc). Keep in mind that the performance of each model is highly dependent on the application and so any reported metrics might not be true for your particular use of the model.
Apart from the models already available in FreqAI, it is also possible to customize and create your own prediction models using the `IFreqaiModel` class. You are encouraged to inherit `fit()`, `train()`, and `predict()` to customize various aspects of the training procedures. You can place custom FreqAI models in `user_data/freqaimodels` - and freqtrade will pick them up from there based on the provided `--freqaimodel` name - which has to correspond to the class name of your custom model.
Make sure to use unique names to avoid overriding built-in models.
@@ -239,3 +237,181 @@ If you want to predict multiple targets you must specify all labels in the same
df['&s-up_or_down'] = np.where( df["close"].shift(-100) > df["close"], 'up', 'down')
df['&s-up_or_down'] = np.where( df["close"].shift(-100) == df["close"], 'same', df['&s-up_or_down'])
```
## PyTorch Module
### Quick start
The easiest way to quickly run a pytorch model is with the following command (for regression task):
```bash
freqtrade trade --config config_examples/config_freqai.example.json --strategy FreqaiExampleStrategy --freqaimodel PyTorchMLPRegressor --strategy-path freqtrade/templates
```
!!! Note "Installation/docker"
The PyTorch module requires large packages such as `torch`, which should be explicitly requested during `./setup.sh -i` by answering "y" to the question "Do you also want dependencies for freqai-rl or PyTorch (~700mb additional space required) [y/N]?".
Users who prefer docker should ensure they use the docker image appended with `_freqaitorch`.
We do provide an explicit docker-compose file for this in `docker/docker-compose-freqai.yml` - which can be used via `docker compose -f docker/docker-compose-freqai.yml run ...` - or can be copied to replace the original docker file.
This docker-compose file also contains a (disabled) section to enable GPU resources within docker containers. This obviously assumes the system has GPU resources available.
### Structure
#### Model
You can construct your own Neural Network architecture in PyTorch by simply defining your `nn.Module` class inside your custom [`IFreqaiModel` file](#using-different-prediction-models) and then using that class in your `def train()` function. Here is an example of logistic regression model implementation using PyTorch (should be used with nn.BCELoss criterion) for classification tasks.
```python
class LogisticRegression(nn.Module):
def __init__(self, input_size: int):
super().__init__()
# Define your layers
self.linear = nn.Linear(input_size, 1)
self.activation = nn.Sigmoid()
def forward(self, x: torch.Tensor) -> torch.Tensor:
# Define the forward pass
out = self.linear(x)
out = self.activation(out)
return out
class MyCoolPyTorchClassifier(BasePyTorchClassifier):
"""
This is a custom IFreqaiModel showing how a user might setup their own
custom Neural Network architecture for their training.
"""
@property
def data_convertor(self) -> PyTorchDataConvertor:
return DefaultPyTorchDataConvertor(target_tensor_type=torch.float)
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
config = self.freqai_info.get("model_training_parameters", {})
self.learning_rate: float = config.get("learning_rate", 3e-4)
self.model_kwargs: Dict[str, Any] = config.get("model_kwargs", {})
self.trainer_kwargs: Dict[str, Any] = config.get("trainer_kwargs", {})
def fit(self, data_dictionary: Dict, dk: FreqaiDataKitchen, **kwargs) -> Any:
"""
User sets up the training and test data to fit their desired model here
:param data_dictionary: the dictionary holding all data for train, test,
labels, weights
:param dk: The datakitchen object for the current coin/model
"""
class_names = self.get_class_names()
self.convert_label_column_to_int(data_dictionary, dk, class_names)
n_features = data_dictionary["train_features"].shape[-1]
model = LogisticRegression(
input_dim=n_features
)
model.to(self.device)
optimizer = torch.optim.AdamW(model.parameters(), lr=self.learning_rate)
criterion = torch.nn.CrossEntropyLoss()
init_model = self.get_init_model(dk.pair)
trainer = PyTorchModelTrainer(
model=model,
optimizer=optimizer,
criterion=criterion,
model_meta_data={"class_names": class_names},
device=self.device,
init_model=init_model,
data_convertor=self.data_convertor,
**self.trainer_kwargs,
)
trainer.fit(data_dictionary, self.splits)
return trainer
```
#### Trainer
The `PyTorchModelTrainer` performs the idiomatic PyTorch train loop:
Define our model, loss function, and optimizer, and then move them to the appropriate device (GPU or CPU). Inside the loop, we iterate through the batches in the dataloader, move the data to the device, compute the prediction and loss, backpropagate, and update the model parameters using the optimizer.
In addition, the trainer is responsible for the following:
- saving and loading the model
- converting the data from `pandas.DataFrame` to `torch.Tensor`.
#### Integration with Freqai module
Like all freqai models, PyTorch models inherit `IFreqaiModel`. `IFreqaiModel` declares three abstract methods: `train`, `fit`, and `predict`. we implement these methods in three levels of hierarchy.
From top to bottom:
1. `BasePyTorchModel` - Implements the `train` method. all `BasePyTorch*` inherit it. responsible for general data preparation (e.g., data normalization) and calling the `fit` method. Sets `device` attribute used by children classes. Sets `model_type` attribute used by the parent class.
2. `BasePyTorch*` - Implements the `predict` method. Here, the `*` represents a group of algorithms, such as classifiers or regressors. responsible for data preprocessing, predicting, and postprocessing if needed.
3. `PyTorch*Classifier` / `PyTorch*Regressor` - implements the `fit` method. responsible for the main train flaw, where we initialize the trainer and model objects.
![image](assets/freqai_pytorch-diagram.png)
#### Full example
Building a PyTorch regressor using MLP (multilayer perceptron) model, MSELoss criterion, and AdamW optimizer.
```python
class PyTorchMLPRegressor(BasePyTorchRegressor):
def __init__(self, **kwargs) -> None:
super().__init__(**kwargs)
config = self.freqai_info.get("model_training_parameters", {})
self.learning_rate: float = config.get("learning_rate", 3e-4)
self.model_kwargs: Dict[str, Any] = config.get("model_kwargs", {})
self.trainer_kwargs: Dict[str, Any] = config.get("trainer_kwargs", {})
def fit(self, data_dictionary: Dict, dk: FreqaiDataKitchen, **kwargs) -> Any:
n_features = data_dictionary["train_features"].shape[-1]
model = PyTorchMLPModel(
input_dim=n_features,
output_dim=1,
**self.model_kwargs
)
model.to(self.device)
optimizer = torch.optim.AdamW(model.parameters(), lr=self.learning_rate)
criterion = torch.nn.MSELoss()
init_model = self.get_init_model(dk.pair)
trainer = PyTorchModelTrainer(
model=model,
optimizer=optimizer,
criterion=criterion,
device=self.device,
init_model=init_model,
target_tensor_type=torch.float,
**self.trainer_kwargs,
)
trainer.fit(data_dictionary)
return trainer
```
Here we create a `PyTorchMLPRegressor` class that implements the `fit` method. The `fit` method specifies the training building blocks: model, optimizer, criterion, and trainer. We inherit both `BasePyTorchRegressor` and `BasePyTorchModel`, where the former implements the `predict` method that is suitable for our regression task, and the latter implements the train method.
??? Note "Setting Class Names for Classifiers"
When using classifiers, the user must declare the class names (or targets) by overriding the `IFreqaiModel.class_names` attribute. This is achieved by setting `self.freqai.class_names` in the FreqAI strategy inside the `set_freqai_targets` method.
For example, if you are using a binary classifier to predict price movements as up or down, you can set the class names as follows:
```python
def set_freqai_targets(self, dataframe: DataFrame, metadata: Dict, **kwargs) -> DataFrame:
self.freqai.class_names = ["down", "up"]
dataframe['&s-up_or_down'] = np.where(dataframe["close"].shift(-100) >
dataframe["close"], 'up', 'down')
return dataframe
```
To see a full example, you can refer to the [classifier test strategy class](https://github.com/freqtrade/freqtrade/blob/develop/tests/strategy/strats/freqai_test_classifier.py).
#### Improving performance with `torch.compile()`
Torch provides a `torch.compile()` method that can be used to improve performance for specific GPU hardware. More details can be found [here](https://pytorch.org/tutorials/intermediate/torch_compile_tutorial.html). In brief, you simply wrap your `model` in `torch.compile()`:
```python
model = PyTorchMLPModel(
input_dim=n_features,
output_dim=1,
**self.model_kwargs
)
model.to(self.device)
model = torch.compile(model)
```
Then proceed to use the model as normal. Keep in mind that doing this will remove eager execution, which means errors and tracebacks will not be informative.

View File

@@ -2,96 +2,150 @@
## Defining the features
Low level feature engineering is performed in the user strategy within a function called `populate_any_indicators()`. That function sets the `base features` such as, `RSI`, `MFI`, `EMA`, `SMA`, time of day, volume, etc. The `base features` can be custom indicators or they can be imported from any technical-analysis library that you can find. One important syntax rule is that all `base features` string names are prepended with `%-{pair}`, while labels/targets are prepended with `&`.
Low level feature engineering is performed in the user strategy within a set of functions called `feature_engineering_*`. These function set the `base features` such as, `RSI`, `MFI`, `EMA`, `SMA`, time of day, volume, etc. The `base features` can be custom indicators or they can be imported from any technical-analysis library that you can find. FreqAI is equipped with a set of functions to simplify rapid large-scale feature engineering:
!!! Note
Adding the full pair string, e.g. XYZ/USD, in the feature name enables improved performance for dataframe caching on the backend. If you decide *not* to add the full pair string in the feature string, FreqAI will operate in a reduced performance mode.
| Function | Description |
|---------------|-------------|
| `feature_engineering_expand_all()` | This optional function will automatically expand the defined features on the config defined `indicator_periods_candles`, `include_timeframes`, `include_shifted_candles`, and `include_corr_pairs`.
| `feature_engineering_expand_basic()` | This optional function will automatically expand the defined features on the config defined `include_timeframes`, `include_shifted_candles`, and `include_corr_pairs`. Note: this function does *not* expand across `include_periods_candles`.
| `feature_engineering_standard()` | This optional function will be called once with the dataframe of the base timeframe. This is the final function to be called, which means that the dataframe entering this function will contain all the features and columns from the base asset created by the other `feature_engineering_expand` functions. This function is a good place to do custom exotic feature extractions (e.g. tsfresh). This function is also a good place for any feature that should not be auto-expanded upon (e.g., day of the week).
| `set_freqai_targets()` | Required function to set the targets for the model. All targets must be prepended with `&` to be recognized by the FreqAI internals.
Meanwhile, high level feature engineering is handled within `"feature_parameters":{}` in the FreqAI config. Within this file, it is possible to decide large scale feature expansions on top of the `base_features` such as "including correlated pairs" or "including informative timeframes" or even "including recent candles."
It is advisable to start from the template `populate_any_indicators()` in the source provided example strategy (found in `templates/FreqaiExampleStrategy.py`) to ensure that the feature definitions are following the correct conventions. Here is an example of how to set the indicators and labels in the strategy:
It is advisable to start from the template `feature_engineering_*` functions in the source provided example strategy (found in `templates/FreqaiExampleStrategy.py`) to ensure that the feature definitions are following the correct conventions. Here is an example of how to set the indicators and labels in the strategy:
```python
def populate_any_indicators(
self, pair, df, tf, informative=None, set_generalized_indicators=False
):
def feature_engineering_expand_all(self, dataframe: DataFrame, period, metadata, **kwargs) -> DataFrame:
"""
Function designed to automatically generate, name, and merge features
from user-indicated timeframes in the configuration file. The user controls the indicators
passed to the training/prediction by prepending indicators with `'%-' + pair `
(see convention below). I.e., the user should not prepend any supporting metrics
(e.g., bb_lowerband below) with % unless they explicitly want to pass that metric to the
model.
:param pair: pair to be used as informative
:param df: strategy dataframe which will receive merges from informatives
:param tf: timeframe of the dataframe which will modify the feature names
:param informative: the dataframe associated with the informative pair
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
`indicator_periods_candles`, `include_timeframes`, `include_shifted_candles`, and
`include_corr_pairs`. In other words, a single feature defined in this function
will automatically expand to a total of
`indicator_periods_candles` * `include_timeframes` * `include_shifted_candles` *
`include_corr_pairs` numbers of features added to the model.
All features must be prepended with `%` to be recognized by FreqAI internals.
Access metadata such as the current pair/timeframe/period with:
`metadata["pair"]` `metadata["tf"]` `metadata["period"]`
:param df: strategy dataframe which will receive the features
:param period: period of the indicator - usage example:
:param metadata: metadata of current pair
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
"""
if informative is None:
informative = self.dp.get_pair_dataframe(pair, tf)
dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
dataframe["%-mfi-period"] = ta.MFI(dataframe, timeperiod=period)
dataframe["%-adx-period"] = ta.ADX(dataframe, timeperiod=period)
dataframe["%-sma-period"] = ta.SMA(dataframe, timeperiod=period)
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
# first loop is automatically duplicating indicators for time periods
for t in self.freqai_info["feature_parameters"]["indicator_periods_candles"]:
t = int(t)
informative[f"%-{pair}rsi-period_{t}"] = ta.RSI(informative, timeperiod=t)
informative[f"%-{pair}mfi-period_{t}"] = ta.MFI(informative, timeperiod=t)
informative[f"%-{pair}adx-period_{t}"] = ta.ADX(informative, window=t)
bollinger = qtpylib.bollinger_bands(
qtpylib.typical_price(dataframe), window=period, stds=2.2
)
dataframe["bb_lowerband-period"] = bollinger["lower"]
dataframe["bb_middleband-period"] = bollinger["mid"]
dataframe["bb_upperband-period"] = bollinger["upper"]
bollinger = qtpylib.bollinger_bands(
qtpylib.typical_price(informative), window=t, stds=2.2
dataframe["%-bb_width-period"] = (
dataframe["bb_upperband-period"]
- dataframe["bb_lowerband-period"]
) / dataframe["bb_middleband-period"]
dataframe["%-close-bb_lower-period"] = (
dataframe["close"] / dataframe["bb_lowerband-period"]
)
dataframe["%-roc-period"] = ta.ROC(dataframe, timeperiod=period)
dataframe["%-relative_volume-period"] = (
dataframe["volume"] / dataframe["volume"].rolling(period).mean()
)
return dataframe
def feature_engineering_expand_basic(self, dataframe: DataFrame, metadata, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
`include_timeframes`, `include_shifted_candles`, and `include_corr_pairs`.
In other words, a single feature defined in this function
will automatically expand to a total of
`include_timeframes` * `include_shifted_candles` * `include_corr_pairs`
numbers of features added to the model.
Features defined here will *not* be automatically duplicated on user defined
`indicator_periods_candles`
Access metadata such as the current pair/timeframe with:
`metadata["pair"]` `metadata["tf"]`
All features must be prepended with `%` to be recognized by FreqAI internals.
:param df: strategy dataframe which will receive the features
:param metadata: metadata of current pair
dataframe["%-pct-change"] = dataframe["close"].pct_change()
dataframe["%-ema-200"] = ta.EMA(dataframe, timeperiod=200)
"""
dataframe["%-pct-change"] = dataframe["close"].pct_change()
dataframe["%-raw_volume"] = dataframe["volume"]
dataframe["%-raw_price"] = dataframe["close"]
return dataframe
def feature_engineering_standard(self, dataframe: DataFrame, metadata, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
This optional function will be called once with the dataframe of the base timeframe.
This is the final function to be called, which means that the dataframe entering this
function will contain all the features and columns created by all other
freqai_feature_engineering_* functions.
This function is a good place to do custom exotic feature extractions (e.g. tsfresh).
This function is a good place for any feature that should not be auto-expanded upon
(e.g. day of the week).
Access metadata such as the current pair with:
`metadata["pair"]`
All features must be prepended with `%` to be recognized by FreqAI internals.
:param df: strategy dataframe which will receive the features
:param metadata: metadata of current pair
usage example: dataframe["%-day_of_week"] = (dataframe["date"].dt.dayofweek + 1) / 7
"""
dataframe["%-day_of_week"] = (dataframe["date"].dt.dayofweek + 1) / 7
dataframe["%-hour_of_day"] = (dataframe["date"].dt.hour + 1) / 25
return dataframe
def set_freqai_targets(self, dataframe: DataFrame, metadata, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
Required function to set the targets for the model.
All targets must be prepended with `&` to be recognized by the FreqAI internals.
Access metadata such as the current pair with:
`metadata["pair"]`
:param df: strategy dataframe which will receive the targets
:param metadata: metadata of current pair
usage example: dataframe["&-target"] = dataframe["close"].shift(-1) / dataframe["close"]
"""
dataframe["&-s_close"] = (
dataframe["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean()
/ dataframe["close"]
- 1
)
informative[f"{pair}bb_lowerband-period_{t}"] = bollinger["lower"]
informative[f"{pair}bb_middleband-period_{t}"] = bollinger["mid"]
informative[f"{pair}bb_upperband-period_{t}"] = bollinger["upper"]
informative[f"%-{pair}bb_width-period_{t}"] = (
informative[f"{pair}bb_upperband-period_{t}"]
- informative[f"{pair}bb_lowerband-period_{t}"]
) / informative[f"{pair}bb_middleband-period_{t}"]
informative[f"%-{pair}close-bb_lower-period_{t}"] = (
informative["close"] / informative[f"{pair}bb_lowerband-period_{t}"]
)
informative[f"%-{pair}relative_volume-period_{t}"] = (
informative["volume"] / informative["volume"].rolling(t).mean()
)
indicators = [col for col in informative if col.startswith("%")]
# This loop duplicates and shifts all indicators to add a sense of recency to data
for n in range(self.freqai_info["feature_parameters"]["include_shifted_candles"] + 1):
if n == 0:
continue
informative_shift = informative[indicators].shift(n)
informative_shift = informative_shift.add_suffix("_shift-" + str(n))
informative = pd.concat((informative, informative_shift), axis=1)
df = merge_informative_pair(df, informative, self.config["timeframe"], tf, ffill=True)
skip_columns = [
(s + "_" + tf) for s in ["date", "open", "high", "low", "close", "volume"]
]
df = df.drop(columns=skip_columns)
# Add generalized indicators here (because in live, it will call this
# function to populate indicators during training). Notice how we ensure not to
# add them multiple times
if set_generalized_indicators:
df["%-day_of_week"] = (df["date"].dt.dayofweek + 1) / 7
df["%-hour_of_day"] = (df["date"].dt.hour + 1) / 25
# user adds targets here by prepending them with &- (see convention below)
# If user wishes to use multiple targets, a multioutput prediction model
# needs to be used such as templates/CatboostPredictionMultiModel.py
df["&-s_close"] = (
df["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean()
/ df["close"]
- 1
)
return df
return dataframe
```
In the presented example, the user does not wish to pass the `bb_lowerband` as a feature to the model,
@@ -118,14 +172,29 @@ After having defined the `base features`, the next step is to expand upon them u
}
```
The `include_timeframes` in the config above are the timeframes (`tf`) of each call to `populate_any_indicators()` in the strategy. In the presented case, the user is asking for the `5m`, `15m`, and `4h` timeframes of the `rsi`, `mfi`, `roc`, and `bb_width` to be included in the feature set.
The `include_timeframes` in the config above are the timeframes (`tf`) of each call to `feature_engineering_expand_*()` in the strategy. In the presented case, the user is asking for the `5m`, `15m`, and `4h` timeframes of the `rsi`, `mfi`, `roc`, and `bb_width` to be included in the feature set.
You can ask for each of the defined features to be included also for informative pairs using the `include_corr_pairlist`. This means that the feature set will include all the features from `populate_any_indicators` on all the `include_timeframes` for each of the correlated pairs defined in the config (`ETH/USD`, `LINK/USD`, and `BNB/USD` in the presented example).
You can ask for each of the defined features to be included also for informative pairs using the `include_corr_pairlist`. This means that the feature set will include all the features from `feature_engineering_expand_*()` on all the `include_timeframes` for each of the correlated pairs defined in the config (`ETH/USD`, `LINK/USD`, and `BNB/USD` in the presented example).
`include_shifted_candles` indicates the number of previous candles to include in the feature set. For example, `include_shifted_candles: 2` tells FreqAI to include the past 2 candles for each of the features in the feature set.
In total, the number of features the user of the presented example strat has created is: length of `include_timeframes` * no. features in `populate_any_indicators()` * length of `include_corr_pairlist` * no. `include_shifted_candles` * length of `indicator_periods_candles`
In total, the number of features the user of the presented example strat has created is: length of `include_timeframes` * no. features in `feature_engineering_expand_*()` * length of `include_corr_pairlist` * no. `include_shifted_candles` * length of `indicator_periods_candles`
$= 3 * 3 * 3 * 2 * 2 = 108$.
!!! note "Learn more about creative feature engineering"
Check out our [medium article](https://emergentmethods.medium.com/freqai-from-price-to-prediction-6fadac18b665) geared toward helping users learn how to creatively engineer features.
### Gain finer control over `feature_engineering_*` functions with `metadata`
All `feature_engineering_*` and `set_freqai_targets()` functions are passed a `metadata` dictionary which contains information about the `pair`, `tf` (timeframe), and `period` that FreqAI is automating for feature building. As such, a user can use `metadata` inside `feature_engineering_*` functions as criteria for blocking/reserving features for certain timeframes, periods, pairs etc.
```python
def feature_engineering_expand_all(self, dataframe: DataFrame, period, metadata, **kwargs) -> DataFrame:
if metadata["tf"] == "1h":
dataframe["%-roc-period"] = ta.ROC(dataframe, timeperiod=period)
```
This will block `ta.ROC()` from being added to any timeframes other than `"1h"`.
### Returning additional info from training
@@ -143,41 +212,7 @@ Another example, where the user wants to use live metrics from the trade databas
You need to set the standard dictionary in the config so that FreqAI can return proper dataframe shapes. These values will likely be overridden by the prediction model, but in the case where the model has yet to set them, or needs a default initial value, the pre-set values are what will be returned.
## Feature normalization
FreqAI is strict when it comes to data normalization. The train features, $X^{train}$, are always normalized to [-1, 1] using a shifted min-max normalization:
$$X^{train}_{norm} = 2 * \frac{X^{train} - X^{train}.min()}{X^{train}.max() - X^{train}.min()} - 1$$
All other data (test data and unseen prediction data in dry/live/backtest) is always automatically normalized to the training feature space according to industry standards. FreqAI stores all the metadata required to ensure that test and prediction features will be properly normalized and that predictions are properly denormalized. For this reason, it is not recommended to eschew industry standards and modify FreqAI internals - however - advanced users can do so by inheriting `train()` in their custom `IFreqaiModel` and using their own normalization functions.
## Data dimensionality reduction with Principal Component Analysis
You can reduce the dimensionality of your features by activating the `principal_component_analysis` in the config:
```json
"freqai": {
"feature_parameters" : {
"principal_component_analysis": true
}
}
```
This will perform PCA on the features and reduce their dimensionality so that the explained variance of the data set is >= 0.999. Reducing data dimensionality makes training the model faster and hence allows for more up-to-date models.
## Inlier metric
The `inlier_metric` is a metric aimed at quantifying how similar a the features of a data point are to the most recent historic data points.
You define the lookback window by setting `inlier_metric_window` and FreqAI computes the distance between the present time point and each of the previous `inlier_metric_window` lookback points. A Weibull function is fit to each of the lookback distributions and its cumulative distribution function (CDF) is used to produce a quantile for each lookback point. The `inlier_metric` is then computed for each time point as the average of the corresponding lookback quantiles. The figure below explains the concept for an `inlier_metric_window` of 5.
![inlier-metric](assets/freqai_inlier-metric.jpg)
FreqAI adds the `inlier_metric` to the training features and hence gives the model access to a novel type of temporal information.
This function does **not** remove outliers from the data set.
## Weighting features for temporal importance
### Weighting features for temporal importance
FreqAI allows you to set a `weight_factor` to weight recent data more strongly than past data via an exponential function:
@@ -187,13 +222,103 @@ where $W_i$ is the weight of data point $i$ in a total set of $n$ data points. B
![weight-factor](assets/freqai_weight-factor.jpg)
## Building the data pipeline
By default, FreqAI builds a dynamic pipeline based on user congfiguration settings. The default settings are robust and designed to work with a variety of methods. These two steps are a `MinMaxScaler(-1,1)` and a `VarianceThreshold` which removes any column that has 0 variance. Users can activate other steps with more configuration parameters. For example if users add `use_SVM_to_remove_outliers: true` to the `freqai` config, then FreqAI will automatically add the [`SVMOutlierExtractor`](#identifying-outliers-using-a-support-vector-machine-svm) to the pipeline. Likewise, users can add `principal_component_analysis: true` to the `freqai` config to activate PCA. The [DissimilarityIndex](#identifying-outliers-with-the-dissimilarity-index-di) is activated with `DI_threshold: 1`. Finally, noise can also be added to the data with `noise_standard_deviation: 0.1`. Finally, users can add [DBSCAN](#identifying-outliers-with-dbscan) outlier removal with `use_DBSCAN_to_remove_outliers: true`.
!!! note "More information available"
Please review the [parameter table](freqai-parameter-table.md) for more information on these parameters.
### Customizing the pipeline
Users are encouraged to customize the data pipeline to their needs by building their own data pipeline. This can be done by simply setting `dk.feature_pipeline` to their desired `Pipeline` object inside their `IFreqaiModel` `train()` function, or if they prefer not to touch the `train()` function, they can override `define_data_pipeline`/`define_label_pipeline` functions in their `IFreqaiModel`:
!!! note "More information available"
FreqAI uses the the [`DataSieve`](https://github.com/emergentmethods/datasieve) pipeline, which follows the SKlearn pipeline API, but adds, among other features, coherence between the X, y, and sample_weight vector point removals, feature removal, feature name following.
```python
from datasieve.transforms import SKLearnWrapper, DissimilarityIndex
from datasieve.pipeline import Pipeline
from sklearn.preprocessing import QuantileTransformer, StandardScaler
from freqai.base_models import BaseRegressionModel
class MyFreqaiModel(BaseRegressionModel):
"""
Some cool custom model
"""
def fit(self, data_dictionary: Dict, dk: FreqaiDataKitchen, **kwargs) -> Any:
"""
My custom fit function
"""
model = cool_model.fit()
return model
def define_data_pipeline(self) -> Pipeline:
"""
User defines their custom feature pipeline here (if they wish)
"""
feature_pipeline = Pipeline([
('qt', SKLearnWrapper(QuantileTransformer(output_distribution='normal'))),
('di', ds.DissimilarityIndex(di_threshold=1))
])
return feature_pipeline
def define_label_pipeline(self) -> Pipeline:
"""
User defines their custom label pipeline here (if they wish)
"""
label_pipeline = Pipeline([
('qt', SKLearnWrapper(StandardScaler())),
])
return label_pipeline
```
Here, you are defining the exact pipeline that will be used for your feature set during training and prediction. You can use *most* SKLearn transformation steps by wrapping them in the `SKLearnWrapper` class as shown above. In addition, you can use any of the transformations available in the [`DataSieve` library](https://github.com/emergentmethods/datasieve).
You can easily add your own transformation by creating a class that inherits from the datasieve `BaseTransform` and implementing your `fit()`, `transform()` and `inverse_transform()` methods:
```python
from datasieve.transforms.base_transform import BaseTransform
# import whatever else you need
class MyCoolTransform(BaseTransform):
def __init__(self, **kwargs):
self.param1 = kwargs.get('param1', 1)
def fit(self, X, y=None, sample_weight=None, feature_list=None, **kwargs):
# do something with X, y, sample_weight, or/and feature_list
return X, y, sample_weight, feature_list
def transform(self, X, y=None, sample_weight=None,
feature_list=None, outlier_check=False, **kwargs):
# do something with X, y, sample_weight, or/and feature_list
return X, y, sample_weight, feature_list
def inverse_transform(self, X, y=None, sample_weight=None, feature_list=None, **kwargs):
# do/dont do something with X, y, sample_weight, or/and feature_list
return X, y, sample_weight, feature_list
```
!!! note "Hint"
You can define this custom class in the same file as your `IFreqaiModel`.
### Migrating a custom `IFreqaiModel` to the new Pipeline
If you have created your own custom `IFreqaiModel` with a custom `train()`/`predict()` function, *and* you still rely on `data_cleaning_train/predict()`, then you will need to migrate to the new pipeline. If your model does *not* rely on `data_cleaning_train/predict()`, then you do not need to worry about this migration.
More details about the migration can be found [here](strategy_migration.md#freqai---new-data-pipeline).
## Outlier detection
Equity and crypto markets suffer from a high level of non-patterned noise in the form of outlier data points. FreqAI implements a variety of methods to identify such outliers and hence mitigate risk.
### Identifying outliers with the Dissimilarity Index (DI)
The Dissimilarity Index (DI) aims to quantify the uncertainty associated with each prediction made by the model.
The Dissimilarity Index (DI) aims to quantify the uncertainty associated with each prediction made by the model.
You can tell FreqAI to remove outlier data points from the training/test data sets using the DI by including the following statement in the config:
@@ -205,7 +330,7 @@ You can tell FreqAI to remove outlier data points from the training/test data se
}
```
The DI allows predictions which are outliers (not existent in the model feature space) to be thrown out due to low levels of certainty. To do so, FreqAI measures the distance between each training data point (feature vector), $X_{a}$, and all other training data points:
Which will add `DissimilarityIndex` step to your `feature_pipeline` and set the threshold to 1. The DI allows predictions which are outliers (not existent in the model feature space) to be thrown out due to low levels of certainty. To do so, FreqAI measures the distance between each training data point (feature vector), $X_{a}$, and all other training data points:
$$ d_{ab} = \sqrt{\sum_{j=1}^p(X_{a,j}-X_{b,j})^2} $$
@@ -239,9 +364,9 @@ You can tell FreqAI to remove outlier data points from the training/test data se
}
```
The SVM will be trained on the training data and any data point that the SVM deems to be beyond the feature space will be removed.
Which will add `SVMOutlierExtractor` step to your `feature_pipeline`. The SVM will be trained on the training data and any data point that the SVM deems to be beyond the feature space will be removed.
FreqAI uses `sklearn.linear_model.SGDOneClassSVM` (details are available on scikit-learn's webpage [here](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.SGDOneClassSVM.html) (external website)) and you can elect to provide additional parameters for the SVM, such as `shuffle`, and `nu`.
You can elect to provide additional parameters for the SVM, such as `shuffle`, and `nu` via the `feature_parameters.svm_params` dictionary in the config.
The parameter `shuffle` is by default set to `False` to ensure consistent results. If it is set to `True`, running the SVM multiple times on the same data set might result in different outcomes due to `max_iter` being to low for the algorithm to reach the demanded `tol`. Increasing `max_iter` solves this issue but causes the procedure to take longer time.
@@ -259,7 +384,7 @@ You can configure FreqAI to use DBSCAN to cluster and remove outliers from the t
}
```
DBSCAN is an unsupervised machine learning algorithm that clusters data without needing to know how many clusters there should be.
Which will add the `DataSieveDBSCAN` step to your `feature_pipeline`. This is an unsupervised machine learning algorithm that clusters data without needing to know how many clusters there should be.
Given a number of data points $N$, and a distance $\varepsilon$, DBSCAN clusters the data set by setting all data points that have $N-1$ other data points within a distance of $\varepsilon$ as *core points*. A data point that is within a distance of $\varepsilon$ from a *core point* but that does not have $N-1$ other data points within a distance of $\varepsilon$ from itself is considered an *edge point*. A cluster is then the collection of *core points* and *edge points*. Data points that have no other data points at a distance $<\varepsilon$ are considered outliers. The figure below shows a cluster with $N = 3$.

View File

@@ -15,13 +15,13 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
| `identifier` | **Required.** <br> A unique ID for the current model. If models are saved to disk, the `identifier` allows for reloading specific pre-trained models/data. <br> **Datatype:** String.
| `live_retrain_hours` | Frequency of retraining during dry/live runs. <br> **Datatype:** Float > 0. <br> Default: `0` (models retrain as often as possible).
| `expiration_hours` | Avoid making predictions if a model is more than `expiration_hours` old. <br> **Datatype:** Positive integer. <br> Default: `0` (models never expire).
| `purge_old_models` | Delete obsolete models. <br> **Datatype:** Boolean. <br> Default: `False` (all historic models remain on disk).
| `purge_old_models` | Number of models to keep on disk (not relevant to backtesting). Default is 2, which means that dry/live runs will keep the latest 2 models on disk. Setting to 0 keeps all models. This parameter also accepts a boolean to maintain backwards compatibility. <br> **Datatype:** Integer. <br> Default: `2`.
| `save_backtest_models` | Save models to disk when running backtesting. Backtesting operates most efficiently by saving the prediction data and reusing them directly for subsequent runs (when you wish to tune entry/exit parameters). Saving backtesting models to disk also allows to use the same model files for starting a dry/live instance with the same model `identifier`. <br> **Datatype:** Boolean. <br> Default: `False` (no models are saved).
| `fit_live_predictions_candles` | Number of historical candles to use for computing target (label) statistics from prediction data, instead of from the training dataset (more information can be found [here](freqai-configuration.md#creating-a-dynamic-target-threshold)). <br> **Datatype:** Positive integer.
| `follow_mode` | Use a `follower` that will look for models associated with a specific `identifier` and load those for inferencing. A `follower` will **not** train new models. <br> **Datatype:** Boolean. <br> Default: `False`.
| `continual_learning` | Use the final state of the most recently trained model as starting point for the new model, allowing for incremental learning (more information can be found [here](freqai-running.md#continual-learning)). <br> **Datatype:** Boolean. <br> Default: `False`.
| `continual_learning` | Use the final state of the most recently trained model as starting point for the new model, allowing for incremental learning (more information can be found [here](freqai-running.md#continual-learning)). Beware that this is currently a naive approach to incremental learning, and it has a high probability of overfitting/getting stuck in local minima while the market moves away from your model. We have the connections here primarily for experimental purposes and so that it is ready for more mature approaches to continual learning in chaotic systems like the crypto market. <br> **Datatype:** Boolean. <br> Default: `False`.
| `write_metrics_to_disk` | Collect train timings, inference timings and cpu usage in json file. <br> **Datatype:** Boolean. <br> Default: `False`
| `data_kitchen_thread_count` | <br> Designate the number of threads you want to use for data processing (outlier methods, normalization, etc.). This has no impact on the number of threads used for training. If user does not set it (default), FreqAI will use max number of threads - 2 (leaving 1 physical core available for Freqtrade bot and FreqUI) <br> **Datatype:** Positive integer.
| `activate_tensorboard` | <br> Indicate whether or not to activate tensorboard for the tensorboard enabled modules (currently Reinforcment Learning, XGBoost, Catboost, and PyTorch). Tensorboard needs Torch installed, which means you will need the torch/RL docker image or you need to answer "yes" to the install question about whether or not you wish to install Torch. <br> **Datatype:** Boolean. <br> Default: `True`.
### Feature parameters
@@ -29,12 +29,12 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
|------------|-------------|
| | **Feature parameters within the `freqai.feature_parameters` sub dictionary**
| `feature_parameters` | A dictionary containing the parameters used to engineer the feature set. Details and examples are shown [here](freqai-feature-engineering.md). <br> **Datatype:** Dictionary.
| `include_timeframes` | A list of timeframes that all indicators in `populate_any_indicators` will be created for. The list is added as features to the base indicators dataset. <br> **Datatype:** List of timeframes (strings).
| `include_corr_pairlist` | A list of correlated coins that FreqAI will add as additional features to all `pair_whitelist` coins. All indicators set in `populate_any_indicators` during feature engineering (see details [here](freqai-feature-engineering.md)) will be created for each correlated coin. The correlated coins features are added to the base indicators dataset. <br> **Datatype:** List of assets (strings).
| `label_period_candles` | Number of candles into the future that the labels are created for. This is used in `populate_any_indicators` (see `templates/FreqaiExampleStrategy.py` for detailed usage). You can create custom labels and choose whether to make use of this parameter or not. <br> **Datatype:** Positive integer.
| `include_timeframes` | A list of timeframes that all indicators in `feature_engineering_expand_*()` will be created for. The list is added as features to the base indicators dataset. <br> **Datatype:** List of timeframes (strings).
| `include_corr_pairlist` | A list of correlated coins that FreqAI will add as additional features to all `pair_whitelist` coins. All indicators set in `feature_engineering_expand_*()` during feature engineering (see details [here](freqai-feature-engineering.md)) will be created for each correlated coin. The correlated coins features are added to the base indicators dataset. <br> **Datatype:** List of assets (strings).
| `label_period_candles` | Number of candles into the future that the labels are created for. This is used in `feature_engineering_expand_all()` (see `templates/FreqaiExampleStrategy.py` for detailed usage). You can create custom labels and choose whether to make use of this parameter or not. <br> **Datatype:** Positive integer.
| `include_shifted_candles` | Add features from previous candles to subsequent candles with the intent of adding historical information. If used, FreqAI will duplicate and shift all features from the `include_shifted_candles` previous candles so that the information is available for the subsequent candle. <br> **Datatype:** Positive integer.
| `weight_factor` | Weight training data points according to their recency (see details [here](freqai-feature-engineering.md#weighting-features-for-temporal-importance)). <br> **Datatype:** Positive float (typically < 1).
| `indicator_max_period_candles` | **No longer used (#7325)**. Replaced by `startup_candle_count` which is set in the [strategy](freqai-configuration.md#building-a-freqai-strategy). `startup_candle_count` is timeframe independent and defines the maximum *period* used in `populate_any_indicators()` for indicator creation. FreqAI uses this parameter together with the maximum timeframe in `include_time_frames` to calculate how many data points to download such that the first data point does not include a NaN. <br> **Datatype:** Positive integer.
| `indicator_max_period_candles` | **No longer used (#7325)**. Replaced by `startup_candle_count` which is set in the [strategy](freqai-configuration.md#building-a-freqai-strategy). `startup_candle_count` is timeframe independent and defines the maximum *period* used in `feature_engineering_*()` for indicator creation. FreqAI uses this parameter together with the maximum timeframe in `include_time_frames` to calculate how many data points to download such that the first data point does not include a NaN. <br> **Datatype:** Positive integer.
| `indicator_periods_candles` | Time periods to calculate indicators for. The indicators are added to the base indicator dataset. <br> **Datatype:** List of positive integers.
| `principal_component_analysis` | Automatically reduce the dimensionality of the data set using Principal Component Analysis. See details about how it works [here](#reducing-data-dimensionality-with-principal-component-analysis) <br> **Datatype:** Boolean. <br> Default: `False`.
| `plot_feature_importances` | Create a feature importance plot for each model for the top/bottom `plot_feature_importances` number of features. Plot is stored in `user_data/models/<identifier>/sub-train-<COIN>_<timestamp>.html`. <br> **Datatype:** Integer. <br> Default: `0`.
@@ -42,17 +42,18 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
| `use_SVM_to_remove_outliers` | Train a support vector machine to detect and remove outliers from the training dataset, as well as from incoming data points. See details about how it works [here](freqai-feature-engineering.md#identifying-outliers-using-a-support-vector-machine-svm). <br> **Datatype:** Boolean.
| `svm_params` | All parameters available in Sklearn's `SGDOneClassSVM()`. See details about some select parameters [here](freqai-feature-engineering.md#identifying-outliers-using-a-support-vector-machine-svm). <br> **Datatype:** Dictionary.
| `use_DBSCAN_to_remove_outliers` | Cluster data using the DBSCAN algorithm to identify and remove outliers from training and prediction data. See details about how it works [here](freqai-feature-engineering.md#identifying-outliers-with-dbscan). <br> **Datatype:** Boolean.
| `inlier_metric_window` | If set, FreqAI adds an `inlier_metric` to the training feature set and set the lookback to be the `inlier_metric_window`, i.e., the number of previous time points to compare the current candle to. Details of how the `inlier_metric` is computed can be found [here](freqai-feature-engineering.md#inlier-metric). <br> **Datatype:** Integer. <br> Default: `0`.
| `noise_standard_deviation` | If set, FreqAI adds noise to the training features with the aim of preventing overfitting. FreqAI generates random deviates from a gaussian distribution with a standard deviation of `noise_standard_deviation` and adds them to all data points. `noise_standard_deviation` should be kept relative to the normalized space, i.e., between -1 and 1. In other words, since data in FreqAI is always normalized to be between -1 and 1, `noise_standard_deviation: 0.05` would result in 32% of the data being randomly increased/decreased by more than 2.5% (i.e., the percent of data falling within the first standard deviation). <br> **Datatype:** Integer. <br> Default: `0`.
| `outlier_protection_percentage` | Enable to prevent outlier detection methods from discarding too much data. If more than `outlier_protection_percentage` % of points are detected as outliers by the SVM or DBSCAN, FreqAI will log a warning message and ignore outlier detection, i.e., the original dataset will be kept intact. If the outlier protection is triggered, no predictions will be made based on the training dataset. <br> **Datatype:** Float. <br> Default: `30`.
| `reverse_train_test_order` | Split the feature dataset (see below) and use the latest data split for training and test on historical split of the data. This allows the model to be trained up to the most recent data point, while avoiding overfitting. However, you should be careful to understand the unorthodox nature of this parameter before employing it. <br> **Datatype:** Boolean. <br> Default: `False` (no reversal).
| `shuffle_after_split` | Split the data into train and test sets, and then shuffle both sets individually. <br> **Datatype:** Boolean. <br> Default: `False`.
| `buffer_train_data_candles` | Cut `buffer_train_data_candles` off the beginning and end of the training data *after* the indicators were populated. The main example use is when predicting maxima and minima, the argrelextrema function cannot know the maxima/minima at the edges of the timerange. To improve model accuracy, it is best to compute argrelextrema on the full timerange and then use this function to cut off the edges (buffer) by the kernel. In another case, if the targets are set to a shifted price movement, this buffer is unnecessary because the shifted candles at the end of the timerange will be NaN and FreqAI will automatically cut those off of the training dataset.<br> **Datatype:** Integer. <br> Default: `0`.
### Data split parameters
| Parameter | Description |
|------------|-------------|
| | **Data split parameters within the `freqai.data_split_parameters` sub dictionary**
| `data_split_parameters` | Include any additional parameters available from Scikit-learn `test_train_split()`, which are shown [here](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html) (external website). <br> **Datatype:** Dictionary.
| `data_split_parameters` | Include any additional parameters available from scikit-learn `test_train_split()`, which are shown [here](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html) (external website). <br> **Datatype:** Dictionary.
| `test_size` | The fraction of data that should be used for testing instead of training. <br> **Datatype:** Positive float < 1.
| `shuffle` | Shuffle the training data points during training. Typically, to not remove the chronological order of data in time-series forecasting, this is set to `False`. <br> **Datatype:** Boolean. <br> Defaut: `False`.
@@ -83,12 +84,35 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
| `add_state_info` | Tell FreqAI to include state information in the feature set for training and inferencing. The current state variables include trade duration, current profit, trade position. This is only available in dry/live runs, and is automatically switched to false for backtesting. <br> **Datatype:** bool. <br> Default: `False`.
| `net_arch` | Network architecture which is well described in [`stable_baselines3` doc](https://stable-baselines3.readthedocs.io/en/master/guide/custom_policy.html#examples). In summary: `[<shared layers>, dict(vf=[<non-shared value network layers>], pi=[<non-shared policy network layers>])]`. By default this is set to `[128, 128]`, which defines 2 shared hidden layers with 128 units each.
| `randomize_starting_position` | Randomize the starting point of each episode to avoid overfitting. <br> **Datatype:** bool. <br> Default: `False`.
| `drop_ohlc_from_features` | Do not include the normalized ohlc data in the feature set passed to the agent during training (ohlc will still be used for driving the environment in all cases) <br> **Datatype:** Boolean. <br> **Default:** `False`
| `progress_bar` | Display a progress bar with the current progress, elapsed time and estimated remaining time. <br> **Datatype:** Boolean. <br> Default: `False`.
### PyTorch parameters
#### general
| Parameter | Description |
|------------|-------------|
| | **Model training parameters within the `freqai.model_training_parameters` sub dictionary**
| `learning_rate` | Learning rate to be passed to the optimizer. <br> **Datatype:** float. <br> Default: `3e-4`.
| `model_kwargs` | Parameters to be passed to the model class. <br> **Datatype:** dict. <br> Default: `{}`.
| `trainer_kwargs` | Parameters to be passed to the trainer class. <br> **Datatype:** dict. <br> Default: `{}`.
#### trainer_kwargs
| Parameter | Description |
|------------|-------------|
| | **Model training parameters within the `freqai.model_training_parameters.model_kwargs` sub dictionary**
| `max_iters` | The number of training iterations to run. iteration here refers to the number of times we call self.optimizer.step(). used to calculate n_epochs. <br> **Datatype:** int. <br> Default: `100`.
| `batch_size` | The size of the batches to use during training.. <br> **Datatype:** int. <br> Default: `64`.
| `max_n_eval_batches` | The maximum number batches to use for evaluation.. <br> **Datatype:** int, optional. <br> Default: `None`.
### Additional parameters
| Parameter | Description |
|------------|-------------|
| | **Extraneous parameters**
| `freqai.keras` | If the selected model makes use of Keras (typical for Tensorflow-based prediction models), this flag needs to be activated so that the model save/loading follows Keras standards. <br> **Datatype:** Boolean. <br> Default: `False`.
| `freqai.conv_width` | The width of a convolutional neural network input tensor. This replaces the need for shifting candles (`include_shifted_candles`) by feeding in historical data points as the second dimension of the tensor. Technically, this parameter can also be used for regressors, but it only adds computational overhead and does not change the model training/prediction. <br> **Datatype:** Integer. <br> Default: `2`.
| `freqai.keras` | If the selected model makes use of Keras (typical for TensorFlow-based prediction models), this flag needs to be activated so that the model save/loading follows Keras standards. <br> **Datatype:** Boolean. <br> Default: `False`.
| `freqai.conv_width` | The width of a neural network input tensor. This replaces the need for shifting candles (`include_shifted_candles`) by feeding in historical data points as the second dimension of the tensor. Technically, this parameter can also be used for regressors, but it only adds computational overhead and does not change the model training/prediction. <br> **Datatype:** Integer. <br> Default: `2`.
| `freqai.reduce_df_footprint` | Recast all numeric columns to float32/int32, with the objective of reducing ram/disk usage and decreasing train/inference timing. This parameter is set in the main level of the Freqtrade configuration file (not inside FreqAI). <br> **Datatype:** Boolean. <br> Default: `False`.

View File

@@ -24,7 +24,7 @@ The framework is built on stable_baselines3 (torch) and OpenAI gym for the base
### Important considerations
As explained above, the agent is "trained" in an artificial trading "environment". In our case, that environment may seem quite similar to a real Freqtrade backtesting environment, but it is *NOT*. In fact, the RL training environment is much more simplified. It does not incorporate any of the complicated strategy logic, such as callbacks like `custom_exit`, `custom_stoploss`, leverage controls, etc. The RL environment is instead a very "raw" representation of the true market, where the agent has free-will to learn the policy (read: stoploss, take profit, etc.) which is enforced by the `calculate_reward()`. Thus, it is important to consider that the agent training environment is not identical to the real world.
As explained above, the agent is "trained" in an artificial trading "environment". In our case, that environment may seem quite similar to a real Freqtrade backtesting environment, but it is *NOT*. In fact, the RL training environment is much more simplified. It does not incorporate any of the complicated strategy logic, such as callbacks like `custom_exit`, `custom_stoploss`, leverage controls, etc. The RL environment is instead a very "raw" representation of the true market, where the agent has free will to learn the policy (read: stoploss, take profit, etc.) which is enforced by the `calculate_reward()`. Thus, it is important to consider that the agent training environment is not identical to the real world.
## Running Reinforcement Learning
@@ -34,65 +34,38 @@ Setting up and running a Reinforcement Learning model is the same as running a R
freqtrade trade --freqaimodel ReinforcementLearner --strategy MyRLStrategy --config config.json
```
where `ReinforcementLearner` will use the templated `ReinforcementLearner` from `freqai/prediction_models/ReinforcementLearner` (or a custom user defined one located in `user_data/freqaimodels`). The strategy, on the other hand, follows the same base [feature engineering](freqai-feature-engineering.md) with `populate_any_indicators` as a typical Regressor:
where `ReinforcementLearner` will use the templated `ReinforcementLearner` from `freqai/prediction_models/ReinforcementLearner` (or a custom user defined one located in `user_data/freqaimodels`). The strategy, on the other hand, follows the same base [feature engineering](freqai-feature-engineering.md) with `feature_engineering_*` as a typical Regressor. The difference lies in the creation of the targets, Reinforcement Learning doesn't require them. However, FreqAI requires a default (neutral) value to be set in the action column:
```python
def populate_any_indicators(
self, pair, df, tf, informative=None, set_generalized_indicators=False
):
def set_freqai_targets(self, dataframe, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
Required function to set the targets for the model.
All targets must be prepended with `&` to be recognized by the FreqAI internals.
if informative is None:
informative = self.dp.get_pair_dataframe(pair, tf)
More details about feature engineering available:
# first loop is automatically duplicating indicators for time periods
for t in self.freqai_info["feature_parameters"]["indicator_periods_candles"]:
https://www.freqtrade.io/en/latest/freqai-feature-engineering
t = int(t)
informative[f"%-{pair}rsi-period_{t}"] = ta.RSI(informative, timeperiod=t)
informative[f"%-{pair}mfi-period_{t}"] = ta.MFI(informative, timeperiod=t)
informative[f"%-{pair}adx-period_{t}"] = ta.ADX(informative, window=t)
# The following raw price values are necessary for RL models
informative[f"%-{pair}raw_close"] = informative["close"]
informative[f"%-{pair}raw_open"] = informative["open"]
informative[f"%-{pair}raw_high"] = informative["high"]
informative[f"%-{pair}raw_low"] = informative["low"]
indicators = [col for col in informative if col.startswith("%")]
# This loop duplicates and shifts all indicators to add a sense of recency to data
for n in range(self.freqai_info["feature_parameters"]["include_shifted_candles"] + 1):
if n == 0:
continue
informative_shift = informative[indicators].shift(n)
informative_shift = informative_shift.add_suffix("_shift-" + str(n))
informative = pd.concat((informative, informative_shift), axis=1)
df = merge_informative_pair(df, informative, self.config["timeframe"], tf, ffill=True)
skip_columns = [
(s + "_" + tf) for s in ["date", "open", "high", "low", "close", "volume"]
]
df = df.drop(columns=skip_columns)
# Add generalized indicators here (because in live, it will call this
# function to populate indicators during training). Notice how we ensure not to
# add them multiple times
if set_generalized_indicators:
# For RL, there are no direct targets to set. This is filler (neutral)
# until the agent sends an action.
df["&-action"] = 0
return df
:param df: strategy dataframe which will receive the targets
usage example: dataframe["&-target"] = dataframe["close"].shift(-1) / dataframe["close"]
"""
# For RL, there are no direct targets to set. This is filler (neutral)
# until the agent sends an action.
dataframe["&-action"] = 0
return dataframe
```
Most of the function remains the same as for typical Regressors, however, the function above shows how the strategy must pass the raw price data to the agent so that it has access to raw OHLCV in the training environment:
Most of the function remains the same as for typical Regressors, however, the function below shows how the strategy must pass the raw price data to the agent so that it has access to raw OHLCV in the training environment:
```python
def feature_engineering_standard(self, dataframe: DataFrame, **kwargs) -> DataFrame:
# The following features are necessary for RL models
informative[f"%-{pair}raw_close"] = informative["close"]
informative[f"%-{pair}raw_open"] = informative["open"]
informative[f"%-{pair}raw_high"] = informative["high"]
informative[f"%-{pair}raw_low"] = informative["low"]
dataframe[f"%-raw_close"] = dataframe["close"]
dataframe[f"%-raw_open"] = dataframe["open"]
dataframe[f"%-raw_high"] = dataframe["high"]
dataframe[f"%-raw_low"] = dataframe["low"]
return dataframe
```
Finally, there is no explicit "label" to make - instead it is necessary to assign the `&-action` column which will contain the agent's actions when accessed in `populate_entry/exit_trends()`. In the present example, the neutral action to 0. This value should align with the environment used. FreqAI provides two environments, both use 0 as the neutral action.
@@ -162,79 +135,104 @@ Parameter details can be found [here](freqai-parameter-table.md), but in general
## Creating a custom reward function
As you begin to modify the strategy and the prediction model, you will quickly realize some important differences between the Reinforcement Learner and the Regressors/Classifiers. Firstly, the strategy does not set a target value (no labels!). Instead, you set the `calculate_reward()` function inside the `MyRLEnv` class (see below). A default `calculate_reward()` is provided inside `prediction_models/ReinforcementLearner.py` to demonstrate the necessary building blocks for creating rewards, but users are encouraged to create their own custom reinforcement learning model class (see below) and save it to `user_data/freqaimodels`. It is inside the `calculate_reward()` where creative theories about the market can be expressed. For example, you can reward your agent when it makes a winning trade, and penalize the agent when it makes a losing trade. Or perhaps, you wish to reward the agent for entering trades, and penalize the agent for sitting in trades too long. Below we show examples of how these rewards are all calculated:
!!! danger "Not for production"
Warning!
The reward function provided with the Freqtrade source code is a showcase of functionality designed to show/test as many possible environment control features as possible. It is also designed to run quickly on small computers. This is a benchmark, it is *not* for live production. Please beware that you will need to create your own custom_reward() function or use a template built by other users outside of the Freqtrade source code.
As you begin to modify the strategy and the prediction model, you will quickly realize some important differences between the Reinforcement Learner and the Regressors/Classifiers. Firstly, the strategy does not set a target value (no labels!). Instead, you set the `calculate_reward()` function inside the `MyRLEnv` class (see below). A default `calculate_reward()` is provided inside `prediction_models/ReinforcementLearner.py` to demonstrate the necessary building blocks for creating rewards, but this is *not* designed for production. Users *must* create their own custom reinforcement learning model class or use a pre-built one from outside the Freqtrade source code and save it to `user_data/freqaimodels`. It is inside the `calculate_reward()` where creative theories about the market can be expressed. For example, you can reward your agent when it makes a winning trade, and penalize the agent when it makes a losing trade. Or perhaps, you wish to reward the agent for entering trades, and penalize the agent for sitting in trades too long. Below we show examples of how these rewards are all calculated:
!!! note "Hint"
The best reward functions are ones that are continuously differentiable, and well scaled. In other words, adding a single large negative penalty to a rare event is not a good idea, and the neural net will not be able to learn that function. Instead, it is better to add a small negative penalty to a common event. This will help the agent learn faster. Not only this, but you can help improve the continuity of your rewards/penalties by having them scale with severity according to some linear/exponential functions. In other words, you'd slowly scale the penalty as the duration of the trade increases. This is better than a single large penalty occuring at a single point in time.
```python
from freqtrade.freqai.prediction_models.ReinforcementLearner import ReinforcementLearner
from freqtrade.freqai.RL.Base5ActionRLEnv import Actions, Base5ActionRLEnv, Positions
from freqtrade.freqai.prediction_models.ReinforcementLearner import ReinforcementLearner
from freqtrade.freqai.RL.Base5ActionRLEnv import Actions, Base5ActionRLEnv, Positions
class MyCoolRLModel(ReinforcementLearner):
class MyCoolRLModel(ReinforcementLearner):
"""
User created RL prediction model.
Save this file to `freqtrade/user_data/freqaimodels`
then use it with:
freqtrade trade --freqaimodel MyCoolRLModel --config config.json --strategy SomeCoolStrat
Here the users can override any of the functions
available in the `IFreqaiModel` inheritance tree. Most importantly for RL, this
is where the user overrides `MyRLEnv` (see below), to define custom
`calculate_reward()` function, or to override any other parts of the environment.
This class also allows users to override any other part of the IFreqaiModel tree.
For example, the user can override `def fit()` or `def train()` or `def predict()`
to take fine-tuned control over these processes.
Another common override may be `def data_cleaning_predict()` where the user can
take fine-tuned control over the data handling pipeline.
"""
class MyRLEnv(Base5ActionRLEnv):
"""
User created RL prediction model.
User made custom environment. This class inherits from BaseEnvironment and gym.env.
Users can override any functions from those parent classes. Here is an example
of a user customized `calculate_reward()` function.
Save this file to `freqtrade/user_data/freqaimodels`
then use it with:
freqtrade trade --freqaimodel MyCoolRLModel --config config.json --strategy SomeCoolStrat
Here the users can override any of the functions
available in the `IFreqaiModel` inheritance tree. Most importantly for RL, this
is where the user overrides `MyRLEnv` (see below), to define custom
`calculate_reward()` function, or to override any other parts of the environment.
This class also allows users to override any other part of the IFreqaiModel tree.
For example, the user can override `def fit()` or `def train()` or `def predict()`
to take fine-tuned control over these processes.
Another common override may be `def data_cleaning_predict()` where the user can
take fine-tuned control over the data handling pipeline.
Warning!
This is function is a showcase of functionality designed to show as many possible
environment control features as possible. It is also designed to run quickly
on small computers. This is a benchmark, it is *not* for live production.
"""
class MyRLEnv(Base5ActionRLEnv):
"""
User made custom environment. This class inherits from BaseEnvironment and gym.env.
Users can override any functions from those parent classes. Here is an example
of a user customized `calculate_reward()` function.
"""
def calculate_reward(self, action: int) -> float:
# first, penalize if the action is not valid
if not self._is_valid(action):
return -2
pnl = self.get_unrealized_profit()
def calculate_reward(self, action: int) -> float:
# first, penalize if the action is not valid
if not self._is_valid(action):
return -2
pnl = self.get_unrealized_profit()
factor = 100
# reward agent for entering trades
if action in (Actions.Long_enter.value, Actions.Short_enter.value) \
and self._position == Positions.Neutral:
return 25
# discourage agent from not entering trades
if action == Actions.Neutral.value and self._position == Positions.Neutral:
return -1
max_trade_duration = self.rl_config.get('max_trade_duration_candles', 300)
trade_duration = self._current_tick - self._last_trade_tick
if trade_duration <= max_trade_duration:
factor *= 1.5
elif trade_duration > max_trade_duration:
factor *= 0.5
# discourage sitting in position
if self._position in (Positions.Short, Positions.Long) and \
action == Actions.Neutral.value:
return -1 * trade_duration / max_trade_duration
# close long
if action == Actions.Long_exit.value and self._position == Positions.Long:
if pnl > self.profit_aim * self.rr:
factor *= self.rl_config['model_reward_parameters'].get('win_reward_factor', 2)
return float(pnl * factor)
# close short
if action == Actions.Short_exit.value and self._position == Positions.Short:
if pnl > self.profit_aim * self.rr:
factor *= self.rl_config['model_reward_parameters'].get('win_reward_factor', 2)
return float(pnl * factor)
return 0.
factor = 100
pair = self.pair.replace(':', '')
# you can use feature values from dataframe
# Assumes the shifted RSI indicator has been generated in the strategy.
rsi_now = self.raw_features[f"%-rsi-period_10_shift-1_{pair}_"
f"{self.config['timeframe']}"].iloc[self._current_tick]
# reward agent for entering trades
if (action in (Actions.Long_enter.value, Actions.Short_enter.value)
and self._position == Positions.Neutral):
if rsi_now < 40:
factor = 40 / rsi_now
else:
factor = 1
return 25 * factor
# discourage agent from not entering trades
if action == Actions.Neutral.value and self._position == Positions.Neutral:
return -1
max_trade_duration = self.rl_config.get('max_trade_duration_candles', 300)
trade_duration = self._current_tick - self._last_trade_tick
if trade_duration <= max_trade_duration:
factor *= 1.5
elif trade_duration > max_trade_duration:
factor *= 0.5
# discourage sitting in position
if self._position in (Positions.Short, Positions.Long) and \
action == Actions.Neutral.value:
return -1 * trade_duration / max_trade_duration
# close long
if action == Actions.Long_exit.value and self._position == Positions.Long:
if pnl > self.profit_aim * self.rr:
factor *= self.rl_config['model_reward_parameters'].get('win_reward_factor', 2)
return float(pnl * factor)
# close short
if action == Actions.Short_exit.value and self._position == Positions.Short:
if pnl > self.profit_aim * self.rr:
factor *= self.rl_config['model_reward_parameters'].get('win_reward_factor', 2)
return float(pnl * factor)
return 0.
```
### Using Tensorboard
## Using Tensorboard
Reinforcement Learning models benefit from tracking training metrics. FreqAI has integrated Tensorboard to allow users to track training and evaluation performance across all coins and across all retrainings. Tensorboard is activated via the following command:
@@ -247,40 +245,37 @@ where `unique-id` is the `identifier` set in the `freqai` configuration file. Th
![tensorboard](assets/tensorboard.jpg)
### Custom logging
## Custom logging
FreqAI also provides a built in episodic summary logger called `self.tensorboard_log` for adding custom information to the Tensorboard log. By default, this function is already called once per step inside the environment to record the agent actions. All values accumulated for all steps in a single episode are reported at the conclusion of each episode, followed by a full reset of all metrics to 0 in preparation for the subsequent episode.
`self.tensorboard_log` can also be used anywhere inside the environment, for example, it can be added to the `calculate_reward` function to collect more detailed information about how often various parts of the reward were called:
```py
class MyRLEnv(Base5ActionRLEnv):
"""
User made custom environment. This class inherits from BaseEnvironment and gym.env.
Users can override any functions from those parent classes. Here is an example
of a user customized `calculate_reward()` function.
"""
def calculate_reward(self, action: int) -> float:
if not self._is_valid(action):
self.tensorboard_log("is_valid")
return -2
```python
class MyRLEnv(Base5ActionRLEnv):
"""
User made custom environment. This class inherits from BaseEnvironment and gym.env.
Users can override any functions from those parent classes. Here is an example
of a user customized `calculate_reward()` function.
"""
def calculate_reward(self, action: int) -> float:
if not self._is_valid(action):
self.tensorboard_log("invalid")
return -2
```
!!! Note
The `self.tensorboard_log()` function is designed for tracking incremented objects only i.e. events, actions inside the training environment. If the event of interest is a float, the float can be passed as the second argument e.g. `self.tensorboard_log("float_metric1", 0.23)` would add 0.23 to `float_metric`. In this case you can also disable incrementing using `inc=False` parameter.
The `self.tensorboard_log()` function is designed for tracking incremented objects only i.e. events, actions inside the training environment. If the event of interest is a float, the float can be passed as the second argument e.g. `self.tensorboard_log("float_metric1", 0.23)`. In this case the metric values are not incremented.
## Choosing a base environment
### Choosing a base environment
FreqAI provides two base environments, `Base4ActionEnvironment` and `Base5ActionEnvironment`. As the names imply, the environments are customized for agents that can select from 4 or 5 actions. In the `Base4ActionEnvironment`, the agent can enter long, enter short, hold neutral, or exit position. Meanwhile, in the `Base5ActionEnvironment`, the agent has the same actions as Base4, but instead of a single exit action, it separates exit long and exit short. The main changes stemming from the environment selection include:
FreqAI provides three base environments, `Base3ActionRLEnvironment`, `Base4ActionEnvironment` and `Base5ActionEnvironment`. As the names imply, the environments are customized for agents that can select from 3, 4 or 5 actions. The `Base3ActionEnvironment` is the simplest, the agent can select from hold, long, or short. This environment can also be used for long-only bots (it automatically follows the `can_short` flag from the strategy), where long is the enter condition and short is the exit condition. Meanwhile, in the `Base4ActionEnvironment`, the agent can enter long, enter short, hold neutral, or exit position. Finally, in the `Base5ActionEnvironment`, the agent has the same actions as Base4, but instead of a single exit action, it separates exit long and exit short. The main changes stemming from the environment selection include:
* the actions available in the `calculate_reward`
* the actions consumed by the user strategy
Both of the FreqAI provided environments inherit from an action/position agnostic environment object called the `BaseEnvironment`, which contains all shared logic. The architecture is designed to be easily customized. The simplest customization is the `calculate_reward()` (see details [here](#creating-a-custom-reward-function)). However, the customizations can be further extended into any of the functions inside the environment. You can do this by simply overriding those functions inside your `MyRLEnv` in the prediction model file. Or for more advanced customizations, it is encouraged to create an entirely new environment inherited from `BaseEnvironment`.
All of the FreqAI provided environments inherit from an action/position agnostic environment object called the `BaseEnvironment`, which contains all shared logic. The architecture is designed to be easily customized. The simplest customization is the `calculate_reward()` (see details [here](#creating-a-custom-reward-function)). However, the customizations can be further extended into any of the functions inside the environment. You can do this by simply overriding those functions inside your `MyRLEnv` in the prediction model file. Or for more advanced customizations, it is encouraged to create an entirely new environment inherited from `BaseEnvironment`.
!!! Note
FreqAI does not provide by default, a long-only training environment. However, creating one should be as simple as copy-pasting one of the built in environments and removing the `short` actions (and all associated references to those).
Only the `Base3ActionRLEnv` can do long-only training/trading (set the user strategy attribute `can_short = False`).

View File

@@ -67,6 +67,10 @@ Backtesting mode requires [downloading the necessary data](#downloading-data-to-
*want* to retrain a new model with the same config file, you should simply change the `identifier`.
This way, you can return to using any model you wish by simply specifying the `identifier`.
!!! Note
Backtesting calls `set_freqai_targets()` one time for each backtest window (where the number of windows is the full backtest timerange divided by the `backtest_period_days` parameter). Doing this means that the targets simulate dry/live behavior without look ahead bias. However, the definition of the features in `feature_engineering_*()` is performed once on the entire backtest timerange. This means that you should be sure that features do look-ahead into the future.
More details about look-ahead bias can be found in [Common Mistakes](strategy-customization.md#common-mistakes-when-developing-strategies).
---
### Saving prediction data
@@ -116,7 +120,7 @@ In the presented example config, the user will only allow predictions on models
Model training parameters are unique to the selected machine learning library. FreqAI allows you to set any parameter for any library using the `model_training_parameters` dictionary in the config. The example config (found in `config_examples/config_freqai.example.json`) shows some of the example parameters associated with `Catboost` and `LightGBM`, but you can add any parameters available in those libraries or any other machine learning library you choose to implement.
Data split parameters are defined in `data_split_parameters` which can be any parameters associated with Scikit-learn's `train_test_split()` function. `train_test_split()` has a parameters called `shuffle` which allows to shuffle the data or keep it unshuffled. This is particularly useful to avoid biasing training with temporally auto-correlated data. More details about these parameters can be found the [Scikit-learn website](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html) (external website).
Data split parameters are defined in `data_split_parameters` which can be any parameters associated with scikit-learn's `train_test_split()` function. `train_test_split()` has a parameters called `shuffle` which allows to shuffle the data or keep it unshuffled. This is particularly useful to avoid biasing training with temporally auto-correlated data. More details about these parameters can be found the [scikit-learn website](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html) (external website).
The FreqAI specific parameter `label_period_candles` defines the offset (number of candles into the future) used for the `labels`. In the presented [example config](freqai-configuration.md#setting-up-the-configuration-file), the user is asking for `labels` that are 24 candles in the future.
@@ -124,6 +128,12 @@ The FreqAI specific parameter `label_period_candles` defines the offset (number
You can choose to adopt a continual learning scheme by setting `"continual_learning": true` in the config. By enabling `continual_learning`, after training an initial model from scratch, subsequent trainings will start from the final model state of the preceding training. This gives the new model a "memory" of the previous state. By default, this is set to `False` which means that all new models are trained from scratch, without input from previous models.
???+ danger "Continual learning enforces a constant parameter space"
Since `continual_learning` means that the model parameter space *cannot* change between trainings, `principal_component_analysis` is automatically disabled when `continual_learning` is enabled. Hint: PCA changes the parameter space and the number of features, learn more about PCA [here](freqai-feature-engineering.md#data-dimensionality-reduction-with-principal-component-analysis).
???+ danger "Experimental functionality"
Beware that this is currently a naive approach to incremental learning, and it has a high probability of overfitting/getting stuck in local minima while the market moves away from your model. We have the mechanics available in FreqAI primarily for experimental purposes and so that it is ready for more mature approaches to continual learning in chaotic systems like the crypto market.
## Hyperopt
You can hyperopt using the same command as for [typical Freqtrade hyperopt](hyperopt.md):
@@ -135,7 +145,7 @@ freqtrade hyperopt --hyperopt-loss SharpeHyperOptLoss --strategy FreqaiExampleSt
`hyperopt` requires you to have the data pre-downloaded in the same fashion as if you were doing [backtesting](#backtesting). In addition, you must consider some restrictions when trying to hyperopt FreqAI strategies:
- The `--analyze-per-epoch` hyperopt parameter is not compatible with FreqAI.
- It's not possible to hyperopt indicators in the `populate_any_indicators()` function. This means that you cannot optimize model parameters using hyperopt. Apart from this exception, it is possible to optimize all other [spaces](hyperopt.md#running-hyperopt-with-smaller-search-space).
- It's not possible to hyperopt indicators in the `feature_engineering_*()` and `set_freqai_targets()` functions. This means that you cannot optimize model parameters using hyperopt. Apart from this exception, it is possible to optimize all other [spaces](hyperopt.md#running-hyperopt-with-smaller-search-space).
- The backtesting instructions also apply to hyperopt.
The best method for combining hyperopt and FreqAI is to focus on hyperopting entry/exit thresholds/criteria. You need to focus on hyperopting parameters that are not used in your features. For example, you should not try to hyperopt rolling window lengths in the feature creation, or any part of the FreqAI config which changes predictions. In order to efficiently hyperopt the FreqAI strategy, FreqAI stores predictions as dataframes and reuses them. Hence the requirement to hyperopt entry/exit thresholds/criteria only.
@@ -151,7 +161,14 @@ This specific hyperopt would help you understand the appropriate `DI_values` for
## Using Tensorboard
CatBoost models benefit from tracking training metrics via Tensorboard. You can take advantage of the FreqAI integration to track training and evaluation performance across all coins and across all retrainings. Tensorboard is activated via the following command:
!!! note "Availability"
FreqAI includes tensorboard for a variety of models, including XGBoost, all PyTorch models, Reinforcement Learning, and Catboost. If you would like to see Tensorboard integrated into another model type, please open an issue on the [Freqtrade GitHub](https://github.com/freqtrade/freqtrade/issues)
!!! danger "Requirements"
Tensorboard logging requires the FreqAI torch installation/docker image.
The easiest way to use tensorboard is to ensure `freqai.activate_tensorboard` is set to `True` (default setting) in your configuration file, run FreqAI, then open a separate shell and run:
```bash
cd freqtrade
@@ -162,19 +179,6 @@ where `unique-id` is the `identifier` set in the `freqai` configuration file. Th
![tensorboard](assets/tensorboard.jpg)
## Setting up a follower
You can indicate to the bot that it should not train models, but instead should look for models trained by a leader with a specific `identifier` by defining:
```json
"freqai": {
"enabled": true,
"follow_mode": true,
"identifier": "example",
"feature_parameters": {
// leader bots feature_parameters inserted here
},
}
```
In this example, the user has a leader bot with the `"identifier": "example"`. The leader bot is already running or is launched simultaneously with the follower. The follower will load models created by the leader and inference them to obtain predictions instead of training its own models. The user will also need to duplicate the `feature_parameters` parameters from from the leaders freqai configuration file into the freqai section of the followers config.
!!! note "Deactivate for improved performance"
Tensorboard logging can slow down training and should be deactivated for production use.

View File

@@ -4,7 +4,10 @@
## Introduction
FreqAI is a software designed to automate a variety of tasks associated with training a predictive machine learning model to generate market forecasts given a set of input signals. In general, the FreqAI aims to be a sand-box for easily deploying robust machine-learning libraries on real-time data ([details])(#freqai-position-in-open-source-machine-learning-landscape).
FreqAI is a software designed to automate a variety of tasks associated with training a predictive machine learning model to generate market forecasts given a set of input signals. In general, FreqAI aims to be a sandbox for easily deploying robust machine learning libraries on real-time data ([details](#freqai-position-in-open-source-machine-learning-landscape)).
!!! Note
FreqAI is, and always will be, a not-for-profit, open-source project. FreqAI does *not* have a crypto token, FreqAI does *not* sell signals, and FreqAI does not have a domain besides the present [freqtrade documentation](https://www.freqtrade.io/en/latest/freqai/).
Features include:
@@ -19,7 +22,7 @@ Features include:
* **Automatic data download** - Compute timeranges for data downloads and update historic data (in live deployments)
* **Cleaning of incoming data** - Handle NaNs safely before training and model inferencing
* **Dimensionality reduction** - Reduce the size of the training data via [Principal Component Analysis](freqai-feature-engineering.md#data-dimensionality-reduction-with-principal-component-analysis)
* **Deploying bot fleets** - Set one bot to train models while a fleet of [follower bots](freqai-running.md#setting-up-a-follower) inference the models and handle trades
* **Deploying bot fleets** - Set one bot to train models while a fleet of [consumers](producer-consumer.md) use signals.
## Quick start
@@ -29,7 +32,10 @@ The easiest way to quickly test FreqAI is to run it in dry mode with the followi
freqtrade trade --config config_examples/config_freqai.example.json --strategy FreqaiExampleStrategy --freqaimodel LightGBMRegressor --strategy-path freqtrade/templates
```
You will see the boot-up process of automatic data downloading, followed by simultaneous training and trading.
You will see the boot-up process of automatic data downloading, followed by simultaneous training and trading.
!!! danger "Not for production"
The example strategy provided with the Freqtrade source code is designed for showcasing/testing a wide variety of FreqAI features. It is also designed to run on small computers so that it can be used as a benchmark between developers and users. It is *not* designed to be run in production.
An example strategy, prediction model, and config to use as a starting points can be found in
`freqtrade/templates/FreqaiExampleStrategy.py`, `freqtrade/freqai/prediction_models/LightGBMRegressor.py`, and
@@ -66,16 +72,33 @@ pip install -r requirements-freqai.txt
```
!!! Note
Catboost will not be installed on arm devices (raspberry, Mac M1, ARM based VPS, ...), since it does not provide wheels for this platform.
Catboost will not be installed on low-powered arm devices (raspberry), since it does not provide wheels for this platform.
### Usage with docker
If you are using docker, a dedicated tag with FreqAI dependencies is available as `:freqai`. As such - you can replace the image line in your docker-compose file with `image: freqtradeorg/freqtrade:develop_freqai`. This image contains the regular FreqAI dependencies. Similar to native installs, Catboost will not be available on ARM based devices.
If you are using docker, a dedicated tag with FreqAI dependencies is available as `:freqai`. As such - you can replace the image line in your docker compose file with `image: freqtradeorg/freqtrade:develop_freqai`. This image contains the regular FreqAI dependencies. Similar to native installs, Catboost will not be available on ARM based devices. If you would like to use PyTorch or Reinforcement learning, you should use the torch or RL tags, `image: freqtradeorg/freqtrade:develop_freqaitorch`, `image: freqtradeorg/freqtrade:develop_freqairl`.
!!! note "docker-compose-freqai.yml"
We do provide an explicit docker-compose file for this in `docker/docker-compose-freqai.yml` - which can be used via `docker compose -f docker/docker-compose-freqai.yml run ...` - or can be copied to replace the original docker file. This docker-compose file also contains a (disabled) section to enable GPU resources within docker containers. This obviously assumes the system has GPU resources available.
### FreqAI position in open-source machine learning landscape
Forecasting chaotic time-series based systems, such as equity/cryptocurrency markets, requires a broad set of tools geared toward testing a wide range of hypotheses. Fortunately, a recent maturation of robust machine learning libraries (e.g. `scikit-learn`) has opened up a wide range of research possibilities. Scientists from a diverse range of fields can now easily prototype their studies on an abundance of established machine learning algorithms. Similarly, these user-friendly libraries enable "citzen scientists" to use their basic Python skills for data-exploration. However, leveraging these machine learning libraries on historical and live chaotic data sources can be logistically difficult and expensive. Additionally, robust data-collection, storage, and handling presents a disparate challenge. [`FreqAI`](#freqai) aims to provide a generalized and extensible open-sourced framework geared toward live deployments of adaptive modeling for market forecasting. The `FreqAI` framework is effectively a sandbox for the rich world of open-source machine learning libraries. Inside the `FreqAI` sandbox, users find they can combine a wide variety of third-party libraries to test creative hypotheses on a free live 24/7 chaotic data source - cryptocurrency exchange data.
Forecasting chaotic time-series based systems, such as equity/cryptocurrency markets, requires a broad set of tools geared toward testing a wide range of hypotheses. Fortunately, a recent maturation of robust machine learning libraries (e.g. `scikit-learn`) has opened up a wide range of research possibilities. Scientists from a diverse range of fields can now easily prototype their studies on an abundance of established machine learning algorithms. Similarly, these user-friendly libraries enable "citzen scientists" to use their basic Python skills for data exploration. However, leveraging these machine learning libraries on historical and live chaotic data sources can be logistically difficult and expensive. Additionally, robust data collection, storage, and handling presents a disparate challenge. [`FreqAI`](#freqai) aims to provide a generalized and extensible open-sourced framework geared toward live deployments of adaptive modeling for market forecasting. The `FreqAI` framework is effectively a sandbox for the rich world of open-source machine learning libraries. Inside the `FreqAI` sandbox, users find they can combine a wide variety of third-party libraries to test creative hypotheses on a free live 24/7 chaotic data source - cryptocurrency exchange data.
### Citing FreqAI
FreqAI is [published in the Journal of Open Source Software](https://joss.theoj.org/papers/10.21105/joss.04864). If you find FreqAI useful in your research, please use the following citation:
```bibtex
@article{Caulk2022,
doi = {10.21105/joss.04864},
url = {https://doi.org/10.21105/joss.04864},
year = {2022}, publisher = {The Open Journal},
volume = {7}, number = {80}, pages = {4864},
author = {Robert A. Caulk and Elin Törnquist and Matthias Voppichler and Andrew R. Lawless and Ryan McMullan and Wagner Costa Santos and Timothy C. Pogue and Johan van der Vlugt and Stefan P. Gehring and Pascal Schmidt},
title = {FreqAI: generalizing adaptive modeling for chaotic time-series market forecasts},
journal = {Journal of Open Source Software} }
```
## Common pitfalls
@@ -84,6 +107,13 @@ This is for performance reasons - FreqAI relies on making quick predictions/retr
it needs to download all the training data at the beginning of a dry/live instance. FreqAI stores and appends
new candles automatically for future retrains. This means that if new pairs arrive later in the dry run due to a volume pairlist, it will not have the data ready. However, FreqAI does work with the `ShufflePairlist` or a `VolumePairlist` which keeps the total pairlist constant (but reorders the pairs according to volume).
## Additional learning materials
Here we compile some external materials that provide deeper looks into various components of FreqAI:
- [Real-time head-to-head: Adaptive modeling of financial market data using XGBoost and CatBoost](https://emergentmethods.medium.com/real-time-head-to-head-adaptive-modeling-of-financial-market-data-using-xgboost-and-catboost-995a115a7495)
- [FreqAI - from price to prediction](https://emergentmethods.medium.com/freqai-from-price-to-prediction-6fadac18b665)
## Credits
FreqAI is developed by a group of individuals who all contribute specific skillsets to the project.
@@ -99,6 +129,8 @@ Code review and software architecture brainstorming:
Software development:
Wagner Costa @wagnercosta
Emre Suzen @aemr3
Timothy Pogue @wizrds
Beta testing and bug reporting:
Stefan Gehring @bloodhunter4rc, @longyu, Andrew Lawless @paranoidandy, Pascal Schmidt @smidelis, Ryan McMullan @smarmau, Juha Nykänen @suikula, Johan van der Vlugt @jooopiert, Richárd Józsa @richardjosza, Timothy Pogue @wizrds
Stefan Gehring @bloodhunter4rc, @longyu, Andrew Lawless @paranoidandy, Pascal Schmidt @smidelis, Ryan McMullan @smarmau, Juha Nykänen @suikula, Johan van der Vlugt @jooopiert, Richárd Józsa @richardjosza

View File

@@ -50,7 +50,7 @@ usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--eps] [--dmmp] [--enable-protections]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL] [-e INT]
[--spaces {all,buy,sell,roi,stoploss,trailing,protection,default} [{all,buy,sell,roi,stoploss,trailing,protection,default} ...]]
[--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]]
[--print-all] [--no-color] [--print-json] [-j JOBS]
[--random-state INT] [--min-trades INT]
[--hyperopt-loss NAME] [--disable-param-export]
@@ -96,7 +96,7 @@ optional arguments:
Specify detail timeframe for backtesting (`1m`, `5m`,
`30m`, `1h`, `1d`).
-e INT, --epochs INT Specify number of epochs (default: 100).
--spaces {all,buy,sell,roi,stoploss,trailing,protection,default} [{all,buy,sell,roi,stoploss,trailing,protection,default} ...]
--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]
Specify which parameters to hyperopt. Space-separated
list.
--print-all Print all results, not only the best ones.
@@ -180,6 +180,7 @@ Rarely you may also need to create a [nested class](advanced-hyperopt.md#overrid
* `generate_roi_table` - for custom ROI optimization (if you need the ranges for the values in the ROI table that differ from default or the number of entries (steps) in the ROI table which differs from the default 4 steps)
* `stoploss_space` - for custom stoploss optimization (if you need the range for the stoploss parameter in the optimization hyperspace that differs from default)
* `trailing_space` - for custom trailing stop optimization (if you need the ranges for the trailing stop parameters in the optimization hyperspace that differ from default)
* `max_open_trades_space` - for custom max_open_trades optimization (if you need the ranges for the max_open_trades parameter in the optimization hyperspace that differ from default)
!!! Tip "Quickly optimize ROI, stoploss and trailing stoploss"
You can quickly optimize the spaces `roi`, `stoploss` and `trailing` without changing anything in your strategy.
@@ -365,7 +366,7 @@ class MyAwesomeStrategy(IStrategy):
timeframe = '15m'
minimal_roi = {
"0": 0.10
},
}
# Define the parameter spaces
buy_ema_short = IntParameter(3, 50, default=5)
buy_ema_long = IntParameter(15, 200, default=50)
@@ -400,7 +401,7 @@ class MyAwesomeStrategy(IStrategy):
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
conditions = []
conditions = []
conditions.append(qtpylib.crossed_above(
dataframe[f'ema_long_{self.buy_ema_long.value}'], dataframe[f'ema_short_{self.buy_ema_short.value}']
))
@@ -643,6 +644,7 @@ Legal values are:
* `roi`: just optimize the minimal profit table for your strategy
* `stoploss`: search for the best stoploss value
* `trailing`: search for the best trailing stop values
* `trades`: search for the best max open trades values
* `protection`: search for the best protection parameters (read the [protections section](#optimizing-protections) on how to properly define these)
* `default`: `all` except `trailing` and `protection`
* space-separated list of any of the above values for example `--spaces roi stoploss`
@@ -916,5 +918,5 @@ Once the optimized strategy has been implemented into your strategy, you should
To achieve same the results (number of trades, their durations, profit, etc.) as during Hyperopt, please use the same configuration and parameters (timerange, timeframe, ...) used for hyperopt `--dmmp`/`--disable-max-market-positions` and `--eps`/`--enable-position-stacking` for Backtesting.
Should results not match, please double-check to make sure you transferred all conditions correctly.
Pay special care to the stoploss (and trailing stoploss) parameters, as these are often set in configuration files, which override changes to the strategy.
You should also carefully review the log of your backtest to ensure that there were no parameters inadvertently set by the configuration (like `stoploss` or `trailing_stop`).
Pay special care to the stoploss, max_open_trades and trailing stoploss parameters, as these are often set in configuration files, which override changes to the strategy.
You should also carefully review the log of your backtest to ensure that there were no parameters inadvertently set by the configuration (like `stoploss`, `max_open_trades` or `trailing_stop`).

View File

@@ -23,6 +23,7 @@ You may also use something like `.*DOWN/BTC` or `.*UP/BTC` to exclude leveraged
* [`StaticPairList`](#static-pair-list) (default, if not configured differently)
* [`VolumePairList`](#volume-pair-list)
* [`ProducerPairList`](#producerpairlist)
* [`RemotePairList`](#remotepairlist)
* [`AgeFilter`](#agefilter)
* [`OffsetFilter`](#offsetfilter)
* [`PerformanceFilter`](#performancefilter)
@@ -173,6 +174,58 @@ You can limit the length of the pairlist with the optional parameter `number_ass
`ProducerPairList` can also be used multiple times in sequence, combining the pairs from multiple producers.
Obviously in complex such configurations, the Producer may not provide data for all pairs, so the strategy must be fit for this.
#### RemotePairList
It allows the user to fetch a pairlist from a remote server or a locally stored json file within the freqtrade directory, enabling dynamic updates and customization of the trading pairlist.
The RemotePairList is defined in the pairlists section of the configuration settings. It uses the following configuration options:
```json
"pairlists": [
{
"method": "RemotePairList",
"mode": "whitelist",
"processing_mode": "filter",
"pairlist_url": "https://example.com/pairlist",
"number_assets": 10,
"refresh_period": 1800,
"keep_pairlist_on_failure": true,
"read_timeout": 60,
"bearer_token": "my-bearer-token"
}
]
```
The optional `mode` option specifies if the pairlist should be used as a `blacklist` or as a `whitelist`. The default value is "whitelist".
The optional `processing_mode` option in the RemotePairList configuration determines how the retrieved pairlist is processed. It can have two values: "filter" or "append".
In "filter" mode, the retrieved pairlist is used as a filter. Only the pairs present in both the original pairlist and the retrieved pairlist are included in the final pairlist. Other pairs are filtered out.
In "append" mode, the retrieved pairlist is added to the original pairlist. All pairs from both lists are included in the final pairlist without any filtering.
The `pairlist_url` option specifies the URL of the remote server where the pairlist is located, or the path to a local file (if file:/// is prepended). This allows the user to use either a remote server or a local file as the source for the pairlist.
The user is responsible for providing a server or local file that returns a JSON object with the following structure:
```json
{
"pairs": ["XRP/USDT", "ETH/USDT", "LTC/USDT"],
"refresh_period": 1800
}
```
The `pairs` property should contain a list of strings with the trading pairs to be used by the bot. The `refresh_period` property is optional and specifies the number of seconds that the pairlist should be cached before being refreshed.
The optional `keep_pairlist_on_failure` specifies whether the previous received pairlist should be used if the remote server is not reachable or returns an error. The default value is true.
The optional `read_timeout` specifies the maximum amount of time (in seconds) to wait for a response from the remote source, The default value is 60.
The optional `bearer_token` will be included in the requests Authorization Header.
!!! Note
In case of a server error the last received pairlist will be kept if `keep_pairlist_on_failure` is set to true, when set to false a empty pairlist is returned.
#### AgeFilter
Removes pairs that have been listed on the exchange for less than `min_days_listed` days (defaults to `10`) or more than `max_days_listed` days (defaults `None` mean infinity).

View File

@@ -149,7 +149,7 @@ The below example assumes a timeframe of 1 hour:
* Locks each pair after selling for an additional 5 candles (`CooldownPeriod`), giving other pairs a chance to get filled.
* Stops trading for 4 hours (`4 * 1h candles`) if the last 2 days (`48 * 1h candles`) had 20 trades, which caused a max-drawdown of more than 20%. (`MaxDrawdown`).
* Stops trading if more than 4 stoploss occur for all pairs within a 1 day (`24 * 1h candles`) limit (`StoplossGuard`).
* Locks all pairs that had 4 Trades within the last 6 hours (`6 * 1h candles`) with a combined profit ratio of below 0.02 (<2%) (`LowProfitPairs`).
* Locks all pairs that had 2 Trades within the last 6 hours (`6 * 1h candles`) with a combined profit ratio of below 0.02 (<2%) (`LowProfitPairs`).
* Locks all pairs for 2 candles that had a profit of below 0.01 (<1%) within the last 24h (`24 * 1h candles`), a minimum of 4 trades.
``` python

View File

@@ -0,0 +1,37 @@
## Highlighted changes
- ...
### How to update
As always, you can update your bot using one of the following commands:
#### docker-compose
```bash
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
```
<details>
<summary>Expand full changelog</summary>
```
<Paste your changelog here>
```
</details>

11
docs/includes/showcase.md Normal file
View File

@@ -0,0 +1,11 @@
This section will highlight a few projects from members of the community.
!!! Note
The projects below are for the most part not maintained by the freqtrade , therefore use your own caution before using them.
- [Example freqtrade strategies](https://github.com/freqtrade/freqtrade-strategies/)
- [FrequentHippo - Grafana dashboard with dry/live runs and backtests](http://frequenthippo.ddns.net:3000/) (by hippocritical).
- [Online pairlist generator](https://remotepairlist.com/) (by Blood4rc).
- [Freqtrade Backtesting Project](https://bt.robot.co.network/) (by Blood4rc).
- [Freqtrade analysis notebook](https://github.com/froggleston/freqtrade_analysis_notebook) (by Froggleston).
- [TUI for freqtrade](https://github.com/froggleston/freqtrade-frogtrade9000) (by Froggleston).
- [Bot Academy](https://botacademy.ddns.net/) (by stash86) - Blog about crypto bot projects.

View File

@@ -1,6 +1,7 @@
![freqtrade](assets/freqtrade_poweredby.svg)
[![Freqtrade CI](https://github.com/freqtrade/freqtrade/workflows/Freqtrade%20CI/badge.svg)](https://github.com/freqtrade/freqtrade/actions/)
[![DOI](https://joss.theoj.org/papers/10.21105/joss.04864/status.svg)](https://doi.org/10.21105/joss.04864)
[![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
@@ -51,6 +52,7 @@ Please read the [exchange specific notes](exchanges.md) to learn about eventual,
- [X] [Binance](https://www.binance.com/)
- [X] [Gate.io](https://www.gate.io/ref/6266643)
- [X] [OKX](https://okx.com/)
- [X] [Bybit](https://bybit.com/)
Please make sure to read the [exchange specific notes](exchanges.md), as well as the [trading with leverage](leverage.md) documentation before diving in.
@@ -61,6 +63,10 @@ Exchanges confirmed working by the community:
- [X] [Bitvavo](https://bitvavo.com/)
- [X] [Kucoin](https://www.kucoin.com/)
## Community showcase
--8<-- "includes/showcase.md"
## Requirements
### Hardware requirements

View File

@@ -46,7 +46,7 @@ These requirements apply to both [Script Installation](#script-installation) and
* [pip](https://pip.pypa.io/en/stable/installing/)
* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended)
* [TA-Lib](https://mrjbq7.github.io/ta-lib/install.html) (install instructions [below](#install-ta-lib))
* [TA-Lib](https://ta-lib.github.io/ta-lib-python/) (install instructions [below](#install-ta-lib))
### Install code
@@ -204,7 +204,7 @@ sudo ./build_helpers/install_ta-lib.sh
##### TA-Lib manual installation
Official webpage: https://mrjbq7.github.io/ta-lib/install.html
[Official installation guide](https://ta-lib.github.io/ta-lib-python/install.html)
```bash
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
@@ -236,6 +236,7 @@ source .env/bin/activate
```bash
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install -e .
```
@@ -284,10 +285,8 @@ cd freqtrade
#### Freqtrade install: Conda Environment
Prepare conda-freqtrade environment, using file `environment.yml`, which exist in main freqtrade directory
```bash
conda env create -n freqtrade-conda -f environment.yml
conda create --name freqtrade python=3.10
```
!!! Note "Creating Conda Environment"
@@ -296,12 +295,9 @@ conda env create -n freqtrade-conda -f environment.yml
```bash
# choose your own packages
conda env create -n [name of the environment] [python version] [packages]
# point to file with packages
conda env create -n [name of the environment] -f [file]
```
#### Enter/exit freqtrade-conda environment
#### Enter/exit freqtrade environment
To check available environments, type
@@ -313,7 +309,7 @@ Enter installed environment
```bash
# enter conda environment
conda activate freqtrade-conda
conda activate freqtrade
# exit conda environment - don't do it now
conda deactivate
@@ -323,6 +319,7 @@ Install last python dependencies with pip
```bash
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install -e .
```
@@ -330,7 +327,7 @@ Patch conda libta-lib (Linux only)
```bash
# Ensure that the environment is active!
conda activate freqtrade-conda
conda activate freqtrade
cd build_helpers
bash install_ta-lib.sh ${CONDA_PREFIX} nosudo
@@ -349,8 +346,8 @@ conda env list
# activate base environment
conda activate
# activate freqtrade-conda environment
conda activate freqtrade-conda
# activate freqtrade environment
conda activate freqtrade
#deactivate any conda environments
conda deactivate

View File

@@ -67,8 +67,6 @@ You will also have to pick a "margin mode" (explanation below) - with freqtrade
Freqtrade follows the [ccxt naming conventions for futures](https://docs.ccxt.com/en/latest/manual.html?#perpetual-swap-perpetual-future).
A futures pair will therefore have the naming of `base/quote:settle` (e.g. `ETH/USDT:USDT`).
Binance is currently still an exception to this naming scheme, where pairs are named `ETH/USDT` also for futures markets, but will be aligned as soon as CCXT is ready.
### Margin mode
On top of `trading_mode` - you will also have to configure your `margin_mode`.
@@ -92,6 +90,8 @@ One account is used to share collateral between markets (trading pairs). Margin
"margin_mode": "cross"
```
Please read the [exchange specific notes](exchanges.md) for exchanges that support this mode and how they differ.
## Set leverage to use
Different strategies and risk profiles will require different levels of leverage.

100
docs/lookahead-analysis.md Normal file
View File

@@ -0,0 +1,100 @@
# Lookahead analysis
This page explains how to validate your strategy in terms of look ahead bias.
Checking look ahead bias is the bane of any strategy since it is sometimes very easy to introduce backtest bias -
but very hard to detect.
Backtesting initializes all timestamps at once and calculates all indicators in the beginning.
This means that if your indicators or entry/exit signals could look into future candles and falsify your backtest.
Lookahead-analysis requires historic data to be available.
To learn how to get data for the pairs and exchange you're interested in,
head over to the [Data Downloading](data-download.md) section of the documentation.
This command is built upon backtesting since it internally chains backtests and pokes at the strategy to provoke it to show look ahead bias.
This is done by not looking at the strategy itself - but at the results it returned.
The results are things like changed indicator-values and moved entries/exits compared to the full backtest.
You can use commands of [Backtesting](backtesting.md).
It also supports the lookahead-analysis of freqai strategies.
- `--cache` is forced to "none".
- `--max-open-trades` is forced to be at least equal to the number of pairs.
- `--dry-run-wallet` is forced to be basically infinite.
## Lookahead-analysis command reference
```
usage: freqtrade lookahead-analysis [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME]
[--freqaimodel-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT]
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
[--enable-protections]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--export {none,trades,signals}]
[--export-filename PATH]
[--breakdown {day,week,month} [{day,week,month} ...]]
[--cache {none,day,week,month}]
[--freqai-backtest-live-models]
[--minimum-trade-amount INT]
[--targeted-trade-amount INT]
[--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME]
options:
--minimum-trade-amount INT
Minimum trade amount for lookahead-analysis
--targeted-trade-amount INT
Targeted trade amount for lookahead analysis
--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME
Use this csv-filename to store lookahead-analysis-
results
```
!!! Note ""
The above Output was reduced to options `lookahead-analysis` adds on top of regular backtesting commands.
### Summary
Checks a given strategy for look ahead bias via lookahead-analysis
Look ahead bias means that the backtest uses data from future candles thereby not making it viable beyond backtesting
and producing false hopes for the one backtesting.
### Introduction
Many strategies - without the programmer knowing - have fallen prey to look ahead bias.
Any backtest will populate the full dataframe including all time stamps at the beginning.
If the programmer is not careful or oblivious how things work internally
(which sometimes can be really hard to find out) then it will just look into the future making the strategy amazing
but not realistic.
This command is made to try to verify the validity in the form of the aforementioned look ahead bias.
### How does the command work?
It will start with a backtest of all pairs to generate a baseline for indicators and entries/exits.
After the backtest ran, it will look if the `minimum-trade-amount` is met
and if not cancel the lookahead-analysis for this strategy.
After setting the baseline it will then do additional runs for every entry and exit separately.
When a verification-backtest is done, it will compare the indicators as the signal (either entry or exit) and report the bias.
After all signals have been verified or falsified a result-table will be generated for the user to see.
### Caveats
- `lookahead-analysis` can only verify / falsify the trades it calculated and verified.
If the strategy has many different signals / signal types, it's up to you to select appropriate parameters to ensure that all signals have triggered at least once. Not triggered signals will not have been verified.
This could lead to a false-negative (the strategy will then be reported as non-biased).
- `lookahead-analysis` has access to everything that backtesting has too.
Please don't provoke any configs like enabling position stacking.
If you decide to do so, then make doubly sure that you won't ever run out of `max_open_trades` amount and neither leftover money in your wallet.

View File

@@ -11,9 +11,6 @@
{% endif %}
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" {{ hidden }}>
<div class="md-sidebar__scrollwrap">
<div id="widget-wrapper">
</div>
<div class="md-sidebar__inner">
{% include "partials/nav.html" %}
</div>
@@ -44,25 +41,4 @@
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<!-- Load binance SDK -->
<script async defer src="https://public.bnbstatic.com/static/js/broker-sdk/broker-sdk@1.0.0.min.js"></script>
<script>
window.onload = function () {
var sidebar = document.getElementById('widget-wrapper')
var newDiv = document.createElement("div");
newDiv.id = "widget";
try {
sidebar.prepend(newDiv);
window.binanceBrokerPortalSdk.initBrokerSDK('#widget', {
apiHost: 'https://www.binance.com',
brokerId: 'R4BD3S82',
slideTime: 4e4,
});
} catch(err) {
console.log(err)
}
}
</script>
{% endblock %}

View File

@@ -42,14 +42,14 @@ Enable subscribing to an instance by adding the `external_message_consumer` sect
| `producers` | **Required.** List of producers <br> **Datatype:** Array.
| `producers.name` | **Required.** Name of this producer. This name must be used in calls to `get_producer_pairs()` and `get_producer_df()` if more than one producer is used.<br> **Datatype:** string
| `producers.host` | **Required.** The hostname or IP address from your producer.<br> **Datatype:** string
| `producers.port` | **Required.** The port matching the above host.<br> **Datatype:** string
| `producers.port` | **Required.** The port matching the above host.<br>*Defaults to `8080`.*<br> **Datatype:** Integer
| `producers.secure` | **Optional.** Use ssl in websockets connection. Default False.<br> **Datatype:** string
| `producers.ws_token` | **Required.** `ws_token` as configured on the producer.<br> **Datatype:** string
| | **Optional settings**
| `wait_timeout` | Timeout until we ping again if no message is received. <br>*Defaults to `300`.*<br> **Datatype:** Integer - in seconds.
| `wait_timeout` | Ping timeout <br>*Defaults to `10`.*<br> **Datatype:** Integer - in seconds.
| `ping_timeout` | Ping timeout <br>*Defaults to `10`.*<br> **Datatype:** Integer - in seconds.
| `sleep_time` | Sleep time before retrying to connect.<br>*Defaults to `10`.*<br> **Datatype:** Integer - in seconds.
| `remove_entry_exit_signals` | Remove signal columns from the dataframe (set them to 0) on dataframe receipt.<br>*Defaults to `10`.*<br> **Datatype:** Integer - in seconds.
| `remove_entry_exit_signals` | Remove signal columns from the dataframe (set them to 0) on dataframe receipt.<br>*Defaults to `false`.*<br> **Datatype:** Boolean.
| `message_size_limit` | Size limit per message<br>*Defaults to `8`.*<br> **Datatype:** Integer - Megabytes.
Instead of (or as well as) calculating indicators in `populate_indicators()` the follower instance listens on the connection to a producer instance's messages (or multiple producer instances in advanced configurations) and requests the producer's most recently analyzed dataframes for each pair in the active whitelist.

View File

@@ -1,6 +1,6 @@
markdown==3.3.7
mkdocs==1.4.2
mkdocs-material==8.5.11
mkdocs==1.4.3
mkdocs-material==9.1.19
mdx_truly_sane_lists==1.3
pymdown-extensions==9.9
pymdown-extensions==10.1
jinja2==3.1.2

View File

@@ -9,9 +9,6 @@ This same command can also be used to update freqUI, should there be a new relea
Once the bot is started in trade / dry-run mode (with `freqtrade trade`) - the UI will be available under the configured port below (usually `http://127.0.0.1:8080`).
!!! info "Alpha release"
FreqUI is still considered an alpha release - if you encounter bugs or inconsistencies please open a [FreqUI issue](https://github.com/freqtrade/frequi/issues/new/choose).
!!! Note "developers"
Developers should not use this method, but instead use the method described in the [freqUI repository](https://github.com/freqtrade/frequi) to get the source-code of freqUI.
@@ -137,7 +134,9 @@ python3 scripts/rest_client.py --config rest_config.json <command> [optional par
| `reload_config` | Reloads the configuration file.
| `trades` | List last trades. Limited to 500 trades per call.
| `trade/<tradeid>` | Get specific trade.
| `delete_trade <trade_id>` | Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange.
| `trade/<tradeid>` | DELETE - Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange.
| `trade/<tradeid>/open-order` | DELETE - Cancel open order for this trade.
| `trade/<tradeid>/reload` | GET - Reload a trade from the Exchange. Only works in live, and can potentially help recover a trade that was manually sold on the exchange.
| `show_config` | Shows part of the current configuration with relevant settings to operation.
| `logs` | Shows last log messages.
| `status` | Lists all open trades.
@@ -163,7 +162,7 @@ python3 scripts/rest_client.py --config rest_config.json <command> [optional par
| `strategy <strategy>` | Get specific Strategy content. **Alpha**
| `available_pairs` | List available backtest data. **Alpha**
| `version` | Show version.
| `sysinfo` | Show informations about the system load.
| `sysinfo` | Show information about the system load.
| `health` | Show bot health (last bot loop).
!!! Warning "Alpha status"
@@ -192,6 +191,11 @@ blacklist
:param add: List of coins to add (example: "BNB/BTC")
cancel_open_order
Cancel open order for trade.
:param trade_id: Cancels open orders for this trade.
count
Return the amount of open trades.
@@ -274,7 +278,6 @@ reload_config
Reload configuration.
show_config
Returns part of the configuration, relevant for trading operations.
start
@@ -320,6 +323,7 @@ version
whitelist
Show the current whitelist.
```
### Message WebSocket

View File

@@ -23,10 +23,22 @@ These modes can be configured with these values:
'stoploss_on_exchange_limit_ratio': 0.99
```
!!! Note
Stoploss on exchange is only supported for Binance (stop-loss-limit), Huobi (stop-limit), Kraken (stop-loss-market, stop-loss-limit), Gateio (stop-limit), and Kucoin (stop-limit and stop-market) as of now.
<ins>Do not set too low/tight stoploss value if using stop loss on exchange!</ins>
If set to low/tight then you have greater risk of missing fill on the order and stoploss will not work.
Stoploss on exchange is only supported for the following exchanges, and not all exchanges support both stop-limit and stop-market.
The Order-type will be ignored if only one mode is available.
| Exchange | stop-loss type |
|----------|-------------|
| Binance | limit |
| Binance Futures | market, limit |
| Huobi | limit |
| kraken | market, limit |
| Gate | limit |
| Okx | limit |
| Kucoin | stop-limit, stop-market|
!!! Note "Tight stoploss"
<ins>Do not set too low/tight stoploss value when using stop loss on exchange!</ins>
If set to low/tight you will have greater risk of missing fill on the order and stoploss will not work.
### stoploss_on_exchange and stoploss_on_exchange_limit_ratio
@@ -52,6 +64,18 @@ The bot cannot do these every 5 seconds (at each iteration), otherwise it would
So this parameter will tell the bot how often it should update the stoploss order. The default value is 60 (1 minute).
This same logic will reapply a stoploss order on the exchange should you cancel it accidentally.
### stoploss_price_type
!!! Warning "Only applies to futures"
`stoploss_price_type` only applies to futures markets (on exchanges where it's available).
Freqtrade will perform a validation of this setting on startup, failing to start if an invalid setting for your exchange has been selected.
Supported price types are gonna differs between each exchanges. Please check with your exchange on which price types it supports.
Stoploss on exchange on futures markets can trigger on different price types.
The naming for these prices in exchange terminology often varies, but is usually something around "last" (or "contract price" ), "mark" and "index".
Acceptable values for this setting are `"last"`, `"mark"` and `"index"` - which freqtrade will transfer automatically to the corresponding API type, and place the [stoploss on exchange](#stoploss_on_exchange-and-stoploss_on_exchange_limit_ratio) order correspondingly.
### force_exit
`force_exit` is an optional value, which defaults to the same value as `exit` and is used when sending a `/forceexit` command from Telegram or from the Rest API.
@@ -185,11 +209,6 @@ You can also keep a static stoploss until the offset is reached, and then trail
If `trailing_only_offset_is_reached = True` then the trailing stoploss is only activated once the offset is reached. Until then, the stoploss remains at the configured `stoploss`.
This option can be used with or without `trailing_stop_positive`, but uses `trailing_stop_positive_offset` as offset.
``` python
trailing_stop_positive_offset = 0.011
trailing_only_offset_is_reached = True
```
Configuration (offset is buy-price + 3%):
``` python

View File

@@ -1,21 +1,21 @@
# Advanced Strategies
This page explains some advanced concepts available for strategies.
If you're just getting started, please be familiar with the methods described in the [Strategy Customization](strategy-customization.md) documentation and with the [Freqtrade basics](bot-basics.md) first.
If you're just getting started, please familiarize yourself with the [Freqtrade basics](bot-basics.md) and methods described in [Strategy Customization](strategy-customization.md) first.
[Freqtrade basics](bot-basics.md) describes in which sequence each method described below is called, which can be helpful to understand which method to use for your custom needs.
The call sequence of the methods described here is covered under [bot execution logic](bot-basics.md#bot-execution-logic). Those docs are also helpful in deciding which method is most suitable for your customisation needs.
!!! Note
All callback methods described below should only be implemented in a strategy if they are actually used.
Callback methods should *only* be implemented if a strategy uses them.
!!! Tip
You can get a strategy template containing all below methods by running `freqtrade new-strategy --strategy MyAwesomeStrategy --template advanced`
Start off with a strategy template containing all available callback methods by running `freqtrade new-strategy --strategy MyAwesomeStrategy --template advanced`
## Storing information
Storing information can be accomplished by creating a new dictionary within the strategy class.
The name of the variable can be chosen at will, but should be prefixed with `cust_` to avoid naming collisions with predefined strategy variables.
The name of the variable can be chosen at will, but should be prefixed with `custom_` to avoid naming collisions with predefined strategy variables.
```python
class AwesomeStrategy(IStrategy):
@@ -80,7 +80,7 @@ class AwesomeStrategy(IStrategy):
## Enter Tag
When your strategy has multiple buy signals, you can name the signal that triggered.
Then you can access you buy signal on `custom_exit`
Then you can access your buy signal on `custom_exit`
```python
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
@@ -227,8 +227,8 @@ for val in self.buy_ema_short.range:
f'ema_short_{val}': ta.EMA(dataframe, timeperiod=val)
}))
# Append columns to existing dataframe
merged_frame = pd.concat(frames, axis=1)
# Combine all dataframes, and reassign the original dataframe column
dataframe = pd.concat(frames, axis=1)
```
Freqtrade does however also counter this by running `dataframe.copy()` on the dataframe right after the `populate_indicators()` method - so performance implications of this should be low to non-existant.

View File

@@ -43,7 +43,7 @@ class AwesomeStrategy(IStrategy):
if self.config['runmode'].value in ('live', 'dry_run'):
# Assign this to the class by using self.*
# can then be used by populate_* methods
self.cust_remote_data = requests.get('https://some_remote_source.example.com')
self.custom_remote_data = requests.get('https://some_remote_source.example.com')
```
@@ -51,7 +51,8 @@ During hyperopt, this runs only once at startup.
## Bot loop start
A simple callback which is called once at the start of every bot throttling iteration (roughly every 5 seconds, unless configured differently).
A simple callback which is called once at the start of every bot throttling iteration in dry/live mode (roughly every 5
seconds, unless configured differently) or once per candle in backtest/hyperopt mode.
This can be used to perform calculations which are pair independent (apply to all pairs), loading of external data, etc.
``` python
@@ -61,11 +62,12 @@ class AwesomeStrategy(IStrategy):
# ... populate_* methods
def bot_loop_start(self, **kwargs) -> None:
def bot_loop_start(self, current_time: datetime, **kwargs) -> None:
"""
Called at the start of the bot iteration (one loop).
Might be used to perform pair-independent tasks
(e.g. gather some remote resource for comparison)
:param current_time: datetime object, containing the current datetime
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
"""
if self.config['runmode'].value in ('live', 'dry_run'):
@@ -316,11 +318,11 @@ class AwesomeStrategy(IStrategy):
# evaluate highest to lowest, so that highest possible stop is used
if current_profit > 0.40:
return stoploss_from_open(0.25, current_profit, is_short=trade.is_short)
return stoploss_from_open(0.25, current_profit, is_short=trade.is_short, leverage=trade.leverage)
elif current_profit > 0.25:
return stoploss_from_open(0.15, current_profit, is_short=trade.is_short)
return stoploss_from_open(0.15, current_profit, is_short=trade.is_short, leverage=trade.leverage)
elif current_profit > 0.20:
return stoploss_from_open(0.07, current_profit, is_short=trade.is_short)
return stoploss_from_open(0.07, current_profit, is_short=trade.is_short, leverage=trade.leverage)
# return maximum stoploss value, keeping current stoploss price unchanged
return 1
@@ -350,7 +352,7 @@ class AwesomeStrategy(IStrategy):
# Convert absolute price to percentage relative to current_rate
if stoploss_price < current_rate:
return (stoploss_price / current_rate) - 1
return stoploss_from_absolute(stoploss_price, current_rate, is_short=trade.is_short)
# return maximum stoploss value, keeping current stoploss price unchanged
return 1
@@ -659,6 +661,7 @@ Position adjustments will always be applied in the direction of the trade, so a
!!! Warning "Backtesting"
During backtesting this callback is called for each candle in `timeframe` or `timeframe_detail`, so run-time performance will be affected.
This can also cause deviating results between live and backtesting, since backtesting can adjust the trade only once per candle, whereas live could adjust the trade multiple times per candle.
``` python
from freqtrade.persistence import Trade
@@ -747,7 +750,7 @@ class DigDeeperStrategy(IStrategy):
# Hope you have a deep wallet!
try:
# This returns first order stake size
stake_amount = filled_entries[0].cost
stake_amount = filled_entries[0].stake_amount
# This then calculates current safety order size
stake_amount = stake_amount * (1 + (count_of_entries * 0.25))
return stake_amount
@@ -827,7 +830,7 @@ class AwesomeStrategy(IStrategy):
"""
# Limit orders to use and follow SMA200 as price target for the first 10 minutes since entry trigger for BTC/USDT pair.
if pair == 'BTC/USDT' and entry_tag == 'long_sma200' and side == 'long' and (current_time - timedelta(minutes=10) > trade.open_date_utc:
if pair == 'BTC/USDT' and entry_tag == 'long_sma200' and side == 'long' and (current_time - timedelta(minutes=10)) > trade.open_date_utc:
# just cancel the order if it has been filled more than half of the amount
if order.filled > order.remaining:
return None

View File

@@ -342,16 +342,12 @@ The above configuration would therefore mean:
The calculation does include fees.
To disable ROI completely, set it to an insanely high number:
To disable ROI completely, set it to an empty dictionary:
```python
minimal_roi = {
"0": 100
}
minimal_roi = {}
```
While technically not completely disabled, this would exit once the trade reaches 10000% Profit.
To use times based on candle duration (timeframe), the following snippet can be handy.
This will allow you to change the timeframe for the strategy, and ROI times will still be set as candles (e.g. after 3 candles ...)
@@ -881,7 +877,7 @@ All columns of the informative dataframe will be available on the returning data
### *stoploss_from_open()*
Stoploss values returned from `custom_stoploss` must specify a percentage relative to `current_rate`, but sometimes you may want to specify a stoploss relative to the open price instead. `stoploss_from_open()` is a helper function to calculate a stoploss value that can be returned from `custom_stoploss` which will be equivalent to the desired percentage above the open price.
Stoploss values returned from `custom_stoploss` must specify a percentage relative to `current_rate`, but sometimes you may want to specify a stoploss relative to the entry point instead. `stoploss_from_open()` is a helper function to calculate a stoploss value that can be returned from `custom_stoploss` which will be equivalent to the desired trade profit above the entry point.
??? Example "Returning a stoploss relative to the open price from the custom stoploss function"
@@ -889,6 +885,8 @@ Stoploss values returned from `custom_stoploss` must specify a percentage relati
If we want a stop price at 7% above the open price we can call `stoploss_from_open(0.07, current_profit, False)` which will return `0.1157024793`. 11.57% below $121 is $107, which is the same as 7% above $100.
This function will consider leverage - so at 10x leverage, the actual stoploss would be 0.7% above $100 (0.7% * 10x = 7%).
``` python
@@ -907,7 +905,7 @@ Stoploss values returned from `custom_stoploss` must specify a percentage relati
# once the profit has risen above 10%, keep the stoploss at 7% above the open price
if current_profit > 0.10:
return stoploss_from_open(0.07, current_profit, is_short=trade.is_short)
return stoploss_from_open(0.07, current_profit, is_short=trade.is_short, leverage=trade.leverage)
return 1
@@ -954,12 +952,14 @@ In some situations it may be confusing to deal with stops relative to current ra
## Additional data (Wallets)
The strategy provides access to the `Wallets` object. This contains the current balances on the exchange.
The strategy provides access to the `wallets` object. This contains the current balances on the exchange.
!!! Note
Wallets is not available during backtesting / hyperopt.
!!! Note "Backtesting / Hyperopt"
Wallets behaves differently depending on the function it's called.
Within `populate_*()` methods, it'll return the full wallet as configured.
Within [callbacks](strategy-callbacks.md), you'll get the wallet state corresponding to the actual simulated wallet at that point in the simulation process.
Please always check if `Wallets` is available to avoid failures during backtesting.
Please always check if `wallets` is available to avoid failures during backtesting.
``` python
if self.wallets:
@@ -989,38 +989,18 @@ from freqtrade.persistence import Trade
The following example queries for the current pair and trades from today, however other filters can easily be added.
``` python
if self.config['runmode'].value in ('live', 'dry_run'):
trades = Trade.get_trades([Trade.pair == metadata['pair'],
Trade.open_date > datetime.utcnow() - timedelta(days=1),
Trade.is_open.is_(False),
]).order_by(Trade.close_date).all()
# Summarize profit for this pair.
curdayprofit = sum(trade.close_profit for trade in trades)
trades = Trade.get_trades_proxy(pair=metadata['pair'],
open_date=datetime.now(timezone.utc) - timedelta(days=1),
is_open=False,
]).order_by(Trade.close_date).all()
# Summarize profit for this pair.
curdayprofit = sum(trade.close_profit for trade in trades)
```
Get amount of stake_currency currently invested in Trades:
``` python
if self.config['runmode'].value in ('live', 'dry_run'):
total_stakes = Trade.total_open_trades_stakes()
```
Retrieve performance per pair.
Returns a List of dicts per pair.
``` python
if self.config['runmode'].value in ('live', 'dry_run'):
performance = Trade.get_overall_performance()
```
Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5% (ratio of 0.015).
``` json
{"pair": "ETH/BTC", "profit": 0.015, "count": 5}
```
For a full list of available methods, please consult the [Trade object](trade-object.md) documentation.
!!! Warning
Trade history is not available during backtesting or hyperopt.
Trade history is not available in `populate_*` methods during backtesting or hyperopt, and will result in empty results.
## Prevent trades from happening for a specific pair
@@ -1056,11 +1036,10 @@ from datetime import timedelta, datetime, timezone
# Within populate indicators (or populate_buy):
if self.config['runmode'].value in ('live', 'dry_run'):
# fetch closed trades for the last 2 days
trades = Trade.get_trades([Trade.pair == metadata['pair'],
Trade.open_date > datetime.utcnow() - timedelta(days=2),
Trade.is_open.is_(False),
]).all()
# fetch closed trades for the last 2 days
trades = Trade.get_trades_proxy(
pair=metadata['pair'], is_open=False,
open_date=datetime.now(timezone.utc) - timedelta(days=2))
# Analyze the conditions you'd like to lock the pair .... will probably be different for every strategy
sumprofit = sum(trade.close_profit for trade in trades)
if sumprofit < 0:

View File

@@ -80,6 +80,7 @@ from freqtrade.resolvers import StrategyResolver
from freqtrade.data.dataprovider import DataProvider
strategy = StrategyResolver.load_strategy(config)
strategy.dp = DataProvider(config, None, None)
strategy.ft_bot_start()
# Generate buy/sell signals using strategy
df = strategy.analyze_ticker(candles, {'pair': pair})

View File

@@ -477,3 +477,337 @@ after:
"ignore_buying_expired_candle_after": 120
}
```
## FreqAI strategy
The `populate_any_indicators()` method has been split into `feature_engineering_expand_all()`, `feature_engineering_expand_basic()`, `feature_engineering_standard()` and`set_freqai_targets()`.
For each new function, the pair (and timeframe where necessary) will be automatically added to the column.
As such, the definition of features becomes much simpler with the new logic.
For a full explanation of each method, please go to the corresponding [freqAI documentation page](freqai-feature-engineering.md#defining-the-features)
``` python linenums="1" hl_lines="12-37 39-42 63-65 67-75"
def populate_any_indicators(
self, pair, df, tf, informative=None, set_generalized_indicators=False
):
if informative is None:
informative = self.dp.get_pair_dataframe(pair, tf)
# first loop is automatically duplicating indicators for time periods
for t in self.freqai_info["feature_parameters"]["indicator_periods_candles"]:
t = int(t)
informative[f"%-{pair}rsi-period_{t}"] = ta.RSI(informative, timeperiod=t)
informative[f"%-{pair}mfi-period_{t}"] = ta.MFI(informative, timeperiod=t)
informative[f"%-{pair}adx-period_{t}"] = ta.ADX(informative, timeperiod=t)
informative[f"%-{pair}sma-period_{t}"] = ta.SMA(informative, timeperiod=t)
informative[f"%-{pair}ema-period_{t}"] = ta.EMA(informative, timeperiod=t)
bollinger = qtpylib.bollinger_bands(
qtpylib.typical_price(informative), window=t, stds=2.2
)
informative[f"{pair}bb_lowerband-period_{t}"] = bollinger["lower"]
informative[f"{pair}bb_middleband-period_{t}"] = bollinger["mid"]
informative[f"{pair}bb_upperband-period_{t}"] = bollinger["upper"]
informative[f"%-{pair}bb_width-period_{t}"] = (
informative[f"{pair}bb_upperband-period_{t}"]
- informative[f"{pair}bb_lowerband-period_{t}"]
) / informative[f"{pair}bb_middleband-period_{t}"]
informative[f"%-{pair}close-bb_lower-period_{t}"] = (
informative["close"] / informative[f"{pair}bb_lowerband-period_{t}"]
)
informative[f"%-{pair}roc-period_{t}"] = ta.ROC(informative, timeperiod=t)
informative[f"%-{pair}relative_volume-period_{t}"] = (
informative["volume"] / informative["volume"].rolling(t).mean()
) # (1)
informative[f"%-{pair}pct-change"] = informative["close"].pct_change()
informative[f"%-{pair}raw_volume"] = informative["volume"]
informative[f"%-{pair}raw_price"] = informative["close"]
# (2)
indicators = [col for col in informative if col.startswith("%")]
# This loop duplicates and shifts all indicators to add a sense of recency to data
for n in range(self.freqai_info["feature_parameters"]["include_shifted_candles"] + 1):
if n == 0:
continue
informative_shift = informative[indicators].shift(n)
informative_shift = informative_shift.add_suffix("_shift-" + str(n))
informative = pd.concat((informative, informative_shift), axis=1)
df = merge_informative_pair(df, informative, self.config["timeframe"], tf, ffill=True)
skip_columns = [
(s + "_" + tf) for s in ["date", "open", "high", "low", "close", "volume"]
]
df = df.drop(columns=skip_columns)
# Add generalized indicators here (because in live, it will call this
# function to populate indicators during training). Notice how we ensure not to
# add them multiple times
if set_generalized_indicators:
df["%-day_of_week"] = (df["date"].dt.dayofweek + 1) / 7
df["%-hour_of_day"] = (df["date"].dt.hour + 1) / 25
# (3)
# user adds targets here by prepending them with &- (see convention below)
df["&-s_close"] = (
df["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean()
/ df["close"]
- 1
) # (4)
return df
```
1. Features - Move to `feature_engineering_expand_all`
2. Basic features, not expanded across `include_periods_candles` - move to`feature_engineering_expand_basic()`.
3. Standard features which should not be expanded - move to `feature_engineering_standard()`.
4. Targets - Move this part to `set_freqai_targets()`.
### freqai - feature engineering expand all
Features will now expand automatically. As such, the expansion loops, as well as the `{pair}` / `{timeframe}` parts will need to be removed.
``` python linenums="1"
def feature_engineering_expand_all(self, dataframe, period, **kwargs) -> DataFrame::
"""
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
`indicator_periods_candles`, `include_timeframes`, `include_shifted_candles`, and
`include_corr_pairs`. In other words, a single feature defined in this function
will automatically expand to a total of
`indicator_periods_candles` * `include_timeframes` * `include_shifted_candles` *
`include_corr_pairs` numbers of features added to the model.
All features must be prepended with `%` to be recognized by FreqAI internals.
More details on how these config defined parameters accelerate feature engineering
in the documentation at:
https://www.freqtrade.io/en/latest/freqai-parameter-table/#feature-parameters
https://www.freqtrade.io/en/latest/freqai-feature-engineering/#defining-the-features
:param df: strategy dataframe which will receive the features
:param period: period of the indicator - usage example:
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
"""
dataframe["%-rsi-period"] = ta.RSI(dataframe, timeperiod=period)
dataframe["%-mfi-period"] = ta.MFI(dataframe, timeperiod=period)
dataframe["%-adx-period"] = ta.ADX(dataframe, timeperiod=period)
dataframe["%-sma-period"] = ta.SMA(dataframe, timeperiod=period)
dataframe["%-ema-period"] = ta.EMA(dataframe, timeperiod=period)
bollinger = qtpylib.bollinger_bands(
qtpylib.typical_price(dataframe), window=period, stds=2.2
)
dataframe["bb_lowerband-period"] = bollinger["lower"]
dataframe["bb_middleband-period"] = bollinger["mid"]
dataframe["bb_upperband-period"] = bollinger["upper"]
dataframe["%-bb_width-period"] = (
dataframe["bb_upperband-period"]
- dataframe["bb_lowerband-period"]
) / dataframe["bb_middleband-period"]
dataframe["%-close-bb_lower-period"] = (
dataframe["close"] / dataframe["bb_lowerband-period"]
)
dataframe["%-roc-period"] = ta.ROC(dataframe, timeperiod=period)
dataframe["%-relative_volume-period"] = (
dataframe["volume"] / dataframe["volume"].rolling(period).mean()
)
return dataframe
```
### Freqai - feature engineering basic
Basic features. Make sure to remove the `{pair}` part from your features.
``` python linenums="1"
def feature_engineering_expand_basic(self, dataframe: DataFrame, **kwargs) -> DataFrame::
"""
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
`include_timeframes`, `include_shifted_candles`, and `include_corr_pairs`.
In other words, a single feature defined in this function
will automatically expand to a total of
`include_timeframes` * `include_shifted_candles` * `include_corr_pairs`
numbers of features added to the model.
Features defined here will *not* be automatically duplicated on user defined
`indicator_periods_candles`
All features must be prepended with `%` to be recognized by FreqAI internals.
More details on how these config defined parameters accelerate feature engineering
in the documentation at:
https://www.freqtrade.io/en/latest/freqai-parameter-table/#feature-parameters
https://www.freqtrade.io/en/latest/freqai-feature-engineering/#defining-the-features
:param df: strategy dataframe which will receive the features
dataframe["%-pct-change"] = dataframe["close"].pct_change()
dataframe["%-ema-200"] = ta.EMA(dataframe, timeperiod=200)
"""
dataframe["%-pct-change"] = dataframe["close"].pct_change()
dataframe["%-raw_volume"] = dataframe["volume"]
dataframe["%-raw_price"] = dataframe["close"]
return dataframe
```
### FreqAI - feature engineering standard
``` python linenums="1"
def feature_engineering_standard(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
This optional function will be called once with the dataframe of the base timeframe.
This is the final function to be called, which means that the dataframe entering this
function will contain all the features and columns created by all other
freqai_feature_engineering_* functions.
This function is a good place to do custom exotic feature extractions (e.g. tsfresh).
This function is a good place for any feature that should not be auto-expanded upon
(e.g. day of the week).
All features must be prepended with `%` to be recognized by FreqAI internals.
More details about feature engineering available:
https://www.freqtrade.io/en/latest/freqai-feature-engineering
:param df: strategy dataframe which will receive the features
usage example: dataframe["%-day_of_week"] = (dataframe["date"].dt.dayofweek + 1) / 7
"""
dataframe["%-day_of_week"] = dataframe["date"].dt.dayofweek
dataframe["%-hour_of_day"] = dataframe["date"].dt.hour
return dataframe
```
### FreqAI - set Targets
Targets now get their own, dedicated method.
``` python linenums="1"
def set_freqai_targets(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
Required function to set the targets for the model.
All targets must be prepended with `&` to be recognized by the FreqAI internals.
More details about feature engineering available:
https://www.freqtrade.io/en/latest/freqai-feature-engineering
:param df: strategy dataframe which will receive the targets
usage example: dataframe["&-target"] = dataframe["close"].shift(-1) / dataframe["close"]
"""
dataframe["&-s_close"] = (
dataframe["close"]
.shift(-self.freqai_info["feature_parameters"]["label_period_candles"])
.rolling(self.freqai_info["feature_parameters"]["label_period_candles"])
.mean()
/ dataframe["close"]
- 1
)
return dataframe
```
### FreqAI - New data Pipeline
If you have created your own custom `IFreqaiModel` with a custom `train()`/`predict()` function, *and* you still rely on `data_cleaning_train/predict()`, then you will need to migrate to the new pipeline. If your model does *not* rely on `data_cleaning_train/predict()`, then you do not need to worry about this migration. That means that this migration guide is relevant for a very small percentage of power-users. If you stumbled upon this guide by mistake, feel free to inquire in depth about your problem in the Freqtrade discord server.
The conversion involves first removing `data_cleaning_train/predict()` and replacing them with a `define_data_pipeline()` and `define_label_pipeline()` function to your `IFreqaiModel` class:
```python linenums="1" hl_lines="11-14 47-49 55-57"
class MyCoolFreqaiModel(BaseRegressionModel):
"""
Some cool custom IFreqaiModel you made before Freqtrade version 2023.6
"""
def train(
self, unfiltered_df: DataFrame, pair: str, dk: FreqaiDataKitchen, **kwargs
) -> Any:
# ... your custom stuff
# Remove these lines
# data_dictionary = dk.make_train_test_datasets(features_filtered, labels_filtered)
# self.data_cleaning_train(dk)
# data_dictionary = dk.normalize_data(data_dictionary)
# (1)
# Add these lines. Now we control the pipeline fit/transform ourselves
dd = dk.make_train_test_datasets(features_filtered, labels_filtered)
dk.feature_pipeline = self.define_data_pipeline(threads=dk.thread_count)
dk.label_pipeline = self.define_label_pipeline(threads=dk.thread_count)
(dd["train_features"],
dd["train_labels"],
dd["train_weights"]) = dk.feature_pipeline.fit_transform(dd["train_features"],
dd["train_labels"],
dd["train_weights"])
(dd["test_features"],
dd["test_labels"],
dd["test_weights"]) = dk.feature_pipeline.transform(dd["test_features"],
dd["test_labels"],
dd["test_weights"])
dd["train_labels"], _, _ = dk.label_pipeline.fit_transform(dd["train_labels"])
dd["test_labels"], _, _ = dk.label_pipeline.transform(dd["test_labels"])
# ... your custom code
return model
def predict(
self, unfiltered_df: DataFrame, dk: FreqaiDataKitchen, **kwargs
) -> Tuple[DataFrame, npt.NDArray[np.int_]]:
# ... your custom stuff
# Remove these lines:
# self.data_cleaning_predict(dk)
# (2)
# Add these lines:
dk.data_dictionary["prediction_features"], outliers, _ = dk.feature_pipeline.transform(
dk.data_dictionary["prediction_features"], outlier_check=True)
# Remove this line
# pred_df = dk.denormalize_labels_from_metadata(pred_df)
# (3)
# Replace with these lines
pred_df, _, _ = dk.label_pipeline.inverse_transform(pred_df)
if self.freqai_info.get("DI_threshold", 0) > 0:
dk.DI_values = dk.feature_pipeline["di"].di_values
else:
dk.DI_values = np.zeros(outliers.shape[0])
dk.do_predict = outliers
# ... your custom code
return (pred_df, dk.do_predict)
```
1. Data normalization and cleaning is now homogenized with the new pipeline definition. This is created in the new `define_data_pipeline()` and `define_label_pipeline()` functions. The `data_cleaning_train()` and `data_cleaning_predict()` functions are no longer used. You can override `define_data_pipeline()` to create your own custom pipeline if you wish.
2. Data normalization and cleaning is now homogenized with the new pipeline definition. This is created in the new `define_data_pipeline()` and `define_label_pipeline()` functions. The `data_cleaning_train()` and `data_cleaning_predict()` functions are no longer used. You can override `define_data_pipeline()` to create your own custom pipeline if you wish.
3. Data denormalization is done with the new pipeline. Replace this with the lines below.

View File

@@ -11,18 +11,3 @@
.rst-versions .rst-other-versions {
color: white;
}
#widget-wrapper {
height: calc(220px * 0.5625 + 18px);
width: 220px;
margin: 0 auto 16px auto;
border-style: solid;
border-color: var(--md-code-bg-color);
border-width: 1px;
border-radius: 5px;
}
@media screen and (max-width: calc(76.25em - 1px)) {
#widget-wrapper { display: none; }
}

View File

@@ -152,7 +152,7 @@ You can create your own keyboard in `config.json`:
!!! Note "Supported Commands"
Only the following commands are allowed. Command arguments are not supported!
`/start`, `/stop`, `/status`, `/status table`, `/trades`, `/profit`, `/performance`, `/daily`, `/stats`, `/count`, `/locks`, `/balance`, `/stopentry`, `/reload_config`, `/show_config`, `/logs`, `/whitelist`, `/blacklist`, `/edge`, `/help`, `/version`
`/start`, `/stop`, `/status`, `/status table`, `/trades`, `/profit`, `/performance`, `/daily`, `/stats`, `/count`, `/locks`, `/balance`, `/stopentry`, `/reload_config`, `/show_config`, `/logs`, `/whitelist`, `/blacklist`, `/edge`, `/help`, `/version`, `/marketdir`
## Telegram commands
@@ -162,28 +162,38 @@ official commands. You can ask at any moment for help with `/help`.
| Command | Description |
|----------|-------------|
| **System commands**
| `/start` | Starts the trader
| `/stop` | Stops the trader
| `/stopbuy | /stopentry` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
| `/reload_config` | Reloads the configuration file
| `/show_config` | Shows part of the current configuration with relevant settings to operation
| `/logs [limit]` | Show last log messages.
| `/help` | Show help message
| `/version` | Show version
| **Status** |
| `/status` | Lists all open trades
| `/status <trade_id>` | Lists one or more specific trade. Separate multiple <trade_id> with a blank space.
| `/status table` | List all open trades in a table format. Pending buy orders are marked with an asterisk (*) Pending sell orders are marked with a double asterisk (**)
| `/trades [limit]` | List all recently closed trades in a table format.
| `/delete <trade_id>` | Delete a specific trade from the Database. Tries to close open orders. Requires manual handling of this trade on the exchange.
| `/count` | Displays number of trades used and available
| `/locks` | Show currently locked pairs.
| `/unlock <pair or lock_id>` | Remove the lock for this pair (or for this lock id).
| `/profit [<n>]` | Display a summary of your profit/loss from close trades and some stats about your performance, over the last n days (all trades by default)
| `/marketdir [long | short | even | none]` | Updates the user managed variable that represents the current market direction. If no direction is provided, the currently set direction will be displayed.
| **Modify Trade states** |
| `/forceexit <trade_id> | /fx <tradeid>` | Instantly exits the given trade (Ignoring `minimum_roi`).
| `/forceexit all | /fx all` | Instantly exits all open trades (Ignoring `minimum_roi`).
| `/fx` | alias for `/forceexit`
| `/forcelong <pair> [rate]` | Instantly buys the given pair. Rate is optional and only applies to limit orders. (`force_entry_enable` must be set to True)
| `/forceshort <pair> [rate]` | Instantly shorts the given pair. Rate is optional and only applies to limit orders. This will only work on non-spot markets. (`force_entry_enable` must be set to True)
| `/delete <trade_id>` | Delete a specific trade from the Database. Tries to close open orders. Requires manual handling of this trade on the exchange.
| `/reload_trade <trade_id>` | Reload a trade from the Exchange. Only works in live, and can potentially help recover a trade that was manually sold on the exchange.
| `/cancel_open_order <trade_id> | /coo <trade_id>` | Cancel an open order for a trade.
| **Metrics** |
| `/profit [<n>]` | Display a summary of your profit/loss from close trades and some stats about your performance, over the last n days (all trades by default)
| `/performance` | Show performance of each finished trade grouped by pair
| `/balance` | Show account balance per currency
| `/balance` | Show bot managed balance per currency
| `/balance full` | Show account balance per currency
| `/daily <n>` | Shows profit or loss per day, over the last n days (n defaults to 7)
| `/weekly <n>` | Shows profit or loss per week, over the last n weeks (n defaults to 8)
| `/monthly <n>` | Shows profit or loss per month, over the last n months (n defaults to 6)
@@ -193,8 +203,6 @@ official commands. You can ask at any moment for help with `/help`.
| `/whitelist [sorted] [baseonly]` | Show the current whitelist. Optionally display in alphabetical order and/or with just the base currency of each pairing.
| `/blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
| `/edge` | Show validated pairs by Edge if it is enabled.
| `/help` | Show help message
| `/version` | Show version
## Telegram commands in action
@@ -236,7 +244,7 @@ Enter Tag is configurable via Strategy.
> **Enter Tag:** Awesome Long Signal
> **Open Rate:** `0.00007489`
> **Current Rate:** `0.00007489`
> **Current Profit:** `12.95%`
> **Unrealized Profit:** `12.95%`
> **Stoploss:** `0.00007389 (-0.02%)`
### /status table
@@ -272,19 +280,26 @@ Return a summary of your profit/loss and performance.
> ∙ `33.095 EUR`
>
> **Total Trade Count:** `138`
> **Bot started:** `2022-07-11 18:40:44`
> **First Trade opened:** `3 days ago`
> **Latest Trade opened:** `2 minutes ago`
> **Avg. Duration:** `2:33:45`
> **Best Performing:** `PAY/BTC: 50.23%`
> **Trading volume:** `0.5 BTC`
> **Profit factor:** `1.04`
> **Win / Loss:** `102 / 36`
> **Winrate:** `73.91%`
> **Expectancy (Ratio):** `4.87 (1.66)`
> **Max Drawdown:** `9.23% (0.01255 BTC)`
The relative profit of `1.2%` is the average profit per trade.
The relative profit of `15.2 Σ%` is be based on the starting capital - so in this case, the starting capital was `0.00485701 * 1.152 = 0.00738 BTC`.
Starting capital is either taken from the `available_capital` setting, or calculated by using current wallet size - profits.
Profit Factor is calculated as gross profits / gross losses - and should serve as an overall metric for the strategy.
Expectancy corresponds to the average return per currency unit at risk, i.e. the winrate and the risk-reward ratio (the average gain of winning trades compared to the average loss of losing trades).
Expectancy Ratio is expected profit or loss of a subsequent trade based on the performance of all past trades.
Max drawdown corresponds to the backtesting metric `Absolute Drawdown (Account)` - calculated as `(Absolute Drawdown) / (DrawdownHigh + startingBalance)`.
Bot started date will refer to the date the bot was first started. For older bots, this will default to the first trade's open date.
### /forceexit <trade_id>
@@ -410,3 +425,27 @@ ARDR/ETH 0.366667 0.143059 -0.01
### /version
> **Version:** `0.14.3`
### /marketdir
If a market direction is provided the command updates the user managed variable that represents the current market direction.
This variable is not set to any valid market direction on bot startup and must be set by the user. The example below is for `/marketdir long`:
```
Successfully updated marketdirection from none to long.
```
If no market direction is provided the command outputs the currently set market directions. The example below is for `/marketdir`:
```
Currently set marketdirection: even
```
You can use the market direction in your strategy via `self.market_direction`.
!!! Warning "Bot restarts"
Please note that the market direction is not persisted, and will be reset after a bot restart/reload.
!!! Danger "Backtesting"
As this value/variable is intended to be changed manually in dry/live trading.
Strategies using `market_direction` will probably not produce reliable, reproducible results (changes to this variable will not be reflected for backtesting). Use at your own risk.

149
docs/trade-object.md Normal file
View File

@@ -0,0 +1,149 @@
# Trade Object
## Trade
A position freqtrade enters is stored in a `Trade` object - which is persisted to the database.
It's a core concept of freqtrade - and something you'll come across in many sections of the documentation, which will most likely point you to this location.
It will be passed to the strategy in many [strategy callbacks](strategy-callbacks.md). The object passed to the strategy cannot be modified directly. Indirect modifications may occur based on callback results.
## Trade - Available attributes
The following attributes / properties are available for each individual trade - and can be used with `trade.<property>` (e.g. `trade.pair`).
| Attribute | DataType | Description |
|------------|-------------|-------------|
`pair`| string | Pair of this trade
`is_open`| boolean | Is the trade currently open, or has it been concluded
`open_rate`| float | Rate this trade was entered at (Avg. entry rate in case of trade-adjustments)
`close_rate`| float | Close rate - only set when is_open = False
`stake_amount`| float | Amount in Stake (or Quote) currency.
`amount`| float | Amount in Asset / Base currency that is currently owned.
`open_date`| datetime | Timestamp when trade was opened **use `open_date_utc` instead**
`open_date_utc`| datetime | Timestamp when trade was opened - in UTC
`close_date`| datetime | Timestamp when trade was closed **use `close_date_utc` instead**
`close_date_utc`| datetime | Timestamp when trade was closed - in UTC
`close_profit`| float | Relative profit at the time of trade closure. `0.01` == 1%
`close_profit_abs`| float | Absolute profit (in stake currency) at the time of trade closure.
`leverage` | float | Leverage used for this trade - defaults to 1.0 in spot markets.
`enter_tag`| string | Tag provided on entry via the `enter_tag` column in the dataframe
`is_short` | boolean | True for short trades, False otherwise
`orders` | Order[] | List of order objects attached to this trade (includes both filled and cancelled orders)
`date_last_filled_utc` | datetime | Time of the last filled order
`entry_side` | "buy" / "sell" | Order Side the trade was entered
`exit_side` | "buy" / "sell" | Order Side that will result in a trade exit / position reduction.
`trade_direction` | "long" / "short" | Trade direction in text - long or short.
`nr_of_successful_entries` | int | Number of successful (filled) entry orders
`nr_of_successful_exits` | int | Number of successful (filled) exit orders
## Class methods
The following are class methods - which return generic information, and usually result in an explicit query against the database.
They can be used as `Trade.<method>` - e.g. `open_trades = Trade.get_open_trade_count()`
!!! Warning "Backtesting/hyperopt"
Most methods will work in both backtesting / hyperopt and live/dry modes.
During backtesting, it's limited to usage in [strategy callbacks](strategy-callbacks.md). Usage in `populate_*()` methods is not supported and will result in wrong results.
### get_trades_proxy
When your strategy needs some information on existing (open or close) trades - it's best to use `Trade.get_trades_proxy()`.
Usage:
``` python
from freqtrade.persistence import Trade
from datetime import timedelta
# ...
trade_hist = Trade.get_trades_proxy(pair='ETH/USDT', is_open=False, open_date=current_date - timedelta(days=2))
```
`get_trades_proxy()` supports the following keyword arguments. All arguments are optional - calling `get_trades_proxy()` without arguments will return a list of all trades in the database.
* `pair` e.g. `pair='ETH/USDT'`
* `is_open` e.g. `is_open=False`
* `open_date` e.g. `open_date=current_date - timedelta(days=2)`
* `close_date` e.g. `close_date=current_date - timedelta(days=5)`
### get_open_trade_count
Get the number of currently open trades
``` python
from freqtrade.persistence import Trade
# ...
open_trades = Trade.get_open_trade_count()
```
### get_total_closed_profit
Retrieve the total profit the bot has generated so far.
Aggregates `close_profit_abs` for all closed trades.
``` python
from freqtrade.persistence import Trade
# ...
profit = Trade.get_total_closed_profit()
```
### total_open_trades_stakes
Retrieve the total stake_amount that's currently in trades.
``` python
from freqtrade.persistence import Trade
# ...
profit = Trade.total_open_trades_stakes()
```
### get_overall_performance
Retrieve the overall performance - similar to the `/performance` telegram command.
``` python
from freqtrade.persistence import Trade
# ...
if self.config['runmode'].value in ('live', 'dry_run'):
performance = Trade.get_overall_performance()
```
Sample return value: ETH/BTC had 5 trades, with a total profit of 1.5% (ratio of 0.015).
``` json
{"pair": "ETH/BTC", "profit": 0.015, "count": 5}
```
## Order Object
An `Order` object represents an order on the exchange (or a simulated order in dry-run mode).
An `Order` object will always be tied to it's corresponding [`Trade`](#trade-object), and only really makes sense in the context of a trade.
### Order - Available attributes
an Order object is typically attached to a trade.
Most properties here can be None as they are dependant on the exchange response.
| Attribute | DataType | Description |
|------------|-------------|-------------|
`trade` | Trade | Trade object this order is attached to
`ft_pair` | string | Pair this order is for
`ft_is_open` | boolean | is the order filled?
`order_type` | string | Order type as defined on the exchange - usually market, limit or stoploss
`status` | string | Status as defined by ccxt. Usually open, closed, expired or canceled
`side` | string | Buy or Sell
`price` | float | Price the order was placed at
`average` | float | Average price the order filled at
`amount` | float | Amount in base currency
`filled` | float | Filled amount (in base currency)
`remaining` | float | Remaining amount
`cost` | float | Cost of the order - usually average * filled (*Exchange dependant on futures, may contain the cost with or without leverage and may be in contracts.*)
`stake_amount` | float | Stake amount used for this order. *Added in 2023.7.*
`order_date` | datetime | Order creation date **use `order_date_utc` instead**
`order_date_utc` | datetime | Order creation date (in UTC)
`order_fill_date` | datetime | Order fill date **use `order_fill_utc` instead**
`order_fill_date_utc` | datetime | Order fill date

View File

@@ -723,6 +723,9 @@ usage: freqtrade backtesting-analysis [-h] [-v] [--logfile FILE] [-V]
[--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]]
[--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]]
[--timerange YYYYMMDD-[YYYYMMDD]]
[--rejected]
[--analysis-to-csv]
[--analysis-csv-path PATH]
optional arguments:
-h, --help show this help message and exit
@@ -736,19 +739,27 @@ optional arguments:
pair and enter_tag, 4: by pair, enter_ and exit_tag
(this can get quite large)
--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]
Comma separated list of entry signals to analyse.
Default: all. e.g. 'entry_tag_a,entry_tag_b'
Space separated list of entry signals to analyse.
Default: all. e.g. 'entry_tag_a entry_tag_b'
--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]
Comma separated list of exit signals to analyse.
Space separated list of exit signals to analyse.
Default: all. e.g.
'exit_tag_a,roi,stop_loss,trailing_stop_loss'
'exit_tag_a roi stop_loss trailing_stop_loss'
--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]
Comma separated list of indicators to analyse. e.g.
'close,rsi,bb_lowerband,profit_abs'
Space separated list of indicators to analyse. e.g.
'close rsi bb_lowerband profit_abs'
--timerange YYYYMMDD-[YYYYMMDD]
Timerange to filter trades for analysis,
start inclusive, end exclusive. e.g.
20220101-20220201
--rejected
Print out rejected trades table
--analysis-to-csv
Write out tables to individual CSVs, by default to
'user_data/backtest_results' unless '--analysis-csv-path' is given.
--analysis-csv-path [PATH]
Optional path where individual CSVs will be written. If not used,
CSVs will be written to 'user_data/backtest_results'.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
@@ -955,3 +966,47 @@ Print trades with id 2 and 3 as json
``` bash
freqtrade show-trades --db-url sqlite:///tradesv3.sqlite --trade-ids 2 3 --print-json
```
### Strategy-Updater
Updates listed strategies or all strategies within the strategies folder to be v3 compliant.
If the command runs without --strategy-list then all strategies inside the strategies folder will be converted.
Your original strategy will remain available in the `user_data/strategies_orig_updater/` directory.
!!! Warning "Conversion results"
Strategy updater will work on a "best effort" approach. Please do your due diligence and verify the results of the conversion.
We also recommend to run a python formatter (e.g. `black`) to format results in a sane manner.
```
usage: freqtrade strategy-updater [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
options:
-h, --help show this help message and exit
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a space-separated list of strategies to
backtest. Please note that timeframe needs to be set
either in config or via command line. When using this
together with `--export trades`, the strategy-name is
injected into the filename (so `backtest-data.json`
becomes `backtest-data-SampleStrategy.json`
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -80,12 +80,18 @@ When using the Form-Encoded or JSON-Encoded configuration you can configure any
The result would be a POST request with e.g. `Status: running` body and `Content-Type: text/plain` header.
Optional parameters are available to enable automatic retries for webhook messages. The `webhook.retries` parameter can be set for the maximum number of retries the webhook request should attempt if it is unsuccessful (i.e. HTTP response status is not 200). By default this is set to `0` which is disabled. An additional `webhook.retry_delay` parameter can be set to specify the time in seconds between retry attempts. By default this is set to `0.1` (i.e. 100ms). Note that increasing the number of retries or retry delay may slow down the trader if there are connectivity issues with the webhook. Example configuration for retries:
## Additional configurations
The `webhook.retries` parameter can be set for the maximum number of retries the webhook request should attempt if it is unsuccessful (i.e. HTTP response status is not 200). By default this is set to `0` which is disabled. An additional `webhook.retry_delay` parameter can be set to specify the time in seconds between retry attempts. By default this is set to `0.1` (i.e. 100ms). Note that increasing the number of retries or retry delay may slow down the trader if there are connectivity issues with the webhook.
You can also specify `webhook.timeout` - which defines how long the bot will wait until it assumes the other host as unresponsive (defaults to 10s).
Example configuration for retries:
```json
"webhook": {
"enabled": true,
"url": "https://<YOURHOOKURL>",
"timeout": 10,
"retries": 3,
"retry_delay": 0.2,
"status": {
@@ -109,6 +115,8 @@ Custom messages can be sent to Webhook endpoints via the `self.dp.send_msg()` fu
Different payloads can be configured for different events. Not all fields are necessary, but you should configure at least one of the dicts, otherwise the webhook will never be called.
## Webhook Message types
### Entry
The fields in `webhook.entry` are filled when the bot executes a long/short. Parameters are filled using string.format.

View File

@@ -24,9 +24,9 @@ git clone https://github.com/freqtrade/freqtrade.git
Install ta-lib according to the [ta-lib documentation](https://github.com/mrjbq7/ta-lib#windows).
As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), there is also a repository of unofficial pre-compiled windows Wheels [here](https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib), which need to be downloaded and installed using `pip install TA_Lib-0.4.25-cp38-cp38-win_amd64.whl` (make sure to use the version matching your python version).
As compiling from source on windows has heavy dependencies (requires a partial visual studio installation), Freqtrade provides these dependencies (in the binary wheel format) for the latest 3 Python versions (3.8, 3.9, 3.10 and 3.11) and for 64bit Windows.
These Wheels are also used by CI running on windows, and are therefore tested together with freqtrade.
Freqtrade provides these dependencies for the latest 3 Python versions (3.8, 3.9 and 3.10) and for 64bit Windows.
Other versions must be downloaded from the above link.
``` powershell
@@ -45,8 +45,6 @@ freqtrade
The above installation script assumes you're using powershell on a 64bit windows.
Commands for the legacy CMD windows console may differ.
> Thanks [Owdr](https://github.com/Owdr) for the commands. Source: [Issue #222](https://github.com/freqtrade/freqtrade/issues/222)
### Error during installation on Windows
``` bash

View File

@@ -1,75 +0,0 @@
name: freqtrade
channels:
- conda-forge
# - defaults
dependencies:
# 1/4 req main
- python>=3.8,<=3.10
- numpy
- pandas
- pip
- py-find-1st
- aiohttp
- SQLAlchemy
- python-telegram-bot
- arrow
- cachetools
- requests
- urllib3
- jsonschema
- TA-Lib
- tabulate
- jinja2
- blosc
- sdnotify
- fastapi
- uvicorn
- pyjwt
- aiofiles
- psutil
- colorama
- questionary
- prompt-toolkit
- schedule
- python-dateutil
- joblib
- pyarrow
# ============================
# 2/4 req dev
- coveralls
- flake8
- mypy
- pytest
- pytest-asyncio
- pytest-cov
- pytest-mock
- isort
- nbconvert
# ============================
# 3/4 req hyperopt
- scipy
- scikit-learn
- filelock
- scikit-optimize
- progressbar2
# ============================
# 4/4 req plot
- plotly
- jupyter
- pip:
- pycoingecko
# - py_find_1st
- tables
- pytest-random-order
- ccxt
- flake8-tidy-imports
- -e .
# - python-rapidjso

View File

@@ -1,19 +1,20 @@
""" Freqtrade bot """
__version__ = '2022.12.dev'
__version__ = '2023.7'
if 'dev' in __version__:
from pathlib import Path
try:
import subprocess
freqtrade_basedir = Path(__file__).parent
__version__ = __version__ + '-' + subprocess.check_output(
['git', 'log', '--format="%h"', '-n 1'],
stderr=subprocess.DEVNULL).decode("utf-8").rstrip().strip('"')
stderr=subprocess.DEVNULL, cwd=freqtrade_basedir).decode("utf-8").rstrip().strip('"')
except Exception: # pragma: no cover
# git not available, ignore
try:
# Try Fallback to freqtrade_commit file (created by CI while building docker image)
from pathlib import Path
versionfile = Path('./freqtrade_commit')
if versionfile.is_file():
__version__ = f"docker-{__version__}-{versionfile.read_text()[:8]}"

0
freqtrade/__main__.py Normal file → Executable file
View File

View File

@@ -19,8 +19,10 @@ from freqtrade.commands.list_commands import (start_list_exchanges, start_list_f
start_list_markets, start_list_strategies,
start_list_timeframes, start_show_trades)
from freqtrade.commands.optimize_commands import (start_backtesting, start_backtesting_show,
start_edge, start_hyperopt)
start_edge, start_hyperopt,
start_lookahead_analysis)
from freqtrade.commands.pairlist_commands import start_test_pairlist
from freqtrade.commands.plot_commands import start_plot_dataframe, start_plot_profit
from freqtrade.commands.strategy_utils_commands import start_strategy_update
from freqtrade.commands.trade_commands import start_trading
from freqtrade.commands.webserver_commands import start_webserver

4
freqtrade/commands/analyze_commands.py Executable file → Normal file
View File

@@ -40,8 +40,8 @@ def setup_analyze_configuration(args: Dict[str, Any], method: RunMode) -> Dict[s
if (not Path(signals_file).exists()):
raise OperationalException(
(f"Cannot find latest backtest signals file: {signals_file}."
"Run backtesting with `--export signals`.")
f"Cannot find latest backtest signals file: {signals_file}."
"Run backtesting with `--export signals`."
)
return config

43
freqtrade/commands/arguments.py Normal file → Executable file
View File

@@ -46,7 +46,7 @@ ARGS_LIST_FREQAIMODELS = ["freqaimodel_path", "print_one_column", "print_coloriz
ARGS_LIST_HYPEROPTS = ["hyperopt_path", "print_one_column", "print_colorized"]
ARGS_BACKTEST_SHOW = ["exportfilename", "backtest_show_pair_list"]
ARGS_BACKTEST_SHOW = ["exportfilename", "backtest_show_pair_list", "backtest_breakdown"]
ARGS_LIST_EXCHANGES = ["print_one_column", "list_exchanges_all"]
@@ -67,8 +67,7 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"]
ARGS_CONVERT_DATA = ["pairs", "format_from", "format_to", "erase", "exchange"]
ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes", "trading_mode",
"candle_types"]
ARGS_CONVERT_DATA_OHLCV = ARGS_CONVERT_DATA + ["timeframes", "trading_mode", "candle_types"]
ARGS_CONVERT_TRADES = ["pairs", "timeframes", "exchange", "dataformat_ohlcv", "dataformat_trades"]
@@ -106,15 +105,23 @@ ARGS_HYPEROPT_SHOW = ["hyperopt_list_best", "hyperopt_list_profitable", "hyperop
"disableparamexport", "backtest_breakdown"]
ARGS_ANALYZE_ENTRIES_EXITS = ["exportfilename", "analysis_groups", "enter_reason_list",
"exit_reason_list", "indicator_list", "timerange"]
"exit_reason_list", "indicator_list", "timerange",
"analysis_rejected", "analysis_to_csv", "analysis_csv_path"]
NO_CONF_REQURIED = ["convert-data", "convert-trade-data", "download-data", "list-timeframes",
"list-markets", "list-pairs", "list-strategies", "list-freqaimodels",
"list-data", "hyperopt-list", "hyperopt-show", "backtest-filter",
"plot-dataframe", "plot-profit", "show-trades", "trades-to-ohlcv"]
"plot-dataframe", "plot-profit", "show-trades", "trades-to-ohlcv",
"strategy-updater"]
NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-strategy"]
ARGS_STRATEGY_UPDATER = ["strategy_list", "strategy_path", "recursive_strategy_search"]
ARGS_LOOKAHEAD_ANALYSIS = [
a for a in ARGS_BACKTEST if a not in ("position_stacking", "use_max_market_positions", 'cache')
] + ["minimum_trade_amount", "targeted_trade_amount", "lookahead_analysis_exportfilename"]
class Arguments:
"""
@@ -197,9 +204,10 @@ class Arguments:
start_install_ui, start_list_data, start_list_exchanges,
start_list_freqAI_models, start_list_markets,
start_list_strategies, start_list_timeframes,
start_new_config, start_new_strategy, start_plot_dataframe,
start_plot_profit, start_show_trades, start_test_pairlist,
start_trading, start_webserver)
start_lookahead_analysis, start_new_config,
start_new_strategy, start_plot_dataframe, start_plot_profit,
start_show_trades, start_strategy_update,
start_test_pairlist, start_trading, start_webserver)
subparsers = self.parser.add_subparsers(dest='command',
# Use custom message when no subhandler is added
@@ -440,3 +448,22 @@ class Arguments:
parents=[_common_parser])
webserver_cmd.set_defaults(func=start_webserver)
self._build_args(optionlist=ARGS_WEBSERVER, parser=webserver_cmd)
# Add strategy_updater subcommand
strategy_updater_cmd = subparsers.add_parser('strategy-updater',
help='updates outdated strategy'
'files to the current version',
parents=[_common_parser])
strategy_updater_cmd.set_defaults(func=start_strategy_update)
self._build_args(optionlist=ARGS_STRATEGY_UPDATER, parser=strategy_updater_cmd)
# Add lookahead_analysis subcommand
lookahead_analayis_cmd = subparsers.add_parser(
'lookahead-analysis',
help="Check for potential look ahead bias.",
parents=[_common_parser, _strategy_parser])
lookahead_analayis_cmd.set_defaults(func=start_lookahead_analysis)
self._build_args(optionlist=ARGS_LOOKAHEAD_ANALYSIS,
parser=lookahead_analayis_cmd)

View File

@@ -5,6 +5,7 @@ from typing import Any, Dict, List
from questionary import Separator, prompt
from freqtrade.configuration.detect_environment import running_in_docker
from freqtrade.configuration.directory_operations import chown_user_directory
from freqtrade.constants import UNLIMITED_STAKE_AMOUNT
from freqtrade.exceptions import OperationalException
@@ -108,7 +109,7 @@ def ask_user_config() -> Dict[str, Any]:
"binance",
"binanceus",
"bittrex",
"gateio",
"gate",
"huobi",
"kraken",
"kucoin",
@@ -123,7 +124,7 @@ def ask_user_config() -> Dict[str, Any]:
"message": "Do you want to trade Perpetual Swaps (perpetual futures)?",
"default": False,
"filter": lambda val: 'futures' if val else 'spot',
"when": lambda x: x["exchange_name"] in ['binance', 'gateio', 'okx'],
"when": lambda x: x["exchange_name"] in ['binance', 'gate', 'okx'],
},
{
"type": "autocomplete",
@@ -179,7 +180,7 @@ def ask_user_config() -> Dict[str, Any]:
"name": "api_server_listen_addr",
"message": ("Insert Api server Listen Address (0.0.0.0 for docker, "
"otherwise best left untouched)"),
"default": "127.0.0.1",
"default": "127.0.0.1" if not running_in_docker() else "0.0.0.0",
"when": lambda x: x['api_server']
},
{

60
freqtrade/commands/cli_options.py Normal file → Executable file
View File

@@ -251,7 +251,8 @@ AVAILABLE_CLI_OPTIONS = {
"spaces": Arg(
'--spaces',
help='Specify which parameters to hyperopt. Space-separated list.',
choices=['all', 'buy', 'sell', 'roi', 'stoploss', 'trailing', 'protection', 'default'],
choices=['all', 'buy', 'sell', 'roi', 'stoploss',
'trailing', 'protection', 'trades', 'default'],
nargs='+',
default='default',
),
@@ -380,7 +381,7 @@ AVAILABLE_CLI_OPTIONS = {
),
"candle_types": Arg(
'--candle-types',
help='Select candle type to use',
help='Select candle type to convert. Defaults to all available types.',
choices=[c.value for c in CandleType],
nargs='+',
),
@@ -449,14 +450,12 @@ AVAILABLE_CLI_OPTIONS = {
),
"exchange": Arg(
'--exchange',
help=f'Exchange name (default: `{constants.DEFAULT_EXCHANGE}`). '
f'Only valid if no config is provided.',
help='Exchange name. Only valid if no config is provided.',
),
"timeframes": Arg(
'-t', '--timeframes',
help='Specify which tickers to download. Space-separated list. '
'Default: `1m 5m`.',
default=['1m', '5m'],
nargs='+',
),
"prepend_data": Arg(
@@ -632,32 +631,48 @@ AVAILABLE_CLI_OPTIONS = {
"1: by enter_tag, "
"2: by enter_tag and exit_tag, "
"3: by pair and enter_tag, "
"4: by pair, enter_ and exit_tag (this can get quite large)"),
"4: by pair, enter_ and exit_tag (this can get quite large), "
"5: by exit_tag"),
nargs='+',
default=['0', '1', '2'],
choices=['0', '1', '2', '3', '4'],
default=[],
choices=['0', '1', '2', '3', '4', '5'],
),
"enter_reason_list": Arg(
"--enter-reason-list",
help=("Comma separated list of entry signals to analyse. Default: all. "
"e.g. 'entry_tag_a,entry_tag_b'"),
help=("Space separated list of entry signals to analyse. Default: all. "
"e.g. 'entry_tag_a entry_tag_b'"),
nargs='+',
default=['all'],
),
"exit_reason_list": Arg(
"--exit-reason-list",
help=("Comma separated list of exit signals to analyse. Default: all. "
"e.g. 'exit_tag_a,roi,stop_loss,trailing_stop_loss'"),
help=("Space separated list of exit signals to analyse. Default: all. "
"e.g. 'exit_tag_a roi stop_loss trailing_stop_loss'"),
nargs='+',
default=['all'],
),
"indicator_list": Arg(
"--indicator-list",
help=("Comma separated list of indicators to analyse. "
"e.g. 'close,rsi,bb_lowerband,profit_abs'"),
help=("Space separated list of indicators to analyse. "
"e.g. 'close rsi bb_lowerband profit_abs'"),
nargs='+',
default=[],
),
"analysis_rejected": Arg(
'--rejected-signals',
help='Analyse rejected signals',
action='store_true',
),
"analysis_to_csv": Arg(
'--analysis-to-csv',
help='Save selected analysis tables to individual CSVs',
action='store_true',
),
"analysis_csv_path": Arg(
'--analysis-csv-path',
help=("Specify a path to save the analysis CSVs "
"if --analysis-to-csv is enabled. Default: user_data/basktesting_results/"),
),
"freqaimodel": Arg(
'--freqaimodel',
help='Specify a custom freqaimodels.',
@@ -673,4 +688,21 @@ AVAILABLE_CLI_OPTIONS = {
help='Run backtest with ready models.',
action='store_true'
),
"minimum_trade_amount": Arg(
'--minimum-trade-amount',
help='Minimum trade amount for lookahead-analysis',
type=check_int_positive,
metavar='INT',
),
"targeted_trade_amount": Arg(
'--targeted-trade-amount',
help='Targeted trade amount for lookahead analysis',
type=check_int_positive,
metavar='INT',
),
"lookahead_analysis_exportfilename": Arg(
'--lookahead-analysis-exportfilename',
help="Use this csv-filename to store lookahead-analysis-results",
type=str
),
}

View File

@@ -1,108 +1,48 @@
import logging
import sys
from collections import defaultdict
from datetime import datetime, timedelta
from typing import Any, Dict, List
from typing import Any, Dict
from freqtrade.configuration import TimeRange, setup_utils_configuration
from freqtrade.constants import DATETIME_PRINT_FORMAT
from freqtrade.constants import DATETIME_PRINT_FORMAT, DL_DATA_TIMEFRAMES, Config
from freqtrade.data.converter import convert_ohlcv_format, convert_trades_format
from freqtrade.data.history import (convert_trades_to_ohlcv, refresh_backtest_ohlcv_data,
refresh_backtest_trades_data)
from freqtrade.enums import CandleType, RunMode, TradingMode
from freqtrade.data.history import convert_trades_to_ohlcv, download_data_main
from freqtrade.enums import RunMode, TradingMode
from freqtrade.exceptions import OperationalException
from freqtrade.exchange import market_is_active, timeframe_to_minutes
from freqtrade.plugins.pairlist.pairlist_helpers import dynamic_expand_pairlist, expand_pairlist
from freqtrade.exchange import timeframe_to_minutes
from freqtrade.plugins.pairlist.pairlist_helpers import expand_pairlist
from freqtrade.resolvers import ExchangeResolver
from freqtrade.util.binance_mig import migrate_binance_futures_data
logger = logging.getLogger(__name__)
def _check_data_config_download_sanity(config: Config) -> None:
if 'days' in config and 'timerange' in config:
raise OperationalException("--days and --timerange are mutually exclusive. "
"You can only specify one or the other.")
if 'pairs' not in config:
raise OperationalException(
"Downloading data requires a list of pairs. "
"Please check the documentation on how to configure this.")
def start_download_data(args: Dict[str, Any]) -> None:
"""
Download data (former download_backtest_data.py script)
"""
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
if 'days' in config and 'timerange' in config:
raise OperationalException("--days and --timerange are mutually exclusive. "
"You can only specify one or the other.")
timerange = TimeRange()
if 'days' in config:
time_since = (datetime.now() - timedelta(days=config['days'])).strftime("%Y%m%d")
timerange = TimeRange.parse_timerange(f'{time_since}-')
if 'timerange' in config:
timerange = timerange.parse_timerange(config['timerange'])
# Remove stake-currency to skip checks which are not relevant for datadownload
config['stake_currency'] = ''
if 'pairs' not in config:
raise OperationalException(
"Downloading data requires a list of pairs. "
"Please check the documentation on how to configure this.")
pairs_not_available: List[str] = []
# Init exchange
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
markets = [p for p, m in exchange.markets.items() if market_is_active(m)
or config.get('include_inactive')]
expanded_pairs = dynamic_expand_pairlist(config, markets)
# Manual validations of relevant settings
if not config['exchange'].get('skip_pair_validation', False):
exchange.validate_pairs(expanded_pairs)
logger.info(f"About to download pairs: {expanded_pairs}, "
f"intervals: {config['timeframes']} to {config['datadir']}")
for timeframe in config['timeframes']:
exchange.validate_timeframes(timeframe)
_check_data_config_download_sanity(config)
try:
if config.get('download_trades'):
if config.get('trading_mode') == 'futures':
raise OperationalException("Trade download not supported for futures.")
pairs_not_available = refresh_backtest_trades_data(
exchange, pairs=expanded_pairs, datadir=config['datadir'],
timerange=timerange, new_pairs_days=config['new_pairs_days'],
erase=bool(config.get('erase')), data_format=config['dataformat_trades'])
# Convert downloaded trade data to different timeframes
convert_trades_to_ohlcv(
pairs=expanded_pairs, timeframes=config['timeframes'],
datadir=config['datadir'], timerange=timerange, erase=bool(config.get('erase')),
data_format_ohlcv=config['dataformat_ohlcv'],
data_format_trades=config['dataformat_trades'],
)
else:
if not exchange.get_option('ohlcv_has_history', True):
raise OperationalException(
f"Historic klines not available for {exchange.name}. "
"Please use `--dl-trades` instead for this exchange "
"(will unfortunately take a long time)."
)
pairs_not_available = refresh_backtest_ohlcv_data(
exchange, pairs=expanded_pairs, timeframes=config['timeframes'],
datadir=config['datadir'], timerange=timerange,
new_pairs_days=config['new_pairs_days'],
erase=bool(config.get('erase')), data_format=config['dataformat_ohlcv'],
trading_mode=config.get('trading_mode', 'spot'),
prepend=config.get('prepend_data', False)
)
download_data_main(config)
except KeyboardInterrupt:
sys.exit("SIGINT received, aborting ...")
finally:
if pairs_not_available:
logger.info(f"Pairs [{','.join(pairs_not_available)}] not available "
f"on exchange {exchange.name}.")
def start_convert_trades(args: Dict[str, Any]) -> None:
@@ -117,9 +57,11 @@ def start_convert_trades(args: Dict[str, Any]) -> None:
raise OperationalException(
"Downloading data requires a list of pairs. "
"Please check the documentation on how to configure this.")
if 'timeframes' not in config:
config['timeframes'] = DL_DATA_TIMEFRAMES
# Init exchange
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
exchange = ExchangeResolver.load_exchange(config, validate=False)
# Manual validations of relevant settings
if not config['exchange'].get('skip_pair_validation', False):
exchange.validate_pairs(config['pairs'])
@@ -145,11 +87,11 @@ def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None:
"""
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if ohlcv:
candle_types = [CandleType.from_string(ct) for ct in config.get('candle_types', ['spot'])]
for candle_type in candle_types:
convert_ohlcv_format(config,
convert_from=args['format_from'], convert_to=args['format_to'],
erase=args['erase'], candle_type=candle_type)
migrate_binance_futures_data(config)
convert_ohlcv_format(config,
convert_from=args['format_from'],
convert_to=args['format_to'],
erase=args['erase'])
else:
convert_trades_format(config,
convert_from=args['format_from'], convert_to=args['format_to'],
@@ -197,11 +139,14 @@ def start_list_data(args: Dict[str, Any]) -> None:
pair, timeframe, candle_type,
*dhc.ohlcv_data_min_max(pair, timeframe, candle_type)
) for pair, timeframe, candle_type in paircombs]
print(tabulate([
(pair, timeframe, candle_type,
start.strftime(DATETIME_PRINT_FORMAT),
end.strftime(DATETIME_PRINT_FORMAT))
for pair, timeframe, candle_type, start, end in paircombs1
for pair, timeframe, candle_type, start, end in sorted(
paircombs1,
key=lambda x: (x[0], timeframe_to_minutes(x[1]), x[2]))
],
headers=("Pair", "Timeframe", "Type", 'From', 'To'),
tablefmt='psql', stralign='right'))

View File

@@ -1,7 +1,7 @@
import logging
from typing import Any, Dict
from sqlalchemy import func
from sqlalchemy import func, select
from freqtrade.configuration.config_setup import setup_utils_configuration
from freqtrade.enums import RunMode
@@ -20,7 +20,7 @@ def start_convert_db(args: Dict[str, Any]) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
init_db(config['db_url'])
session_target = Trade._session
session_target = Trade.session
init_db(config['db_url_from'])
logger.info("Starting db migration.")
@@ -36,16 +36,16 @@ def start_convert_db(args: Dict[str, Any]) -> None:
session_target.commit()
for pairlock in PairLock.query:
for pairlock in PairLock.get_all_locks():
pairlock_count += 1
make_transient(pairlock)
session_target.add(pairlock)
session_target.commit()
# Update sequences
max_trade_id = session_target.query(func.max(Trade.id)).scalar()
max_order_id = session_target.query(func.max(Order.id)).scalar()
max_pairlock_id = session_target.query(func.max(PairLock.id)).scalar()
max_trade_id = session_target.scalar(select(func.max(Trade.id)))
max_order_id = session_target.scalar(select(func.max(Order.id)))
max_pairlock_id = session_target.scalar(select(func.max(PairLock.id)))
set_sequence_ids(session_target.get_bind(),
trade_id=max_trade_id,

0
freqtrade/commands/hyperopt_commands.py Executable file → Normal file
View File

View File

@@ -1,7 +1,7 @@
import csv
import logging
import sys
from typing import Any, Dict, List
from typing import Any, Dict, List, Union
import rapidjson
from colorama import Fore, Style
@@ -11,9 +11,10 @@ from tabulate import tabulate
from freqtrade.configuration import setup_utils_configuration
from freqtrade.enums import RunMode
from freqtrade.exceptions import OperationalException
from freqtrade.exchange import market_is_active, validate_exchanges
from freqtrade.exchange import list_available_exchanges, market_is_active
from freqtrade.misc import parse_db_uri_for_logging, plural
from freqtrade.resolvers import ExchangeResolver, StrategyResolver
from freqtrade.types import ValidExchangesType
logger = logging.getLogger(__name__)
@@ -25,18 +26,42 @@ def start_list_exchanges(args: Dict[str, Any]) -> None:
:param args: Cli args from Arguments()
:return: None
"""
exchanges = validate_exchanges(args['list_exchanges_all'])
exchanges = list_available_exchanges(args['list_exchanges_all'])
if args['print_one_column']:
print('\n'.join([e[0] for e in exchanges]))
print('\n'.join([e['name'] for e in exchanges]))
else:
headers = {
'name': 'Exchange name',
'supported': 'Supported',
'trade_modes': 'Markets',
'comment': 'Reason',
}
headers.update({'valid': 'Valid'} if args['list_exchanges_all'] else {})
def build_entry(exchange: ValidExchangesType, valid: bool):
valid_entry = {'valid': exchange['valid']} if valid else {}
result: Dict[str, Union[str, bool]] = {
'name': exchange['name'],
**valid_entry,
'supported': 'Official' if exchange['supported'] else '',
'trade_modes': ', '.join(
(f"{a['margin_mode']} " if a['margin_mode'] else '') + a['trading_mode']
for a in exchange['trade_modes']
),
'comment': exchange['comment'],
}
return result
if args['list_exchanges_all']:
print("All exchanges supported by the ccxt library:")
exchanges = [build_entry(e, True) for e in exchanges]
else:
print("Exchanges available for Freqtrade:")
exchanges = [e for e in exchanges if e[1] is not False]
exchanges = [build_entry(e, False) for e in exchanges if e['valid'] is not False]
print(tabulate(exchanges, headers=['Exchange name', 'Valid', 'reason']))
print(tabulate(exchanges, headers=headers, ))
def _print_objs_tabular(objs: List, print_colorized: bool) -> None:
@@ -114,7 +139,7 @@ def start_list_timeframes(args: Dict[str, Any]) -> None:
config['timeframe'] = None
# Init exchange
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
exchange = ExchangeResolver.load_exchange(config, validate=False)
if args['print_one_column']:
print('\n'.join(exchange.timeframes))
@@ -133,7 +158,7 @@ def start_list_markets(args: Dict[str, Any], pairs_only: bool = False) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
# Init exchange
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
exchange = ExchangeResolver.load_exchange(config, validate=False)
# By default only active pairs/markets are to be shown
active_only = not args.get('list_pairs_all', False)

View File

@@ -132,3 +132,15 @@ def start_edge(args: Dict[str, Any]) -> None:
# Initialize Edge object
edge_cli = EdgeCli(config)
edge_cli.start()
def start_lookahead_analysis(args: Dict[str, Any]) -> None:
"""
Start the backtest bias tester script
:param args: Cli args from Arguments()
:return: None
"""
from freqtrade.optimize.lookahead_analysis_helpers import LookaheadAnalysisSubFunctions
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
LookaheadAnalysisSubFunctions.start(config)

View File

@@ -18,7 +18,7 @@ def start_test_pairlist(args: Dict[str, Any]) -> None:
from freqtrade.plugins.pairlistmanager import PairListManager
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
exchange = ExchangeResolver.load_exchange(config['exchange']['name'], config, validate=False)
exchange = ExchangeResolver.load_exchange(config, validate=False)
quote_currencies = args.get('quote_currencies')
if not quote_currencies:

View File

@@ -0,0 +1,55 @@
import logging
import sys
import time
from pathlib import Path
from typing import Any, Dict
from freqtrade.configuration import setup_utils_configuration
from freqtrade.enums import RunMode
from freqtrade.resolvers import StrategyResolver
from freqtrade.strategy.strategyupdater import StrategyUpdater
logger = logging.getLogger(__name__)
def start_strategy_update(args: Dict[str, Any]) -> None:
"""
Start the strategy updating script
:param args: Cli args from Arguments()
:return: None
"""
if sys.version_info == (3, 8): # pragma: no cover
sys.exit("Freqtrade strategy updater requires Python version >= 3.9")
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
strategy_objs = StrategyResolver.search_all_objects(
config, enum_failed=False, recursive=config.get('recursive_strategy_search', False))
filtered_strategy_objs = []
if args['strategy_list']:
filtered_strategy_objs = [
strategy_obj for strategy_obj in strategy_objs
if strategy_obj['name'] in args['strategy_list']
]
else:
# Use all available entries.
filtered_strategy_objs = strategy_objs
processed_locations = set()
for strategy_obj in filtered_strategy_objs:
if strategy_obj['location'] not in processed_locations:
processed_locations.add(strategy_obj['location'])
start_conversion(strategy_obj, config)
def start_conversion(strategy_obj, config):
print(f"Conversion of {Path(strategy_obj['location']).name} started.")
instance_strategy_updater = StrategyUpdater()
start = time.perf_counter()
instance_strategy_updater.start(config, strategy_obj)
elapsed = time.perf_counter() - start
print(f"Conversion of {Path(strategy_obj['location']).name} took {elapsed:.1f} seconds.")

View File

@@ -1,4 +1,5 @@
import logging
import signal
from typing import Any, Dict
@@ -12,15 +13,20 @@ def start_trading(args: Dict[str, Any]) -> int:
# Import here to avoid loading worker module when it's not used
from freqtrade.worker import Worker
def term_handler(signum, frame):
# Raise KeyboardInterrupt - so we can handle it in the same way as Ctrl-C
raise KeyboardInterrupt()
# Create and run worker
worker = None
try:
signal.signal(signal.SIGTERM, term_handler)
worker = Worker(args)
worker.run()
except Exception as e:
logger.error(str(e))
logger.exception("Fatal exception!")
except KeyboardInterrupt:
except (KeyboardInterrupt):
logger.info('SIGINT received, aborting ...')
finally:
if worker:

View File

@@ -27,10 +27,7 @@ def _extend_validator(validator_class):
if 'default' in subschema:
instance.setdefault(prop, subschema['default'])
for error in validate_properties(
validator, properties, instance, schema,
):
yield error
yield from validate_properties(validator, properties, instance, schema)
return validators.extend(
validator_class, {'properties': set_defaults}
@@ -177,7 +174,7 @@ def _validate_whitelist(conf: Dict[str, Any]) -> None:
return
for pl in conf.get('pairlists', [{'method': 'StaticPairList'}]):
if (pl.get('method') == 'StaticPairList'
if (isinstance(pl, dict) and pl.get('method') == 'StaticPairList'
and not conf.get('exchange', {}).get('pair_whitelist')):
raise OperationalException("StaticPairList requires pair_whitelist to be set.")

View File

@@ -28,7 +28,7 @@ class Configuration:
Reuse this class for the bot, backtesting, hyperopt and every script that required configuration
"""
def __init__(self, args: Dict[str, Any], runmode: RunMode = None) -> None:
def __init__(self, args: Dict[str, Any], runmode: Optional[RunMode] = None) -> None:
self.args = args
self.config: Optional[Config] = None
self.runmode = runmode
@@ -203,7 +203,7 @@ class Configuration:
# This will override the strategy configuration
self._args_to_config(config, argname='timeframe',
logstring='Parameter -i/--timeframe detected ... '
'Using timeframe: {} ...')
'Using timeframe: {} ...')
self._args_to_config(config, argname='position_stacking',
logstring='Parameter --enable-position-stacking detected ...')
@@ -300,6 +300,9 @@ class Configuration:
self._args_to_config(config, argname='hyperoptexportfilename',
logstring='Using hyperopt file: {}')
self._args_to_config(config, argname='lookahead_analysis_exportfilename',
logstring='Saving lookahead analysis results into {} ...')
self._args_to_config(config, argname='epochs',
logstring='Parameter --epochs detected ... '
'Will run Hyperopt with for {} epochs ...'
@@ -465,6 +468,28 @@ class Configuration:
self._args_to_config(config, argname='timerange',
logstring='Filter trades by timerange: {}')
self._args_to_config(config, argname='analysis_rejected',
logstring='Analyse rejected signals: {}')
self._args_to_config(config, argname='analysis_to_csv',
logstring='Store analysis tables to CSV: {}')
self._args_to_config(config, argname='analysis_csv_path',
logstring='Path to store analysis CSVs: {}')
self._args_to_config(config, argname='analysis_csv_path',
logstring='Path to store analysis CSVs: {}')
# Lookahead analysis results
self._args_to_config(config, argname='targeted_trade_amount',
logstring='Targeted Trade amount: {}')
self._args_to_config(config, argname='minimum_trade_amount',
logstring='Minimum Trade amount: {}')
self._args_to_config(config, argname='lookahead_analysis_exportfilename',
logstring='Path to store lookahead-analysis-results: {}')
def _process_runmode(self, config: Config) -> None:
self._args_to_config(config, argname='dry_run',
@@ -543,6 +568,7 @@ class Configuration:
# Fall back to /dl_path/pairs.json
pairs_file = config['datadir'] / 'pairs.json'
if pairs_file.exists():
logger.info(f'Reading pairs file "{pairs_file}".')
config['pairs'] = load_file(pairs_file)
if 'pairs' in config and isinstance(config['pairs'], list):
config['pairs'].sort()

View File

@@ -0,0 +1,8 @@
import os
def running_in_docker() -> bool:
"""
Check if we are running in a docker container
"""
return os.environ.get('FT_APP_ENV') == 'docker'

View File

@@ -3,6 +3,7 @@ import shutil
from pathlib import Path
from typing import Optional
from freqtrade.configuration.detect_environment import running_in_docker
from freqtrade.constants import (USER_DATA_FILES, USERPATH_FREQAIMODELS, USERPATH_HYPEROPTS,
USERPATH_NOTEBOOKS, USERPATH_STRATEGIES, Config)
from freqtrade.exceptions import OperationalException
@@ -30,8 +31,7 @@ def chown_user_directory(directory: Path) -> None:
Use Sudo to change permissions of the home-directory if necessary
Only applies when running in docker!
"""
import os
if os.environ.get('FT_APP_ENV') == 'docker':
if running_in_docker():
try:
import subprocess
subprocess.check_output(

View File

@@ -32,7 +32,7 @@ def flat_vars_to_nested_dict(env_dict: Dict[str, Any], prefix: str) -> Dict[str,
:param prefix: Prefix to consider (usually FREQTRADE__)
:return: Nested dict based on available and relevant variables.
"""
no_convert = ['CHAT_ID']
no_convert = ['CHAT_ID', 'PASSWORD']
relevant_vars: Dict[str, Any] = {}
for env_var, val in sorted(env_dict.items()):

View File

@@ -6,7 +6,7 @@ import re
import sys
from copy import deepcopy
from pathlib import Path
from typing import Any, Dict, List
from typing import Any, Dict, List, Optional
import rapidjson
@@ -58,7 +58,7 @@ def load_config_file(path: str) -> Dict[str, Any]:
"""
try:
# Read config from stdin if requested in the options
with open(path) if path != '-' else sys.stdin as file:
with Path(path).open() if path != '-' else sys.stdin as file:
config = rapidjson.load(file, parse_mode=CONFIG_PARSE_MODE)
except FileNotFoundError:
raise OperationalException(
@@ -75,7 +75,8 @@ def load_config_file(path: str) -> Dict[str, Any]:
return config
def load_from_files(files: List[str], base_path: Path = None, level: int = 0) -> Dict[str, Any]:
def load_from_files(
files: List[str], base_path: Optional[Path] = None, level: int = 0) -> Dict[str, Any]:
"""
Recursively load configuration files if specified.
Sub-files are assumed to be relative to the initial config.

View File

@@ -6,7 +6,7 @@ import re
from datetime import datetime, timezone
from typing import Optional
import arrow
from typing_extensions import Self
from freqtrade.constants import DATETIME_PRINT_FORMAT
from freqtrade.exceptions import OperationalException
@@ -109,15 +109,15 @@ class TimeRange:
self.startts = int(min_date.timestamp() + timeframe_secs * startup_candles)
self.starttype = 'date'
@staticmethod
def parse_timerange(text: Optional[str]) -> 'TimeRange':
@classmethod
def parse_timerange(cls, text: Optional[str]) -> Self:
"""
Parse the value of the argument --timerange to determine what is the range desired
:param text: value from --timerange
:return: Start and End range period
"""
if text is None:
return TimeRange(None, None, 0, 0)
if not text:
return cls(None, None, 0, 0)
syntax = [(r'^-(\d{8})$', (None, 'date')),
(r'^(\d{8})-$', ('date', None)),
(r'^(\d{8})-(\d{8})$', ('date', 'date')),
@@ -139,7 +139,8 @@ class TimeRange:
if stype[0]:
starts = rvals[index]
if stype[0] == 'date' and len(starts) == 8:
start = arrow.get(starts, 'YYYYMMDD').int_timestamp
start = int(datetime.strptime(starts, '%Y%m%d').replace(
tzinfo=timezone.utc).timestamp())
elif len(starts) == 13:
start = int(starts) // 1000
else:
@@ -148,7 +149,8 @@ class TimeRange:
if stype[1]:
stops = rvals[index]
if stype[1] == 'date' and len(stops) == 8:
stop = arrow.get(stops, 'YYYYMMDD').int_timestamp
stop = int(datetime.strptime(stops, '%Y%m%d').replace(
tzinfo=timezone.utc).timestamp())
elif len(stops) == 13:
stop = int(stops) // 1000
else:
@@ -156,5 +158,5 @@ class TimeRange:
if start > stop > 0:
raise OperationalException(
f'Start date is after stop date for timerange "{text}"')
return TimeRange(stype[0], stype[1], start, stop)
return cls(stype[0], stype[1], start, stop)
raise OperationalException(f'Incorrect syntax for timerange "{text}"')

View File

@@ -5,11 +5,11 @@ bot constants
"""
from typing import Any, Dict, List, Literal, Tuple
from freqtrade.enums import CandleType, RPCMessageType
from freqtrade.enums import CandleType, PriceType, RPCMessageType
DOCS_LINK = "https://www.freqtrade.io/en/stable"
DEFAULT_CONFIG = 'config.json'
DEFAULT_EXCHANGE = 'bittrex'
PROCESS_THROTTLE_SECS = 5 # sec
HYPEROPT_EPOCH = 100 # epochs
RETRY_TIMEOUT = 30 # sec
@@ -25,19 +25,21 @@ PRICING_SIDES = ['ask', 'bid', 'same', 'other']
ORDERTYPE_POSSIBILITIES = ['limit', 'market']
_ORDERTIF_POSSIBILITIES = ['GTC', 'FOK', 'IOC', 'PO']
ORDERTIF_POSSIBILITIES = _ORDERTIF_POSSIBILITIES + [t.lower() for t in _ORDERTIF_POSSIBILITIES]
STOPLOSS_PRICE_TYPES = [p for p in PriceType]
HYPEROPT_LOSS_BUILTIN = ['ShortTradeDurHyperOptLoss', 'OnlyProfitHyperOptLoss',
'SharpeHyperOptLoss', 'SharpeHyperOptLossDaily',
'SortinoHyperOptLoss', 'SortinoHyperOptLossDaily',
'CalmarHyperOptLoss',
'MaxDrawDownHyperOptLoss', 'MaxDrawDownRelativeHyperOptLoss',
'ProfitDrawDownHyperOptLoss']
AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'ProducerPairList',
AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'ProducerPairList', 'RemotePairList',
'AgeFilter', 'OffsetFilter', 'PerformanceFilter',
'PrecisionFilter', 'PriceFilter', 'RangeStabilityFilter',
'ShuffleFilter', 'SpreadFilter', 'VolatilityFilter']
AVAILABLE_PROTECTIONS = ['CooldownPeriod', 'LowProfitPairs', 'MaxDrawdown', 'StoplossGuard']
AVAILABLE_DATAHANDLERS_TRADES = ['json', 'jsongz', 'hdf5']
AVAILABLE_DATAHANDLERS = AVAILABLE_DATAHANDLERS_TRADES + ['feather', 'parquet']
AVAILABLE_PROTECTIONS = ['CooldownPeriod',
'LowProfitPairs', 'MaxDrawdown', 'StoplossGuard']
AVAILABLE_DATAHANDLERS_TRADES = ['json', 'jsongz', 'hdf5', 'feather']
AVAILABLE_DATAHANDLERS = AVAILABLE_DATAHANDLERS_TRADES + ['parquet']
BACKTEST_BREAKDOWNS = ['day', 'week', 'month']
BACKTEST_CACHE_AGE = ['none', 'day', 'week', 'month']
BACKTEST_CACHE_DEFAULT = 'day'
@@ -62,6 +64,8 @@ USERPATH_FREQAIMODELS = 'freqaimodels'
TELEGRAM_SETTING_OPTIONS = ['on', 'off', 'silent']
WEBHOOK_FORMAT_OPTIONS = ['form', 'json', 'raw']
FULL_DATAFRAME_THRESHOLD = 100
CUSTOM_TAG_MAX_LENGTH = 255
DL_DATA_TIMEFRAMES = ['1m', '5m']
ENV_VAR_PREFIX = 'FREQTRADE__'
@@ -108,6 +112,8 @@ MINIMAL_CONFIG = {
}
}
__MESSAGE_TYPE_DICT: Dict[str, Dict[str, str]] = {x: {'type': 'object'} for x in RPCMessageType}
# Required json-schema for user specified config
CONF_SCHEMA = {
'type': 'object',
@@ -145,7 +151,6 @@ CONF_SCHEMA = {
'patternProperties': {
'^[0-9.]+$': {'type': 'number'}
},
'minProperties': 1
},
'amount_reserve_percent': {'type': 'number', 'minimum': 0.0, 'maximum': 0.5},
'stoploss': {'type': 'number', 'maximum': 0, 'exclusiveMaximum': True, 'minimum': -1},
@@ -161,6 +166,9 @@ CONF_SCHEMA = {
'trading_mode': {'type': 'string', 'enum': TRADING_MODES},
'margin_mode': {'type': 'string', 'enum': MARGIN_MODES},
'reduce_df_footprint': {'type': 'boolean', 'default': False},
'minimum_trade_amount': {'type': 'number', 'default': 10},
'targeted_trade_amount': {'type': 'number', 'default': 20},
'lookahead_analysis_exportfilename': {'type': 'string'},
'liquidation_buffer': {'type': 'number', 'minimum': 0.0, 'maximum': 0.99},
'backtest_breakdown': {
'type': 'array',
@@ -229,6 +237,7 @@ CONF_SCHEMA = {
'default': 'market'},
'stoploss': {'type': 'string', 'enum': ORDERTYPE_POSSIBILITIES},
'stoploss_on_exchange': {'type': 'boolean'},
'stoploss_price_type': {'type': 'string', 'enum': STOPLOSS_PRICE_TYPES},
'stoploss_on_exchange_interval': {'type': 'number'},
'stoploss_on_exchange_limit_ratio': {'type': 'number', 'minimum': 0.0,
'maximum': 1.0}
@@ -347,7 +356,8 @@ CONF_SCHEMA = {
'format': {'type': 'string', 'enum': WEBHOOK_FORMAT_OPTIONS, 'default': 'form'},
'retries': {'type': 'integer', 'minimum': 0},
'retry_delay': {'type': 'number', 'minimum': 0},
**dict([(x, {'type': 'object'}) for x in RPCMessageType]),
**__MESSAGE_TYPE_DICT,
# **{x: {'type': 'object'} for x in RPCMessageType},
# Below -> Deprecated
'webhookentry': {'type': 'object'},
'webhookentrycancel': {'type': 'object'},
@@ -544,7 +554,7 @@ CONF_SCHEMA = {
"enabled": {"type": "boolean", "default": False},
"keras": {"type": "boolean", "default": False},
"write_metrics_to_disk": {"type": "boolean", "default": False},
"purge_old_models": {"type": "boolean", "default": True},
"purge_old_models": {"type": ["boolean", "number"], "default": 2},
"conv_width": {"type": "integer", "default": 1},
"train_period_days": {"type": "integer", "default": 0},
"backtest_period_days": {"type": "number", "default": 7},
@@ -566,7 +576,9 @@ CONF_SCHEMA = {
"shuffle": {"type": "boolean", "default": False},
"nu": {"type": "number", "default": 0.1}
},
}
},
"shuffle_after_split": {"type": "boolean", "default": False},
"buffer_train_data_candles": {"type": "integer", "default": 0}
},
"required": ["include_timeframes", "include_corr_pairlist", ]
},
@@ -584,6 +596,7 @@ CONF_SCHEMA = {
"rl_config": {
"type": "object",
"properties": {
"drop_ohlc_from_features": {"type": "boolean", "default": False},
"train_cycles": {"type": "integer"},
"max_trade_duration_candles": {"type": "integer"},
"add_state_info": {"type": "boolean", "default": False},
@@ -592,7 +605,8 @@ CONF_SCHEMA = {
"model_type": {"type": "string", "default": "PPO"},
"policy_type": {"type": "string", "default": "MlpPolicy"},
"net_arch": {"type": "array", "default": [128, 128]},
"randomize_startinng_position": {"type": "boolean", "default": False},
"randomize_starting_position": {"type": "boolean", "default": False},
"progress_bar": {"type": "boolean", "default": True},
"model_reward_parameters": {
"type": "object",
"properties": {
@@ -636,7 +650,6 @@ SCHEMA_TRADE_REQUIRED = [
SCHEMA_BACKTEST_REQUIRED = [
'exchange',
'max_open_trades',
'stake_currency',
'stake_amount',
'dry_run_wallet',
@@ -646,6 +659,7 @@ SCHEMA_BACKTEST_REQUIRED = [
SCHEMA_BACKTEST_REQUIRED_FINAL = SCHEMA_BACKTEST_REQUIRED + [
'stoploss',
'minimal_roi',
'max_open_trades'
]
SCHEMA_MINIMAL_REQUIRED = [
@@ -679,5 +693,9 @@ EntryExit = Literal['entry', 'exit']
BuySell = Literal['buy', 'sell']
MakerTaker = Literal['maker', 'taker']
BidAsk = Literal['bid', 'ask']
OBLiteral = Literal['asks', 'bids']
Config = Dict[str, Any]
# Exchange part of the configuration.
ExchangeConfig = Dict[str, Any]
IntOrInf = float

View File

@@ -10,7 +10,7 @@ from typing import Any, Dict, List, Optional, Union
import numpy as np
import pandas as pd
from freqtrade.constants import LAST_BT_RESULT_FN
from freqtrade.constants import LAST_BT_RESULT_FN, IntOrInf
from freqtrade.exceptions import OperationalException
from freqtrade.misc import json_load
from freqtrade.optimize.backtest_caching import get_backtest_metadata_filename
@@ -20,8 +20,8 @@ from freqtrade.persistence import LocalTrade, Trade, init_db
logger = logging.getLogger(__name__)
# Newest format
BT_DATA_COLUMNS = ['pair', 'stake_amount', 'amount', 'open_date', 'close_date',
'open_rate', 'close_rate',
BT_DATA_COLUMNS = ['pair', 'stake_amount', 'max_stake_amount', 'amount',
'open_date', 'close_date', 'open_rate', 'close_rate',
'fee_open', 'fee_close', 'trade_duration',
'profit_ratio', 'profit_abs', 'exit_reason',
'initial_stop_loss_abs', 'initial_stop_loss_ratio', 'stop_loss_abs',
@@ -90,7 +90,8 @@ def get_latest_hyperopt_filename(directory: Union[Path, str]) -> str:
return 'hyperopt_results.pickle'
def get_latest_hyperopt_file(directory: Union[Path, str], predef_filename: str = None) -> Path:
def get_latest_hyperopt_file(
directory: Union[Path, str], predef_filename: Optional[str] = None) -> Path:
"""
Get latest hyperopt export based on '.last_result.json'.
:param directory: Directory to search for last result
@@ -169,6 +170,7 @@ def load_and_merge_backtest_result(strategy_name: str, filename: Path, results:
def _get_backtest_files(dirname: Path) -> List[Path]:
# Weird glob expression here avoids including .meta.json files.
return list(reversed(sorted(dirname.glob('backtest-result-*-[0-9][0-9].json'))))
@@ -183,7 +185,7 @@ def get_backtest_resultlist(dirname: Path):
continue
for s, v in metadata.items():
results.append({
'filename': filename.name,
'filename': filename.stem,
'strategy': s,
'run_id': v['run_id'],
'backtest_start_time': v['backtest_start_time'],
@@ -192,8 +194,19 @@ def get_backtest_resultlist(dirname: Path):
return results
def delete_backtest_result(file_abs: Path):
"""
Delete backtest result file and corresponding metadata file.
"""
# *.meta.json
logger.info(f"Deleting backtest result file: {file_abs.name}")
file_abs_meta = file_abs.with_suffix('.meta.json')
file_abs.unlink()
file_abs_meta.unlink()
def find_existing_backtest_stats(dirname: Union[Path, str], run_ids: Dict[str, str],
min_backtest_date: datetime = None) -> Dict[str, Any]:
min_backtest_date: Optional[datetime] = None) -> Dict[str, Any]:
"""
Find existing backtest stats that match specified run IDs and load them.
:param dirname: pathlib.Path object, or string pointing to the file.
@@ -210,7 +223,6 @@ def find_existing_backtest_stats(dirname: Union[Path, str], run_ids: Dict[str, s
'strategy_comparison': [],
}
# Weird glob expression here avoids including .meta.json files.
for filename in _get_backtest_files(dirname):
metadata = load_backtest_metadata(filename)
if not metadata:
@@ -241,6 +253,27 @@ def find_existing_backtest_stats(dirname: Union[Path, str], run_ids: Dict[str, s
return results
def _load_backtest_data_df_compatibility(df: pd.DataFrame) -> pd.DataFrame:
"""
Compatibility support for older backtest data.
"""
df['open_date'] = pd.to_datetime(df['open_date'], utc=True)
df['close_date'] = pd.to_datetime(df['close_date'], utc=True)
# Compatibility support for pre short Columns
if 'is_short' not in df.columns:
df['is_short'] = False
if 'leverage' not in df.columns:
df['leverage'] = 1.0
if 'enter_tag' not in df.columns:
df['enter_tag'] = df['buy_tag']
df = df.drop(['buy_tag'], axis=1)
if 'max_stake_amount' not in df.columns:
df['max_stake_amount'] = df['stake_amount']
if 'orders' not in df.columns:
df['orders'] = None
return df
def load_backtest_data(filename: Union[Path, str], strategy: Optional[str] = None) -> pd.DataFrame:
"""
Load backtest data file.
@@ -269,24 +302,7 @@ def load_backtest_data(filename: Union[Path, str], strategy: Optional[str] = Non
data = data['strategy'][strategy]['trades']
df = pd.DataFrame(data)
if not df.empty:
df['open_date'] = pd.to_datetime(df['open_date'],
utc=True,
infer_datetime_format=True
)
df['close_date'] = pd.to_datetime(df['close_date'],
utc=True,
infer_datetime_format=True
)
# Compatibility support for pre short Columns
if 'is_short' not in df.columns:
df['is_short'] = 0
if 'leverage' not in df.columns:
df['leverage'] = 1.0
if 'enter_tag' not in df.columns:
df['enter_tag'] = df['buy_tag']
df = df.drop(['buy_tag'], axis=1)
if 'orders' not in df.columns:
df['orders'] = None
df = _load_backtest_data_df_compatibility(df)
else:
# old format - only with lists.
@@ -322,7 +338,7 @@ def analyze_trade_parallelism(results: pd.DataFrame, timeframe: str) -> pd.DataF
def evaluate_result_multi(results: pd.DataFrame, timeframe: str,
max_open_trades: int) -> pd.DataFrame:
max_open_trades: IntOrInf) -> pd.DataFrame:
"""
Find overlapping trades by expanding each trade once per period it was open
and then counting overlaps
@@ -335,7 +351,7 @@ def evaluate_result_multi(results: pd.DataFrame, timeframe: str,
return df_final[df_final['open_trades'] > max_open_trades]
def trade_list_to_dataframe(trades: List[LocalTrade]) -> pd.DataFrame:
def trade_list_to_dataframe(trades: Union[List[Trade], List[LocalTrade]]) -> pd.DataFrame:
"""
Convert list of Trade objects to pandas Dataframe
:param trades: List of trade objects
@@ -362,7 +378,7 @@ def load_trades_from_db(db_url: str, strategy: Optional[str] = None) -> pd.DataF
filters = []
if strategy:
filters.append(Trade.strategy == strategy)
trades = trade_list_to_dataframe(Trade.get_trades(filters).all())
trades = trade_list_to_dataframe(list(Trade.get_trades(filters).all()))
return trades

View File

@@ -11,7 +11,7 @@ import pandas as pd
from pandas import DataFrame, to_datetime
from freqtrade.constants import DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS, Config, TradeList
from freqtrade.enums import CandleType
from freqtrade.enums import CandleType, TradingMode
logger = logging.getLogger(__name__)
@@ -34,7 +34,7 @@ def ohlcv_to_dataframe(ohlcv: list, timeframe: str, pair: str, *,
cols = DEFAULT_DATAFRAME_COLUMNS
df = DataFrame(ohlcv, columns=cols)
df['date'] = to_datetime(df['date'], unit='ms', utc=True, infer_datetime_format=True)
df['date'] = to_datetime(df['date'], unit='ms', utc=True)
# Some exchanges return int values for Volume and even for OHLC.
# Convert them since TA-LIB indicators used in the strategy assume floats
@@ -96,8 +96,14 @@ def ohlcv_fill_up_missing_data(dataframe: DataFrame, timeframe: str, pair: str)
'volume': 'sum'
}
timeframe_minutes = timeframe_to_minutes(timeframe)
resample_interval = f'{timeframe_minutes}min'
if timeframe_minutes >= 43200 and timeframe_minutes < 525600:
# Monthly candles need special treatment to stick to the 1st of the month
resample_interval = f'{timeframe}S'
elif timeframe_minutes > 43200:
resample_interval = timeframe
# Resample to create "NAN" values
df = dataframe.resample(f'{timeframe_minutes}min', on='date').agg(ohlcv_dict)
df = dataframe.resample(resample_interval, on='date').agg(ohlcv_dict)
# Forwardfill close for missing columns
df['close'] = df['close'].fillna(method='ffill')
@@ -122,7 +128,7 @@ def ohlcv_fill_up_missing_data(dataframe: DataFrame, timeframe: str, pair: str)
return df
def trim_dataframe(df: DataFrame, timerange, df_date_col: str = 'date',
def trim_dataframe(df: DataFrame, timerange, *, df_date_col: str = 'date',
startup_candles: int = 0) -> DataFrame:
"""
Trim dataframe based on given timerange
@@ -264,7 +270,6 @@ def convert_ohlcv_format(
convert_from: str,
convert_to: str,
erase: bool,
candle_type: CandleType
):
"""
Convert OHLCV from one format to another
@@ -272,7 +277,6 @@ def convert_ohlcv_format(
:param convert_from: Source format
:param convert_to: Target format
:param erase: Erase source data (does not apply if source and target format are identical)
:param candle_type: Any of the enum CandleType (must match trading mode!)
"""
from freqtrade.data.history.idatahandler import get_datahandler
src = get_datahandler(config['datadir'], convert_from)
@@ -280,37 +284,45 @@ def convert_ohlcv_format(
timeframes = config.get('timeframes', [config.get('timeframe')])
logger.info(f"Converting candle (OHLCV) for timeframe {timeframes}")
if 'pairs' not in config:
config['pairs'] = []
# Check timeframes or fall back to timeframe.
for timeframe in timeframes:
config['pairs'].extend(src.ohlcv_get_pairs(
config['datadir'],
timeframe,
candle_type=candle_type
))
config['pairs'] = sorted(set(config['pairs']))
logger.info(f"Converting candle (OHLCV) data for {config['pairs']}")
candle_types = [CandleType.from_string(ct) for ct in config.get('candle_types', [
c.value for c in CandleType])]
logger.info(candle_types)
paircombs = src.ohlcv_get_available_data(config['datadir'], TradingMode.SPOT)
paircombs.extend(src.ohlcv_get_available_data(config['datadir'], TradingMode.FUTURES))
for timeframe in timeframes:
for pair in config['pairs']:
data = src.ohlcv_load(pair=pair, timeframe=timeframe,
timerange=None,
fill_missing=False,
drop_incomplete=False,
startup_candles=0,
candle_type=candle_type)
logger.info(f"Converting {len(data)} {timeframe} {candle_type} candles for {pair}")
if len(data) > 0:
trg.ohlcv_store(
pair=pair,
timeframe=timeframe,
data=data,
candle_type=candle_type
)
if erase and convert_from != convert_to:
logger.info(f"Deleting source data for {pair} / {timeframe}")
src.ohlcv_purge(pair=pair, timeframe=timeframe, candle_type=candle_type)
if 'pairs' in config:
# Filter pairs
paircombs = [comb for comb in paircombs if comb[0] in config['pairs']]
if 'timeframes' in config:
paircombs = [comb for comb in paircombs if comb[1] in config['timeframes']]
paircombs = [comb for comb in paircombs if comb[2] in candle_types]
paircombs = sorted(paircombs, key=lambda x: (x[0], x[1], x[2].value))
formatted_paircombs = '\n'.join([f"{pair}, {timeframe}, {candle_type}"
for pair, timeframe, candle_type in paircombs])
logger.info(f"Converting candle (OHLCV) data for the following pair combinations:\n"
f"{formatted_paircombs}")
for pair, timeframe, candle_type in paircombs:
data = src.ohlcv_load(pair=pair, timeframe=timeframe,
timerange=None,
fill_missing=False,
drop_incomplete=False,
startup_candles=0,
candle_type=candle_type)
logger.info(f"Converting {len(data)} {timeframe} {candle_type} candles for {pair}")
if len(data) > 0:
trg.ohlcv_store(
pair=pair,
timeframe=timeframe,
data=data,
candle_type=candle_type
)
if erase and convert_from != convert_to:
logger.info(f"Deleting source data for {pair} / {timeframe}")
src.ohlcv_purge(pair=pair, timeframe=timeframe, candle_type=candle_type)
def reduce_dataframe_footprint(df: DataFrame) -> DataFrame:

View File

@@ -9,7 +9,7 @@ from collections import deque
from datetime import datetime, timezone
from typing import Any, Dict, List, Optional, Tuple
from pandas import DataFrame, to_timedelta
from pandas import DataFrame, Timedelta, Timestamp, to_timedelta
from freqtrade.configuration import TimeRange
from freqtrade.constants import (FULL_DATAFRAME_THRESHOLD, Config, ListPairsWithTimeframes,
@@ -18,8 +18,10 @@ from freqtrade.data.history import load_pair_history
from freqtrade.enums import CandleType, RPCMessageType, RunMode
from freqtrade.exceptions import ExchangeError, OperationalException
from freqtrade.exchange import Exchange, timeframe_to_seconds
from freqtrade.exchange.types import OrderBook
from freqtrade.misc import append_candles_to_dataframe
from freqtrade.rpc import RPCManager
from freqtrade.rpc.rpc_types import RPCAnalyzedDFMsg
from freqtrade.util import PeriodicCache
@@ -117,8 +119,7 @@ class DataProvider:
:param new_candle: This is a new candle
"""
if self.__rpc:
self.__rpc.send_msg(
{
msg: RPCAnalyzedDFMsg = {
'type': RPCMessageType.ANALYZED_DF,
'data': {
'key': pair_key,
@@ -126,7 +127,7 @@ class DataProvider:
'la': datetime.now(timezone.utc)
}
}
)
self.__rpc.send_msg(msg)
if new_candle:
self.__rpc.send_msg({
'type': RPCMessageType.NEW_CANDLE,
@@ -206,9 +207,11 @@ class DataProvider:
existing_df, _ = self.__producer_pairs_df[producer_name][pair_key]
# CHECK FOR MISSING CANDLES
timeframe_delta = to_timedelta(timeframe) # Convert the timeframe to a timedelta for pandas
local_last = existing_df.iloc[-1]['date'] # We want the last date from our copy
incoming_first = dataframe.iloc[0]['date'] # We want the first date from the incoming
# Convert the timeframe to a timedelta for pandas
timeframe_delta: Timedelta = to_timedelta(timeframe)
local_last: Timestamp = existing_df.iloc[-1]['date'] # We want the last date from our copy
# We want the first date from the incoming
incoming_first: Timestamp = dataframe.iloc[0]['date']
# Remove existing candles that are newer than the incoming first candle
existing_df1 = existing_df[existing_df['date'] < incoming_first]
@@ -221,7 +224,7 @@ class DataProvider:
# we missed some candles between our data and the incoming
# so return False and candle_difference.
if candle_difference > 1:
return (False, candle_difference)
return (False, int(candle_difference))
if existing_df1.empty:
appended_df = dataframe
else:
@@ -281,7 +284,7 @@ class DataProvider:
def historic_ohlcv(
self,
pair: str,
timeframe: str = None,
timeframe: Optional[str] = None,
candle_type: str = ''
) -> DataFrame:
"""
@@ -333,7 +336,7 @@ class DataProvider:
def get_pair_dataframe(
self,
pair: str,
timeframe: str = None,
timeframe: Optional[str] = None,
candle_type: str = ''
) -> DataFrame:
"""
@@ -415,16 +418,14 @@ class DataProvider:
def refresh(self,
pairlist: ListPairsWithTimeframes,
helping_pairs: ListPairsWithTimeframes = None) -> None:
helping_pairs: Optional[ListPairsWithTimeframes] = None) -> None:
"""
Refresh data, called with each cycle
"""
if self._exchange is None:
raise OperationalException(NO_EXCHANGE_EXCEPTION)
if helping_pairs:
self._exchange.refresh_latest_ohlcv(pairlist + helping_pairs)
else:
self._exchange.refresh_latest_ohlcv(pairlist)
final_pairs = (pairlist + helping_pairs) if helping_pairs else pairlist
self._exchange.refresh_latest_ohlcv(final_pairs)
@property
def available_pairs(self) -> ListPairsWithTimeframes:
@@ -439,7 +440,7 @@ class DataProvider:
def ohlcv(
self,
pair: str,
timeframe: str = None,
timeframe: Optional[str] = None,
copy: bool = True,
candle_type: str = ''
) -> DataFrame:
@@ -487,7 +488,7 @@ class DataProvider:
except ExchangeError:
return {}
def orderbook(self, pair: str, maximum: int) -> Dict[str, List]:
def orderbook(self, pair: str, maximum: int) -> OrderBook:
"""
Fetch latest l2 orderbook data
Warning: Does a network request - so use with common sense.

132
freqtrade/data/entryexitanalysis.py Executable file → Normal file
View File

@@ -1,5 +1,6 @@
import logging
from pathlib import Path
from typing import List
import joblib
import pandas as pd
@@ -15,22 +16,31 @@ from freqtrade.exceptions import OperationalException
logger = logging.getLogger(__name__)
def _load_signal_candles(backtest_dir: Path):
def _load_backtest_analysis_data(backtest_dir: Path, name: str):
if backtest_dir.is_dir():
scpf = Path(backtest_dir,
Path(get_latest_backtest_filename(backtest_dir)).stem + "_signals.pkl"
Path(get_latest_backtest_filename(backtest_dir)).stem + "_" + name + ".pkl"
)
else:
scpf = Path(backtest_dir.parent / f"{backtest_dir.stem}_signals.pkl")
scpf = Path(backtest_dir.parent / f"{backtest_dir.stem}_{name}.pkl")
try:
scp = open(scpf, "rb")
signal_candles = joblib.load(scp)
logger.info(f"Loaded signal candles: {str(scpf)}")
with scpf.open("rb") as scp:
loaded_data = joblib.load(scp)
logger.info(f"Loaded {name} candles: {str(scpf)}")
except Exception as e:
logger.error("Cannot load signal candles from pickled results: ", e)
logger.error(f"Cannot load {name} data from pickled results: ", e)
return None
return signal_candles
return loaded_data
def _load_rejected_signals(backtest_dir: Path):
return _load_backtest_analysis_data(backtest_dir, "rejected")
def _load_signal_candles(backtest_dir: Path):
return _load_backtest_analysis_data(backtest_dir, "signals")
def _process_candles_and_indicators(pairlist, strategy_name, trades, signal_candles):
@@ -43,16 +53,14 @@ def _process_candles_and_indicators(pairlist, strategy_name, trades, signal_cand
for pair in pairlist:
if pair in signal_candles[strategy_name]:
analysed_trades_dict[strategy_name][pair] = _analyze_candles_and_indicators(
pair,
trades,
signal_candles[strategy_name][pair])
pair, trades, signal_candles[strategy_name][pair])
except Exception as e:
print(f"Cannot process entry/exit reasons for {strategy_name}: ", e)
return analysed_trades_dict
def _analyze_candles_and_indicators(pair, trades, signal_candles):
def _analyze_candles_and_indicators(pair, trades: pd.DataFrame, signal_candles: pd.DataFrame):
buyf = signal_candles
if len(buyf) > 0:
@@ -85,7 +93,7 @@ def _analyze_candles_and_indicators(pair, trades, signal_candles):
return pd.DataFrame()
def _do_group_table_output(bigdf, glist):
def _do_group_table_output(bigdf, glist, csv_path: Path, to_csv=False, ):
for g in glist:
# 0: summary wins/losses grouped by enter tag
if g == "0":
@@ -116,11 +124,12 @@ def _do_group_table_output(bigdf, glist):
sortcols = ['total_num_buys']
_print_table(new, sortcols, show_index=True)
_print_table(new, sortcols, show_index=True, name="Group 0:",
to_csv=to_csv, csv_path=csv_path)
else:
agg_mask = {'profit_abs': ['count', 'sum', 'median', 'mean'],
'profit_ratio': ['sum', 'median', 'mean']}
'profit_ratio': ['median', 'mean', 'sum']}
agg_cols = ['num_buys', 'profit_abs_sum', 'profit_abs_median',
'profit_abs_mean', 'median_profit_pct', 'mean_profit_pct',
'total_profit_pct']
@@ -141,6 +150,12 @@ def _do_group_table_output(bigdf, glist):
# 4: profit summaries grouped by pair, enter_ and exit_tag (this can get quite large)
if g == "4":
group_mask = ['pair', 'enter_reason', 'exit_reason']
# 5: profit summaries grouped by exit_tag
if g == "5":
group_mask = ['exit_reason']
sortcols = ['exit_reason']
if group_mask:
new = bigdf.groupby(group_mask).agg(agg_mask).reset_index()
new.columns = group_mask + agg_cols
@@ -148,11 +163,24 @@ def _do_group_table_output(bigdf, glist):
new['mean_profit_pct'] = new['mean_profit_pct'] * 100
new['total_profit_pct'] = new['total_profit_pct'] * 100
_print_table(new, sortcols)
_print_table(new, sortcols, name=f"Group {g}:",
to_csv=to_csv, csv_path=csv_path)
else:
logger.warning("Invalid group mask specified.")
def _do_rejected_signals_output(rejected_signals_df: pd.DataFrame,
to_csv: bool = False, csv_path=None) -> None:
cols = ['pair', 'date', 'enter_tag']
sortcols = ['date', 'pair', 'enter_tag']
_print_table(rejected_signals_df[cols],
sortcols,
show_index=False,
name="Rejected Signals:",
to_csv=to_csv,
csv_path=csv_path)
def _select_rows_within_dates(df, timerange=None, df_date_col: str = 'date'):
if timerange:
if timerange.starttype == 'date':
@@ -186,38 +214,64 @@ def prepare_results(analysed_trades, stratname,
return res_df
def print_results(res_df, analysis_groups, indicator_list):
def print_results(res_df: pd.DataFrame, analysis_groups: List[str], indicator_list: List[str],
csv_path: Path, rejected_signals=None, to_csv=False):
if res_df.shape[0] > 0:
if analysis_groups:
_do_group_table_output(res_df, analysis_groups)
_do_group_table_output(res_df, analysis_groups, to_csv=to_csv, csv_path=csv_path)
if rejected_signals is not None:
if rejected_signals.empty:
print("There were no rejected signals.")
else:
_do_rejected_signals_output(rejected_signals, to_csv=to_csv, csv_path=csv_path)
# NB this can be large for big dataframes!
if "all" in indicator_list:
print(res_df)
elif indicator_list is not None:
_print_table(res_df,
show_index=False,
name="Indicators:",
to_csv=to_csv,
csv_path=csv_path)
elif indicator_list is not None and indicator_list:
available_inds = []
for ind in indicator_list:
if ind in res_df:
available_inds.append(ind)
ilist = ["pair", "enter_reason", "exit_reason"] + available_inds
_print_table(res_df[ilist], sortcols=['exit_reason'], show_index=False)
_print_table(res_df[ilist],
sortcols=['exit_reason'],
show_index=False,
name="Indicators:",
to_csv=to_csv,
csv_path=csv_path)
else:
print("\\No trades to show")
def _print_table(df, sortcols=None, show_index=False):
def _print_table(df: pd.DataFrame, sortcols=None, *, show_index=False, name=None,
to_csv=False, csv_path: Path):
if (sortcols is not None):
data = df.sort_values(sortcols)
else:
data = df
print(
tabulate(
data,
headers='keys',
tablefmt='psql',
showindex=show_index
if to_csv:
safe_name = Path(csv_path, name.lower().replace(" ", "_").replace(":", "") + ".csv")
data.to_csv(safe_name)
print(f"Saved {name} to {safe_name}")
else:
if name is not None:
print(name)
print(
tabulate(
data,
headers='keys',
tablefmt='psql',
showindex=show_index
)
)
)
def process_entry_exit_reasons(config: Config):
@@ -226,6 +280,11 @@ def process_entry_exit_reasons(config: Config):
enter_reason_list = config.get('enter_reason_list', ["all"])
exit_reason_list = config.get('exit_reason_list', ["all"])
indicator_list = config.get('indicator_list', [])
do_rejected = config.get('analysis_rejected', False)
to_csv = config.get('analysis_to_csv', False)
csv_path = Path(config.get('analysis_csv_path', config['exportfilename']))
if to_csv and not csv_path.is_dir():
raise OperationalException(f"Specified directory {csv_path} does not exist.")
timerange = TimeRange.parse_timerange(None if config.get(
'timerange') is None else str(config.get('timerange')))
@@ -235,8 +294,16 @@ def process_entry_exit_reasons(config: Config):
for strategy_name, results in backtest_stats['strategy'].items():
trades = load_backtest_data(config['exportfilename'], strategy_name)
if not trades.empty:
if trades is not None and not trades.empty:
signal_candles = _load_signal_candles(config['exportfilename'])
rej_df = None
if do_rejected:
rejected_signals_dict = _load_rejected_signals(config['exportfilename'])
rej_df = prepare_results(rejected_signals_dict, strategy_name,
enter_reason_list, exit_reason_list,
timerange=timerange)
analysed_trades_dict = _process_candles_and_indicators(
config['exchange']['pair_whitelist'], strategy_name,
trades, signal_candles)
@@ -247,7 +314,10 @@ def process_entry_exit_reasons(config: Config):
print_results(res_df,
analysis_groups,
indicator_list)
indicator_list,
rejected_signals=rej_df,
to_csv=to_csv,
csv_path=csv_path)
except ValueError as e:
raise OperationalException(e) from e

View File

@@ -6,7 +6,7 @@ Includes:
* download data from exchange and store to disk
"""
# flake8: noqa: F401
from .history_utils import (convert_trades_to_ohlcv, get_timerange, load_data, load_pair_history,
refresh_backtest_ohlcv_data, refresh_backtest_trades_data, refresh_data,
validate_backtest_data)
from .history_utils import (convert_trades_to_ohlcv, download_data_main, get_timerange, load_data,
load_pair_history, refresh_backtest_ohlcv_data,
refresh_backtest_trades_data, refresh_data, validate_backtest_data)
from .idatahandler import get_datahandler

Some files were not shown because too many files have changed in this diff Show More