Compare commits

...

2409 Commits

Author SHA1 Message Date
Matthias
f142abfb76 Merge pull request #9348 from freqtrade/new_release
New release 2023.10
2023-10-31 06:42:58 +01:00
Matthias
c98c6c38dc update binance leverage tiers 2023-10-30 20:10:07 +01:00
Matthias
9a73f7a7b8 Bump version to 2023.10 2023-10-29 13:51:19 +01:00
Matthias
7813d1acd6 Merge branch 'stable' into new_release 2023-10-29 13:51:10 +01:00
Matthias
2c20464983 Reinit orders list on "local" objects to instance variable 2023-10-29 09:18:00 +01:00
Matthias
e97d9013d5 Avoid having orders leak after multiple "from_json" calls 2023-10-29 09:17:07 +01:00
Matthias
1e18b35f22 Change box type to tip 2023-10-27 07:08:38 +02:00
Matthias
bb78285661 Add hint about helper commands to common mistakes section 2023-10-27 06:38:35 +02:00
Matthias
b47ba8cfd3 Merge pull request #9339 from freqtrade/fix/returndf-bug
fix: bug in startup candle offset
2023-10-26 19:49:44 +02:00
Matthias
1dccdf0594 bump ruff in pre-commit 2023-10-26 19:49:25 +02:00
robcaulk
5da48d8ffc chore: fix tests 2023-10-25 18:38:30 +02:00
robcaulk
4f4b7c5625 fix: bug in startup candle offset 2023-10-23 20:31:51 +02:00
Matthias
9dcf236387 Align flake and ruff configs further 2023-10-23 18:06:31 +02:00
Matthias
97bc5804fd Merge pull request #9334 from freqtrade/dependabot/pip/develop/tensorboard-2.15.0
Bump tensorboard from 2.14.1 to 2.15.0
2023-10-23 09:00:42 +02:00
Matthias
beab966851 Merge pull request #9328 from freqtrade/dependabot/pip/develop/websockets-12.0
Bump websockets from 11.0.3 to 12.0
2023-10-23 09:00:17 +02:00
Matthias
00a7e8f9a2 Merge pull request #9338 from freqtrade/dependabot/pip/develop/ccxt-4.1.22
Bump ccxt from 4.1.13 to 4.1.22
2023-10-23 08:57:12 +02:00
Matthias
59dc526683 Merge pull request #9335 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.10
Bump types-requests from 2.31.0.9 to 2.31.0.10
2023-10-23 08:56:50 +02:00
Matthias
aef7f9dc03 Merge pull request #9337 from freqtrade/dependabot/pip/develop/pytest-mock-3.12.0
Bump pytest-mock from 3.11.1 to 3.12.0
2023-10-23 08:56:36 +02:00
Matthias
abc6a08397 Merge pull request #9336 from freqtrade/dependabot/pip/develop/fastapi-0.104.0
Bump fastapi from 0.103.2 to 0.104.0
2023-10-23 08:56:20 +02:00
Matthias
eb4da8a6f6 Merge pull request #9332 from freqtrade/dependabot/pip/develop/ruff-0.1.1
Bump ruff from 0.0.292 to 0.1.1
2023-10-23 08:56:00 +02:00
dependabot[bot]
494fd734bc Bump ruff from 0.0.292 to 0.1.1
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.292 to 0.1.1.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/v0.0.292...v0.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 04:47:44 +00:00
Matthias
9174f60b1d Merge pull request #9330 from freqtrade/dependabot/pip/develop/mypy-1.6.1
Bump mypy from 1.6.0 to 1.6.1
2023-10-23 06:46:57 +02:00
Matthias
c2905a4522 use --output-format in ruff CI 2023-10-23 06:43:50 +02:00
Matthias
adf03e2ee3 Merge pull request #9329 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.3.1
Bump pymdown-extensions from 10.3 to 10.3.1
2023-10-23 06:32:13 +02:00
Matthias
fe5f085ec1 types-requests pre-commit 2023-10-23 06:31:22 +02:00
dependabot[bot]
748ac50d83 Bump ccxt from 4.1.13 to 4.1.22
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.1.13 to 4.1.22.
- [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.1.13...4.1.22)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-23 03:47:08 +00:00
dependabot[bot]
d2069c1729 Bump pytest-mock from 3.11.1 to 3.12.0
Bumps [pytest-mock](https://github.com/pytest-dev/pytest-mock) from 3.11.1 to 3.12.0.
- [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.11.1...v3.12.0)

---
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-10-23 03:47:01 +00:00
dependabot[bot]
38cf50830a Bump fastapi from 0.103.2 to 0.104.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.103.2 to 0.104.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.103.2...0.104.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-10-23 03:46:55 +00:00
dependabot[bot]
bf96a43efb Bump types-requests from 2.31.0.9 to 2.31.0.10
Bumps [types-requests](https://github.com/python/typeshed) from 2.31.0.9 to 2.31.0.10.
- [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-10-23 03:46:50 +00:00
dependabot[bot]
22b4555926 Bump tensorboard from 2.14.1 to 2.15.0
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.14.1 to 2.15.0.
- [Release notes](https://github.com/tensorflow/tensorboard/releases)
- [Changelog](https://github.com/tensorflow/tensorboard/blob/2.15.0/RELEASE.md)
- [Commits](https://github.com/tensorflow/tensorboard/compare/2.14.1...2.15.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-10-23 03:46:46 +00:00
dependabot[bot]
7fb3632e7b Bump mypy from 1.6.0 to 1.6.1
Bumps [mypy](https://github.com/python/mypy) from 1.6.0 to 1.6.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.6.0...v1.6.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-10-23 03:46:11 +00:00
dependabot[bot]
e5f0fe288a Bump pymdown-extensions from 10.3 to 10.3.1
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.3 to 10.3.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.3...10.3.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-10-23 03:46:06 +00:00
dependabot[bot]
58aaaffe2b Bump websockets from 11.0.3 to 12.0
Bumps [websockets](https://github.com/python-websockets/websockets) from 11.0.3 to 12.0.
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](https://github.com/python-websockets/websockets/compare/11.0.3...12.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-10-23 03:46:02 +00:00
Matthias
c62aefbfde Merge pull request #9327 from amargedon/mapping-fiat-usdc
Add FIAT mapping for USDC
2023-10-22 20:12:42 +02:00
amargedon
16dfde22fc Add FIAT mapping for USDC 2023-10-22 18:43:35 +02:00
Matthias
bbbc8a760c Fix stop evaluation sequence to have stop before liquidation
Adjust test to have liquidation above stop
closes #9296
2023-10-22 09:24:28 +02:00
Matthias
9b45bb2e24 Merge pull request #9325 from freqtrade/revert-9281-dependabot/pip/develop/torch-2.1.0
Revert "Bump torch from 2.0.1 to 2.1.0"
2023-10-22 09:23:58 +02:00
Matthias
e69c21c9f5 Revert "Bump torch from 2.0.1 to 2.1.0" 2023-10-22 08:59:23 +02:00
Robert Caulk
72933859cf Merge pull request #9281 from freqtrade/dependabot/pip/develop/torch-2.1.0
Bump torch from 2.0.1 to 2.1.0
2023-10-22 08:01:16 +02:00
Matthias
0a5cee6a73 Ensure we're not erroring on invalid custom_entry / exit prices
closes #9323
2023-10-19 22:06:21 +02:00
Matthias
a80c979482 Improve behavior when downloading trades data on time-based pagination
closes #9307
2023-10-18 20:26:51 +02:00
Matthias
4a4b695b94 Merge pull request #9321 from freqtrade/dependabot/pip/urllib3-2.0.7
Bump urllib3 from 2.0.6 to 2.0.7
2023-10-18 06:26:10 +02:00
dependabot[bot]
a8c246ce0d Bump urllib3 from 2.0.6 to 2.0.7
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.6 to 2.0.7.
- [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.6...2.0.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-17 21:02:44 +00:00
Matthias
c6e979ddda Merge pull request #9303 from freqtrade/fix/progressbarCallback
Improve freqAI RL (error) behavior
2023-10-17 18:01:31 +02:00
Matthias
1a78346cf1 Add further ebug log message for stopping clarity for --dl-data 2023-10-17 07:11:06 +02:00
Matthias
e6d0d53e47 Add further ebug log message for stopping clarity 2023-10-17 07:03:03 +02:00
Matthias
68680bb2c6 Merge pull request #9314 from freqtrade/dependabot/pip/develop/numpy-1.26.1
Bump numpy from 1.25.2 to 1.26.1
2023-10-16 19:33:07 +02:00
Matthias
7de415a6a4 Don't bump numpy for armhf just yet 2023-10-16 18:28:00 +02:00
dependabot[bot]
f46fa440f0 Bump numpy from 1.25.2 to 1.26.1
Bumps [numpy](https://github.com/numpy/numpy) from 1.25.2 to 1.26.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.2...v1.26.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 16:27:50 +00:00
Matthias
56177d7e92 Merge pull request #9317 from freqtrade/dependabot/pip/develop/ccxt-4.1.13
Bump ccxt from 4.1.8 to 4.1.13
2023-10-16 18:27:02 +02:00
Matthias
41584317e4 Merge pull request #9311 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.9
Bump types-requests from 2.31.0.8 to 2.31.0.9
2023-10-16 14:52:35 +02:00
Matthias
3264e2c31d pre-commit requests bump 2023-10-16 13:38:01 +02:00
dependabot[bot]
fadc7a2051 Bump types-requests from 2.31.0.8 to 2.31.0.9
Bumps [types-requests](https://github.com/python/typeshed) from 2.31.0.8 to 2.31.0.9.
- [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-10-16 09:59:18 +00:00
Matthias
cebc55687b Merge pull request #9316 from freqtrade/dependabot/pip/develop/mypy-1.6.0
Bump mypy from 1.5.1 to 1.6.0
2023-10-16 11:58:20 +02:00
dependabot[bot]
5940279f7b Bump mypy from 1.5.1 to 1.6.0
Bumps [mypy](https://github.com/python/mypy) from 1.5.1 to 1.6.0.
- [Commits](https://github.com/python/mypy/compare/v1.5.1...v1.6.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-10-16 07:01:34 +00:00
dependabot[bot]
35f6333b67 Bump ccxt from 4.1.8 to 4.1.13
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.1.8 to 4.1.13.
- [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.1.8...4.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-10-16 07:01:30 +00:00
Matthias
262b044969 Merge pull request #9312 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.22
Bump sqlalchemy from 2.0.21 to 2.0.22
2023-10-16 09:00:55 +02:00
Matthias
a571df784c Merge pull request #9318 from freqtrade/dependabot/pip/develop/pre-commit-3.5.0
Bump pre-commit from 3.4.0 to 3.5.0
2023-10-16 09:00:36 +02:00
Matthias
078aa8327b Merge pull request #9315 from freqtrade/dependabot/pip/develop/ast-comments-1.1.2
Bump ast-comments from 1.1.0 to 1.1.2
2023-10-16 07:25:41 +02:00
Matthias
10945edbe6 Merge pull request #9313 from freqtrade/dependabot/pip/develop/mkdocs-material-9.4.6
Bump mkdocs-material from 9.4.4 to 9.4.6
2023-10-16 07:03:05 +02:00
Matthias
5d9b69cbfe sqlalchemy - precommit 2023-10-16 06:33:53 +02:00
Matthias
89117dd53f Merge pull request #9310 from freqtrade/dependabot/pip/develop/psutil-5.9.6
Bump psutil from 5.9.5 to 5.9.6
2023-10-16 06:33:03 +02:00
Matthias
4af9654696 Merge pull request #9308 from freqtrade/dependabot/pip/develop/orjson-3.9.9
Bump orjson from 3.9.7 to 3.9.9
2023-10-16 06:32:33 +02:00
dependabot[bot]
1e0ce7d47a Bump pre-commit from 3.4.0 to 3.5.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.4.0 to 3.5.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.4.0...v3.5.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-10-16 03:49:38 +00:00
dependabot[bot]
27cd54b42c Bump ast-comments from 1.1.0 to 1.1.2
Bumps [ast-comments](https://github.com/t3rn0/ast-comments) from 1.1.0 to 1.1.2.
- [Release notes](https://github.com/t3rn0/ast-comments/releases)
- [Commits](https://github.com/t3rn0/ast-comments/compare/1.1.0...1.1.2)

---
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-10-16 03:49:12 +00:00
dependabot[bot]
ec64a182f9 Bump mkdocs-material from 9.4.4 to 9.4.6
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.4.4 to 9.4.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.4.4...9.4.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-10-16 03:48:51 +00:00
dependabot[bot]
dd30df7057 Bump sqlalchemy from 2.0.21 to 2.0.22
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.21 to 2.0.22.
- [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-10-16 03:48:44 +00:00
dependabot[bot]
4c6e33aa82 Bump psutil from 5.9.5 to 5.9.6
Bumps [psutil](https://github.com/giampaolo/psutil) from 5.9.5 to 5.9.6.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-5.9.5...release-5.9.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 03:48:10 +00:00
dependabot[bot]
8cb934849a Bump orjson from 3.9.7 to 3.9.9
Bumps [orjson](https://github.com/ijl/orjson) from 3.9.7 to 3.9.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.9.7...3.9.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-10-16 03:47:58 +00:00
Matthias
c627aee096 Merge pull request #9304 from stash86/bt-metrics
have to use bitwise operator on series comparison, otherwise ambiguous error is thrown
2023-10-15 13:07:54 +02:00
Stefano Ariestasia
9d552d45c2 have to use bitwise operator, otherwise ambiguous error is thrown 2023-10-15 19:32:03 +09:00
Matthias
1e1b8dbe53 Handle multiproc calls for now 2023-10-15 12:03:18 +02:00
Matthias
2d9d8dc976 Improve logic for progressbarcallback handling 2023-10-15 11:20:25 +02:00
Matthias
ba674fc796 Type-ignore training-envs 2023-10-15 11:20:11 +02:00
Matthias
58550515ad Fix deprecation warning from tensorboard-callback 2023-10-15 11:04:05 +02:00
Matthias
27bae60b68 Fix typo 2023-10-15 10:51:36 +02:00
Matthias
646dd63faf Properly close out progressbarCallback
based on suggestions provided in https://github.com/DLR-RM/stable-baselines3/issues/1645
2023-10-15 10:41:07 +02:00
Matthias
8d2b389e27 Fix wording in log msg 2023-10-15 10:40:45 +02:00
Matthias
fa174a392a Merge pull request #9298 from freqtrade/funding_fees
improve Funding fee behavior
2023-10-13 16:38:16 +02:00
Matthias
042e35e8d3 Improve funding fee startup behavior 2023-10-13 06:45:00 +02:00
Matthias
b76513ce33 Fix typo in trade_model 2023-10-12 10:18:57 +00:00
Matthias
368bfcf476 Add comment for funding fees running 2023-10-12 07:25:46 +02:00
Matthias
fee3c598d0 Move schedule to 1 minute after the hour
This will avoid congestion at :00, and make sure that the dry-run funding fees are actually already available
2023-10-12 07:16:56 +02:00
Matthias
69264cc164 Reduce funding fee update calls
Funding fees update every 4-8 hours - calling this every 15 minutes is way overboard.
2023-10-12 07:13:30 +02:00
Matthias
e81929bc55 Have test use funding_fee_running 2023-10-12 07:01:43 +02:00
Matthias
0843b19b6c Implement logic around funding_fees runnign 2023-10-12 06:53:46 +02:00
Matthias
813b472c6c Add funding_fee_running column 2023-10-12 06:48:35 +02:00
Matthias
2f079711ec Add explicit test for get_funding_fees logic 2023-10-12 06:27:57 +02:00
Matthias
97e9d2dc42 Remove get_funding_fee error handling - it's no longer raising this error. 2023-10-12 06:27:35 +02:00
Matthias
7344f20803 Handle funding_fee error in exchange class 2023-10-12 06:27:29 +02:00
Matthias
bfe04464b4 Handle funding fee errors for regular trades per trade 2023-10-11 20:27:54 +02:00
Matthias
2225f5661b Additional funding fee update after additional entry orders 2023-10-11 20:27:03 +02:00
Matthias
9e77c93a54 Tighten funding-fee variance for backtest 2023-10-11 19:49:33 +02:00
Matthias
b65fa98cee Simplify backtesting by using current_time more consequently 2023-10-11 19:45:00 +02:00
Matthias
b57821b273 Add set_funding_fees to backtesting 2023-10-11 19:38:58 +02:00
Matthias
db7f9598b0 add set_funding_fees method 2023-10-11 19:38:46 +02:00
Matthias
e547da10de Move funding fee assignment to update_trade 2023-10-11 18:28:15 +02:00
Matthias
5a0c15f377 Update Idem test 2023-10-10 18:21:52 +02:00
Matthias
0f5b69b4f2 Move from_json to LocalTrade class 2023-10-10 07:13:32 +02:00
Matthias
86d4497aaf Add additional test for from_json 2023-10-09 20:01:41 +02:00
Matthias
4b80961c65 Merge pull request #9276 from freqtrade/cancel_behavior
Improve Cancel order messaging behavior
2023-10-09 18:13:04 +02:00
Matthias
785cc9df85 Merge pull request #9293 from freqtrade/revert-9285-dependabot/pip/develop/tables-3.9.1
Revert "Bump tables from 3.8.0 to 3.9.1"
2023-10-09 18:11:16 +02:00
Matthias
1bfecb0313 Revert "Bump tables from 3.8.0 to 3.9.1" 2023-10-09 18:11:01 +02:00
Matthias
b88a561eb5 Merge pull request #9283 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.8
Bump types-requests from 2.31.0.7 to 2.31.0.8
2023-10-09 09:42:26 +02:00
Matthias
4bf026605e Merge pull request #9289 from freqtrade/dependabot/pip/develop/markdown-3.5
Bump markdown from 3.4.4 to 3.5
2023-10-09 09:42:13 +02:00
Matthias
db6933856f Merge pull request #9288 from freqtrade/dependabot/pip/develop/aiohttp-3.8.6
Bump aiohttp from 3.8.5 to 3.8.6
2023-10-09 09:41:49 +02:00
Matthias
01107ffa59 Merge pull request #9282 from freqtrade/dependabot/pip/develop/python-telegram-bot-20.6
Bump python-telegram-bot from 20.5 to 20.6
2023-10-09 09:41:32 +02:00
dependabot[bot]
74f678a26f Bump markdown from 3.4.4 to 3.5
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.4.4 to 3.5.
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.4.4...3.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 06:13:16 +00:00
Matthias
bf93648198 Merge pull request #9287 from freqtrade/dependabot/pip/develop/nbconvert-7.9.2
Bump nbconvert from 7.8.0 to 7.9.2
2023-10-09 08:12:34 +02:00
Matthias
51dccaeb4c Merge pull request #9280 from freqtrade/dependabot/pip/develop/mkdocs-material-9.4.4
Bump mkdocs-material from 9.4.2 to 9.4.4
2023-10-09 08:11:04 +02:00
Matthias
ed4252af53 Merge pull request #9285 from freqtrade/dependabot/pip/develop/tables-3.9.1
Bump tables from 3.8.0 to 3.9.1
2023-10-09 08:09:33 +02:00
Matthias
2fde902c82 Merge pull request #9284 from freqtrade/dependabot/pip/develop/python-rapidjson-1.12
Bump python-rapidjson from 1.11 to 1.12
2023-10-09 08:07:24 +02:00
Matthias
4ea75af2d9 Merge pull request #9286 from freqtrade/dependabot/pip/develop/ruff-0.0.292
Bump ruff from 0.0.291 to 0.0.292
2023-10-09 08:07:00 +02:00
Matthias
1bba0cf7fc Bump pre-commit types-requests 2023-10-09 07:06:33 +02:00
Matthias
b1fd0c73c7 Add additional test case for funding-fee calculation 2023-10-09 07:05:39 +02:00
Matthias
29eb6d938b Update test for fixed funding_fee logic 2023-10-09 07:04:13 +02:00
Matthias
19620470bd Improve funding fee cutof logic 2023-10-09 07:04:13 +02:00
Matthias
7a69b01b9b avoid edge-case in test 2023-10-09 07:04:13 +02:00
Matthias
bc531cf846 Improve variable naming 2023-10-09 07:04:13 +02:00
Matthias
14908e52e2 Improv variable naming 2023-10-09 07:04:13 +02:00
dependabot[bot]
a86bf8d6d7 Bump aiohttp from 3.8.5 to 3.8.6
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.8.5 to 3.8.6.
- [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.5...v3.8.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 05:02:10 +00:00
Matthias
3662ca3ca6 Merge pull request #9279 from freqtrade/dependabot/pip/develop/ccxt-4.1.8
Bump ccxt from 4.0.112 to 4.1.8
2023-10-09 07:01:04 +02:00
dependabot[bot]
5fae03f7be Bump nbconvert from 7.8.0 to 7.9.2
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.8.0 to 7.9.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.8.0...v7.9.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:54:23 +00:00
dependabot[bot]
f7f0f3bebb Bump ruff from 0.0.291 to 0.0.292
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.291 to 0.0.292.
- [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.291...v0.0.292)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:54:13 +00:00
dependabot[bot]
ccbab6ee6f Bump tables from 3.8.0 to 3.9.1
Bumps [tables](https://github.com/PyTables/PyTables) from 3.8.0 to 3.9.1.
- [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.8.0...v3.9.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:53:53 +00:00
dependabot[bot]
ef12dafea8 Bump python-rapidjson from 1.11 to 1.12
Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 1.11 to 1.12.
- [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v1.11...v1.12)

---
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-10-09 03:53:42 +00:00
dependabot[bot]
08a65b50aa Bump types-requests from 2.31.0.7 to 2.31.0.8
Bumps [types-requests](https://github.com/python/typeshed) from 2.31.0.7 to 2.31.0.8.
- [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-10-09 03:53:37 +00:00
dependabot[bot]
d28d6cbdb4 Bump python-telegram-bot from 20.5 to 20.6
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 20.5 to 20.6.
- [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.5...v20.6)

---
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-10-09 03:53:34 +00:00
dependabot[bot]
41a6709ece Bump torch from 2.0.1 to 2.1.0
Bumps [torch](https://github.com/pytorch/pytorch) from 2.0.1 to 2.1.0.
- [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.1...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:53:23 +00:00
dependabot[bot]
756f5d5408 Bump mkdocs-material from 9.4.2 to 9.4.4
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.4.2 to 9.4.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.4.2...9.4.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-10-09 03:53:10 +00:00
dependabot[bot]
422b9c8fbc Bump ccxt from 4.0.112 to 4.1.8
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.112 to 4.1.8.
- [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.112...4.1.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 03:53:01 +00:00
Matthias
40ec2c4921 Improve messaging in case of delayed exchange cancel 2023-10-08 11:17:29 +02:00
Matthias
5cf7ad85a0 Adjust tests for new interface to handle_cancel_* methods 2023-10-08 10:44:37 +02:00
Matthias
f02c9f0435 Pass order object to handle_cancel* methods 2023-10-08 10:26:27 +02:00
Matthias
c59b5e7781 Improve type hinting 2023-10-08 09:58:06 +02:00
Matthias
e525c6694b Add ft_cancel_reason column to order object 2023-10-08 09:46:12 +02:00
Matthias
897c14e2e5 Don't check for "open orders" in handle_cancel_enter
it's actually irrelenant (closes #9273).
2023-10-08 09:40:46 +02:00
Matthias
6c00bf423b Fix comment 2023-10-08 08:59:18 +02:00
Matthias
094984eb2f Fix wrong typehint 2023-10-07 15:09:44 +02:00
Matthias
081411fba4 Improve bot typehints 2023-10-07 15:09:34 +02:00
Matthias
178c0972ff Read funding_fee on order objects in "from_json" 2023-10-07 08:43:06 +02:00
Matthias
910e317a45 Fix unhandled exception
closes #9270
2023-10-06 20:13:37 +02:00
Matthias
1ef5adbb0e Test for #9270 2023-10-06 20:13:11 +02:00
Matthias
f5db856a75 re-align adjust_entry_price between backtest and live 2023-10-05 18:11:35 +02:00
Matthias
b2ad40253f Hide most non-freqtrade logs in -v mode 2023-10-05 07:03:29 +02:00
Matthias
1e0d622d80 Don't run "recovery" when stop-orders are open 2023-10-05 06:45:00 +02:00
Matthias
1d941249ed Revert "Remove numpy armv7l lock since wheels are now available"
This reverts commit 04409602a6.
2023-10-04 19:57:26 +02:00
Matthias
5bfd3fdc33 Add openblas to armhf image 2023-10-04 17:55:15 +02:00
Matthias
753b807a45 Merge pull request #9211 from freqtrade/dependabot/pip/cryptography-41.0.4
Bump cryptography from 41.0.3 to 41.0.4
2023-10-04 07:12:01 +02:00
Matthias
04409602a6 Remove numpy armv7l lock since wheels are now available 2023-10-04 07:10:51 +02:00
Matthias
b2796b850b Add funding_fee export to order object
Helps debugging #9163
2023-10-04 06:36:39 +02:00
Matthias
8c633aab19 Merge pull request #9261 from stash86/bt-metrics
Fix visual issues and docs
2023-10-03 07:06:03 +02:00
Stefano Ariestasia
f14b4133c3 fix wording 2023-10-03 13:36:31 +09:00
Matthias
8f2e4aa4fd Merge pull request #9262 from freqtrade/dependabot/pip/urllib3-2.0.6
Bump urllib3 from 2.0.5 to 2.0.6
2023-10-03 06:17:44 +02:00
dependabot[bot]
3c2e043e82 Bump urllib3 from 2.0.5 to 2.0.6
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.5 to 2.0.6.
- [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/v2.0.5...2.0.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-03 00:22:39 +00:00
Stefano
609ed2d7b3 fix return values 2023-10-03 08:41:05 +09:00
Stefano Ariestasia
183166b3fb fix output if no variance, and fix docs 2023-10-03 08:27:28 +09:00
Matthias
12dc91719e Merge pull request #9247 from freqtrade/dependabot/pip/develop/pydantic-2.4.2
Bump pydantic from 2.3.0 to 2.4.2
2023-10-02 19:26:33 +02:00
dependabot[bot]
cd071c3bdc Bump cryptography from 41.0.3 to 41.0.4
Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.3 to 41.0.4.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/41.0.3...41.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 17:21:57 +00:00
Matthias
0618ecce47 Merge pull request #9249 from freqtrade/dependabot/pip/develop/ccxt-4.0.112
Bump ccxt from 4.0.105 to 4.0.112
2023-10-02 19:21:00 +02:00
Matthias
13438ad8de Merge pull request #9260 from freqtrade/revert-9250-dependabot/pip/develop/ast-comments-1.1.1
Revert "Bump ast-comments from 1.1.0 to 1.1.1"
2023-10-02 18:30:22 +02:00
Matthias
60c2b1d6ca Revert "Bump ast-comments from 1.1.0 to 1.1.1" 2023-10-02 18:02:36 +02:00
Matthias
eaf4ffcbaf Merge pull request #9253 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.7
Bump types-requests from 2.31.0.4 to 2.31.0.7
2023-10-02 16:11:00 +02:00
Matthias
79e59bdda0 Bump types-requests pre-commit 2023-10-02 13:37:49 +02:00
dependabot[bot]
b409ab5ead Bump pydantic from 2.3.0 to 2.4.2
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.3.0 to 2.4.2.
- [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/v2.3.0...v2.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 07:59:35 +00:00
Matthias
790c7036a1 Merge pull request #9258 from freqtrade/dependabot/pip/develop/fastapi-0.103.2
Bump fastapi from 0.103.1 to 0.103.2
2023-10-02 09:58:33 +02:00
Matthias
73902f507a Merge pull request #9250 from freqtrade/dependabot/pip/develop/ast-comments-1.1.1
Bump ast-comments from 1.1.0 to 1.1.1
2023-10-02 09:43:39 +02:00
Matthias
1a80f6bc4e Merge pull request #9257 from freqtrade/dependabot/pip/develop/arrow-1.3.0
Bump arrow from 1.2.3 to 1.3.0
2023-10-02 09:43:18 +02:00
dependabot[bot]
5feb7fe654 Bump ast-comments from 1.1.0 to 1.1.1
Bumps [ast-comments](https://github.com/t3rn0/ast-comments) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/t3rn0/ast-comments/releases)
- [Commits](https://github.com/t3rn0/ast-comments/compare/1.1.0...1.1.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-10-02 06:19:59 +00:00
dependabot[bot]
980960bc6a Bump arrow from 1.2.3 to 1.3.0
Bumps [arrow](https://github.com/arrow-py/arrow) from 1.2.3 to 1.3.0.
- [Release notes](https://github.com/arrow-py/arrow/releases)
- [Changelog](https://github.com/arrow-py/arrow/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/arrow-py/arrow/compare/1.2.3...1.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 06:18:56 +00:00
Matthias
52c614733f Merge pull request #9255 from freqtrade/dependabot/pip/develop/tensorboard-2.14.1
Bump tensorboard from 2.14.0 to 2.14.1
2023-10-02 08:18:48 +02:00
Matthias
e913d12c71 Merge pull request #9252 from freqtrade/dependabot/pip/develop/mkdocs-material-9.4.2
Bump mkdocs-material from 9.4.1 to 9.4.2
2023-10-02 08:18:08 +02:00
Matthias
5dc24232ca Merge pull request #9254 from freqtrade/dependabot/pip/develop/packaging-23.2
Bump packaging from 23.1 to 23.2
2023-10-02 08:17:53 +02:00
Matthias
ef2115d667 Merge pull request #9256 from freqtrade/dependabot/pip/develop/rich-13.6.0
Bump rich from 13.5.3 to 13.6.0
2023-10-02 08:17:31 +02:00
Matthias
74476eae43 Merge pull request #9251 from freqtrade/dependabot/pip/develop/scipy-1.11.3
Bump scipy from 1.11.2 to 1.11.3
2023-10-02 08:17:14 +02:00
Matthias
84335d58b3 Greatly speed up recursive by caching exchange 2023-10-02 06:34:35 +02:00
Matthias
f175fc6e9b Merge pull request #9248 from freqtrade/dependabot/pip/develop/schedule-1.2.1
Bump schedule from 1.2.0 to 1.2.1
2023-10-02 06:20:44 +02:00
dependabot[bot]
9edd7e6bc8 Bump fastapi from 0.103.1 to 0.103.2
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.103.1 to 0.103.2.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.103.1...0.103.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-10-02 03:41:42 +00:00
dependabot[bot]
7478c56ca5 Bump rich from 13.5.3 to 13.6.0
Bumps [rich](https://github.com/Textualize/rich) from 13.5.3 to 13.6.0.
- [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.5.3...v13.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:41:29 +00:00
dependabot[bot]
1f36f4802a Bump tensorboard from 2.14.0 to 2.14.1
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.14.0 to 2.14.1.
- [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.14.0...2.14.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-10-02 03:41:23 +00:00
dependabot[bot]
4d920d7866 Bump packaging from 23.1 to 23.2
Bumps [packaging](https://github.com/pypa/packaging) from 23.1 to 23.2.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/23.1...23.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:41:09 +00:00
dependabot[bot]
19fb3f9b54 Bump types-requests from 2.31.0.4 to 2.31.0.7
Bumps [types-requests](https://github.com/python/typeshed) from 2.31.0.4 to 2.31.0.7.
- [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-10-02 03:40:59 +00:00
dependabot[bot]
fafc102573 Bump mkdocs-material from 9.4.1 to 9.4.2
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.4.1 to 9.4.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.4.1...9.4.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-10-02 03:40:52 +00:00
dependabot[bot]
3868f9c698 Bump scipy from 1.11.2 to 1.11.3
Bumps [scipy](https://github.com/scipy/scipy) from 1.11.2 to 1.11.3.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.11.2...v1.11.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:40:40 +00:00
dependabot[bot]
0204f666b3 Bump ccxt from 4.0.105 to 4.0.112
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.105 to 4.0.112.
- [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.105...4.0.112)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:40:23 +00:00
dependabot[bot]
f32a13bfb0 Bump schedule from 1.2.0 to 1.2.1
Bumps [schedule](https://github.com/dbader/schedule) from 1.2.0 to 1.2.1.
- [Changelog](https://github.com/dbader/schedule/blob/master/HISTORY.rst)
- [Commits](https://github.com/dbader/schedule/compare/1.2.0...1.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-02 03:40:10 +00:00
Matthias
4809c9f07a Adjust tests for new naming 2023-10-01 08:00:09 +02:00
Matthias
19af144b33 Improve of analysis files further 2023-10-01 07:58:46 +02:00
Matthias
4db7962048 Update tests to new structure 2023-10-01 07:55:03 +02:00
Matthias
7e6f2cba53 Move analysis command into their own subspace 2023-10-01 07:54:09 +02:00
Matthias
c6199e5ca6 Merge pull request #9232 from freqtrade/kraken/dldata
Kraken - dataimport
2023-10-01 07:13:54 +02:00
Matthias
e73f215a67 Merge pull request #9242 from freqtrade/new_release
New release 2023.9
2023-09-30 17:25:36 +02:00
Matthias
f7ff1dc610 Bump develop version to 2023.10-dev 2023-09-30 13:13:18 +02:00
Matthias
96c5db3e38 Bump version to 2023.9 2023-09-30 13:02:02 +02:00
Matthias
c7f248fe3b Merge branch 'stable' into new_release 2023-09-30 13:01:44 +02:00
Matthias
e27636b798 Merge pull request #9241 from freqtrade/fix/process-only-new-candles
chore: protect users against process_only_new_candles=False
2023-09-30 12:53:54 +02:00
Matthias
2d56b1bc8c Fix whitespace 2023-09-30 08:23:21 +02:00
Matthias
659cbd987a Merge pull request #9152 from stash86/bt-metrics
Add recursive-analysis sub-command
2023-09-29 17:59:37 +02:00
Robert Caulk
aff5372a8f chore: protect users against process_only_new_candles=False 2023-09-29 13:12:44 +02:00
Stefano Ariestasia
2e7b5e2be9 Merge remote-tracking branch 'origin/bt-metrics' into bt-metrics 2023-09-29 14:19:37 +09:00
Stefano Ariestasia
7971cb29bb fix error message 2023-09-29 14:17:44 +09:00
Matthias
154149ff03 Slightly updated docs 2023-09-29 07:14:49 +02:00
Matthias
92d7f27983 Further update test a bit 2023-09-29 07:09:48 +02:00
Matthias
20ea679b2b Add "bias2" test with full lookahead bias 2023-09-29 07:06:11 +02:00
Matthias
39ede449a0 Rename test to avoid naming collision 2023-09-29 06:58:16 +02:00
Matthias
37550d3bdb Fix typo in --strategy_list 2023-09-28 21:01:37 +02:00
Matthias
b688526623 Improve sorting in docs
(these are more important than advanced strategy/docs)
2023-09-28 20:48:47 +02:00
Matthias
d52d30cfbe invert setting-location for stopLossPrice
Slowly migrating to stopLossPrice in favor of stopPrice.
2023-09-28 19:33:59 +02:00
Matthias
9cf08e0434 Merge pull request #9235 from stevanStevic/develop
Change word strat to strategy in freqai-feature-engineering.md
2023-09-28 06:58:49 +02:00
Matthias
56a85690b4 Update cached leverage tiers 2023-09-28 06:38:29 +02:00
Matthias
0f2612c231 Merge pull request #9223 from freqtrade/dependabot/pip/develop/catboost-1.2.2
Bump catboost from 1.2.1 to 1.2.2
2023-09-27 19:09:56 +02:00
Stevan Stevic
f9edc72f35 Merge pull request #1 from stevanStevic/minor-doc-fix
Change strat to strategy in freqai-feature-engineering.md
2023-09-27 17:02:44 +02:00
Stevan Stevic
90475e52db Change strat to strategy in freqai-feature-engineering.md 2023-09-27 16:56:03 +02:00
Matthias
504f51fabb Fix liquidation price setting in backtesting
closes #9205
2023-09-27 06:40:24 +02:00
Matthias
a905d1bd67 Assert backtesting liquidation price
Fails for #9205
2023-09-27 06:40:24 +02:00
Matthias
a27baf1a51 Improve backtest test 2023-09-27 06:40:24 +02:00
Matthias
f174c2e01e Merge pull request #9221 from freqtrade/dependabot/pip/develop/ccxt-4.0.105
Bump ccxt from 4.0.88 to 4.0.105
2023-09-26 17:48:04 +02:00
Matthias
3f60b2c140 Update bybit stoploss parameter/prop for new ccxt version 2023-09-26 06:45:48 +02:00
Matthias
927d1d2686 Split stop_price parameter from property 2023-09-26 06:34:10 +02:00
Matthias
d04a4db270 Merge pull request #9217 from freqtrade/frog-dataformat-docs-1
Update data-download.md
2023-09-26 06:30:34 +02:00
Matthias
8ad6eb9896 Update parameter value to be clearer 2023-09-25 19:55:58 +02:00
Matthias
74709461e3 Improve exception wording 2023-09-25 19:48:09 +02:00
Matthias
9e6cc5ebbd Improve comment on special handling 2023-09-25 19:46:27 +02:00
Matthias
a2d8f92e05 Add rudimentary test for test_trade_converter 2023-09-25 19:46:15 +02:00
Matthias
a7d90e2a25 Minor adjustments to conversions 2023-09-25 19:45:03 +02:00
Matthias
83b37e2f78 Add documentation for kraken data mode 2023-09-25 18:23:20 +02:00
Matthias
488629096b Improve logging in kraken-converter 2023-09-25 18:23:20 +02:00
Matthias
a3f167f6df Split format-from for trades to allow for trades special case 2023-09-25 18:23:20 +02:00
Matthias
1e8814b43e Improve handling of kraken dataconvert 2023-09-25 18:23:20 +02:00
Matthias
2e430519e3 Call kraken-convert in special cases 2023-09-25 18:23:20 +02:00
Matthias
2164b02c66 Add initial code for trade_kraken import 2023-09-25 18:23:20 +02:00
Matthias
ed45dcdf8a Update .gitignore to exclude memray stuff 2023-09-25 18:20:05 +02:00
Matthias
e518e741af update bybit live order to v5 2023-09-25 18:05:44 +02:00
Matthias
56b9c250ba Update order_parse online test 2023-09-25 18:05:40 +02:00
dependabot[bot]
a009816ac4 Bump ccxt from 4.0.88 to 4.0.105
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.88 to 4.0.105.
- [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.88...4.0.105)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 10:24:15 +00:00
Matthias
c29d2ac05b Merge pull request #9218 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.21
Bump sqlalchemy from 2.0.20 to 2.0.21
2023-09-25 12:23:27 +02:00
Matthias
551d1b0962 Bump sqlalchemy pre-commit 2023-09-25 11:45:14 +02:00
dependabot[bot]
5e696f4ea0 Bump sqlalchemy from 2.0.20 to 2.0.21
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.20 to 2.0.21.
- [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-09-25 09:28:42 +00:00
Matthias
d8423272da Merge pull request #9227 from freqtrade/dependabot/pip/develop/types-requests-2.31.0.4
Bump types-requests from 2.31.0.2 to 2.31.0.4
2023-09-25 11:27:28 +02:00
Matthias
b605d4d71f Merge pull request #9222 from freqtrade/dependabot/pip/develop/urllib3-2.0.5
Bump urllib3 from 2.0.4 to 2.0.5
2023-09-25 11:26:25 +02:00
Matthias
c39290d7da bump types-requests in pre-commit 2023-09-25 10:10:03 +02:00
dependabot[bot]
4849b23fd6 Bump urllib3 from 2.0.4 to 2.0.5
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.0.4 to 2.0.5.
- [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.4...v2.0.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 08:07:30 +00:00
Matthias
c1beb0ff33 Merge pull request #9230 from freqtrade/dependabot/pip/develop/mkdocs-material-9.4.1
Bump mkdocs-material from 9.3.1 to 9.4.1
2023-09-25 10:07:06 +02:00
Matthias
d08a015b45 Merge pull request #9228 from freqtrade/dependabot/pip/develop/jsonschema-4.19.1
Bump jsonschema from 4.19.0 to 4.19.1
2023-09-25 10:06:42 +02:00
Matthias
4f7487e931 Merge pull request #9225 from freqtrade/dependabot/pip/develop/ruff-0.0.291
Bump ruff from 0.0.290 to 0.0.291
2023-09-25 10:05:53 +02:00
dependabot[bot]
d032aaaba0 Bump mkdocs-material from 9.3.1 to 9.4.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.3.1 to 9.4.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.3.1...9.4.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-09-25 04:48:16 +00:00
Matthias
073cb0a5a9 Merge pull request #9220 from freqtrade/dependabot/pip/develop/mkdocs-1.5.3
Bump mkdocs from 1.5.2 to 1.5.3
2023-09-25 06:47:23 +02:00
Matthias
ce6c44eda0 Merge pull request #9219 from freqtrade/dependabot/pip/develop/time-machine-2.13.0
Bump time-machine from 2.12.0 to 2.13.0
2023-09-25 06:39:05 +02:00
dependabot[bot]
0099381dd0 Bump jsonschema from 4.19.0 to 4.19.1
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.19.0 to 4.19.1.
- [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.19.0...v4.19.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 03:52:41 +00:00
dependabot[bot]
7bcb3d5580 Bump types-requests from 2.31.0.2 to 2.31.0.4
Bumps [types-requests](https://github.com/python/typeshed) from 2.31.0.2 to 2.31.0.4.
- [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-09-25 03:52:36 +00:00
dependabot[bot]
c15c13a367 Bump ruff from 0.0.290 to 0.0.291
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.290 to 0.0.291.
- [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.290...v0.0.291)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 03:52:28 +00:00
dependabot[bot]
53a7273065 Bump catboost from 1.2.1 to 1.2.2
Bumps [catboost](https://github.com/catboost/catboost) from 1.2.1 to 1.2.2.
- [Release notes](https://github.com/catboost/catboost/releases)
- [Changelog](https://github.com/catboost/catboost/blob/master/RELEASE.md)
- [Commits](https://github.com/catboost/catboost/compare/v1.2.1...v1.2.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-25 03:52:11 +00:00
dependabot[bot]
da9a8b616e Bump mkdocs from 1.5.2 to 1.5.3
Bumps [mkdocs](https://github.com/mkdocs/mkdocs) from 1.5.2 to 1.5.3.
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.2...1.5.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-09-25 03:51:54 +00:00
dependabot[bot]
e6277222ca Bump time-machine from 2.12.0 to 2.13.0
Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.12.0 to 2.13.0.
- [Changelog](https://github.com/adamchainz/time-machine/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/time-machine/compare/2.12.0...2.13.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-09-25 03:51:49 +00:00
Matthias
8002b476ff Update recommendation for kraken 2023-09-24 23:04:28 +02:00
Matthias
d9b5d05e2a Align sample configs with the "no ratelimit" recommendation 2023-09-24 23:03:38 +02:00
Matthias
f5d7a4417d Split trades methods into seperate converter file 2023-09-24 17:21:21 +02:00
Robert Davey
04b3b1d4d9 Update data-download.md
Fix the main data format docs to reflect the move to feather.
2023-09-24 12:12:16 +01:00
Matthias
38a3ce6164 Convert "converter" to package 2023-09-24 10:42:23 +02:00
Matthias
123e51774e Move trades-to-ohlcv tests 2023-09-24 10:38:38 +02:00
Matthias
2322d0f3f3 Move trades-to-ohlcv to converter file 2023-09-24 10:38:25 +02:00
Matthias
8a5287581f Move some convert-trades-to-ohlcv logic into convert function 2023-09-24 10:37:37 +02:00
Matthias
41cdd28f5f Improve log output for convert-trades 2023-09-24 10:26:51 +02:00
Stefano Ariestasia
b387c315da fix pre-commit 2023-09-24 14:59:19 +09:00
Stefano Ariestasia
3c647a3794 change wordings on the doc from backtest to "calculate indicators" since we never do full backtest process 2023-09-24 14:55:13 +09:00
Stefano Ariestasia
aac9ee0d55 move lookahead and recursive docs under Advanced Topics 2023-09-24 14:28:18 +09:00
Matthias
966247baaf Make sure use_db is set as early as possible. 2023-09-23 18:20:19 +02:00
Matthias
589b9858f4 Disable build isolation (fix no docker builds) 2023-09-23 17:56:22 +02:00
Stefano Ariestasia
c0b2b0b96d fix args description 2023-09-23 19:27:57 +09:00
Stefano Ariestasia
6cfc1836a2 fix wrong startup candle 2023-09-23 19:23:03 +09:00
Matthias
35800f3ada remove hardcoded docs link
we should have one place to configure this.
2023-09-23 12:02:34 +02:00
Matthias
9fa365e766 Fix docs rendering (lists need a newline before the first item) 2023-09-23 10:47:30 +02:00
Matthias
a4a3b19566 Fix typo in docs 2023-09-23 10:27:44 +02:00
Matthias
8452399c12 Merge pull request #9187 from stash86/full-pairlist
Add FullTradesPairlist
2023-09-23 10:24:13 +02:00
Matthias
ff8a5ad2e5 Merge pull request #9213 from freqtrade/revert-9207-ccxt_update
Revert "Bump ccxt to 4.0.101"
2023-09-22 19:09:29 +02:00
Matthias
dda5a59019 Revert "Bump ccxt to 4.0.101" 2023-09-22 18:20:52 +02:00
Robert Davey
30e8466cae Update recursive-analysis.md
Thanks for adding the example table! It's good to have that example available. I've edited this section of the docs as before.
2023-09-22 13:11:35 +01:00
Stefano Ariestasia
3881c51892 add example of the result of the analysis 2023-09-22 20:45:48 +09:00
Robert Davey
4959d124ad Update recursive-analysis.md
I went through the docs which are great, but they needed some tidying up and changes to language to meet the style of the rest of the docs.
2023-09-22 10:50:35 +01:00
Stefano Ariestasia
f133ee3cca add more explanation in the docs about startup candle and its relation to API limit 2023-09-22 17:10:43 +09:00
Matthias
ef6afaa2cb Add test for replace_fail 2023-09-22 06:37:56 +02:00
Matthias
0e406c4d7d Update some more test wordings 2023-09-22 06:37:56 +02:00
Matthias
b21775142d Improve variable naming in test 2023-09-22 06:37:56 +02:00
Matthias
8ccc66cd97 Add tests for cancel order retries 2023-09-22 06:37:56 +02:00
Matthias
b4e732617e Add handling for order replacement cancel failing 2023-09-22 06:37:56 +02:00
Matthias
450219c83b Extract replace_order_faild message and behavior 2023-09-22 06:37:56 +02:00
Stefano
eb7df30061 add test 2023-09-22 09:43:03 +09:00
Matthias
9385400000 Merge pull request #9209 from alexpvpmindustry/patch-1
fix broken link
2023-09-21 17:57:32 +02:00
alex
961f50e335 fix broken link 2023-09-21 07:50:36 -07:00
Stefano
478e6f1e64 fix test 2023-09-21 21:22:45 +09:00
Stefano
a0e115ebd9 fix another test 2023-09-21 20:19:39 +09:00
Stefano
ce4f1b0709 fix test after adding new test strategy 2023-09-21 19:56:41 +09:00
Stefano
b0c639bac8 Merge branch 'bt-metrics2' of https://github.com/stash86/freqtrade into bt-metrics 2023-09-21 10:19:10 +00:00
Stefano
aba576f79f pre-commit fix 2023-09-21 17:58:20 +09:00
Stefano
d92a6d7b73 all tests done 2023-09-21 17:51:37 +09:00
Stefano
89d47ffd8f 4 more tests 2023-09-21 17:47:51 +09:00
Stefano
b9e9f82503 first test done 2023-09-21 16:45:43 +09:00
Stefano
08b94a2077 1 test 2023-09-21 14:21:54 +09:00
Matthias
9f445cb053 Don't rely on status when determining open order count 2023-09-21 07:14:51 +02:00
Matthias
1d23ba6e30 Improve wording after order-replacement 2023-09-21 07:14:31 +02:00
Stefano Ariestasia
28e43a4867 initial test 2023-09-21 14:00:17 +09:00
Matthias
1b28521875 Improve execute_entry interface 2023-09-21 06:28:51 +02:00
Matthias
4ba3363bc6 Use matching numpy version in docker armhf image 2023-09-21 06:26:46 +02:00
Matthias
f1ed9ed048 Merge pull request #9207 from freqtrade/ccxt_update
Bump ccxt to 4.0.101
2023-09-21 06:18:35 +02:00
Stefano Ariestasia
d465fcffd5 change startup cande in sample strat 2023-09-21 11:13:06 +09:00
Stefano Ariestasia
32b0098ec1 fix example in the docs, increasing startup to 400 on ema100 2023-09-21 11:08:47 +09:00
Stefano Ariestasia
e77b9de89e fix docs 2023-09-21 10:51:12 +09:00
Matthias
aec67cda66 update bybit live order to v5 2023-09-20 20:41:12 +02:00
Matthias
f3fb801b33 Update order_parse online test 2023-09-20 20:41:12 +02:00
Matthias
fe33088245 Bump ccxt to 4.0.101 2023-09-20 20:41:12 +02:00
Matthias
4bca8b97f3 Don't allow empty order-type from exchange 2023-09-20 20:32:37 +02:00
Matthias
f62f4f7711 Fix deployment (no arm numpy wheels just yet). 2023-09-20 20:03:41 +02:00
Matthias
896e2b6285 piwheels finally has wheels for cryptography 2023-09-20 20:02:31 +02:00
Matthias
ddb0ae10b4 Ensure no None status is passed from "create_order" 2023-09-20 20:02:06 +02:00
Stefano Ariestasia
37fa186c55 remove 1 column 2023-09-20 22:43:01 +09:00
Stefano Ariestasia
979e485f24 initial doc 2023-09-20 20:53:34 +09:00
Stefano Ariestasia
1555667da7 Merge remote-tracking branch 'origin/bt-metrics2' into bt-metrics2 2023-09-20 17:55:59 +09:00
Stefano Ariestasia
8a52a7b50d Merge branch 'freqtrade:develop' into bt-metrics2 2023-09-20 17:48:52 +09:00
Stefano Ariestasia
a74b6df14e Merge branch 'freqtrade:develop' into bt-metrics 2023-09-20 17:48:37 +09:00
Matthias
8600ae0387 Merge pull request #9191 from freqtrade/fix/double-date-column
Bug: FreqAI fit_live_predictions()
2023-09-20 08:23:41 +02:00
Matthias
02306884f0 Merge pull request #9204 from alexpvpmindustry/patch-1
Update exchanges.md
2023-09-20 07:04:03 +02:00
Robert Caulk
82ce5af454 Merge pull request #9200 from freqtrade/dependabot/pip/develop/xgboost-2.0.0
Bump xgboost from 1.7.6 to 2.0.0
2023-09-19 20:06:57 +02:00
alex
830f2219c8 Update exchanges.md
- Malaysia is a soverign country... parted with Singapore in 1965.
- also fix some formating
2023-09-19 09:44:01 -07:00
robcaulk
d21f0f4081 chore: add guardrails for users who neglect docs 2023-09-19 12:24:44 +02:00
robcaulk
8f883f2310 chore: fix set_initial_hist_preds test 2023-09-19 12:20:44 +02:00
dependabot[bot]
2f63b0199d Bump xgboost from 1.7.6 to 2.0.0
Bumps [xgboost](https://github.com/dmlc/xgboost) from 1.7.6 to 2.0.0.
- [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.6...v2.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 18:12:29 +00:00
Matthias
5a96c775fd Merge pull request #9193 from freqtrade/dependabot/pip/develop/lightgbm-4.1.0
Bump lightgbm from 4.0.0 to 4.1.0
2023-09-18 20:11:19 +02:00
dependabot[bot]
cfdd9d6be9 Bump lightgbm from 4.0.0 to 4.1.0
Bumps [lightgbm](https://github.com/microsoft/LightGBM) from 4.0.0 to 4.1.0.
- [Release notes](https://github.com/microsoft/LightGBM/releases)
- [Commits](https://github.com/microsoft/LightGBM/compare/v4.0.0...v4.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 16:22:38 +00:00
Matthias
c749aae19f Merge pull request #9196 from freqtrade/dependabot/pip/develop/numpy-1.26.0
Bump numpy from 1.25.2 to 1.26.0
2023-09-18 18:21:53 +02:00
Matthias
fd4877759c Update hard min-requirement for python 2023-09-18 18:12:39 +02:00
Matthias
2e7acb4482 Merge pull request #9194 from freqtrade/dependabot/pip/develop/ruff-0.0.290
Bump ruff from 0.0.287 to 0.0.290
2023-09-18 08:35:55 +02:00
Matthias
b43b60b26d Merge pull request #9202 from freqtrade/dependabot/pip/develop/plotly-5.17.0
Bump plotly from 5.16.1 to 5.17.0
2023-09-18 08:29:48 +02:00
Matthias
5ca8076072 Merge pull request #9201 from freqtrade/dependabot/pip/develop/python-rapidjson-1.11
Bump python-rapidjson from 1.10 to 1.11
2023-09-18 08:28:24 +02:00
Matthias
8d3c2470e3 Merge pull request #9198 from freqtrade/dependabot/pip/develop/rich-13.5.3
Bump rich from 13.5.2 to 13.5.3
2023-09-18 07:09:58 +02:00
Matthias
3f85f3cce6 Exclude UP036 for now 2023-09-18 07:08:08 +02:00
Matthias
2801bccdc7 Merge pull request #9197 from freqtrade/dependabot/pip/develop/mkdocs-material-9.3.1
Bump mkdocs-material from 9.2.8 to 9.3.1
2023-09-18 07:00:14 +02:00
Matthias
22651a8629 Merge pull request #9195 from freqtrade/dependabot/pip/develop/filelock-3.12.4
Bump filelock from 3.12.3 to 3.12.4
2023-09-18 06:59:55 +02:00
dependabot[bot]
c7106a6802 Bump plotly from 5.16.1 to 5.17.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.16.1 to 5.17.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.16.1...v5.17.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-09-18 03:39:45 +00:00
dependabot[bot]
6e1f457fb3 Bump python-rapidjson from 1.10 to 1.11
Bumps [python-rapidjson](https://github.com/python-rapidjson/python-rapidjson) from 1.10 to 1.11.
- [Changelog](https://github.com/python-rapidjson/python-rapidjson/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-rapidjson/python-rapidjson/compare/v1.10...v1.11)

---
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-09-18 03:39:41 +00:00
dependabot[bot]
533a16658c Bump rich from 13.5.2 to 13.5.3
Bumps [rich](https://github.com/Textualize/rich) from 13.5.2 to 13.5.3.
- [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.5.2...v13.5.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 03:39:14 +00:00
dependabot[bot]
9b35dae465 Bump mkdocs-material from 9.2.8 to 9.3.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.2.8 to 9.3.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.2.8...9.3.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-09-18 03:39:05 +00:00
dependabot[bot]
e6d01b04ea Bump numpy from 1.25.2 to 1.26.0
Bumps [numpy](https://github.com/numpy/numpy) from 1.25.2 to 1.26.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.25.2...v1.26.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-09-18 03:38:57 +00:00
dependabot[bot]
d185b2020a Bump filelock from 3.12.3 to 3.12.4
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.12.3 to 3.12.4.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.12.3...3.12.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 03:38:44 +00:00
dependabot[bot]
74ed0e0b11 Bump ruff from 0.0.287 to 0.0.290
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.287 to 0.0.290.
- [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.287...v0.0.290)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-18 03:38:34 +00:00
Matthias
75f89ec12f Merge pull request #9188 from Axel-CH/add-trade-param-to-custom-entry-price
Add trade param to custom entry price
2023-09-17 23:23:42 +02:00
Matthias
f6fce2162c Add new parameter to strategy template 2023-09-17 22:25:23 +02:00
Matthias
158bf09774 Fix type checking error 2023-09-17 19:40:44 +02:00
robcaulk
1f1abfe798 fix: avoid duplicate date columns interfering with fit_live_predictions() 2023-09-17 17:36:01 +02:00
Axel-CH
29a5e049b9 edit note wording for custom_entry_price 2023-09-17 03:30:03 -04:00
Axel-CH
2bc0c4ecd5 update docstring 2023-09-17 03:17:07 -04:00
Axel-CH
224213840d update trade object as optional parameter 2023-09-17 03:13:40 -04:00
Axel CHERUBIN
d81fdeb3ed Update docs/strategy-callbacks.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2023-09-17 03:06:00 -04:00
Matthias
14c5f435aa okx: Use proper history endpoint for fetch_orders 2023-09-16 20:01:19 +02:00
Matthias
5745722a37 Increase time for fetch_orders in test 2023-09-16 20:00:17 +02:00
Axel-CH
a7cd9d77f2 ignore custom_entry_price trade object type test, remove LocalTrade as type 2023-09-16 13:58:59 -04:00
Axel-CH
5b857aeaf0 fix custom_entry_price trade object type test 2023-09-16 13:46:56 -04:00
Matthias
afb1b787c8 add okx to fully tested exchanges 2023-09-16 19:43:39 +02:00
Matthias
659168d341 Improve cancel_stop test 2023-09-16 19:43:39 +02:00
Axel-CH
3f4715ba49 update custom_entry_price docstring 2023-09-16 13:20:10 -04:00
Axel-CH
1d0f1bd1ee update doc 2023-09-16 13:13:23 -04:00
Matthias
220bc3c23e Rename fetch_orders_emulate to make it non-protected 2023-09-16 17:56:16 +02:00
Matthias
c90be601f5 Add offset to "fetch_orders" to avoid missing the initial order 2023-09-16 17:53:47 +02:00
Matthias
5d8e0573f6 Run handle_onexchange_order test without dry-run 2023-09-16 16:39:52 +02:00
Matthias
3d858f6599 Fix bug closing trades while recalculating
closes #9186
2023-09-16 16:39:52 +02:00
Matthias
6d2d5f93d0 Add exit order test
showing behavior in #9186
2023-09-16 16:39:40 +02:00
Matthias
d01bc0fb9f Enforce kwargs for update_trade_state 2023-09-16 14:44:24 +02:00
Matthias
394d758d32 Add missing fields to json (and json parse) 2023-09-16 14:06:36 +02:00
Axel-CH
91c710408a fix flake8, set trade object param as Optional 2023-09-16 03:36:36 -04:00
Matthias
3a7f390510 Cancel based forceexits shouldn't trigger a full exit. 2023-09-16 09:32:51 +02:00
Matthias
a7d6efdcd6 Fix order amounts in test 2023-09-16 09:32:30 +02:00
Matthias
fed24c1308 Improve test for get_canceled_exit_order 2023-09-16 09:13:41 +02:00
Matthias
ae4021da14 Rename get_canceled exit orders ... 2023-09-16 09:11:31 +02:00
Matthias
8378a0234d Filter exit_order_count on canceled orders only 2023-09-16 09:10:56 +02:00
Axel CHERUBIN
d26869ea0a Merge branch 'freqtrade:develop' into add-trade-param-to-custom-entry-price 2023-09-16 02:53:01 -04:00
axel
cf96ad1d1b add trade param to custom entry price in interface, bot, backtesting, exemples 2023-09-16 02:32:03 -04:00
Matthias
3919bf3740 Adjust sequence of trade json output 2023-09-16 08:25:36 +02:00
Stefano
9814cf5360 flake8 fix 2023-09-15 12:35:56 +09:00
Stefano
c19fe95d39 add the filter to docs, tyding up the py file 2023-09-15 11:34:56 +09:00
Stefano
383bdb7d56 flake8 fix 2023-09-15 10:15:19 +09:00
Matthias
41765b14dc Merge pull request #9182 from stash86/fix-rangestability
Change the cache of rangestability to 1 day
2023-09-14 20:43:07 +02:00
Matthias
33bf7f9f30 Ensure test doesn't fail based on daytime
failed if it's run in the first hour of the (UTC) day
2023-09-14 20:05:11 +02:00
Matthias
454c2343a8 More clarity for adjust_trade_position callback docstring 2023-09-14 18:27:45 +02:00
Matthias
6d8bf75572 Merge pull request #9179 from freqtrade/chore/better-freqai-reload
chore: fix bug associated with leaving FreqAI offline for more than 1candle
2023-09-14 18:10:47 +02:00
Robert Caulk
310c9f6034 Update test_freqai_datadrawer.py 2023-09-14 13:49:31 +02:00
Stefano Ariestasia
c0a600858f Change the cache of rangestability to 1 day 2023-09-14 08:50:06 +09:00
Stefano Ariestasia
5b07385414 simplify the filter 2023-09-14 08:13:47 +09:00
robcaulk
844ab4aef5 chore: add tests for set_initial_return_values 2023-09-14 00:05:59 +02:00
Stefano Ariestasia
44ca6f1c46 remove unused vars and change wording 2023-09-13 17:07:45 +09:00
Stefano Ariestasia
552f947248 remove unnecessary check 2023-09-13 15:09:13 +09:00
Stefano Ariestasia
7655bf6ea7 turn off logger for now 2023-09-13 14:53:33 +09:00
Stefano Ariestasia
25ae25248c add logger 2023-09-13 14:42:43 +09:00
Stefano Ariestasia
dd01ae880f fix error 2023-09-13 14:38:16 +09:00
Stefano Ariestasia
e0a06ca454 add fulltradesfilter 2023-09-13 14:18:07 +09:00
Stefano Ariestasia
a93592c467 add fulltradespairlist 2023-09-13 14:17:43 +09:00
Stefano Ariestasia
08dffc95d8 fix wording 2023-09-13 11:58:28 +09:00
Stefano Ariestasia
57800e78c7 Merge branch 'freqtrade:develop' into bt-metrics2 2023-09-13 08:20:28 +09:00
Stefano Ariestasia
bd4d7efbc9 Merge pull request #20 from stash86/bt-metrics2
create BaseAnalysis class
2023-09-13 08:20:09 +09:00
Stefano Ariestasia
5019fb5bf3 fix flake8 2023-09-12 19:58:40 +09:00
Stefano Ariestasia
a0e0d7fe27 more fixes 2023-09-12 19:57:16 +09:00
Stefano Ariestasia
6377fd2689 flake8 fix 2023-09-12 19:54:25 +09:00
root
bd9ea9bd8c precommit fix 2023-09-12 19:50:39 +09:00
Stefano Ariestasia
cfeefa8754 remove prepare data from baseanalysis 2023-09-12 19:29:13 +09:00
Stefano Ariestasia
475d8486bb fix mutable Backtest 2023-09-12 19:21:01 +09:00
robcaulk
628963c207 chore: fix bug associated with leaving FreqAI offline for more than 1 candle. 2023-09-12 12:19:12 +02:00
Stefano Ariestasia
4d1810c2b6 update lookahead analysis 2023-09-12 19:11:19 +09:00
Stefano Ariestasia
05f0dccb8e add missing args to config 2023-09-12 16:25:25 +09:00
Stefano Ariestasia
6360e7fb15 debug 2023-09-12 16:20:04 +09:00
Stefano Ariestasia
40695a39d5 add missing var 2023-09-12 16:14:25 +09:00
Stefano Ariestasia
008f621211 create BaseAnalysis class 2023-09-12 15:42:32 +09:00
Matthias
a52cf42218 use last order date to fill order. 2023-09-12 07:01:51 +02:00
Matthias
a866b0a35e Improve test correctness 2023-09-12 07:01:05 +02:00
Matthias
af1054fa70 Avoid re-implementing existing feature 2023-09-12 07:00:55 +02:00
Stefano Ariestasia
5608bbde9c Merge branch 'freqtrade:develop' into bt-metrics 2023-09-12 13:56:24 +09:00
Matthias
ee9d2c637a Improve "order refind" mechanics 2023-09-11 20:18:42 +02:00
Matthias
f0819d9df1 Improve "filled" date assignment for order updates 2023-09-11 20:03:38 +02:00
Matthias
96e5615d1b Update safe_value_fallback to allow empty 2nd keys 2023-09-11 20:03:38 +02:00
Matthias
4798dea6e1 Merge pull request #9168 from freqtrade/dependabot/pip/develop/ccxt-4.0.88
Bump ccxt from 4.0.81 to 4.0.88
2023-09-11 19:12:17 +02:00
Matthias
23a4ff9f25 Merge pull request #9171 from freqtrade/dependabot/pip/develop/orjson-3.9.7
Bump orjson from 3.9.5 to 3.9.7
2023-09-11 18:23:06 +02:00
Matthias
5ddfbea611 Merge pull request #9172 from freqtrade/dependabot/pip/develop/questionary-2.0.1
Bump questionary from 2.0.0 to 2.0.1
2023-09-11 08:12:00 +02:00
Matthias
e8e67d1c85 Merge pull request #9173 from freqtrade/dependabot/pip/develop/pytest-7.4.2
Bump pytest from 7.4.1 to 7.4.2
2023-09-11 08:11:41 +02:00
Matthias
dc9c31252b Merge pull request #9169 from freqtrade/dependabot/pip/develop/mkdocs-material-9.2.8
Bump mkdocs-material from 9.2.7 to 9.2.8
2023-09-11 06:45:44 +02:00
Matthias
82baa3f93f Improve and clarify wording around use_exit_signal 2023-09-11 06:32:40 +02:00
Matthias
78ca11155b Merge pull request #9167 from freqtrade/dependabot/github_actions/develop/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-09-11 06:22:44 +02:00
dependabot[bot]
45c90c2013 Bump pytest from 7.4.1 to 7.4.2
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.1 to 7.4.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.4.1...7.4.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-09-11 03:33:55 +00:00
dependabot[bot]
3a1057e1ff Bump questionary from 2.0.0 to 2.0.1
Bumps [questionary](https://github.com/tmbo/questionary) from 2.0.0 to 2.0.1.
- [Commits](https://github.com/tmbo/questionary/compare/2.0.0...2.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 03:33:50 +00:00
dependabot[bot]
e45d5d3594 Bump orjson from 3.9.5 to 3.9.7
Bumps [orjson](https://github.com/ijl/orjson) from 3.9.5 to 3.9.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.9.5...3.9.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-09-11 03:33:47 +00:00
dependabot[bot]
14ee5a2076 Bump mkdocs-material from 9.2.7 to 9.2.8
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.2.7 to 9.2.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.2.7...9.2.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-09-11 03:33:33 +00:00
dependabot[bot]
da83243eb3 Bump ccxt from 4.0.81 to 4.0.88
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.81 to 4.0.88.
- [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.81...4.0.88)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 03:33:17 +00:00
dependabot[bot]
46ec7d5ea6 Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-11 03:22:45 +00:00
Matthias
29fbac9f96 Add "catch-all" exceptionhandler for handle_onexchange_order
(it's actually a poor mans workaround)
closes #9025
2023-09-10 20:27:08 +02:00
Matthias
421a6c02a0 Improve enum imports 2023-09-10 18:10:38 +02:00
Matthias
2ee152c5a6 Merge pull request #8779 from Axel-CH/feature/multiple_open_orders
Feature: Multiple open orders
2023-09-10 17:22:26 +02:00
Matthias
bef27467b6 Further improve test 2023-09-10 16:18:18 +02:00
Matthias
52f971cbb7 Improve existing test 2023-09-10 16:17:39 +02:00
Matthias
563e68e894 Don't hard-fail merge if there's no informative data 2023-09-10 16:16:52 +02:00
Matthias
49b4ab6d3b Simplify some things in tests 2023-09-09 17:37:05 +02:00
Matthias
7455e56a29 Add docstrings, simplify some code 2023-09-09 10:09:37 +02:00
Matthias
245a67e37e Avoid tons of commits when cancelling all orders 2023-09-09 09:55:01 +02:00
Matthias
e76d4241a0 Remove further unnecessary method 2023-09-09 09:54:12 +02:00
Matthias
01ff054a0b fix open orders telegram reporting 2023-09-09 09:40:55 +02:00
Matthias
9e1f7dc6f7 have force-enter also include has_open_orders 2023-09-09 09:23:25 +02:00
Matthias
067c9219b6 replace 'open_orders' with "has_open_orders" in api 2023-09-09 08:36:28 +02:00
Matthias
f4e5ce892b use has_open_orders in persistence 2023-09-08 19:58:43 +02:00
Matthias
830fc7580c Cleanup unused property 2023-09-08 19:51:14 +02:00
Matthias
21859f79db Merge pull request #9159 from stash86/fix-adjust
remove old codes when we only can do partial entries
2023-09-08 08:04:20 +02:00
Matthias
376b5fce54 Merge pull request #9160 from mohsenjfar/develop
Update strategy_analysis_example.md
2023-09-08 07:59:55 +02:00
Matthias
cb5cd5cd86 Temporarily downgrade padnas to <2.1.0
https://github.com/pandas-dev/pandas/issues/55025
2023-09-08 07:08:18 +02:00
Matthias
f8b97b6aa7 Fix dtype mismatch error 2023-09-08 07:05:38 +02:00
Matthias
7b6e2eac49 use ffill instead of fillna(method='ffill') 2023-09-08 07:04:12 +02:00
Matthias
f13e134e9b Update actual notebook (not just the docs) 2023-09-08 06:47:31 +02:00
Matthias
97a37198b9 Update test 2023-09-08 06:39:42 +02:00
Matthias
43bb4114d0 Update test for no open_order_id usage 2023-09-07 20:24:40 +02:00
Matthias
8c95207ca4 Merge branch 'develop' into pr/Axel-CH/8779 2023-09-07 20:19:25 +02:00
Matthias
ffaa121bc7 Simplify code by removing unnecessary (and non-working) method 2023-09-07 20:16:56 +02:00
Matthias
227b194a88 Partial exits should consider leveraged trades. 2023-09-07 18:27:19 +02:00
Matthias
95d8c45481 test_handle_cancel_exit_limit - partially fill by half 2023-09-07 18:27:19 +02:00
Matthias
bae4abace2 Test test_handle_cancel_exit_limit short 2023-09-07 18:27:19 +02:00
Matthias
44461bd1a1 Add leverage to test_handle_cancel_exit_limit test 2023-09-07 18:27:19 +02:00
Matthias
2c095c07f2 Improve variable naming 2023-09-07 18:27:19 +02:00
Matthias
9c3656e24e Merge pull request #9158 from freqtrade/remove_3.8
Remove python 3.8 support
2023-09-07 18:19:17 +02:00
Mohsen
97275f5a46 Update strategy_analysis_example.md
A better approach to calculate equity and equity_daily
2023-09-07 17:18:43 +03:30
Stefano Ariestasia
7ccff18437 remove old codes when we only can do partial entries 2023-09-07 18:05:46 +09:00
Matthias
c5f26e72e1 Merge pull request #9153 from freqtrade/rpc/drawdown
Add better drawdown metrics to /profit outputs
2023-09-07 06:33:15 +02:00
Matthias
f09c0a5bba Remove 3.8 talib Wheel 2023-09-07 06:27:43 +02:00
Matthias
aba9450098 Simplify requirements for 3.9+ 2023-09-07 06:26:55 +02:00
Matthias
4ef1647132 Setup.sh should require 3.9 2023-09-07 06:25:44 +02:00
Matthias
6e93bff374 Update documentation for 3.8 removal 2023-09-07 06:25:08 +02:00
Matthias
4d20e37f4d Remove 3.8 from CI 2023-09-07 06:24:32 +02:00
Matthias
20cca01d10 Fix bug in volumepairlist if lookback is bigger than the available candles (new pairs)
closes #9154
2023-09-06 19:40:31 +02:00
Matthias
8cbb5d2a93 Adjust test for "nan" data
shows problem in #9154
2023-09-06 19:38:54 +02:00
Matthias
fbae2142d1 Remove misleading "cd freqtrade" command
closes #9138
2023-09-05 06:29:18 +02:00
Matthias
feea20fb0a Merge pull request #9151 from freqtrade/refactor/calc_profits
Refactor calculate profits
2023-09-05 06:26:04 +02:00
Matthias
2ed52a77e5 Merge pull request #9142 from freqtrade/dependabot/pip/develop/pandas-2.1.0
Bump pandas from 2.0.3 to 2.1.0
2023-09-05 06:22:06 +02:00
Matthias
e854667eb8 Add max_drawdown_start and end to /profit API endpoints 2023-09-04 20:09:59 +02:00
Matthias
7bf20d9060 Show drawdown from/to on /profit calls 2023-09-04 20:09:59 +02:00
Matthias
7c5a11623e Use dt_ts_def in profit endpoints 2023-09-04 20:09:32 +02:00
Matthias
783a2d945e add dt_ts_def helper 2023-09-04 20:09:32 +02:00
Matthias
2073c71811 use format_date in rpc methods 2023-09-04 20:09:32 +02:00
Matthias
d8122962db Add "date to string" helper 2023-09-04 20:09:32 +02:00
Matthias
1ea626fb5b Pin pandas for <3.9 versions to old version 2023-09-04 19:57:10 +02:00
Robert Caulk
f66719fc1f Merge pull request #9150 from freqtrade/dependabot/pip/develop/catboost-1.2.1
Bump catboost from 1.2 to 1.2.1
2023-09-04 10:14:03 +02:00
Matthias
4b2813ff37 Merge pull request #9147 from freqtrade/dependabot/pip/develop/pytest-7.4.1
Bump pytest from 7.4.0 to 7.4.1
2023-09-04 09:54:54 +02:00
Matthias
191c85bccc Merge pull request #9140 from freqtrade/dependabot/pip/develop/mkdocs-material-9.2.7
Bump mkdocs-material from 9.2.5 to 9.2.7
2023-09-04 09:21:09 +02:00
Stefano Ariestasia
31816cdb2a Merge branch 'freqtrade:develop' into bt-metrics 2023-09-04 15:44:47 +09:00
dependabot[bot]
574744348a Bump pandas from 2.0.3 to 2.1.0
Bumps [pandas](https://github.com/pandas-dev/pandas) from 2.0.3 to 2.1.0.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](https://github.com/pandas-dev/pandas/compare/v2.0.3...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 06:16:30 +00:00
dependabot[bot]
efb9975e3e Bump pytest from 7.4.0 to 7.4.1
Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.0 to 7.4.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.4.0...7.4.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-09-04 06:16:21 +00:00
Matthias
cd8743b80c Merge pull request #9144 from freqtrade/dependabot/pip/develop/ccxt-4.0.81
Bump ccxt from 4.0.76 to 4.0.81
2023-09-04 08:15:46 +02:00
Matthias
237f3c58c8 Merge pull request #9148 from freqtrade/dependabot/pip/develop/pre-commit-3.4.0
Bump pre-commit from 3.3.3 to 3.4.0
2023-09-04 08:14:44 +02:00
Matthias
be7b0e4247 Merge pull request #9149 from freqtrade/dependabot/pip/develop/ruff-0.0.287
Bump ruff from 0.0.286 to 0.0.287
2023-09-04 08:14:28 +02:00
dependabot[bot]
5954e7796c Bump mkdocs-material from 9.2.5 to 9.2.7
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.2.5 to 9.2.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.2.5...9.2.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-09-04 06:13:54 +00:00
Matthias
f44eef3855 Merge pull request #9146 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.3
Bump pymdown-extensions from 10.1 to 10.3
2023-09-04 08:13:12 +02:00
Matthias
0232eeca54 Merge pull request #9143 from freqtrade/dependabot/pip/develop/fastapi-0.103.1
Bump fastapi from 0.103.0 to 0.103.1
2023-09-04 08:12:56 +02:00
Matthias
f5f0506a29 Merge pull request #9141 from freqtrade/dependabot/pip/develop/python-telegram-bot-20.5
Bump python-telegram-bot from 20.4 to 20.5
2023-09-04 08:12:18 +02:00
Matthias
39b6a00224 Improve naming of calculate_profit method 2023-09-04 06:42:16 +02:00
Matthias
206557d4b7 Merge pull request #9145 from freqtrade/dependabot/pip/develop/nbconvert-7.8.0
Bump nbconvert from 7.7.4 to 7.8.0
2023-09-04 06:31:52 +02:00
Matthias
07e07bd66b Improve test, ensuring we calculate profits correctly 2023-09-04 06:28:29 +02:00
Matthias
fac8e0fde5 Remove calc_profit content 2023-09-04 06:28:29 +02:00
Matthias
ffb1cf52b1 Convert further usages to calc_profit_combined 2023-09-04 06:28:29 +02:00
Matthias
399f144c27 more calc_profit_combined usage 2023-09-04 06:28:29 +02:00
Matthias
459b9d80d4 use calc_profit_combined 2023-09-04 06:28:29 +02:00
Matthias
28e685ee2b Switch combined profit response to dataclass 2023-09-04 06:28:29 +02:00
Matthias
c58a1649cb add calc_profit_combined call 2023-09-04 06:28:29 +02:00
Matthias
a4512ac791 Merge pull request #9139 from freqtrade/dependabot/pip/develop/filelock-3.12.3
Bump filelock from 3.12.2 to 3.12.3
2023-09-04 06:23:07 +02:00
dependabot[bot]
ac6cdb76ce Bump catboost from 1.2 to 1.2.1
Bumps [catboost](https://github.com/catboost/catboost) from 1.2 to 1.2.1.
- [Release notes](https://github.com/catboost/catboost/releases)
- [Changelog](https://github.com/catboost/catboost/blob/master/RELEASE.md)
- [Commits](https://github.com/catboost/catboost/compare/v1.2...v1.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 03:03:12 +00:00
dependabot[bot]
8ac3e8ad5f Bump ruff from 0.0.286 to 0.0.287
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.286 to 0.0.287.
- [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.286...v0.0.287)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 03:02:59 +00:00
dependabot[bot]
e0f52696a5 Bump pre-commit from 3.3.3 to 3.4.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.3.3 to 3.4.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.3.3...v3.4.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-09-04 03:02:45 +00:00
dependabot[bot]
f75f0ccf2c Bump pymdown-extensions from 10.1 to 10.3
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.1 to 10.3.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.1.0...10.3)

---
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-09-04 03:02:26 +00:00
dependabot[bot]
440f6ab8e1 Bump nbconvert from 7.7.4 to 7.8.0
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.7.4 to 7.8.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.7.4...v7.8.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-09-04 03:02:16 +00:00
dependabot[bot]
e7daf3177d Bump ccxt from 4.0.76 to 4.0.81
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.76 to 4.0.81.
- [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.76...4.0.81)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 03:02:11 +00:00
dependabot[bot]
8ffc0ad9fc Bump fastapi from 0.103.0 to 0.103.1
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.103.0 to 0.103.1.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.103.0...0.103.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-09-04 03:01:59 +00:00
dependabot[bot]
df83bdea8d Bump python-telegram-bot from 20.4 to 20.5
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 20.4 to 20.5.
- [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.4...v20.5)

---
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-09-04 03:01:43 +00:00
dependabot[bot]
420f6fb9a9 Bump filelock from 3.12.2 to 3.12.3
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.12.2 to 3.12.3.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.12.2...3.12.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 03:01:26 +00:00
Stefano Ariestasia
cea3f7d3fa fix flake8 2023-09-04 11:53:59 +09:00
Stefano Ariestasia
a9f63c6a99 fix mypy 2023-09-04 11:52:09 +09:00
Stefano Ariestasia
0ada2d9390 fix mypy 2023-09-04 11:45:25 +09:00
Stefano Ariestasia
e1b6b9b5a6 ruff fix 2023-09-04 11:41:24 +09:00
root
3fea2a35a2 pre-commit fixes 2023-09-04 11:38:13 +09:00
Stefano Ariestasia
821a598ff4 fix ruff 2023-09-04 11:35:44 +09:00
Stefano Ariestasia
feab5f82c1 add missing arg 2023-09-04 11:20:49 +09:00
Stefano Ariestasia
607c604a45 add mising const 2023-09-04 11:16:10 +09:00
Stefano Ariestasia
b77f926cdd add recursive analysis 2023-09-04 10:53:04 +09:00
Robert Caulk
d2c0e9e438 Merge pull request #9133 from initrv/patch-1
add QRDQN to SB3_CONTRIB_MODELS
2023-09-03 23:24:19 +02:00
Matthias
a4077e96ba Merge pull request #9135 from froggleston/frog-fix-analysis-nulls
Fix nulls in indicator list output and add expectancy ratio
2023-09-03 17:16:44 +02:00
Matthias
a4fc7ce0c4 "fix" bybit invalid order responses for canceled orders
closes #9128
2023-09-03 17:05:57 +02:00
Matthias
00cef56a57 Merge pull request #9137 from froggleston/frog-update-rpc
Implment weekly/monthly RPC endpoints
2023-09-03 10:22:37 +02:00
Matthias
d1984945d5 Improve tests for /weekly and /monthly 2023-09-02 20:15:12 +02:00
Matthias
3c20ab683a Have /monthly return proper dates, move formatting to telegram 2023-09-02 20:11:19 +02:00
froggleston
f838bc760f Implment weekly/monthly RPC endpoints 2023-09-02 16:06:23 +01:00
Matthias
25f5dbfcbd Delete trade if replacing the first order failed
part of #9128
2023-09-02 16:49:12 +02:00
Matthias
be044fbacf Improve log output 2023-09-02 16:37:53 +02:00
Matthias
7a4276f6c7 Include pair in dry-run order names 2023-09-02 16:37:41 +02:00
froggleston
925e18368a Fix linting a.k.a. Maybe one day, flake8 will like me 2023-09-02 15:05:34 +01:00
froggleston
250e00e6c7 Fix dropna subset 2023-09-02 12:52:05 +01:00
froggleston
81672da57b Fix nulls in indicator list output and add expectancy ratio per entry tag in analysis group 0 output 2023-09-02 12:45:33 +01:00
Matthias
d68c22b21d Move merge-informative_pairs helper to informative section 2023-09-02 12:07:25 +02:00
Matthias
e806e4a796 Move stop helper functions to callbacks section 2023-09-02 12:06:16 +02:00
Matthias
6f86e30c7e Add leverage adjustment to "stoploss_from_absolute" 2023-09-02 11:01:59 +02:00
Matthias
a87404b5a8 Reduce limit order cross threshold 2023-09-02 10:37:57 +02:00
initrv
0357d373a9 add QRDQN to SB3_CONTRIB_MODELS 2023-09-01 11:31:09 +03:00
Matthias
28c62724df Add explicit test and message for "Order could not be replaced" scenario
part of #9128
2023-09-01 06:58:59 +02:00
Robert Caulk
1eb90b115b Merge pull request #9129 from smarmau/patch-3
Update setup.sh
2023-08-31 12:47:11 +02:00
smarmau
d13357bb0c Update setup.sh
Fixed small typo
2023-08-31 19:26:11 +10:00
Matthias
65fe1a671c Add explicit test for bybit fetch_orders behavior 2023-08-31 08:14:14 +02:00
Matthias
6429282f05 add iterating emulation to fetch_orders for bybit 2023-08-31 08:07:44 +02:00
Matthias
b5fa013600 Add pairs argument to fetch_orders 2023-08-31 08:05:07 +02:00
Matthias
02bd052e45 Improve naming of variable 2023-08-31 06:39:26 +02:00
Matthias
4ed46ef6b3 Add significant digits Round_Up / round_down 2023-08-30 16:48:31 +00:00
Matthias
65c7607e36 Add Tests for "Significant" digits 2023-08-30 08:34:32 +00:00
Matthias
bfc2c70b44 Fix and improve Tick size ROUND_DOWN logic 2023-08-30 08:21:02 +00:00
Matthias
3a6c00dbaf Improve price_to_precision test depth 2023-08-30 08:00:33 +00:00
Matthias
133660ff4e Fall back "price_to_precision" to ccxt where possible 2023-08-30 07:53:00 +00:00
Matthias
994b2a0f28 Update sorting of price precision logic 2023-08-30 07:43:53 +00:00
Matthias
d4c042c523 Add amount precision test to test for significant digits 2023-08-30 07:32:38 +00:00
Matthias
b48fe4ce51 Properly use Precision-mode Variable 2023-08-30 07:23:59 +00:00
Matthias
78f356c0df amount to contract precision to test_utils 2023-08-30 07:18:46 +00:00
Matthias
7263d321f8 move timeframe_to* tests to test_exchange_utils 2023-08-30 07:16:14 +00:00
Matthias
1ccbe87f90 Move precision tests to exchange_utils test file 2023-08-30 07:09:57 +00:00
Matthias
e7d2a48766 Move date_minus test to exchange_utils testmethod 2023-08-30 07:07:28 +00:00
Matthias
c894843d0f Exclude .venv and .env from flake8 2023-08-29 21:16:10 +02:00
Matthias
23aa8dcd51 Simplify profit calculation (removes unnecessary fallback) 2023-08-29 18:31:51 +02:00
Matthias
f3187ddcbf Merge pull request #9057 from freqtrade/feat/stoploss_adjust
"After order" stoploss adjustment
2023-08-29 18:06:37 +02:00
Matthias
5eb446f1ce Don't remove elements from list we're iterating over
closes #9127
2023-08-29 17:44:39 +02:00
Matthias
5efa40215b Allow invalid futures pairs (: separated)
closes #9127
2023-08-29 17:40:35 +02:00
Matthias
1a8b793c0a Merge branch 'develop' into feat/stoploss_adjust 2023-08-29 07:04:08 +02:00
Matthias
e0e0a25811 Merge pull request #9123 from freqtrade/deprecate/edge
Add note about Edge status
2023-08-29 06:56:58 +02:00
Matthias
99b01a39d1 Add note about Edge deprecation 2023-08-28 20:16:00 +02:00
Matthias
dbf53ce952 Merge pull request #9112 from freqtrade/new_release
New release 2023.8
2023-08-28 18:44:59 +02:00
Matthias
ae08a832c8 Merge pull request #9118 from freqtrade/dependabot/pip/develop/pyarrow-13.0.0
Bump pyarrow from 12.0.1 to 13.0.0
2023-08-28 13:47:45 +02:00
Matthias
2bae4c98b1 Add rpi wheel for pyarrow 13.0.0 2023-08-28 10:18:37 +00:00
Matthias
f717928ae0 Bump mypy pre-commit 2023-08-28 08:50:55 +00:00
Matthias
b66db8e89c Merge pull request #9117 from freqtrade/dependabot/pip/develop/pydantic-2.3.0
Bump pydantic from 2.2.1 to 2.3.0
2023-08-28 09:34:24 +02:00
dependabot[bot]
3643ad0059 Bump pydantic from 2.2.1 to 2.3.0
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.2.1 to 2.3.0.
- [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/v2.2.1...v2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 06:41:04 +00:00
Matthias
2bdf4c54bd Merge pull request #9119 from freqtrade/dependabot/pip/develop/fastapi-0.103.0
Bump fastapi from 0.101.1 to 0.103.0
2023-08-28 08:39:11 +02:00
Matthias
66be4fd159 Merge pull request #9113 from freqtrade/dependabot/docker/python-3.11.5-slim-bullseye
Bump python from 3.11.4-slim-bullseye to 3.11.5-slim-bullseye
2023-08-28 06:47:34 +02:00
Matthias
078a4ca8b6 Merge pull request #9114 from freqtrade/dependabot/pip/develop/ccxt-4.0.76
Bump ccxt from 4.0.71 to 4.0.76
2023-08-28 06:46:32 +02:00
Matthias
07ab9bba69 Merge pull request #9116 from freqtrade/dependabot/pip/develop/mkdocs-material-9.2.5
Bump mkdocs-material from 9.2.1 to 9.2.5
2023-08-28 06:45:42 +02:00
Matthias
a964f56b07 Merge pull request #9115 from freqtrade/dependabot/pip/develop/ruff-0.0.286
Bump ruff from 0.0.285 to 0.0.286
2023-08-28 06:36:28 +02:00
dependabot[bot]
46b8708ffa Bump fastapi from 0.101.1 to 0.103.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.101.1 to 0.103.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.101.1...0.103.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-08-28 03:14:08 +00:00
dependabot[bot]
9136c13cd2 Bump pyarrow from 12.0.1 to 13.0.0
Bumps [pyarrow](https://github.com/apache/arrow) from 12.0.1 to 13.0.0.
- [Commits](https://github.com/apache/arrow/compare/go/v12.0.1...go/v13.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-08-28 03:13:51 +00:00
dependabot[bot]
0df9436d06 Bump mkdocs-material from 9.2.1 to 9.2.5
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.2.1 to 9.2.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.2.1...9.2.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-08-28 03:13:35 +00:00
dependabot[bot]
d32aabecd3 Bump ruff from 0.0.285 to 0.0.286
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.285 to 0.0.286.
- [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.285...v0.0.286)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 03:13:22 +00:00
dependabot[bot]
f2a3dd6414 Bump ccxt from 4.0.71 to 4.0.76
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.71 to 4.0.76.
- [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.71...4.0.76)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 03:13:03 +00:00
dependabot[bot]
fc23b47c4d Bump python from 3.11.4-slim-bullseye to 3.11.5-slim-bullseye
Bumps python from 3.11.4-slim-bullseye to 3.11.5-slim-bullseye.

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-28 03:03:46 +00:00
Matthias
f6b6b5976d Bump version to 2023.8 2023-08-27 20:46:19 +02:00
Matthias
f256701679 Bump version to 2023.9-dev 2023-08-27 20:40:37 +02:00
Matthias
c1df94b507 Bump version to 2023.8 2023-08-27 20:40:07 +02:00
Matthias
0c15eb4ace Merge branch 'stable' into develop 2023-08-27 20:39:53 +02:00
Matthias
3388bc5012 update conda docs to use 3.11 by default 2023-08-27 20:16:37 +02:00
Matthias
981cf1f6ee Update cached binance leverage tiers 2023-08-27 14:50:54 +02:00
Matthias
f19f3ed4eb Fix rpc forceexit logic, fix remaining test 2023-08-27 10:29:34 +02:00
Matthias
2f97b00d31 Fix test 2023-08-27 10:02:41 +02:00
Matthias
911e238494 Revert false removal of Exception from test 2023-08-27 09:52:11 +02:00
Matthias
2d66f3c022 Merge pull request #9105 from freqtrade/protect-add-state-info
Convert add_state_info warning into a OperationalException
2023-08-26 19:52:38 +02:00
robcaulk
04122abd17 chore: protect users who dont read log warnings 2023-08-25 16:45:46 +02:00
Matthias
5659ca2ecd Fix migrations 2023-08-25 07:29:10 +02:00
Matthias
0181abc629 Fix migration SQL statement 2023-08-25 07:14:39 +02:00
Matthias
acda2ff909 Remove open_order_id from test_ftbot 2023-08-25 07:13:39 +02:00
Matthias
43c73c75c5 Remove more open_order_id references 2023-08-25 07:10:30 +02:00
Matthias
95daff182d Update backtesting to not use open_order_id 2023-08-25 07:08:24 +02:00
Matthias
b82b77d03f Fix some rpc tests 2023-08-25 07:01:48 +02:00
Matthias
193dcf578d Fix logic error in force_exit if no order is open 2023-08-25 06:47:02 +02:00
Matthias
4c0a6611c8 remove open_order_id from test mock trades 2023-08-24 20:17:29 +02:00
Matthias
3e986e24fa Merge branch 'develop' into pr/Axel-CH/8779 2023-08-24 20:09:41 +02:00
Matthias
e5a88fdeda Fix stylistic issues 2023-08-24 20:06:51 +02:00
Matthias
9c4aca2b90 Improve download data debug output 2023-08-24 20:05:20 +02:00
Matthias
67e3ce308b Remove now unused import 2023-08-24 20:01:23 +02:00
Matthias
a740b9458f Fix remaining test after conftest_trade rework 2023-08-24 19:49:05 +02:00
Matthias
ffdb5fb790 Fix further tests after conftest_trades rework 2023-08-24 18:06:17 +02:00
Matthias
0cc7039232 Fix mock trade 1 status 2023-08-24 17:53:46 +02:00
Matthias
0f73e38f98 Improve docstring for "select_filled_orders". 2023-08-24 17:44:48 +02:00
Matthias
cfe1187cd9 Fix missed Test 2023-08-24 17:38:56 +02:00
Matthias
a36e131838 Fix more conftest trades 2023-08-24 07:29:50 +02:00
Matthias
94864a6ab3 Fix bad open_order_id assignment in test 2023-08-24 07:28:55 +02:00
Matthias
e1e90112ba conftest_usdt trades - align open orders 2023-08-24 07:16:01 +02:00
Matthias
c303d47f26 Ensure stop_duration is converted to int
closes #9099
2023-08-23 15:16:14 +02:00
Matthias
5cf6f0b491 Merge branch 'develop' into pr/Axel-CH/8779 2023-08-23 07:20:34 +02:00
Matthias
36d99876c5 Add mkdocs to rtd config 2023-08-23 07:12:14 +02:00
Matthias
2a192b19c3 Fix path typo 2023-08-23 07:09:27 +02:00
Matthias
9eaff301e8 Attempt update RTD config 2023-08-23 07:07:42 +02:00
Matthias
62ce96fd40 Add documentation explanation on pair naming conventions 2023-08-23 06:55:22 +02:00
Matthias
da7599065f Merge pull request #9094 from freqtrade/dependabot/pip/develop/ruff-0.0.285
Bump ruff from 0.0.284 to 0.0.285
2023-08-22 22:32:52 +02:00
Matthias
0c7cb29ea1 Don't use type() is comparisons 2023-08-22 20:39:36 +02:00
Matthias
001c998b26 Merge pull request #9086 from freqtrade/dependabot/pip/develop/gymnasium-0.29.1
Bump gymnasium from 0.28.1 to 0.29.1
2023-08-22 10:03:18 +02:00
Matthias
5934a6e6c3 Merge pull request #9095 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.20
Bump sqlalchemy from 2.0.19 to 2.0.20
2023-08-22 10:02:43 +02:00
dependabot[bot]
8ac4f4ac44 Bump ruff from 0.0.284 to 0.0.285
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.284 to 0.0.285.
- [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.284...v0.0.285)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-22 06:55:01 +00:00
Matthias
03c7e9a022 Merge pull request #9081 from freqtrade/dependabot/pip/develop/mypy-1.5.1
Bump mypy from 1.5.0 to 1.5.1
2023-08-22 08:54:03 +02:00
Matthias
329b35fc58 Update sqlalchemy pre-commit 2023-08-22 08:33:18 +02:00
Matthias
6ede7b49e0 Merge pull request #9091 from freqtrade/dependabot/pip/develop/mkdocs-material-9.2.1
Bump mkdocs-material from 9.2.0 to 9.2.1
2023-08-22 08:30:05 +02:00
Matthias
5e41f9b42a Merge pull request #9090 from freqtrade/dependabot/pip/develop/pydantic-2.2.1
Bump pydantic from 2.2.0 to 2.2.1
2023-08-22 08:29:47 +02:00
Matthias
f2b00a54d0 Merge pull request #9093 from freqtrade/dependabot/pip/develop/orjson-3.9.5
Bump orjson from 3.9.4 to 3.9.5
2023-08-22 08:28:53 +02:00
Matthias
5b25acef52 Merge pull request #9092 from freqtrade/dependabot/pip/develop/plotly-5.16.1
Bump plotly from 5.16.0 to 5.16.1
2023-08-22 08:28:34 +02:00
dependabot[bot]
e3d17b98be Bump gymnasium from 0.28.1 to 0.29.1
Bumps [gymnasium](https://github.com/Farama-Foundation/Gymnasium) from 0.28.1 to 0.29.1.
- [Release notes](https://github.com/Farama-Foundation/Gymnasium/releases)
- [Commits](https://github.com/Farama-Foundation/Gymnasium/compare/v0.28.1...v0.29.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-22 04:48:14 +00:00
Matthias
9da9d48625 Merge pull request #9080 from freqtrade/dependabot/pip/develop/stable-baselines3-2.1.0
Bump stable-baselines3 from 2.0.0 to 2.1.0
2023-08-22 06:47:32 +02:00
dependabot[bot]
1c55432bd1 Bump sqlalchemy from 2.0.19 to 2.0.20
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.19 to 2.0.20.
- [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-08-22 04:47:31 +00:00
dependabot[bot]
a6a1b0e847 Bump orjson from 3.9.4 to 3.9.5
Bumps [orjson](https://github.com/ijl/orjson) from 3.9.4 to 3.9.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.9.4...3.9.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-08-22 04:47:05 +00:00
dependabot[bot]
57c23fd9b3 Bump plotly from 5.16.0 to 5.16.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.16.0 to 5.16.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.16.0...v5.16.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-08-22 04:47:00 +00:00
dependabot[bot]
d18dea076b Bump mkdocs-material from 9.2.0 to 9.2.1
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.2.0 to 9.2.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.2.0...9.2.1)

---
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-08-22 04:46:53 +00:00
dependabot[bot]
4b79481163 Bump pydantic from 2.2.0 to 2.2.1
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.2.0 to 2.2.1.
- [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/v2.2.0...v2.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-22 04:46:44 +00:00
Matthias
9d31566a2d Update dependabot pip limit
should be adjusted for the huge amount of dependencies freqtrade has.
2023-08-22 06:46:10 +02:00
Matthias
3e44bd073c Merge pull request #9082 from freqtrade/dependabot/pip/develop/ccxt-4.0.71
Bump ccxt from 4.0.59 to 4.0.71
2023-08-22 06:42:51 +02:00
Matthias
d2a378b706 Merge pull request #9087 from freqtrade/dependabot/pip/develop/scipy-1.11.2
Bump scipy from 1.11.1 to 1.11.2
2023-08-22 06:36:24 +02:00
dependabot[bot]
ec2f51dcc9 Bump mypy from 1.5.0 to 1.5.1
Bumps [mypy](https://github.com/python/mypy) from 1.5.0 to 1.5.1.
- [Commits](https://github.com/python/mypy/compare/v1.5.0...v1.5.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-08-22 04:36:08 +00:00
Matthias
6d1c1b3e63 Merge pull request #9083 from freqtrade/dependabot/pip/develop/fastapi-0.101.1
Bump fastapi from 0.101.0 to 0.101.1
2023-08-22 06:35:57 +02:00
Matthias
4e52380e09 Merge pull request #9084 from freqtrade/dependabot/pip/develop/mkdocs-material-9.2.0
Bump mkdocs-material from 9.1.21 to 9.2.0
2023-08-22 06:35:30 +02:00
Matthias
f0fc12dfc2 Merge pull request #9085 from freqtrade/dependabot/pip/develop/nbconvert-7.7.4
Bump nbconvert from 7.7.3 to 7.7.4
2023-08-22 06:35:01 +02:00
Matthias
7f4007ecdb Merge pull request #9088 from freqtrade/dependabot/pip/develop/time-machine-2.12.0
Bump time-machine from 2.11.0 to 2.12.0
2023-08-22 06:34:32 +02:00
dependabot[bot]
5a0f62431f Bump time-machine from 2.11.0 to 2.12.0
Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.11.0 to 2.12.0.
- [Changelog](https://github.com/adamchainz/time-machine/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/time-machine/compare/2.11.0...2.12.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-08-21 20:15:50 +00:00
dependabot[bot]
99f7e3bce1 Bump scipy from 1.11.1 to 1.11.2
Bumps [scipy](https://github.com/scipy/scipy) from 1.11.1 to 1.11.2.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.11.1...v1.11.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 20:15:46 +00:00
dependabot[bot]
e93832117d Bump nbconvert from 7.7.3 to 7.7.4
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.7.3 to 7.7.4.
- [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.3...v7.7.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 20:15:34 +00:00
dependabot[bot]
6d90ceca50 Bump mkdocs-material from 9.1.21 to 9.2.0
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.21 to 9.2.0.
- [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.21...9.2.0)

---
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-08-21 20:15:29 +00:00
dependabot[bot]
22f1c72517 Bump fastapi from 0.101.0 to 0.101.1
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.101.0 to 0.101.1.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.101.0...0.101.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-08-21 20:15:21 +00:00
dependabot[bot]
0f1e66b22a Bump ccxt from 4.0.59 to 4.0.71
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.59 to 4.0.71.
- [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.59...4.0.71)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 20:15:15 +00:00
dependabot[bot]
b088154c0a Bump stable-baselines3 from 2.0.0 to 2.1.0
Bumps [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) from 2.0.0 to 2.1.0.
- [Release notes](https://github.com/DLR-RM/stable-baselines3/releases)
- [Commits](https://github.com/DLR-RM/stable-baselines3/compare/v2.0.0...v2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 20:15:03 +00:00
Matthias
4c5f992670 Ensure signals don't break on windows 2023-08-20 16:09:12 +02:00
Matthias
f92b8c50dd Update config echo block to store config in user_data 2023-08-20 13:55:03 +02:00
Matthias
2d800a1422 Fix bug in config-builder 2023-08-20 13:51:33 +02:00
Matthias
fb790b2d42 Update path of config for new-config documentation 2023-08-20 13:32:32 +02:00
Matthias
b71a44f27c Enhance Keyboard interrupt handling for dl-trades (stores data it already downloaded). 2023-08-20 11:57:59 +02:00
Matthias
4fefae6f07 Improve download-trades test 2023-08-20 11:51:01 +02:00
Matthias
3167938d43 move "since" fallback to be the last check 2023-08-20 11:44:40 +02:00
Matthias
cf226afb1a Merge pull request #9072 from freqtrade/talib_update
Talib update to 0.4.28
2023-08-20 11:01:11 +02:00
Matthias
7da0174937 Allow slightly different ta-lib installation locations in setup.sh script 2023-08-20 10:24:05 +02:00
Matthias
4feafb25cf Update ta-lib windows wheels 2023-08-20 10:02:45 +02:00
Matthias
08532e1df1 Bump ta-lib to 0.4.28 2023-08-20 10:02:35 +02:00
Matthias
c0f5d31c8e Merge pull request #9071 from freqtrade/talib_windows_install
improve installation of ta-lib on windows
2023-08-20 09:26:18 +02:00
Matthias
8fa31b35f5 use prefer-binary to avoid hardcoding ta-lib outside of requirements.txt 2023-08-20 08:41:01 +02:00
Matthias
f5e0543113 Fix windows CI failure 2023-08-19 20:50:55 +02:00
Matthias
399e308e07 Fix bug in --dl-trades downloading 2023-08-19 18:32:27 +02:00
Matthias
aa1dcd1b44 Merge pull request #9065 from freqtrade/trades_data_handling
Improve Trades data handling
2023-08-18 18:04:38 +02:00
Matthias
5a9dd79b45 Merge pull request #9011 from freqtrade/dependabot/pip/develop/pydantic-2.1.1
Bump pydantic from 1.10.11 to 2.1.1
2023-08-18 11:50:24 +02:00
Matthias
277cc0a523 Fix import sort order 2023-08-18 10:55:05 +02:00
Matthias
185c5a779d use model_validate instead of parse_obj 2023-08-18 10:21:50 +02:00
Matthias
352f0fdfca Bump pydantic to 2.2.0 2023-08-18 10:19:13 +02:00
Matthias
ee11dae82a Merge branch 'develop' into dependabot/pip/develop/pydantic-2.1.1 2023-08-18 10:18:53 +02:00
Matthias
5ed5907809 Add explicit example for "after_fill" handling 2023-08-18 10:14:32 +02:00
Matthias
3d8dcd1644 Improve and parametrize trades_data tests 2023-08-18 10:05:15 +02:00
Matthias
30064b4102 Add support for trades data in Parquet format 2023-08-18 09:58:03 +02:00
Matthias
8caadc4c5b Fix feather handler storing 2023-08-18 09:47:18 +02:00
Matthias
3eb3596552 Simplify trades_data storing 2023-08-18 09:36:16 +02:00
Matthias
d4bc736eb1 Merge pull request #9064 from freqtrade/maint/venv
Update setup.sh script to use `.venv`
2023-08-18 09:33:34 +02:00
Matthias
5de3b9d7ae Clean up no longer used method 2023-08-18 09:31:17 +02:00
Matthias
fae742de59 Fix imports 2023-08-18 09:12:40 +02:00
Matthias
fa5f7d290b Update download-trades method to work with dataframes 2023-08-18 09:08:10 +02:00
Matthias
7577613882 Extract trades df type conversion 2023-08-18 09:08:10 +02:00
Matthias
0fab65df03 Set explicit dtypes 2023-08-18 09:08:10 +02:00
Matthias
f69a776305 Ensure only relevant columns are stored 2023-08-18 09:08:10 +02:00
Matthias
26c89d89e4 Keep original timestamp in dataframe 2023-08-18 09:08:10 +02:00
Matthias
d97d0e4426 Extract trades DF creation to converter function 2023-08-18 07:02:46 +02:00
Matthias
357b04202c Datahandlers should store data from dataframes 2023-08-17 20:11:18 +02:00
Matthias
6fc1ee9831 trades_append should use dataframe, not lists 2023-08-17 18:06:25 +02:00
Matthias
780f238904 Fix trades duplicates if trade id is different 2023-08-17 18:04:13 +02:00
Matthias
5d5cc71945 Fix pandas duplication detection, improve test 2023-08-17 17:53:08 +02:00
Matthias
0be2250cf5 Keep existing trades_remove_duplicates for now 2023-08-17 17:23:12 +02:00
Matthias
53db254cba don't cascade calls, that creates an additional call 2023-08-17 17:22:02 +02:00
Matthias
02ee7f8b5b Update further tests 2023-08-17 16:05:47 +02:00
Matthias
a595074754 Update test for new trades handling 2023-08-17 10:03:56 +02:00
Matthias
7ac9d33c31 Default should return a dataframe, not an empty list. 2023-08-17 10:00:11 +02:00
Matthias
ac80a69142 Update converters for trades dataframe handling 2023-08-17 10:00:11 +02:00
Matthias
46882406be Update Datahandlers to work with trades data as dataframes 2023-08-17 10:00:11 +02:00
Matthias
ba34318f7a Update converter test to use fixture 2023-08-17 09:57:26 +02:00
Matthias
3bc49330ce webserver mode should properly validate config 2023-08-17 09:15:59 +02:00
Matthias
7bc317fea7 Merge pull request #9061 from freqtrade/fix/7389_backtest_startup_candle
improve `get_analyzed_dataframe` behavior in early candles
2023-08-17 08:25:30 +02:00
Matthias
b93c6235c1 Fix Case of gym.Env in documentation 2023-08-16 18:59:22 +02:00
Matthias
aa756221f6 Improve behavior of ta-lib install 2023-08-16 18:56:42 +02:00
Matthias
688018d9f2 Update setup.sh script to use .venv instead of .env 2023-08-16 18:51:24 +02:00
Matthias
ea181645b0 setup.sh: Extract environment recration to function 2023-08-16 18:33:19 +02:00
Matthias
f607b8abfb Silence pip download 2023-08-16 18:24:40 +02:00
Matthias
d439936014 Update docs about suing .venv instead of .env 2023-08-16 18:24:40 +02:00
Matthias
91fd472717 Extend ruff excludes to .venv 2023-08-16 13:16:23 +02:00
Matthias
6134807c67 Remove wrong image link 2023-08-16 11:00:28 +02:00
Matthias
7651f1b1db Add more samples for correct debug configurations 2023-08-16 10:55:48 +02:00
Matthias
d9fb40ca3e Update cached binance leverage tiers 2023-08-16 07:45:22 +02:00
Matthias
77c7dd8a12 Add FIAT mapping for true usdt 2023-08-16 07:44:19 +02:00
Matthias
452e1ab016 get_analyzed_dataframe should provide dataframe with startup candles
closes #7389
2023-08-15 19:43:04 +02:00
Matthias
bea6782223 Ensure cutoffs in backtesting are properly tested 2023-08-15 19:33:07 +02:00
Matthias
045d8c6fca Add test for informative pair filtering 2023-08-15 17:56:40 +02:00
Matthias
161ab14ed0 Avoid lookahead bias through informative pairs in callbacks 2023-08-15 17:48:07 +02:00
Matthias
6f347b839a Remove optionality from timeframe parameter
(it was never optional, and code was failing if it wasn't provided).
2023-08-15 17:31:56 +02:00
Matthias
09ec00888f Don't use global variable in test 2023-08-15 17:31:56 +02:00
Robert Caulk
5d3f3fb39f Merge pull request #8903 from Yinon-Polak/freqai-pytorch-bugfixes
Freqai pytorch bugfixes
2023-08-15 16:48:44 +02:00
Matthias
3f5903bad8 Split tests for jinja utils 2023-08-15 07:42:43 +02:00
Matthias
afcaeafd96 Move rendering commands to utils 2023-08-15 07:42:05 +02:00
Matthias
6b11f3063f "minimal" strategy templates shouldn't render all attributes 2023-08-15 06:58:50 +02:00
Matthias
a4842113ce Split strategy template to have conditional attributes 2023-08-15 06:58:35 +02:00
Matthias
a78d704998 Fix strategy template typng 2023-08-14 17:29:49 +02:00
Matthias
cb85a53042 Improve "uses_after_fill" detection
(short-circuits some logic, resulting in less code being executed in interface.py)
2023-08-14 17:08:37 +02:00
Matthias
7f1a81eeed Fix stop switching to trailing if order is replaced in backtesting 2023-08-14 17:08:01 +02:00
Matthias
106dffe2c5 split update_trade 2023-08-14 17:07:34 +02:00
Matthias
070a1990e8 Improve handling of None values from custom_stoploss 2023-08-14 16:46:33 +02:00
Matthias
ddf79088fb Update custom stop documenttaion 2023-08-14 16:40:09 +02:00
Matthias
3ed682a9c6 Allow None from custom_stop 2023-08-14 16:40:09 +02:00
Matthias
6e32f172be Update samples in the documentation 2023-08-14 16:40:09 +02:00
Matthias
bef5e191a4 Don't surprise people with "after_fill" calls 2023-08-14 16:40:06 +02:00
Matthias
fc60c0df19 Add call to stoploss-adjust for backtesting 2023-08-14 16:00:33 +02:00
Matthias
62d83b8dbd Use is_stop_trailing for actual trailing detection 2023-08-14 15:57:47 +02:00
Matthias
e1eeaa24d2 Implement "adjust lower" correctly 2023-08-14 15:21:59 +02:00
Matthias
6249392526 Add test for "allow adjustment in other direction" 2023-08-14 15:21:59 +02:00
Matthias
4da8c91161 Improve stop adjustment tests 2023-08-14 15:21:59 +02:00
Matthias
ec8ba821ed Simplify stop adjustment code 2023-08-14 15:21:59 +02:00
Matthias
6b9547a9ad Improve migrations 2023-08-14 15:21:38 +02:00
Matthias
ae9f730624 Add explicit "is_trailing_stop" field to database 2023-08-14 15:21:38 +02:00
Matthias
147cc4f0b6 Initial version of stop "after_fill" 2023-08-14 15:21:10 +02:00
Matthias
e2274e813a Rename adjust_stoploss parameter to allow_refresh 2023-08-14 15:21:10 +02:00
Matthias
d091931279 Ease meaning of "refresh" param for adjust_stoploss 2023-08-14 15:20:31 +02:00
Matthias
d768afed37 price_to_precision should only run once 2023-08-14 15:19:34 +02:00
Matthias
db9247e78e prevent errors in custom stop from crashing the bot 2023-08-14 14:54:11 +02:00
Matthias
d53b6871ea Bump pre-commit mypy 2023-08-14 13:22:55 +02:00
Matthias
08bc615826 Further simplify backtest order handling 2023-08-14 13:22:55 +02:00
Matthias
bcc2dd9803 Simplify backtest order closing 2023-08-14 13:22:55 +02:00
Matthias
d7e9f87b33 Improve comment indent 2023-08-14 13:22:55 +02:00
Matthias
d7556cd66a Remove duplicate call in backtesting 2023-08-14 13:22:55 +02:00
Matthias
018d3a3f6e Merge pull request #9053 from freqtrade/dependabot/pip/develop/ruff-0.0.284
Bump ruff from 0.0.282 to 0.0.284
2023-08-14 13:22:47 +02:00
Matthias
2f5689b32b Merge pull request #9047 from freqtrade/dependabot/pip/develop/questionary-2.0.0
Bump questionary from 1.10.0 to 2.0.0
2023-08-14 13:20:46 +02:00
Matthias
f4844c1224 Downgrade prompt-toolkid to 3.0.36 2023-08-14 09:19:29 +02:00
Matthias
e6218e8580 Merge pull request #9052 from freqtrade/dependabot/pip/develop/joblib-1.3.2
Bump joblib from 1.3.1 to 1.3.2
2023-08-14 09:16:26 +02:00
Matthias
af64971b86 Merge pull request #9055 from freqtrade/dependabot/pip/develop/tqdm-4.66.1
Bump tqdm from 4.65.0 to 4.66.1
2023-08-14 09:12:43 +02:00
Matthias
21cf5fc679 Fix use of string.format() 2023-08-14 09:11:50 +02:00
Matthias
9b6654e81a Fix ruff E721 (type comparison) 2023-08-14 09:11:19 +02:00
Matthias
80c9b1ac7a Merge pull request #9056 from freqtrade/dependabot/pip/develop/ccxt-4.0.59
Bump ccxt from 4.0.50 to 4.0.59
2023-08-14 09:09:08 +02:00
Matthias
b60fdac9f4 Merge pull request #9054 from freqtrade/dependabot/pip/develop/aiofiles-23.2.1
Bump aiofiles from 23.1.0 to 23.2.1
2023-08-14 08:33:22 +02:00
dependabot[bot]
bb52778126 Bump joblib from 1.3.1 to 1.3.2
Bumps [joblib](https://github.com/joblib/joblib) from 1.3.1 to 1.3.2.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/master/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/1.3.1...1.3.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 05:42:41 +00:00
Matthias
92dc6dd8ef Merge pull request #9050 from freqtrade/dependabot/pip/develop/tensorboard-2.14.0
Bump tensorboard from 2.13.0 to 2.14.0
2023-08-14 07:41:07 +02:00
dependabot[bot]
7224bdf823 Bump ccxt from 4.0.50 to 4.0.59
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.50 to 4.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/4.0.50...4.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-08-14 05:30:14 +00:00
dependabot[bot]
0abfad5586 Bump tqdm from 4.65.0 to 4.66.1
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.65.0 to 4.66.1.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.65.0...v4.66.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 05:29:48 +00:00
dependabot[bot]
9a95011b57 Bump ruff from 0.0.282 to 0.0.284
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.282 to 0.0.284.
- [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.282...v0.0.284)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 05:28:56 +00:00
Matthias
2a3157c745 Merge pull request #9048 from freqtrade/dependabot/pip/develop/mypy-1.5.0
Bump mypy from 1.4.1 to 1.5.0
2023-08-14 07:27:49 +02:00
Matthias
63bc89cff8 Merge pull request #9051 from freqtrade/dependabot/pip/develop/plotly-5.16.0
Bump plotly from 5.15.0 to 5.16.0
2023-08-14 07:27:19 +02:00
Matthias
aed33e759b Merge pull request #9049 from freqtrade/dependabot/pip/develop/jsonschema-4.19.0
Bump jsonschema from 4.18.6 to 4.19.0
2023-08-14 07:26:39 +02:00
Matthias
e0915e1638 Merge pull request #9046 from freqtrade/dependabot/pip/develop/orjson-3.9.4
Bump orjson from 3.9.3 to 3.9.4
2023-08-14 07:24:27 +02:00
Matthias
0722844a6d Merge pull request #9045 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.8.10
Bump pypa/gh-action-pypi-publish from 1.8.8 to 1.8.10
2023-08-14 07:24:03 +02:00
dependabot[bot]
987a7ddac0 Bump aiofiles from 23.1.0 to 23.2.1
Bumps [aiofiles](https://github.com/Tinche/aiofiles) from 23.1.0 to 23.2.1.
- [Release notes](https://github.com/Tinche/aiofiles/releases)
- [Commits](https://github.com/Tinche/aiofiles/compare/v23.1.0...v23.2.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 03:53:17 +00:00
dependabot[bot]
ceee57c39c Bump plotly from 5.15.0 to 5.16.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.15.0 to 5.16.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.15.0...v5.16.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-08-14 03:52:53 +00:00
dependabot[bot]
6e79c19fe0 Bump tensorboard from 2.13.0 to 2.14.0
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.13.0 to 2.14.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.13.0...2.14.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-08-14 03:52:50 +00:00
dependabot[bot]
f0a50b1f2d Bump jsonschema from 4.18.6 to 4.19.0
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.18.6 to 4.19.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.18.6...v4.19.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-08-14 03:52:45 +00:00
dependabot[bot]
4942d01574 Bump mypy from 1.4.1 to 1.5.0
Bumps [mypy](https://github.com/python/mypy) from 1.4.1 to 1.5.0.
- [Commits](https://github.com/python/mypy/compare/v1.4.1...v1.5.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-08-14 03:52:40 +00:00
dependabot[bot]
4664cc23eb Bump questionary from 1.10.0 to 2.0.0
Bumps [questionary](https://github.com/tmbo/questionary) from 1.10.0 to 2.0.0.
- [Commits](https://github.com/tmbo/questionary/compare/1.10.0...2.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 03:52:34 +00:00
dependabot[bot]
6768641bac Bump orjson from 3.9.3 to 3.9.4
Bumps [orjson](https://github.com/ijl/orjson) from 3.9.3 to 3.9.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.9.3...3.9.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-08-14 03:52:31 +00:00
dependabot[bot]
90e41274e0 Bump pypa/gh-action-pypi-publish from 1.8.8 to 1.8.10
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.8.8 to 1.8.10.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.8.8...v1.8.10)

---
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-08-14 03:36:03 +00:00
Matthias
2c5a7ceab5 Improve typing of stoploss reinit 2023-08-13 13:21:46 +02:00
Matthias
3ecaedb7d8 use FormatStrings in trade_model 2023-08-13 11:11:10 +02:00
Matthias
1ca3cd086f Fix missing . in interface docs 2023-08-13 10:32:37 +02:00
Matthias
72bd4e816d Simplify code, no longer log "could not find rate"
closes #9031
2023-08-12 16:10:37 +02:00
Matthias
716b1cd002 Improve ccxt tests 2023-08-10 20:05:21 +02:00
Matthias
6ce08548fb Further update ccxt test fixtures 2023-08-10 18:11:02 +02:00
Matthias
47adebd872 Merge pull request #9032 from freqtrade/online_test_refactor
Online test refactor
2023-08-10 09:39:54 +02:00
Matthias
ea257e3cbb Refactor online test fixtures into separate conftest module 2023-08-10 07:17:52 +02:00
Matthias
20763daa74 Simplify online tess by skipping non-available futures exchanges 2023-08-10 07:10:45 +02:00
Matthias
7e9389421a Move ccxt_compat tests to their own subfolder 2023-08-10 07:03:29 +02:00
Matthias
4b8569b80e Merge pull request #9014 from hippocritical/develop
bugfixes and false-positives for lookahead-analysis
2023-08-10 06:28:12 +02:00
Matthias
05e1828617 Improve Fee check 2023-08-09 20:26:08 +02:00
Matthias
32c3d96760 Merge pull request #9027 from freqtrade/remove_sandbox
Remove sandbox
2023-08-09 20:24:19 +02:00
Matthias
88925d6c1d Merge branch 'develop' into pr/Axel-CH/8779 2023-08-09 19:58:24 +02:00
Matthias
328a6f791e Improve stoploss mock 2023-08-09 19:55:27 +02:00
Matthias
b934644039 Fix tests, explicitly test for missing timerange 2023-08-09 18:36:20 +02:00
Matthias
4a62ebbf93 Don't hardcode fee, but use fee from the very first iteration. 2023-08-09 18:36:09 +02:00
Matthias
2069abe314 Remove custom fetch_funding_fees from bybit 2023-08-08 20:56:03 +02:00
Matthias
78cf8a1c09 Fix exchange bybit test 2023-08-08 20:31:10 +02:00
Matthias
565e2699b4 Re-set funding-fee history limit for bybit to 200 2023-08-08 20:29:57 +02:00
Matthias
62ad2cca1a Add active test for alternative futures rates (ensures history is loaded correctly). 2023-08-08 20:18:46 +02:00
Matthias
46bafa9d5d Merge pull request #9030 from jansmets/increase_bybit_ohlcv_candle_limit
Increase bybit ohlcv_candle_limit to 1000
2023-08-08 18:31:34 +02:00
Matthias
74cbfcaef4 Merge pull request #9028 from stash86/bt-metrics
add _timeout attribute to discord, otherwise it won't work
2023-08-08 18:20:57 +02:00
Jan Smets
ab156b6ad7 Increase bybit ohlcv_candle_limit to 1000 in tests 2023-08-08 12:28:28 +02:00
Jan Smets
1f23727ff7 Increase bybit ohlcv_candle_limit to 1000 2023-08-08 11:36:48 +02:00
Stefano Ariestasia
c88f71c638 add timeout to discord 2023-08-08 14:57:48 +09:00
Matthias
05bbc8e7aa Remove last sandbox occurance 2023-08-08 06:26:25 +02:00
Matthias
5e3e443d27 Remove Sandbox docs 2023-08-08 06:25:12 +02:00
Matthias
88d6f70abe Remove sandbox related code 2023-08-08 06:25:06 +02:00
Matthias
9c73e52dd1 Remove sandbox configuration options 2023-08-08 06:23:52 +02:00
Matthias
33d3c4f7d5 Improve backtestResponse in preparation for future update 2023-08-07 20:11:30 +02:00
Matthias
03150ee09a Ensure backpopulated "trade" attribute is immediately loaded. 2023-08-07 06:59:35 +02:00
Matthias
4b07720d0b Update test strategy to ensure we're using stake_amount 2023-08-07 06:59:16 +02:00
Matthias
096df99ba3 Merge pull request #9020 from freqtrade/dependabot/pip/develop/ccxt-4.0.50
Bump ccxt from 4.0.48 to 4.0.50
2023-08-07 06:46:48 +02:00
Matthias
f16832b07c Merge pull request #9023 from freqtrade/dependabot/pip/develop/jsonschema-4.18.6
Bump jsonschema from 4.18.5 to 4.18.6
2023-08-07 06:34:59 +02:00
Matthias
98310de996 Merge pull request #9021 from freqtrade/dependabot/pip/develop/orjson-3.9.3
Bump orjson from 3.9.2 to 3.9.3
2023-08-07 06:24:16 +02:00
Matthias
d37b2fbada Merge pull request #9022 from freqtrade/dependabot/pip/develop/fastapi-0.101.0
Bump fastapi from 0.100.1 to 0.101.0
2023-08-07 06:24:00 +02:00
dependabot[bot]
ae3c3d81c1 Bump jsonschema from 4.18.5 to 4.18.6
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.18.5 to 4.18.6.
- [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.5...v4.18.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-07 03:05:47 +00:00
dependabot[bot]
8deedc31c5 Bump fastapi from 0.100.1 to 0.101.0
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.100.1 to 0.101.0.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.100.1...0.101.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-08-07 03:05:27 +00:00
dependabot[bot]
8c3a0cf618 Bump orjson from 3.9.2 to 3.9.3
Bumps [orjson](https://github.com/ijl/orjson) from 3.9.2 to 3.9.3.
- [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.2...3.9.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-07 03:05:18 +00:00
dependabot[bot]
67ea6512ef Bump ccxt from 4.0.48 to 4.0.50
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.48 to 4.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/4.0.48...4.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-08-07 03:05:10 +00:00
Matthias
813ace12c9 Explain behavior in case of deposits
related to #8998
2023-08-06 17:11:33 +02:00
Matthias
cd6fc1652e Add rate-limited wallets call before adjust_trade-Position calls
closes #8998
2023-08-06 17:11:17 +02:00
Matthias
7d18261f58 Improve FAQ wording 2023-08-06 17:10:38 +02:00
Matthias
72d9e8a094 Fix indentation of strategy-updater in utils 2023-08-05 11:31:01 +02:00
Matthias
e174f9640d Improve docker docs with some hints about windows usage 2023-08-05 11:14:19 +02:00
hippocritical
25602ceac3 Added a fixed fee to 0.02 (any fixed value would suffice) since kucoin dynamically decides which pair gets which amount of fees and thereby producing false-positives upon verifying the entries/exits.
Added a check for timerange being set.
2023-08-05 08:24:47 +02:00
hippocritical
065899b426 Merge branch 'freqtrade:develop' into develop 2023-08-05 07:36:29 +02:00
yinon
bdf89efd11 pytorch - improve docs 2023-08-04 14:42:28 +00:00
yinon
23d2bad2a0 pytorch - set n_steps type as optional 2023-08-04 14:33:59 +00:00
yinon
9f69a45afd pytorch - documentation update 2023-08-04 13:46:30 +00:00
yinon
a3c6904fbc pytorch - naming refactor - max_iters to n_steps 2023-08-04 13:45:21 +00:00
yinon
d17bf6350d pytorch - trainer - revert load changes 2023-08-04 12:53:20 +00:00
yinon
777d25192c pytorch - bugfix - explicitly assign tensor to var as .to() is not inplace operation 2023-08-04 12:53:20 +00:00
yinon
836d7b885a pytorch - trainer - set default usage of n_epochs instead of max_iters 2023-08-04 12:53:19 +00:00
yinon
8ebfb731d8 Merge branch 'develop' into freqai-pytorch-bugfixes 2023-08-04 12:47:41 +00:00
axel
2893f0544a fix test_apply_fee_conditional_multibuy 2023-08-03 19:13:43 -04:00
Matthias
3e77bc3ba2 Merge pull request #9013 from freqtrade/feat/backtest_notes
Add backtest notes capability
2023-08-03 20:15:08 +02:00
hippocritical
365766c957 Merge branch 'freqtrade:develop' into develop 2023-08-03 18:44:00 +02:00
Matthias
81cd241954 Update API backtest to return proper metadata 2023-08-03 07:05:57 +02:00
Matthias
6d6111864e Test also backtest result list 2023-08-03 06:43:12 +02:00
Matthias
23a2b95994 Add test for updating metadata 2023-08-03 06:39:27 +02:00
Matthias
36b84241b1 Don't allow null as notes 2023-08-03 06:28:57 +02:00
Matthias
51879ffd2c move Notes to be a "API only" type 2023-08-03 06:17:06 +02:00
Matthias
0d71a74d8a Bump api version to 2.32 2023-08-03 06:17:06 +02:00
Matthias
78972604d0 Allow metadata file updating 2023-08-03 06:17:05 +02:00
Matthias
2f95c44777 Add "notes" to backtest result output 2023-08-03 06:17:05 +02:00
Matthias
3d3dcc68e0 Merge pull request #9009 from freqtrade/dependabot/pip/develop/ccxt-4.0.48
Bump ccxt from 4.0.47 to 4.0.48
2023-08-03 06:11:49 +02:00
Axel CHERUBIN
f397d973f3 Merge branch 'freqtrade:develop' into feature/multiple_open_orders 2023-08-02 23:48:13 -04:00
Matthias
fede847fd9 Merge pull request #9010 from freqtrade/dependabot/pip/develop/jsonschema-4.18.5
Bump jsonschema from 4.18.4 to 4.18.5
2023-08-02 20:37:58 +02:00
Matthias
53c0d30f36 Update test for new kucoin behavior
related: https://github.com/ccxt/ccxt/pull/18745
2023-08-02 20:04:41 +02:00
hippocritical
fe6deef1bd Merge branch 'freqtrade:develop' into develop 2023-08-02 20:02:55 +02:00
Matthias
0e63335d2e Remove bitvavo temp. workaround 2023-08-02 20:01:31 +02:00
Matthias
494d58e79c Update tests for new output format (string-formatted dates are not relevant). 2023-08-02 19:52:34 +02:00
Matthias
3b416223e3 Bump pydantic to 2.1.1 2023-08-02 19:52:15 +02:00
Matthias
d78eb834c4 Convert to pydantic - jsonencoders (no longer exists) 2023-08-02 19:52:08 +02:00
Matthias
47850ce1b0 Don''t use deprecated pydantic methods 2023-08-02 19:51:50 +02:00
Matthias
bb18e1b45b Fix part of the backtest type error 2023-08-02 19:51:50 +02:00
Matthias
4b2a6a84f4 Remove more deprecated options 2023-08-02 19:51:50 +02:00
Matthias
505584dc48 pydantic 2 - update deprecated methods 2023-08-02 19:51:50 +02:00
Matthias
e36c545258 pydantic - root model 2023-08-02 19:51:47 +02:00
Matthias
cfdd01d295 Update most of Api schema to pydantic 2.0 2023-08-02 19:51:21 +02:00
Matthias
53c76160a7 Force pydantic > 2.0 2023-08-02 19:50:58 +02:00
Matthias
9b924f1f85 Convert ws_schemas to pydantic 2.0 2023-08-02 19:50:58 +02:00
Matthias
261a593ba5 Update tests for new output format (string-formatted dates are not relevant). 2023-08-02 19:48:59 +02:00
dependabot[bot]
02ec945a96 Bump pydantic from 1.10.11 to 2.1.1
Bumps [pydantic](https://github.com/pydantic/pydantic) from 1.10.11 to 2.1.1.
- [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.11...v2.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 17:45:59 +00:00
dependabot[bot]
2b7deb147d Bump jsonschema from 4.18.4 to 4.18.5
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.18.4 to 4.18.5.
- [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.4...v4.18.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 17:43:11 +00:00
Matthias
f2b240b16d Merge pull request #9008 from freqtrade/dependabot/pip/develop/mkdocs-1.5.2
Bump mkdocs from 1.5.1 to 1.5.2
2023-08-02 19:42:32 +02:00
dependabot[bot]
ac85c3527b Bump ccxt from 4.0.47 to 4.0.48
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.47 to 4.0.48.
- [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.47...4.0.48)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 16:21:12 +00:00
dependabot[bot]
adbb131dc6 Bump mkdocs from 1.5.1 to 1.5.2
Bumps [mkdocs](https://github.com/mkdocs/mkdocs) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.5.1...1.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 16:20:58 +00:00
Matthias
7a6f10f898 Merge pull request #9005 from freqtrade/dependabot/pip/develop/ruff-0.0.282
Bump ruff from 0.0.280 to 0.0.282
2023-08-02 18:20:10 +02:00
Matthias
482cc615cc Fix empty Path inits in tests 2023-08-02 17:57:49 +02:00
Matthias
d037d5d880 Merge pull request #8997 from stash86/bt-metrics
add second alternatives instead of using .range
2023-08-02 09:32:24 +02:00
Matthias
ae2df4fed3 Merge pull request #9007 from freqtrade/dependabot/pip/develop/rich-13.5.2
Bump rich from 13.5.1 to 13.5.2
2023-08-02 09:17:05 +02:00
Matthias
aeb7a8f90e Merge pull request #9006 from freqtrade/dependabot/pip/develop/ccxt-4.0.47
Bump ccxt from 4.0.45 to 4.0.47
2023-08-02 09:16:51 +02:00
dependabot[bot]
b91d7debea Bump rich from 13.5.1 to 13.5.2
Bumps [rich](https://github.com/Textualize/rich) from 13.5.1 to 13.5.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.5.1...v13.5.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-08-02 05:09:47 +00:00
dependabot[bot]
1778a6add6 Bump ccxt from 4.0.45 to 4.0.47
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.45 to 4.0.47.
- [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.45...4.0.47)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 05:09:42 +00:00
dependabot[bot]
2a0a270f18 Bump ruff from 0.0.280 to 0.0.282
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.0.280 to 0.0.282.
- [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.280...v0.0.282)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 05:09:27 +00:00
Matthias
dc93f122f0 Merge pull request #9003 from freqtrade/dependabot/pip/cryptography-41.0.3
Bump cryptography from 40.0.1 to 41.0.3
2023-08-02 07:08:26 +02:00
Matthias
e1fd3a6dc3 Fix formatting of bullet points 2023-08-02 07:01:59 +02:00
Matthias
66adeb0a5c Only bump non-arm cryptography 2023-08-02 06:42:50 +02:00
dependabot[bot]
1be1efbc4c Bump cryptography from 40.0.1 to 41.0.3
Bumps [cryptography](https://github.com/pyca/cryptography) from 40.0.1 to 41.0.3.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/40.0.1...41.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-02 01:42:29 +00:00
Matthias
acd005b726 Don't show 0.0.0.0 security warning when running in docker.
#9000
2023-08-01 20:17:07 +02:00
Stefano Ariestasia
c4d41659f2 add second alternatives instead of using .range 2023-08-01 16:15:20 +09:00
Matthias
3612956b7b Allow unbound stoploss
part of  #8976
2023-08-01 07:12:56 +02:00
Matthias
78670602dd Update binance leverage tiers 2023-08-01 07:09:44 +02:00
Matthias
33eecfa9ef Fix test typo 2023-08-01 06:32:23 +02:00
Matthias
30f6f470d3 Add filename to backtest result metadata 2023-07-31 21:22:22 +02:00
Matthias
c836bd8fa5 Add Get_backtest_resultlist typing 2023-07-31 21:22:22 +02:00
Matthias
5c68b0d38e Add BacktestMetadataType 2023-07-31 21:22:22 +02:00
Matthias
f546ee6569 Use list comprehension to get backtest-history 2023-07-31 21:22:22 +02:00
Matthias
730ae781a9 Add explicit test for get_backtest_metadata 2023-07-31 21:22:22 +02:00
Matthias
ec10d0706a Merge pull request #8994 from freqtrade/dependabot/pip/develop/ccxt-4.0.45
Bump ccxt from 4.0.44 to 4.0.45
2023-07-31 19:10:05 +02:00
Matthias
9d58384eae Merge pull request #8993 from freqtrade/dependabot/pip/develop/numpy-1.25.2
Bump numpy from 1.25.1 to 1.25.2
2023-07-31 19:09:52 +02:00
dependabot[bot]
4fd425260d Bump ccxt from 4.0.44 to 4.0.45
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.44 to 4.0.45.
- [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.44...4.0.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-07-31 15:55:46 +00:00
Matthias
dcdd7d57a6 Merge pull request #8992 from freqtrade/dependabot/pip/develop/rich-13.5.1
Bump rich from 13.5.0 to 13.5.1
2023-07-31 17:54:23 +02:00
dependabot[bot]
f1fb118d76 Bump numpy from 1.25.1 to 1.25.2
Bumps [numpy](https://github.com/numpy/numpy) from 1.25.1 to 1.25.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.25.1...v1.25.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-07-31 14:55:30 +00:00
dependabot[bot]
61da1877ae Bump rich from 13.5.0 to 13.5.1
Bumps [rich](https://github.com/Textualize/rich) from 13.5.0 to 13.5.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.5.0...v13.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-31 14:54:52 +00:00
Matthias
78b0609840 Merge pull request #8991 from freqtrade/dependabot/pip/develop/uvicorn-0.23.2
Bump uvicorn from 0.23.1 to 0.23.2
2023-07-31 16:54:10 +02:00
dependabot[bot]
6b163af99a Bump uvicorn from 0.23.1 to 0.23.2
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.23.1 to 0.23.2.
- [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.1...0.23.2)

---
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-31 07:46:04 +00:00
Matthias
8030e65384 Merge pull request #8985 from freqtrade/dependabot/pip/develop/rich-13.5.0
Bump rich from 13.4.2 to 13.5.0
2023-07-31 09:33:10 +02:00
Matthias
c20e3a3075 Merge pull request #8989 from freqtrade/dependabot/pip/develop/ccxt-4.0.44
Bump ccxt from 4.0.36 to 4.0.44
2023-07-31 08:29:59 +02:00
Matthias
d6999fda6f Merge pull request #8986 from freqtrade/dependabot/pip/develop/markdown-3.4.4
Bump markdown from 3.3.7 to 3.4.4
2023-07-31 08:29:33 +02:00
Matthias
9c39499c5d Merge pull request #8987 from freqtrade/dependabot/pip/develop/mkdocs-material-9.1.21
Bump mkdocs-material from 9.1.19 to 9.1.21
2023-07-31 08:28:55 +02:00
dependabot[bot]
ce574af7c8 Bump mkdocs-material from 9.1.19 to 9.1.21
Bumps [mkdocs-material](https://github.com/squidfunk/mkdocs-material) from 9.1.19 to 9.1.21.
- [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.19...9.1.21)

---
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-31 05:06:28 +00:00
Matthias
74edc202cf Merge pull request #8984 from freqtrade/dependabot/pip/develop/fastapi-0.100.1
Bump fastapi from 0.100.0 to 0.100.1
2023-07-31 07:05:43 +02:00
dependabot[bot]
ddd92a90b7 Bump markdown from 3.3.7 to 3.4.4
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.3.7 to 3.4.4.
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/change_log/release-2.6.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.3.7...3.4.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-31 05:04:57 +00:00
Matthias
3ee228428d Merge pull request #8983 from freqtrade/dependabot/pip/develop/mkdocs-1.5.1
Bump mkdocs from 1.4.3 to 1.5.1
2023-07-31 07:03:25 +02:00
Matthias
a60fd9c011 Merge pull request #8988 from freqtrade/dependabot/pip/develop/nbconvert-7.7.3
Bump nbconvert from 7.7.2 to 7.7.3
2023-07-31 07:02:19 +02:00
dependabot[bot]
370ea273cb Bump ccxt from 4.0.36 to 4.0.44
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.0.36 to 4.0.44.
- [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.36...4.0.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-07-31 03:35:38 +00:00
dependabot[bot]
bc86f12611 Bump nbconvert from 7.7.2 to 7.7.3
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.7.2 to 7.7.3.
- [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.2...v7.7.3)

---
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-31 03:35:32 +00:00
dependabot[bot]
e5d5c4c50a Bump rich from 13.4.2 to 13.5.0
Bumps [rich](https://github.com/Textualize/rich) from 13.4.2 to 13.5.0.
- [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.2...v13.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-31 03:35:10 +00:00
dependabot[bot]
a147f7a041 Bump fastapi from 0.100.0 to 0.100.1
Bumps [fastapi](https://github.com/tiangolo/fastapi) from 0.100.0 to 0.100.1.
- [Release notes](https://github.com/tiangolo/fastapi/releases)
- [Commits](https://github.com/tiangolo/fastapi/compare/0.100.0...0.100.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-07-31 03:35:06 +00:00
dependabot[bot]
b666adced4 Bump mkdocs from 1.4.3 to 1.5.1
Bumps [mkdocs](https://github.com/mkdocs/mkdocs) from 1.4.3 to 1.5.1.
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.4.3...1.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-31 03:35:00 +00:00
Matthias
1926e642cd Improve backtest_stats storing test 2023-07-30 19:49:20 +02:00
Matthias
1a1103c239 Add backtest-result typing 2023-07-30 10:54:03 +02:00
Matthias
3148cd39c2 Don't drop metadata from original dict when storing backtest results 2023-07-30 10:54:03 +02:00
Matthias
22006ebeea Merge pull request #8899 from freqtrade/dataformat/feather
Change default dataformat to feather
2023-07-30 09:08:43 +02:00
Matthias
d104fb13a0 Merge pull request #8978 from freqtrade/new_release
New Release 2023.7
2023-07-30 09:02:44 +02:00
Matthias
71737d8792 Remove half-commented test part 2023-07-29 20:08:20 +02:00
Matthias
6659d26131 Merge branch 'develop' into dataformat/feather 2023-07-29 20:04:12 +02:00
Matthias
047de2e0ff Bump version to 2023.7 2023-07-29 18:19:04 +02:00
Matthias
15dd8bec1c Bump dev version to 2023.8-dev 2023-07-29 18:18:03 +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
hippocritical
5b8800ee18 didnt intend to change the timerange itself, but the logger-output of the timerange 2023-07-23 20:20:15 +02:00
hippocritical
5bb74e448e Merge remote-tracking branch 'origin/develop' into develop 2023-07-23 20:08:27 +02:00
hippocritical
e4b488cb84 added stake_amount to a fixed 10k value.
In a combination with a wallet size of 1 billion it should never be able to run out of money avoiding false-positives of some users who just wanted to test a strategy without actually checking how the stake_amount-variable should be used in combination with the strategy-function custom_stake_amount.

reason: some strategies demand a custom_stake_amount of 1$ demanding a very large wallet-size (which already was set previously)
Others start with 100% of a slot size and subdivide the base-orders and safety-orders down to finish at 100% of a slot-size and use unlimited stake_amount.

Edited docs to reflect that change.
2023-07-23 20:05:29 +02:00
hippocritical
70fa175f57 Merge branch 'freqtrade:develop' into develop 2023-07-23 20:01:59 +02: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
hippocritical
ad428aa9b0 added stake_amount to a fixed 10k value.
In a combination with a wallet size of 1 billion it should never be able to run out of money avoiding false-positives of some users who just wanted to test a strategy without actually checking how the stake_amount-variable should be used in combination with the strategy-function custom_stake_amount

reason: some strategies demand a custom_stake_amount of 1$ demanding a very large wallet-size (which already was set previously)
Others start with 100% of a slot size and subdivide the base-orders and safety-orders down to finish at 100% of a slot-size and use unlimited stake_amount.

Edited docs to reflect that change too
2023-07-23 19:50:12 +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
hippocritical
1ab357dc32 added mentioning which pair + timerange + idx is biased for visibility and debugging purposes 2023-07-23 15:29:25 +02:00
hippocritical
a33be8a349 added dummy-varholders in case a not-last-trade is force-exit and else the indexes would shift ruining the analysis and making debugging easier (since the same ID will always be the same ID again) 2023-07-23 13:48:54 +02:00
hippocritical
a5f5293bc8 added logger-output when something is skipped or aborted 2023-07-23 11:23:02 +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
Yinon Polak
d61f512e20 pytorch - trainer - clean code 2023-07-15 14:43:05 +03:00
Yinon Polak
77f1584713 pytorch - trainer - bugfix step tensorboard step usage 2023-07-15 14:37:44 +03: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
Yinon Polak
ffcba45b1b pytorch - mypy fixes 2023-07-13 21:36:14 +03:00
Yinon Polak
9fb0ce664c pytorch - ruff fixes 2023-07-13 21:32:46 +03:00
Yinon Polak
5734358d91 pytorch - trainer - add assertion that either n_epochs or max_iters is been set. 2023-07-13 20:59:33 +03: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
Yinon Polak
7d28dad209 pytorch - add n_epochs param to trainer 2023-07-13 20:41:38 +03: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
yinon
588ffeedc1 pytorch - trainer - reomve max_n_eval_batches arg from estimate loss method 2023-07-13 15:40:40 +00:00
yinon
49a7de4ebd pytorch - trainer - add device arg to load method 2023-07-13 15:39:47 +00:00
yinon
0c9aa86885 pytorch - data convertor - create tensor directly on device, simplify code 2023-07-13 15:38:58 +00:00
yinon
9cb45a3810 pytorch - bugfix - explicitly assign tensor to var as .to() is not inplace operation 2023-07-13 15:37:50 +00: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
b593205ad9 No need to use .get() for properties with default values 2023-07-12 18:29:12 +02:00
Matthias
5399253786 Update documentation in regards to data-format 2023-07-12 18:23:51 +02:00
Matthias
2babb36fc2 Update final tests 2023-07-12 18:23:31 +02:00
Matthias
ec2960a167 Fix dtype ... 2023-07-12 18:23:31 +02:00
Matthias
1c5d20e9a3 Fix some tests, restore 1m json data 2023-07-12 18:23:31 +02:00
Matthias
a1efd6b783 Update further tests to use feather 2023-07-12 18:23:31 +02:00
Matthias
1d77497f64 Fix test 2023-07-12 18:23:31 +02:00
Matthias
586692b73f TMP: remove full json data 2023-07-12 18:23:31 +02:00
Matthias
4d3740d4ce Update default datahandler class 2023-07-12 18:23:30 +02:00
Matthias
15aa1fd876 Add new feather data 2023-07-12 18:23:30 +02:00
Matthias
578110488c Update cli-options default 2023-07-12 18:23:30 +02:00
Matthias
08fdb3a47d Update documentation 2023-07-12 18:23:30 +02:00
Matthias
cca8c4e5b8 Update default dataformat to feather 2023-07-12 18:23:30 +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
f224f743da Add explicit test for open_orders property 2023-06-24 08:53:27 +02:00
Matthias
be062c5fbe Fix frequent notification bug due to stop order 2023-06-24 08:10:31 +02:00
axel
5c0d89feb5 fix test_handle_insufficient_funds with comments 2023-06-23 17:53:54 -04: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
axel
4e6068a923 wip fix test_rpc_force_exit / __exec_force_exit 2023-06-21 02:46:16 -04:00
axel
07c629922a fiw wip test_api_status 2023-06-21 02:15:06 -04:00
axel
3f506bb474 fix test_api_performance 2023-06-21 02:05:40 -04:00
axel
1c4c2272f5 fix test_api_delete_open_order 2023-06-21 02:02:47 -04:00
axel
1ed6f1875b wip fix test_rpc_force_exit 2023-06-21 01:48:57 -04:00
axel
ca4ef22d07 fix test_rpc_status_table 2023-06-20 23:12:31 -04:00
axel
db5383927c fix test_rpc_trade_status 2023-06-20 21:52:06 -04:00
Matthias
2b88137612 Merge branch 'develop' into pr/Axel-CH/8779 2023-06-20 19:17:47 +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
9fddc1499e Merge branch 'develop' into pr/Axel-CH/8779 2023-06-20 18:14:25 +02:00
Matthias
b49a118764 Fix exit_timeout test 2023-06-20 18:14:16 +02:00
Matthias
c7f4dc1651 Merge branch 'develop' into pr/Axel-CH/8779 2023-06-20 17:43:50 +02:00
Matthias
29d77a17e5 Fix more tests 2023-06-20 17:42:05 +02:00
Matthias
e34bfa9767 Fix exception test 2023-06-20 17:13:16 +02:00
Matthias
d08bad7288 Fix trade_from_json 2023-06-20 17:10:04 +02:00
Matthias
ac4e3028d2 Clean up some code 2023-06-20 17:09:31 +02:00
Matthias
f1bed95153 Fix some initial tests 2023-06-20 17:02:03 +02:00
Matthias
f3f5b63b7f Remove duplicate attributes 2023-06-20 16:43:32 +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
axel
a98e8ef201 retreive open orders from orders list, not from db 2023-06-19 12:28:55 -04: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
axel
b031470979 WIP with comment on test test_adjust_entry_maintain_replace 2023-06-17 12:36:03 -04: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
axel
171c4f182d update test_adjust_entry_maintain_replace test case, fix first RPC test 2023-06-17 00:06:30 -04:00
axel
32c919cfad replace open_orders_count by has_open_orders in freqtradebot 2023-06-16 23:36:37 -04:00
axel
bf60f38a23 fix tests test_handle_trade, test_handle_cancel_exit_limit, WIP on test_adjust_entry_maintain_replace 2023-06-16 23:29:41 -04:00
axel
93994756e8 fix multiple tests, including test_check_handle_cancelled_buy 2023-06-16 21:51:24 -04:00
axel
7c55a2c6e2 fix tests: test_manage_open_orders_entry, test_manage_open_orders_partial_except, test_adjust_entry_cancel, test_manage_open_orders_partial_fee 2023-06-16 18:01:38 -04:00
axel
ee43792566 fix tests: test_handle_cancel_exit_cancel_exception, test_update_trade_state_sell, test_manage_open_orders_entry_usercustom 2023-06-16 17:14:53 -04:00
axel
f14b42f202 add use has_open_orders property in freqtradebot tests 2023-06-16 16:22:08 -04:00
axel
6e8c765ece add has_open_orders to Trade model property 2023-06-16 16:15:24 -04: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
axel
5f70406880 fix more tests 2023-06-15 22:00:15 -04:00
axel
069759c7c5 fix more tests 2023-06-15 21:33:39 -04:00
axel
ebd5fac91d update cancel_all_open_orders, wip on fixing test_cancel_all_open_orders 2023-06-15 21:04:40 -04:00
axel
156c202889 fix more tests including process_open_trade_positions 2023-06-15 20:46:35 -04: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
axel
8e0faf4aaa fix more tests, remove legacy conditions from update_trade function 2023-06-15 14:29:08 -04: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
axel
20a2b27498 update LocalTrade model orders related property type 2023-06-15 14:11:21 -04:00
axel
73d1201ed8 start fixing test_handle_stoploss_on_exchange_trailing, add temp logs 2023-06-15 13:37:36 -04:00
axel
fcbacae6f1 remove unuseful function call in manage_open_orders 2023-06-15 12:04:42 -04:00
axel
60a50a2ea8 fix test_handle_stoploss_on_exchange, add more orders related hybrid_properties to Trade classes 2023-06-15 11:56:41 -04:00
axel
defa6f45b2 fix more freqtradebot tests, update params of handle_cancel_enter, handle_cancel_exit 2023-06-15 03:05:01 -04:00
axel
9cdff0b0a5 fix first important tests in test_freqtradebot, update and fix on order related Trade class hybrid_properties 2023-06-15 01:55:13 -04: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
axel
450fc5763f fix test test_freqtradebot.py::test_execute_entry 2023-06-14 14:20:14 -04:00
axel
2495661554 remove unrequired appends from test_update_limit_order 2023-06-14 11:49:20 -04:00
axel
ae92557dd7 remove commented legacy open_order_id property references 2023-06-14 11:44:49 -04:00
axel
057f852e06 fix localTrade and trade classe miroring, fix persistence tests 2023-06-14 11:40:30 -04: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
axel
4874d10455 Replace open_order_id property by open_orders in Trade model, first test update 2023-06-13 02:11:34 -04: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
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
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
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
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
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
Richard Jozsa
7cbc0ce80a Merge branch 'freqtrade:develop' into develop 2023-03-28 01:23:24 +02:00
robcaulk
3cabcabcbd ensure labels are properly defined in backtesting 2023-03-27 15:23:01 +02:00
robcaulk
55781e7f10 fix tests 2023-03-26 19:22:52 +02:00
robcaulk
f1e831a7b8 fix bug in backtest target setting 2023-03-26 13:43:59 +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
hippocritical
efefcb240b Merge branch 'freqtrade:develop' into develop 2023-03-24 22:37:21 +01:00
Yinon Polak
8903ba5d89 fix enf of file 2023-03-24 20:35:55 +03: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
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
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
Yinon Polak
a4b617e482 type hints fixes 2023-03-20 20:22:28 +02: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
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
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
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
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
Yinon Polak
a49f62eecb classifier test - set model file extension 2023-03-18 20:51:30 +02: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
Richard Jozsa
d03fe1f8ee add latest experimental version of gymnasium 2023-03-16 00:53:37 +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
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
Yinon Polak
9c8c30b0e8 add test 2023-03-13 17:17:00 +02: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
Yinon Polak
0012fe36ca sort imports 2023-03-12 16:16:04 +02:00
Yinon Polak
cb17b36981 simplify file_type check comparisons 2023-03-12 14:50:08 +02: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
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
ASU
1132fa6093 feat: Added price_rounding modes in config 2023-03-09 02:11:31 +02: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
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
Yinon Polak
751b205618 initial commit 2023-03-05 16:59:24 +02:00
Timothy Pogue
97a6fb285f revert to dataframe.to_json 2023-01-10 17:52:24 -07: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
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
393 changed files with 25353 additions and 10094 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

@@ -10,7 +10,7 @@ updates:
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
open-pull-requests-limit: 15
target-branch: develop
- package-ecosystem: "github-actions"

View File

@@ -14,7 +14,7 @@ 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
@@ -25,10 +25,10 @@ jobs:
strategy:
matrix:
os: [ ubuntu-20.04, ubuntu-22.04 ]
python-version: ["3.8", "3.9", "3.10", "3.11"]
python-version: ["3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
@@ -77,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
@@ -97,7 +108,7 @@ jobs:
- name: Run Ruff
run: |
ruff check --format=github .
ruff check --output-format=github .
- name: Mypy
run: |
@@ -116,15 +127,16 @@ jobs:
strategy:
matrix:
os: [ macos-latest ]
python-version: ["3.8", "3.9", "3.10", "3.11"]
python-version: ["3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
check-latest: true
- name: Cache_dependencies
uses: actions/cache@v3
@@ -148,7 +160,8 @@ 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
@@ -174,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
@@ -193,7 +217,7 @@ jobs:
- name: Run Ruff
run: |
ruff check --format=github .
ruff check --output-format=github .
- name: Mypy
run: |
@@ -213,10 +237,10 @@ jobs:
strategy:
matrix:
os: [ windows-latest ]
python-version: ["3.8", "3.9", "3.10", "3.11"]
python-version: ["3.9", "3.10", "3.11"]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
@@ -237,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
@@ -251,7 +287,7 @@ jobs:
- name: Run Ruff
run: |
ruff check --format=github .
ruff check --output-format=github .
- name: Mypy
run: |
@@ -268,7 +304,7 @@ jobs:
mypy_version_check:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
@@ -283,7 +319,7 @@ jobs:
pre-commit:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- uses: actions/setup-python@v4
with:
@@ -293,7 +329,7 @@ jobs:
docs_check:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Documentation syntax
run: |
@@ -302,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: |
@@ -323,7 +359,7 @@ jobs:
# Run pytest with "live" checks
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
@@ -407,12 +443,12 @@ jobs:
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.9"
python-version: "3.11"
- name: Extract branch name
shell: bash
@@ -425,7 +461,7 @@ jobs:
python setup.py sdist bdist_wheel
- name: Publish to PyPI (Test)
uses: pypa/gh-action-pypi-publish@v1.8.3
uses: pypa/gh-action-pypi-publish@v1.8.10
if: (github.event_name == 'release')
with:
user: __token__
@@ -433,7 +469,7 @@ jobs:
repository_url: https://test.pypi.org/legacy/
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.8.3
uses: pypa/gh-action-pypi-publish@v1.8.10
if: (github.event_name == 'release')
with:
user: __token__
@@ -479,7 +515,7 @@ jobs:
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Extract branch name
shell: bash

View File

@@ -8,7 +8,7 @@ jobs:
dockerHubDescription:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v3
env:

3
.gitignore vendored
View File

@@ -83,6 +83,9 @@ instance/
# Scrapy stuff:
.scrapy
# memray
memray-*
# Sphinx documentation
docs/_build/
# Mkdocs documentation

View File

@@ -8,17 +8,17 @@ repos:
# stages: [push]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v1.0.1"
rev: "v1.5.1"
hooks:
- id: mypy
exclude: build_helpers
additional_dependencies:
- types-cachetools==5.3.0.4
- types-cachetools==5.3.0.6
- types-filelock==3.2.7
- types-requests==2.28.11.16
- types-tabulate==0.9.0.1
- types-python-dateutil==2.8.19.10
- SQLAlchemy==2.0.7
- types-requests==2.31.0.10
- types-tabulate==0.9.0.3
- types-python-dateutil==2.8.19.14
- SQLAlchemy==2.0.22
# stages: [push]
- repo: https://github.com/pycqa/isort
@@ -30,7 +30,7 @@ repos:
- repo: https://github.com/charliermarsh/ruff-pre-commit
# Ruff version.
rev: 'v0.0.255'
rev: 'v0.1.1'
hooks:
- id: ruff

View File

@@ -1,8 +1,14 @@
# .readthedocs.yml
version: 2
build:
image: latest
os: "ubuntu-22.04"
tools:
python: "3.11"
python:
version: 3.8
setup_py_install: false
install:
- requirements: docs/requirements-docs.txt
mkdocs:
configuration: mkdocs.yml

View File

@@ -1,4 +1,4 @@
FROM python:3.10.10-slim-bullseye as base
FROM python:3.11.5-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

@@ -59,7 +59,7 @@ Please find the complete documentation on the [freqtrade website](https://www.fr
## Features
- [x] **Based on Python 3.8+**: For botting on any operating system - Windows, macOS and Linux.
- [x] **Based on Python 3.9+**: For botting on any operating system - Windows, macOS and Linux.
- [x] **Persistence**: Persistence is achieved through sqlite.
- [x] **Dry-run**: Run the bot without paying money.
- [x] **Backtesting**: Run a simulation of your buy/sell strategy.
@@ -207,9 +207,9 @@ To run this bot we recommend you a cloud instance with a minimum of:
### Software requirements
- [Python >= 3.8](http://docs.python-guide.org/en/latest/starting/installation/)
- [Python >= 3.9](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.

View File

@@ -8,8 +8,9 @@ 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 '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 \
&& echo "Downloading gcc config.guess and config.sub" \
&& curl -s 'https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.guess' -o config.guess \
&& curl -s '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,21 +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
}
if ($pyv -eq '3.11') {
pip install build_helpers\TA_Lib-0.4.25-cp311-cp311-win_amd64.whl
}
pip install --find-links=build_helpers\ --prefer-binary TA-Lib
pip install -r requirements-dev.txt
pip install -e .

View File

@@ -12,6 +12,7 @@ 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
@@ -42,9 +43,9 @@ if [ $? -ne 0 ]; then
return 1
fi
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 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
@@ -84,6 +85,10 @@ docker manifest push -p ${IMAGE_NAME}:${TAG_FREQAI}
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"
@@ -93,6 +98,7 @@ 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}

View File

@@ -58,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

View File

@@ -32,11 +32,8 @@
"name": "bittrex",
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"ccxt_config": {"enableRateLimit": true},
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 500
},
"ccxt_config": {},
"ccxt_async_config": {},
"pair_whitelist": [
"ETH/BTC",
"LTC/BTC",

View File

@@ -70,6 +70,7 @@
},
"pairlists": [
{"method": "StaticPairList"},
{"method": "FullTradesFilter"},
{
"method": "VolumePairList",
"number_assets": 20,
@@ -89,7 +90,6 @@
],
"exchange": {
"name": "binance",
"sandbox": false,
"key": "your_exchange_key",
"secret": "your_exchange_secret",
"password": "",
@@ -206,6 +206,6 @@
"recursive_strategy_search": false,
"add_config_files": [],
"reduce_df_footprint": false,
"dataformat_ohlcv": "json",
"dataformat_trades": "jsongz"
"dataformat_ohlcv": "feather",
"dataformat_trades": "feather"
}

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

@@ -23,7 +23,7 @@ WORKDIR /freqtrade
# Install dependencies
FROM base as python-deps
RUN apt-get update \
&& apt-get -y install build-essential libssl-dev libffi-dev libgfortran5 pkg-config cmake gcc \
&& apt-get -y install build-essential libssl-dev libffi-dev libopenblas-dev libgfortran5 pkg-config cmake gcc \
&& apt-get clean \
&& pip install --upgrade pip \
&& echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > /etc/pip.conf
@@ -36,8 +36,9 @@ ENV LD_LIBRARY_PATH /usr/local/lib
# Install dependencies
COPY --chown=ftuser:ftuser requirements.txt /freqtrade/
USER ftuser
RUN pip install --user --no-cache-dir numpy \
RUN pip install --user --no-cache-dir numpy==1.25.2 \
&& pip install --user /tmp/pyarrow-*.whl \
&& pip install --user --no-build-isolation TA-Lib==0.4.28 \
&& pip install --user --no-cache-dir -r requirements.txt
# Copy dependencies to runtime-image

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,7 +29,7 @@ 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 5
@@ -39,6 +39,7 @@ This command will read from the last backtesting results. The `--analysis-groups
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
@@ -102,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:
@@ -115,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

@@ -136,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

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -31,9 +31,9 @@ optional arguments:
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,hdf5}
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `json`).
(default: `feather`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
@@ -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 |
|-----------------------------+---------------------|
@@ -304,7 +305,7 @@ A backtesting result will look like that:
| Sharpe | 2.97 |
| Calmar | 6.29 |
| Profit factor | 1.11 |
| Expectancy | -0.15 |
| Expectancy (Ratio) | -0.15 (-0.05) |
| Avg. stake amount | 0.001 BTC |
| Total trade volume | 0.429 BTC |
| | |
@@ -323,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 |
@@ -408,7 +410,7 @@ It contains some useful key metrics about performance of your strategy on backte
| Sharpe | 2.97 |
| Calmar | 6.29 |
| Profit factor | 1.11 |
| Expectancy | -0.15 |
| Expectancy (Ratio) | -0.15 (-0.05) |
| Avg. stake amount | 0.001 BTC |
| Total trade volume | 0.429 BTC |
| | |
@@ -427,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 |
@@ -466,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`.
@@ -533,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

@@ -7,7 +7,7 @@ This page provides you some basic concepts on how Freqtrade works and operates.
* **Strategy**: Your trading strategy, telling the bot what to do.
* **Trade**: Open position.
* **Open Order**: Order which is currently placed on the exchange, and is not yet complete.
* **Pair**: Tradable pair, usually in the format of Base/Quote (e.g. XRP/USDT).
* **Pair**: Tradable pair, usually in the format of Base/Quote (e.g. `XRP/USDT` for spot, `XRP/USDT:USDT` for futures).
* **Timeframe**: Candle length to use (e.g. `"5m"`, `"1h"`, ...).
* **Indicators**: Technical indicators (SMA, EMA, RSI, ...).
* **Limit order**: Limit orders which execute at the defined limit price or better.
@@ -20,6 +20,20 @@ This page provides you some basic concepts on how Freqtrade works and operates.
All profit calculations of Freqtrade include fees. For Backtesting / Hyperopt / Dry-run modes, the exchange default fee is used (lowest tier on the exchange). For live operations, fees are used as applied by the exchange (this includes BNB rebates etc.).
## Pair naming
Freqtrade follows the [ccxt naming convention](https://docs.ccxt.com/#/README?id=consistency-of-base-and-quote-currencies) for currencies.
Using the wrong naming convention in the wrong market will usually result in the bot not recognizing the pair, usually resulting in errors like "this pair is not available".
### Spot pair naming
For spot pairs, naming will be `base/quote` (e.g. `ETH/USDT`).
### Futures pair naming
For futures pairs, naming will be `base/quote:settle` (e.g. `ETH/USDT:USDT`).
## Bot execution logic
Starting freqtrade in dry-run or live mode (using `freqtrade trade`) will start the bot and start the bot iteration loop.

View File

@@ -3,7 +3,7 @@
This page explains the different parameters of the bot and how to run it.
!!! Note
If you've used `setup.sh`, don't forget to activate your virtual environment (`source .env/bin/activate`) before running freqtrade commands.
If you've used `setup.sh`, don't forget to activate your virtual environment (`source .venv/bin/activate`) before running freqtrade commands.
!!! Warning "Up-to-date clock"
The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges.

View File

@@ -138,7 +138,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `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,29 +155,29 @@ 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**
| `use_exit_signal` | Use exit signals produced by the strategy in addition to the `minimal_roi`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `use_exit_signal` | Use exit signals produced by the strategy in addition to the `minimal_roi`. <br>Setting this to false disables the usage of `"exit_long"` and `"exit_short"` columns. Has no influence on other exit methods (Stoploss, ROI, callbacks). [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `exit_profit_only` | Wait until the bot reaches `exit_profit_offset` before taking an exit decision. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `exit_profit_offset` | Exit-signal is only active above this value. Only active in combination with `exit_profit_only=True`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `0.0`.* <br> **Datatype:** Float (as ratio)
| `ignore_roi_if_entry_signal` | Do not exit if the entry signal is still active. This setting takes preference over `minimal_roi` and `use_exit_signal`. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `false`.* <br> **Datatype:** Boolean
@@ -188,7 +188,6 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `max_entry_position_adjustment` | Maximum additional order(s) for each open trade on top of the first entry Order. Set it to `-1` for unlimited additional orders. [More information here](strategy-callbacks.md#adjust-trade-position). <br> [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `-1`.*<br> **Datatype:** Positive Integer or -1
| | **Exchange**
| `exchange.name` | **Required.** Name of the exchange class to use. [List below](#user-content-what-values-for-exchangename). <br> **Datatype:** String
| `exchange.sandbox` | Use the 'sandbox' version of the exchange, where the exchange provides a sandbox for risk-free integration. See [here](sandbox-testing.md) in more details.<br> **Datatype:** Boolean
| `exchange.key` | API key to use for the exchange. Only required when you are in production mode.<br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `exchange.secret` | API secret to use for the exchange. Only required when you are in production mode.<br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
| `exchange.password` | API password to use for the exchange. Only required when you are in production mode and for exchanges that use password for API requests.<br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
@@ -199,10 +198,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 +212,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**
@@ -251,8 +250,8 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `db_url` | Declares database URL to use. NOTE: This defaults to `sqlite:///tradesv3.dryrun.sqlite` if `dry_run` is `true`, and to `sqlite:///tradesv3.sqlite` for production instances. <br> **Datatype:** String, SQLAlchemy connect string
| `logfile` | Specifies logfile name. Uses a rolling strategy for log file rotation for 10 files with the 1MB limit per file. <br> **Datatype:** String
| `add_config_files` | Additional config files. These files will be loaded and merged with the current config file. The files are resolved relative to the initial file.<br> *Defaults to `[]`*. <br> **Datatype:** List of strings
| `dataformat_ohlcv` | Data format to use to store historical candle (OHLCV) data. <br> *Defaults to `json`*. <br> **Datatype:** String
| `dataformat_trades` | Data format to use to store historical trades data. <br> *Defaults to `jsongz`*. <br> **Datatype:** String
| `dataformat_ohlcv` | Data format to use to store historical candle (OHLCV) data. <br> *Defaults to `feather`*. <br> **Datatype:** String
| `dataformat_trades` | Data format to use to store historical trades data. <br> *Defaults to `feather`*. <br> **Datatype:** String
| `reduce_df_footprint` | Recast all numeric columns to float32/int32, with the objective of reducing ram/disk usage (and decreasing train/inference timing in FreqAI). (Currently only affects FreqAI use-cases) <br> **Datatype:** Boolean. <br> Default: `False`.
### Parameters in the strategy
@@ -614,6 +613,7 @@ Once you will be happy with your bot performance running in the Dry-run mode, yo
* Orders are simulated, and will not be posted to the exchange.
* Market orders fill based on orderbook volume the moment the order is placed.
* Limit orders fill once the price reaches the defined level - or time out based on `unfilledtimeout` settings.
* Limit orders will be converted to market orders if they cross the price by more than 1%.
* In combination with `stoploss_on_exchange`, the stop_loss price is assumed to be filled.
* Open orders (not trades, which are stored in the database) are kept open after bot restarts, with the assumption that they were not filled while being offline.
@@ -682,16 +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

@@ -10,7 +10,7 @@ You can run this server using the following command: `docker compose -f docker/d
This will create a dockercontainer running jupyter lab, which will be accessible using `https://127.0.0.1:8888/lab`.
Please use the link that's printed in the console after startup for simplified login.
For more information, Please visit the [Data analysis with Docker](docker_quickstart.md#data-analayis-using-docker-compose) section.
For more information, Please visit the [Data analysis with Docker](docker_quickstart.md#data-analysis-using-docker-compose) section.
### Pro tips
@@ -27,7 +27,7 @@ For this to work, first activate your virtual environment and run the following
``` bash
# Activate virtual environment
source .env/bin/activate
source .venv/bin/activate
pip install ipykernel
ipython kernel install --user --name=freqtrade

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.
@@ -27,11 +27,11 @@ usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[--exchange EXCHANGE]
[-t TIMEFRAMES [TIMEFRAMES ...]] [--erase]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[--data-format-trades {json,jsongz,hdf5}]
[--data-format-trades {json,jsongz,hdf5,feather}]
[--trading-mode {spot,margin,futures}]
[--prepend]
optional arguments:
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
@@ -48,8 +48,7 @@ optional arguments:
--dl-trades Download trades instead of OHLCV data. The bot will
resample trades to the desired timeframe as specified
as --timeframes/-t.
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
@@ -57,17 +56,18 @@ optional arguments:
exchange/pairs/timeframes.
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `json`).
--data-format-trades {json,jsongz,hdf5}
(default: `feather`).
--data-format-trades {json,jsongz,hdf5,feather}
Storage format for downloaded trades data. (default:
`jsongz`).
`feather`).
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--prepend Allow data prepending. (Data-appending is disabled)
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
--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
@@ -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.
@@ -179,13 +154,13 @@ freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT --
Freqtrade currently supports the following data-formats:
* `feather` - a dataformat based on Apache Arrow
* `json` - plain "text" json files
* `jsongz` - a gzip-zipped version of json files
* `hdf5` - a high performance datastore
* `feather` - a dataformat based on Apache Arrow (OHLCV only)
* `parquet` - columnar datastore (OHLCV only)
By default, OHLCV data is stored as `json` data, while trades data is stored as `jsongz` data.
By default, both OHLCV data and trades data are stored in the `feather` format.
This can be changed via the `--data-format-ohlcv` and `--data-format-trades` command line arguments respectively.
To persist this change, you should also add the following snippet to your configuration, so you don't have to insert the above arguments each time:
@@ -228,17 +203,46 @@ time freqtrade list-data --show-timerange --data-format-ohlcv <dataformat>
| Format | Size | timing |
|------------|-------------|-------------|
| `feather` | 72Mb | 3.5s |
| `json` | 149Mb | 25.6s |
| `jsongz` | 39Mb | 27s |
| `hdf5` | 145Mb | 3.9s |
| `feather` | 72Mb | 3.5s |
| `parquet` | 83Mb | 3.8s |
Size has been taken from the BTC/USDT 1m spot combination for the timerange specified above.
To have a best performance/size mix, we recommend the use of either feather or parquet.
To have a best performance/size mix, we recommend using the default feather format, 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]
@@ -251,7 +255,7 @@ usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[--trading-mode {spot,margin,futures}]
[--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]]
optional arguments:
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
@@ -262,19 +266,20 @@ optional arguments:
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]
Select candle type to use
Select candle type to convert. Defaults to all
available types.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
--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
@@ -287,10 +292,9 @@ Common arguments:
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
##### 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]
@@ -310,7 +314,7 @@ usage: freqtrade convert-trade-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
{json,jsongz,hdf5,feather,parquet}
[--erase] [--exchange EXCHANGE]
optional arguments:
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
@@ -321,12 +325,12 @@ optional arguments:
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
--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
@@ -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.
@@ -363,9 +367,9 @@ usage: freqtrade trades-to-ohlcv [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-t TIMEFRAMES [TIMEFRAMES ...]]
[--exchange EXCHANGE]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[--data-format-trades {json,jsongz,hdf5}]
[--data-format-trades {json,jsongz,hdf5,feather}]
optional arguments:
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
@@ -373,18 +377,18 @@ optional arguments:
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `json`).
--data-format-trades {json,jsongz,hdf5}
(default: `feather`).
--data-format-trades {json,jsongz,hdf5,feather}
Storage format for downloaded trades data. (default:
`jsongz`).
`feather`).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
--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
@@ -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.
@@ -418,13 +422,12 @@ usage: freqtrade list-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--trading-mode {spot,margin,futures}]
[--show-timerange]
optional arguments:
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name (default: `bittrex`). Only valid if no
config is provided.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `json`).
(default: `feather`).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
@@ -435,7 +438,8 @@ optional arguments:
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
--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
@@ -451,7 +455,7 @@ Common arguments:
```
#### Example list-data
### Example list-data
```bash
> freqtrade list-data --userdir ~/.freqtrade/user_data/
@@ -465,12 +469,12 @@ 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.
Since this data is large by default, the files use gzip by default. They are stored in your data-directory with the naming convention of `<pair>-trades.json.gz` (`ETH_BTC-trades.json.gz`). Incremental mode is also supported, as for historic OHLCV data, so downloading the data once per week with `--days 8` will create an incremental data-repository.
Since this data is large by default, the files use the feather fileformat by default. They are stored in your data-directory with the naming convention of `<pair>-trades.feather` (`ETH_BTC-trades.feather`). Incremental mode is also supported, as for historic OHLCV data, so downloading the data once per week with `--days 8` will create an incremental data-repository.
To use this mode, simply add `--dl-trades` to your call. This will swap the download method to download trades, and resamples the data locally.

View File

@@ -77,7 +77,7 @@ def test_method_to_test(caplog):
### Debug configuration
To debug freqtrade, we recommend VSCode with the following launch configuration (located in `.vscode/launch.json`).
To debug freqtrade, we recommend VSCode (with the Python extension) with the following launch configuration (located in `.vscode/launch.json`).
Details will obviously vary between setups - but this should work to get you started.
``` json
@@ -102,6 +102,19 @@ This method can also be used to debug a strategy, by setting the breakpoints wit
A similar setup can also be taken for Pycharm - using `freqtrade` as module name, and setting the command line arguments as "parameters".
??? Tip "Correct venv usage"
When using a virtual environment (which you should), make sure that your Editor is using the correct virtual environment to avoid problems or "unknown import" errors.
#### Vscode
You can select the correct environment in VSCode with the command "Python: Select Interpreter" - which will show you environments the extension detected.
If your environment has not been detected, you can also pick a path manually.
#### Pycharm
In pycharm, you can select the appropriate Environment in the "Run/Debug Configurations" window.
![Pycharm debug configuration](assets/pycharm_debug.png)
!!! Note "Startup directory"
This assumes that you have the repository checked out, and the editor is started at the repository root level (so setup.py is at the top level of your repository).
@@ -327,18 +340,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
@@ -453,7 +466,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

@@ -14,6 +14,9 @@ Start by downloading and installing Docker / Docker Desktop for your platform:
Freqtrade documentation assumes the use of Docker desktop (or the docker compose plugin).
While the docker-compose standalone installation still works, it will require changing all `docker compose` commands from `docker compose` to `docker-compose` to work (e.g. `docker compose up -d` will become `docker-compose up -d`).
??? Warning "Docker on windows"
If you just installed docker on a windows system, make sure to reboot your system, otherwise you might encounter unexplainable Problems related to network connectivity to docker containers.
## Freqtrade with docker
Freqtrade provides an official Docker image on [Dockerhub](https://hub.docker.com/r/freqtradeorg/freqtrade/), as well as a [docker compose file](https://github.com/freqtrade/freqtrade/blob/stable/docker-compose.yml) ready for usage.
@@ -78,7 +81,7 @@ If you've selected to enable FreqUI in the `new-config` step, you will have freq
You can now access the UI by typing localhost:8080 in your browser.
??? Note "UI Access on a remote servers"
??? Note "UI Access on a remote server"
If you're running on a VPS, you should consider using either a ssh tunnel, or setup a VPN (openVPN, wireguard) to connect to your bot.
This will ensure that freqUI is not directly exposed to the internet, which is not recommended for security reasons (freqUI does not support https out of the box).
Setup of these tools is not part of this tutorial, however many good tutorials can be found on the internet.
@@ -128,7 +131,7 @@ All freqtrade arguments will be available by running `docker compose run --rm fr
!!! Note "`docker compose run --rm`"
Including `--rm` will remove the container after completion, and is highly recommended for all modes except trading mode (running with `freqtrade trade` command).
??? Note "Using docker without docker"
??? Note "Using docker without docker compose"
"`docker compose run --rm`" will require a compose file to be provided.
Some freqtrade commands that don't require authentication such as `list-pairs` can be run with "`docker run --rm`" instead.
For example `docker run --rm freqtradeorg/freqtrade:stable list-pairs --exchange binance --quote BTC --print-json`.
@@ -172,7 +175,7 @@ You can then run `docker compose build --pull` to build the docker image, and ru
### Plotting with docker
Commands `freqtrade plot-profit` and `freqtrade plot-dataframe` ([Documentation](plotting.md)) are available by changing the image to `*_plot` in your docker-compose.yml file.
Commands `freqtrade plot-profit` and `freqtrade plot-dataframe` ([Documentation](plotting.md)) are available by changing the image to `*_plot` in your `docker-compose.yml` file.
You can then use these commands as follows:
``` bash
@@ -203,16 +206,20 @@ docker compose -f docker/docker-compose-jupyter.yml build --no-cache
### Docker on Windows
* Error: `"Timestamp for this request is outside of the recvWindow."`
* The market api requests require a synchronized clock but the time in the docker container shifts a bit over time into the past.
To fix this issue temporarily you need to run `wsl --shutdown` and restart docker again (a popup on windows 10 will ask you to do so).
A permanent solution is either to host the docker container on a linux host or restart the wsl from time to time with the scheduler.
* Error: `"Timestamp for this request is outside of the recvWindow."`
The market api requests require a synchronized clock but the time in the docker container shifts a bit over time into the past.
To fix this issue temporarily you need to run `wsl --shutdown` and restart docker again (a popup on windows 10 will ask you to do so).
A permanent solution is either to host the docker container on a linux host or restart the wsl from time to time with the scheduler.
``` bash
taskkill /IM "Docker Desktop.exe" /F
wsl --shutdown
start "" "C:\Program Files\Docker\Docker\Docker Desktop.exe"
```
``` bash
taskkill /IM "Docker Desktop.exe" /F
wsl --shutdown
start "" "C:\Program Files\Docker\Docker\Docker Desktop.exe"
```
* Cannot connect to the API (Windows)
If you're on windows and just installed Docker (desktop), make sure to reboot your System. Docker can have problems with network connectivity without a restart.
You should obviously also make sure to have your [settings](#accessing-the-ui) accordingly.
!!! Warning
Due to the above, we do not recommend the usage of docker on windows for production setups, but only for experimentation, datadownload and backtesting.

View File

@@ -2,6 +2,10 @@
The `Edge Positioning` module uses probability to calculate your win rate and risk reward ratio. It will use these statistics to control your strategy trade entry points, position size and, stoploss.
!!! Danger "Deprecated functionality"
`Edge positioning` (or short Edge) is currently in maintenance mode only (we keep existing functionality alive) and should be considered as deprecated.
It will currently not receive new features until either someone stepped forward to take up ownership of that module - or we'll decide to remove edge from freqtrade.
!!! Warning
When using `Edge positioning` with a dynamic whitelist (VolumePairList), make sure to also use `AgeFilter` and set it to at least `calculate_since_number_of_days` to avoid problems with missing data.

View File

@@ -55,7 +55,7 @@ This configuration enables kraken, as well as rate-limiting to avoid bans from t
## Binance
!!! Warning "Server location and geo-ip restrictions"
Please be aware that binance restrict api access regarding the server country. The currents and non exhaustive countries blocked are United States, Malaysia (Singapour), Ontario (Canada). Please go to [binance terms > b. Eligibility](https://www.binance.com/en/terms) to find up to date list.
Please be aware that Binance restricts API access regarding the server country. The current and non-exhaustive countries blocked are Canada, Malaysia, Netherlands and United States. Please go to [binance terms > b. Eligibility](https://www.binance.com/en/terms) to find up to date list.
Binance supports [time_in_force](configuration.md#understand-order_time_in_force).
@@ -136,13 +136,41 @@ Freqtrade will not attempt to change these settings.
The Kraken API does only provide 720 historic candles, which is sufficient for Freqtrade dry-run and live trade modes, but is a problem for backtesting.
To download data for the Kraken exchange, using `--dl-trades` is mandatory, otherwise the bot will download the same 720 candles over and over, and you'll not have enough backtest data.
Due to the heavy rate-limiting applied by Kraken, the following configuration section should be used to download data:
To speed up downloading, you can download the [trades zip files](https://support.kraken.com/hc/en-us/articles/360047543791-Downloadable-historical-market-data-time-and-sales-) kraken provides.
These are usually updated once per quarter. Freqtrade expects these files to be placed in `user_data/data/kraken/trades_csv`.
``` json
"ccxt_async_config": {
"enableRateLimit": true,
"rateLimit": 3100
},
A structure as follows can make sense if using incremental files, with the "full" history in one directory, and incremental files in different directories.
The assumption for this mode is that the data is downloaded and unzipped keeping filenames as they are.
Duplicate content will be ignored (based on timestamp) - though the assumption is that there is no gap in the data.
This means, if your "full" history ends in Q4 2022 - then both incremental updates Q1 2023 and Q2 2023 are available.
Not having this will lead to incomplete data, and therefore invalid results while using the data.
```
└── trades_csv
    ├── Kraken_full_history
   │   ├── BCHEUR.csv
   │   └── XBTEUR.csv
   ├── Kraken_Trading_History_Q1_2023
   │   ├── BCHEUR.csv
   │   └── XBTEUR.csv
   └── Kraken_Trading_History_Q2_2023
      ├── BCHEUR.csv
      └── XBTEUR.csv
```
You can convert these files into freqtrade files:
``` bash
freqtrade convert-trade-data --exchange kraken --format-from kraken_csv --format-to feather
# Convert trade data to different ohlcv timeframes
freqtrade trades-to-ohlcv -p BTC/EUR BCH/EUR --exchange kraken -t 1m 5m 15m 1h
```
The converted data also makes downloading data possible, and will start the download after the latest loaded trade.
``` bash
freqtrade download-data --exchange kraken --dl-trades -p BTC/EUR BCH/EUR
```
!!! Warning "Downloading data from kraken"
@@ -259,10 +287,17 @@ The configuration parameter `exchange.unknown_fee_rate` can be used to specify t
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.
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.

View File

@@ -20,7 +20,7 @@ Futures trading is supported for selected exchanges. Please refer to the [docume
* When you work with your strategy & hyperopt file you should use a proper code editor like VSCode or PyCharm. A good code editor will provide syntax highlighting as well as line numbers, making it easy to find syntax errors (most likely pointed out by Freqtrade during startup).
## Freqtrade common issues
## Freqtrade common questions
### Can freqtrade open multiple positions on the same pair in parallel?
@@ -36,7 +36,7 @@ Running the bot with `freqtrade trade --config config.json` shows the output `fr
This could be caused by the following reasons:
* The virtual environment is not active.
* Run `source .env/bin/activate` to activate the virtual environment.
* Run `source .venv/bin/activate` to activate the virtual environment.
* The installation did not complete successfully.
* Please check the [Installation documentation](installation.md).
@@ -78,6 +78,14 @@ Where possible (e.g. on binance), the use of the exchange's dedicated fee curren
On binance, it's sufficient to have BNB in your account, and have "Pay fees in BNB" enabled in your profile. Your BNB balance will slowly decline (as it's used to pay fees) - but you'll no longer encounter dust (Freqtrade will include the fees in the profit calculations).
Other exchanges don't offer such possibilities, where it's simply something you'll have to accept or move to a different exchange.
### I deposited more funds to the exchange, but my bot doesn't recognize this
Freqtrade will update the exchange balance when necessary (Before placing an order).
RPC calls (Telegram's `/balance`, API calls to `/balance`) can trigger an update at max. once per hour.
If `adjust_trade_position` is enabled (and the bot has open trades eligible for position adjustments) - then the wallets will be refreshed once per hour.
To force an immediate update, you can use `/reload_config` - which will restart the bot.
### I want to use incomplete candles
Freqtrade will not provide incomplete candles to strategies. Using incomplete candles will lead to repainting and consequently to strategies with "ghost" buys, which are impossible to both backtest, and verify after they happened.
@@ -142,6 +150,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.

View File

@@ -43,16 +43,16 @@ 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 `set_freqai_labels()`
# 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
# `feature_engineering_*` for each training period.
# `set_freqai_targets()` for each training period.
dataframe = self.freqai.start(dataframe, metadata, self)
return dataframe
def feature_engineering_expand_all(self, dataframe, period, **kwargs):
def feature_engineering_expand_all(self, dataframe: DataFrame, period, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
@@ -77,7 +77,7 @@ The FreqAI strategy requires including the following lines of code in the standa
return dataframe
def feature_engineering_expand_basic(self, dataframe, **kwargs):
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
@@ -101,7 +101,7 @@ The FreqAI strategy requires including the following lines of code in the standa
dataframe["%-raw_price"] = dataframe["close"]
return dataframe
def feature_engineering_standard(self, dataframe, **kwargs):
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.
@@ -122,7 +122,7 @@ The FreqAI strategy requires including the following lines of code in the standa
dataframe["%-hour_of_day"] = (dataframe["date"].dt.hour + 1) / 25
return dataframe
def set_freqai_targets(self, dataframe, **kwargs):
def set_freqai_targets(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
Required function to set the targets for the model.
@@ -139,6 +139,7 @@ The FreqAI strategy requires including the following lines of code in the standa
/ dataframe["close"]
- 1
)
return dataframe
```
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`.
@@ -159,7 +160,7 @@ Below are the values you can expect to include/use inside a typical strategy dat
|------------|-------------|
| `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 `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.
@@ -236,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

@@ -6,8 +6,8 @@ Low level feature engineering is performed in the user strategy within a set of
| 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_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.
@@ -16,7 +16,7 @@ Meanwhile, high level feature engineering is handled within `"feature_parameters
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 feature_engineering_expand_all(self, dataframe, period, metadata, **kwargs):
def feature_engineering_expand_all(self, dataframe: DataFrame, period, metadata, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
This function will automatically expand the defined features on the config defined
@@ -67,7 +67,7 @@ It is advisable to start from the template `feature_engineering_*` functions in
return dataframe
def feature_engineering_expand_basic(self, dataframe, metadata, **kwargs):
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
@@ -96,7 +96,7 @@ It is advisable to start from the template `feature_engineering_*` functions in
dataframe["%-raw_price"] = dataframe["close"]
return dataframe
def feature_engineering_standard(self, dataframe, metadata, **kwargs):
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.
@@ -122,7 +122,7 @@ It is advisable to start from the template `feature_engineering_*` functions in
dataframe["%-hour_of_day"] = (dataframe["date"].dt.hour + 1) / 25
return dataframe
def set_freqai_targets(self, dataframe, metadata, **kwargs):
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.
@@ -178,18 +178,20 @@ You can ask for each of the defined features to be included also for informative
`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 `feature_engineering_expand_*()` * 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 strategy 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`
### 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.
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.
```py
def feature_engineering_expand_all(self, dataframe, period, metadata, **kwargs):
if metadata["tf"] == "1h":
dataframe["%-roc-period"] = ta.ROC(dataframe, timeperiod=period)
```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"`.
@@ -210,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 the features of a data point are to the most recent historical 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:
@@ -254,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:
@@ -272,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} $$
@@ -306,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.
@@ -326,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

@@ -18,9 +18,10 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
| `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.
| `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
@@ -41,7 +42,6 @@ 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).
@@ -85,6 +85,28 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
| `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**
| `n_epochs` | The `n_epochs` parameter is a crucial setting in the PyTorch training loop that determines the number of times the entire training dataset will be used to update the model's parameters. An epoch represents one full pass through the entire training dataset. Overrides `n_steps`. Either `n_epochs` or `n_steps` must be set. <br><br> **Datatype:** int. optional. <br> Default: `10`.
| `n_steps` | An alternative way of setting `n_epochs` - the number of training iterations to run. Iteration here refer to the number of times we call `optimizer.step()`. Ignored if `n_epochs` is set. A simplified version of the function: <br><br> n_epochs = n_steps / (n_obs / batch_size) <br><br> The motivation here is that `n_steps` is easier to optimize and keep stable across different n_obs - the number of data points. <br> <br> **Datatype:** int. optional. <br> Default: `None`.
| `batch_size` | The size of the batches to use during training. <br><br> **Datatype:** int. <br> Default: `64`.
### Additional parameters
@@ -92,5 +114,5 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
|------------|-------------|
| | **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.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

@@ -20,7 +20,7 @@ With the current framework, we aim to expose the training environment via the co
We envision the majority of users focusing their effort on creative design of the `calculate_reward()` function [details here](#creating-a-custom-reward-function), while leaving the rest of the environment untouched. Other users may not touch the environment at all, and they will only play with the configuration settings and the powerful feature engineering that already exists in FreqAI. Meanwhile, we enable advanced users to create their own model classes entirely.
The framework is built on stable_baselines3 (torch) and OpenAI gym for the base environment class. But generally speaking, the model class is well isolated. Thus, the addition of competing libraries can be easily integrated into the existing framework. For the environment, it is inheriting from `gym.env` which means that it is necessary to write an entirely new environment in order to switch to a different library.
The framework is built on stable_baselines3 (torch) and OpenAI gym for the base environment class. But generally speaking, the model class is well isolated. Thus, the addition of competing libraries can be easily integrated into the existing framework. For the environment, it is inheriting from `gym.Env` which means that it is necessary to write an entirely new environment in order to switch to a different library.
### Important considerations
@@ -37,7 +37,7 @@ freqtrade trade --freqaimodel ReinforcementLearner --strategy MyRLStrategy --con
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 set_freqai_targets(self, dataframe, **kwargs):
def set_freqai_targets(self, dataframe, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
Required function to set the targets for the model.
@@ -53,17 +53,19 @@ where `ReinforcementLearner` will use the templated `ReinforcementLearner` from
# 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 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, **kwargs):
def feature_engineering_standard(self, dataframe: DataFrame, **kwargs) -> DataFrame:
# The following features are necessary for RL models
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.
@@ -133,130 +135,139 @@ 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
factor = 100
pair = self.pair.replace(':', '')
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]
# 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
# 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.
# 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:
```bash
cd freqtrade
tensorboard --logdir user_data/models/unique-id
```
where `unique-id` is the `identifier` set in the `freqai` configuration file. This command must be run in a separate shell to view the output in their browser at 127.0.0.1:6006 (6006 is the default port used by Tensorboard).
where `unique-id` is the `identifier` set in the `freqai` configuration file. This command must be run in a separate shell to view the output in the browser at 127.0.0.1:6006 (6006 is the default port used by Tensorboard).
![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("invalid")
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)`. In this case the metric values are not incremented.
### Choosing a base environment
## Choosing a base environment
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:

View File

@@ -131,6 +131,9 @@ You can choose to adopt a continual learning scheme by setting `"continual_learn
???+ 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):
@@ -158,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
@@ -168,3 +178,7 @@ tensorboard --logdir user_data/models/unique-id
where `unique-id` is the `identifier` set in the `freqai` configuration file. This command must be run in a separate shell if you wish to view the output in your browser at 127.0.0.1:6060 (6060 is the default port used by Tensorboard).
![tensorboard](assets/tensorboard.jpg)
!!! note "Deactivate for improved performance"
Tensorboard logging can slow down training and should be deactivated for production use.

View File

@@ -32,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
@@ -69,15 +72,14 @@ 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.
!!! Note "python 3.11"
Some dependencies (Catboost, Torch) currently don't support python 3.11. Freqtrade therefore only supports python 3.10 for these models/dependencies.
Tests involving these dependencies are skipped on 3.11.
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
@@ -105,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.

View File

@@ -31,7 +31,7 @@ The docker-image includes hyperopt dependencies, no further action needed.
### Easy installation script (setup.sh) / Manual installation
```bash
source .env/bin/activate
source .venv/bin/activate
pip install -r requirements-hyperopt.txt
```
@@ -433,9 +433,14 @@ While this strategy is most likely too simple to provide consistent profit, it s
`range` property may also be used with `DecimalParameter` and `CategoricalParameter`. `RealParameter` does not provide this property due to infinite search space.
??? Hint "Performance tip"
During normal hyperopting, indicators are calculated once and supplied to each epoch, linearly increasing RAM usage as a factor of increasing cores. As this also has performance implications, hyperopt provides `--analyze-per-epoch` which will move the execution of `populate_indicators()` to the epoch process, calculating a single value per parameter per epoch instead of using the `.range` functionality. In this case, `.range` functionality will only return the actually used value. This will reduce RAM usage, but increase CPU usage. However, your hyperopting run will be less likely to fail due to Out Of Memory (OOM) issues.
During normal hyperopting, indicators are calculated once and supplied to each epoch, linearly increasing RAM usage as a factor of increasing cores. As this also has performance implications, there are two alternatives to reduce RAM usage
In either case, you should try to use space ranges as small as possible this will improve CPU/RAM usage in both scenarios.
* Move `ema_short` and `ema_long` calculations from `populate_indicators()` to `populate_entry_trend()`. Since `populate_entry_trend()` gonna be calculated every epochs, you don't need to use `.range` functionality.
* hyperopt provides `--analyze-per-epoch` which will move the execution of `populate_indicators()` to the epoch process, calculating a single value per parameter per epoch instead of using the `.range` functionality. In this case, `.range` functionality will only return the actually used value.
These alternatives will reduce RAM usage, but increase CPU usage. However, your hyperopting run will be less likely to fail due to Out Of Memory (OOM) issues.
Whether you are using `.range` functionality or the alternatives above, you should try to use space ranges as small as possible since this will improve CPU/RAM usage.
## Optimizing protections

View File

@@ -25,6 +25,7 @@ You may also use something like `.*DOWN/BTC` or `.*UP/BTC` to exclude leveraged
* [`ProducerPairList`](#producerpairlist)
* [`RemotePairList`](#remotepairlist)
* [`AgeFilter`](#agefilter)
* [`FullTradesFilter`](#fulltradesfilter)
* [`OffsetFilter`](#offsetfilter)
* [`PerformanceFilter`](#performancefilter)
* [`PrecisionFilter`](#precisionfilter)
@@ -184,6 +185,8 @@ The RemotePairList is defined in the pairlists section of the configuration sett
"pairlists": [
{
"method": "RemotePairList",
"mode": "whitelist",
"processing_mode": "filter",
"pairlist_url": "https://example.com/pairlist",
"number_assets": 10,
"refresh_period": 1800,
@@ -194,6 +197,14 @@ The RemotePairList is defined in the pairlists section of the configuration sett
]
```
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:
@@ -201,7 +212,7 @@ The user is responsible for providing a server or local file that returns a JSON
```json
{
"pairs": ["XRP/USDT", "ETH/USDT", "LTC/USDT"],
"refresh_period": 1800,
"refresh_period": 1800
}
```
@@ -226,6 +237,17 @@ be caught out buying before the pair has finished dropping in price.
This filter allows freqtrade to ignore pairs until they have been listed for at least `min_days_listed` days and listed before `max_days_listed`.
#### FullTradesFilter
Shrink whitelist to consist only in-trade pairs when the trade slots are full (when `max_open_trades` isn't being set to `-1` in the config).
When the trade slots are full, there is no need to calculate indicators of the rest of the pairs (except informative pairs) since no new trade can be opened. By shrinking the whitelist to just the in-trade pairs, you can improve calculation speeds and reduce CPU usage. When a trade slot is free (either a trade is closed or `max_open_trades` value in config is increased), then the whitelist will return to normal state.
When multiple pairlist filters are being used, it's recommended to put this filter at second position directly below the primary pairlist, so when the trade slots are full, the bot doesn't have to download data for the rest of the filters.
!!! Warning "Backtesting"
`FullTradesFilter` does not support backtesting mode.
#### OffsetFilter
Offsets an incoming pairlist by a given `offset` value.
@@ -366,7 +388,7 @@ If the trading range over the last 10 days is <1% or >99%, remove the pair from
"lookback_days": 10,
"min_rate_of_change": 0.01,
"max_rate_of_change": 0.99,
"refresh_period": 1440
"refresh_period": 86400
}
]
```
@@ -421,7 +443,7 @@ The below example blacklists `BNB/BTC`, uses `VolumePairList` with `20` assets,
"method": "RangeStabilityFilter",
"lookback_days": 10,
"min_rate_of_change": 0.01,
"refresh_period": 1440
"refresh_period": 86400
},
{
"method": "VolatilityFilter",

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

@@ -63,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
@@ -79,7 +83,7 @@ To run this bot we recommend you a linux cloud instance with a minimum of:
Alternatively
- Python 3.8+
- Python 3.9+
- pip (pip3)
- git
- TA-Lib

View File

@@ -24,18 +24,12 @@ The easiest way to install and run Freqtrade is to clone the bot Github reposito
The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable).
!!! Note
Python3.8 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository.
Python3.9 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository.
Also, python headers (`python<yourversion>-dev` / `python<yourversion>-devel`) must be available for the installation to complete successfully.
!!! Warning "Up-to-date clock"
The clock on the system running the bot must be accurate, synchronized to a NTP server frequently enough to avoid problems with communication to the exchanges.
!!! Error "Running setup.py install for gym did not run successfully."
If you get an error related with gym we suggest you to downgrade setuptools it to version 65.5.0 you can do it with the following command:
```bash
pip install setuptools==65.5.0
```
------
## Requirements
@@ -48,11 +42,11 @@ These requirements apply to both [Script Installation](#script-installation) and
### Install guide
* [Python >= 3.8.x](http://docs.python-guide.org/en/latest/starting/installation/)
* [Python >= 3.9](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)
* [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
@@ -60,7 +54,7 @@ We've included/collected install instructions for Ubuntu, MacOS, and Windows. Th
OS Specific steps are listed first, the [Common](#common) section below is necessary for all systems.
!!! Note
Python3.8 or higher and the corresponding pip are assumed to be available.
Python3.9 or higher and the corresponding pip are assumed to be available.
=== "Debian/Ubuntu"
#### Install necessary dependencies
@@ -149,11 +143,11 @@ If you are on Debian, Ubuntu or MacOS, freqtrade provides the script to install
### Activate your virtual environment
Each time you open a new terminal, you must run `source .env/bin/activate` to activate your virtual environment.
Each time you open a new terminal, you must run `source .venv/bin/activate` to activate your virtual environment.
```bash
# then activate your .env
source ./.env/bin/activate
# activate virtual environment
source ./.venv/bin/activate
```
### Congratulations
@@ -175,10 +169,10 @@ You can as well update, configure and reset the codebase of your bot with `./scr
** --install **
With this option, the script will install the bot and most dependencies:
You will need to have git and python3.8+ installed beforehand for this to work.
You will need to have git and python3.9+ installed beforehand for this to work.
* Mandatory software as: `ta-lib`
* Setup your virtualenv under `.env/`
* Setup your virtualenv under `.venv/`
This option is a combination of installation tasks and `--reset`
@@ -210,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
@@ -231,17 +225,18 @@ rm -rf ./ta-lib*
You will run freqtrade in separated `virtual environment`
```bash
# create virtualenv in directory /freqtrade/.env
python3 -m venv .env
# create virtualenv in directory /freqtrade/.venv
python3 -m venv .venv
# run virtualenv
source .env/bin/activate
source .venv/bin/activate
```
#### Install python dependencies
```bash
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
python3 -m pip install -e .
```
@@ -291,7 +286,7 @@ cd freqtrade
#### Freqtrade install: Conda Environment
```bash
conda create --name freqtrade python=3.10
conda create --name freqtrade python=3.11
```
!!! Note "Creating Conda Environment"
@@ -388,7 +383,7 @@ You've made it this far, so you have successfully installed freqtrade.
freqtrade create-userdir --userdir user_data
# Step 2 - Create a new configuration file
freqtrade new-config --config config.json
freqtrade new-config --config user_data/config.json
```
You are ready to run, read [Bot Configuration](configuration.md), remember to start with `dry_run: True` and verify that everything is working.
@@ -398,7 +393,7 @@ To learn how to setup your configuration, please refer to the [Bot Configuration
### Start the Bot
```bash
freqtrade trade --config config.json --strategy SampleStrategy
freqtrade trade --config user_data/config.json --strategy SampleStrategy
```
!!! Warning
@@ -416,8 +411,8 @@ If you used (1)`Script` or (2)`Manual` installation, you need to run the bot in
# if:
bash: freqtrade: command not found
# then activate your .env
source ./.env/bin/activate
# then activate your virtual environment
source ./.venv/bin/activate
```
### MacOS installation error

View File

@@ -64,7 +64,7 @@ You will also have to pick a "margin mode" (explanation below) - with freqtrade
##### Pair namings
Freqtrade follows the [ccxt naming conventions for futures](https://docs.ccxt.com/en/latest/manual.html?#perpetual-swap-perpetual-future).
Freqtrade follows the [ccxt naming conventions for futures](https://docs.ccxt.com/#/README?id=perpetual-swap-perpetual-future).
A futures pair will therefore have the naming of `base/quote:settle` (e.g. `ETH/USDT:USDT`).
### Margin mode

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

@@ -0,0 +1,103 @@
# 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 (1 billion).
- `--stake-amount` is forced to be a static 10000 (10k).
Those are set to avoid users accidentally generating false positives.
## 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

@@ -49,7 +49,7 @@ Enable subscribing to an instance by adding the `external_message_consumer` sect
| `wait_timeout` | Timeout until we ping again if no message is received. <br>*Defaults to `300`.*<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 `False`.*<br> **Datatype:** Boolean.
| `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.

119
docs/recursive-analysis.md Normal file
View File

@@ -0,0 +1,119 @@
# Recursive analysis
This page explains how to validate your strategy for inaccuracies due to recursive issues with certain indicators.
A recursive formula defines any term of a sequence relative to its preceding term(s). An example of a recursive formula is a<sub>n</sub> = a<sub>n-1</sub> + b.
Why does this matter for Freqtrade? In backtesting, the bot will get full data of the pairs according to the timerange specified. But in a dry/live run, the bot will be limited by the amount of data each exchanges gives.
For example, to calculate a very basic indicator called `steps`, the first row's value is always 0, while the following rows' values are equal to the value of the previous row plus 1. If I were to calculate it using the latest 1000 candles, then the `steps` value of the first row is 0, and the `steps` value at the last closed candle is 999.
What happens if the calculation is using only the latest 500 candles? Then instead of 999, the `steps` value at last closed candle is 499. The difference of the value means your backtest result can differ from your dry/live run result.
The `recursive-analysis` command 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 preparing different lengths of data and calculates indicators based on them.
This does not backtest the strategy itself, but rather only calculates the indicators. After calculating the indicators of different startup candle values (`startup_candle_count`) are done, the values of last rows across all specified `startup_candle_count` are compared to see how much variance they show compared to the base calculation.
Command settings:
- Use the `-p` option to set your desired pair to analyze. Since we are only looking at indicator values, using more than one pair is redundant. Preferably use a pair with a relatively high price and at least moderate volatility, such as BTC or ETH, to avoid rounding issues that can make the results inaccurate. If no pair is set on the command, the pair used for this analysis is the first pair in the whitelist.
- It is recommended to set a long timerange (at least 5000 candles) so that the initial indicators' calculation that is going to be used as a benchmark has very small or no recursive issues itself. For example, for a 5m timeframe, a timerange of 5000 candles would be equal to 18 days.
- `--cache` is forced to "none" to avoid loading previous indicators calculation automatically.
In addition to the recursive formula check, this command also carries out a simple lookahead bias check on the indicator values only. For a full lookahead check, use [Lookahead-analysis](lookahead-analysis.md).
## Recursive-analysis command reference
```
usage: freqtrade recursive-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}]
[-p PAIR]
[--freqai-backtest-live-models]
[--startup-candle STARTUP_CANDLES [STARTUP_CANDLES ...]]
optional arguments:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
-p PAIR, --pairs PAIR
Limit command to this pair.
--startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...]
Provide a space-separated list of startup_candle_count to
be checked. Default : `199 399 499 999 1999`.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile 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
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--timerange TIMERANGE
Specify what timerange of data to use.
```
### Why are odd-numbered default startup candles used?
The default value for startup candles are odd numbers. When the bot fetches candle data from the exchange's API, the last candle is the one being checked by the bot and the rest of the data are the "startup candles".
For example, Binance allows 1000 candles per API call. When the bot receives 1000 candles, the last candle is the "current candle", and the preceding 999 candles are the "startup candles". By setting the startup candle count as 1000 instead of 999, the bot will try to fetch 1001 candles instead. The exchange API will then send candle data in a paginated form, i.e. in case of the Binance API, this will be two groups- one of length 1000 and another of length 1. This results in the bot thinking the strategy needs 1001 candles of data, and so it will download 2000 candles worth of data instead, which means there will be 1 "current candle" and 1999 "startup candles".
Furthermore, exchanges limit the number of consecutive bulk API calls, e.g. Binance allows 5 calls. In this case, only 5000 candles can be downloaded from Binance API without hitting the API rate limit, which means the max `startup_candle_count` you can have is 4999.
Please note that this candle limit may be changed in the future by the exchanges without any prior notice.
### How does the command work?
- Firstly an initial indicator calculation is carried out using the supplied timerange to generate a benchmark for indicator values.
- After setting the benchmark it will then carry out additional runs for each of the different startup candle count values.
- The command will then compare the indicator values at the last candle rows and report the differences in a table.
## Understanding the recursive-analysis output
This is an example of an output results table where at least one indicator has a recursive formula issue:
```
| indicators | 20 | 40 | 80 | 100 | 150 | 300 | 999 |
|--------------+---------+---------+--------+--------+---------+---------+--------|
| rsi_30 | nan% | -6.025% | 0.612% | 0.828% | -0.140% | 0.000% | 0.000% |
| rsi_14 | 24.141% | -0.876% | 0.070% | 0.007% | -0.000% | -0.000% | - |
```
The column headers indicate the different `startup_candle_count` used in the analysis. The values in the table indicate the variance of the calculated indicators compared to the benchmark value.
`nan%` means the value of that indicator cannot be calculated due to lack of data. In this example, you cannot calculate RSI with length 30 with just 21 candles (1 current candle + 20 startup candles).
Users should assess the table per indicator to decide if the specified `startup_candle_count` results in a sufficiently small variance so that the indicator does not have any effect on entries and/or exits.
As such, aiming for absolute zero variance (shown by `-` value) might not be the best option, because some indicators might require you to use such a long `startup_candle_count` to have zero variance.
## Caveats
- `recursive-analysis` will only calculate and compare the indicator values at the last row. The output table reports the percentage differences between the different startup candle count calculations and the original benchmark calculation. Whether it has any actual impact on your entries and exits is not included.
- The ideal scenario is that indicators will have no variance (or at least very close to 0%) despite the startup candle being varied. In reality, indicators such as EMA are using a recursive formula to calculate indicator values, so the goal is not necessarily to have zero percentage variance, but to have the variance low enough (and therefore `startup_candle_count` high enough) that the recursion inherent in the indicator will not have any real impact on trading decisions.
- `recursive-analysis` will only run calculations on `populate_indicators` and `@informative` decorator(s). If you put any indicator calculation on `populate_entry_trend` or `populate_exit_trend`, it won't be calculated.

View File

@@ -1,6 +1,6 @@
markdown==3.3.7
mkdocs==1.4.2
mkdocs-material==9.1.4
markdown==3.5
mkdocs==1.5.3
mkdocs-material==9.4.6
mdx_truly_sane_lists==1.3
pymdown-extensions==9.10
pymdown-extensions==10.3.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.
@@ -152,6 +151,8 @@ python3 scripts/rest_client.py --config rest_config.json <command> [optional par
| `performance` | Show performance of each finished trade grouped by pair.
| `balance` | 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 days (n defaults to 4).
| `monthly <n>` | Shows profit or loss per month, over the last n days (n defaults to 3).
| `stats` | Display a summary of profit / loss reasons as well as average holding times.
| `whitelist` | Show the current whitelist.
| `blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.

View File

@@ -1,121 +0,0 @@
# Sandbox API testing
Some exchanges provide sandboxes or testbeds for risk-free testing, while running the bot against a real exchange.
With some configuration, freqtrade (in combination with ccxt) provides access to these.
This document is an overview to configure Freqtrade to be used with sandboxes.
This can be useful to developers and trader alike.
!!! Warning
Sandboxes usually have very low volume, and either a very wide spread, or no orders available at all.
Therefore, sandboxes will usually not do a good job of showing you how a strategy would work in real trading.
## Exchanges known to have a sandbox / testnet
* [binance](https://testnet.binance.vision/)
* [coinbasepro](https://public.sandbox.pro.coinbase.com)
* [gemini](https://exchange.sandbox.gemini.com/)
* [huobipro](https://www.testnet.huobi.pro/)
* [kucoin](https://sandbox.kucoin.com/)
* [phemex](https://testnet.phemex.com/)
!!! Note
We did not test correct functioning of all of the above testnets. Please report your experiences with each sandbox.
---
## Configure a Sandbox account
When testing your API connectivity, make sure to use the appropriate sandbox / testnet URL.
In general, you should follow these steps to enable an exchange's sandbox:
* Figure out if an exchange has a sandbox (most likely by using google or the exchange's support documents)
* Create a sandbox account (often the sandbox-account requires separate registration)
* [Add some test assets to account](#add-test-funds)
* Create API keys
### Add test funds
Usually, sandbox exchanges allow depositing funds directly via web-interface.
You should make sure to have a realistic amount of funds available to your test-account, so results are representable of your real account funds.
!!! Warning
Test exchanges will **NEVER** require your real credit card or banking details!
## Configure freqtrade to use a exchange's sandbox
### Sandbox URLs
Freqtrade makes use of CCXT which in turn provides a list of URLs to Freqtrade.
These include `['test']` and `['api']`.
* `[Test]` if available will point to an Exchanges sandbox.
* `[Api]` normally used, and resolves to live API target on the exchange.
To make use of sandbox / test add "sandbox": true, to your config.json
```json
"exchange": {
"name": "coinbasepro",
"sandbox": true,
"key": "5wowfxemogxeowo;heiohgmd",
"secret": "/ZMH1P62rCVmwefewrgcewX8nh4gob+lywxfwfxwwfxwfNsH1ySgvWCUR/w==",
"password": "1bkjfkhfhfu6sr",
"outdated_offset": 5
"pair_whitelist": [
"BTC/USD"
]
},
"datadir": "user_data/data/coinbasepro_sandbox"
```
Also the following information:
* api-key (created for the sandbox webpage)
* api-secret (noted earlier)
* password (the passphrase - noted earlier)
!!! Tip "Different data directory"
We also recommend to set `datadir` to something identifying downloaded data as sandbox data, to avoid having sandbox data mixed with data from the real exchange.
This can be done by adding the `"datadir"` key to the configuration.
Now, whenever you use this configuration, your data directory will be set to this directory.
---
## You should now be ready to test your sandbox
Ensure Freqtrade logs show the sandbox URL, and trades made are shown in sandbox. Also make sure to select a pair which shows at least some decent value (which very often is BTC/<somestablecoin>).
## Common problems with sandbox exchanges
Sandbox exchange instances often have very low volume, which can cause some problems which usually are not seen on a real exchange instance.
### Old Candles problem
Since Sandboxes often have low volume, candles can be quite old and show no volume.
To disable the error "Outdated history for pair ...", best increase the parameter `"outdated_offset"` to a number that seems realistic for the sandbox you're using.
### Unfilled orders
Sandboxes often have very low volumes - which means that many trades can go unfilled, or can go unfilled for a very long time.
To mitigate this, you can try to match the first order on the opposite orderbook side using the following configuration:
``` jsonc
"order_types": {
"entry": "limit",
"exit": "limit"
// ...
},
"entry_pricing": {
"price_side": "other",
// ...
},
"exit_pricing":{
"price_side": "other",
// ...
},
```
The configuration is similar to the suggested configuration for market orders - however by using limit-orders you can avoid moving the price too much, and you can set the worst price you might get.

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), Gate (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
@@ -197,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):
@@ -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')
```
@@ -164,6 +164,31 @@ E.g. If the `current_rate` is 200 USD, then returning `0.02` will set the stoplo
During backtesting, `current_rate` (and `current_profit`) are provided against the candle's high (or low for short trades) - while the resulting stoploss is evaluated against the candle's low (or high for short trades).
The absolute value of the return value is used (the sign is ignored), so returning `0.05` or `-0.05` have the same result, a stoploss 5% below the current price.
Returning None will be interpreted as "no desire to change", and is the only safe way to return when you'd like to not modify the stoploss.
Stoploss on exchange works similar to `trailing_stop`, and the stoploss on exchange is updated as configured in `stoploss_on_exchange_interval` ([More details about stoploss on exchange](stoploss.md#stop-loss-on-exchange-freqtrade)).
!!! Note "Use of dates"
All time-based calculations should be done based on `current_time` - using `datetime.now()` or `datetime.utcnow()` is discouraged, as this will break backtesting support.
!!! Tip "Trailing stoploss"
It's recommended to disable `trailing_stop` when using custom stoploss values. Both can work in tandem, but you might encounter the trailing stop to move the price higher while your custom function would not want this, causing conflicting behavior.
### Adjust stoploss after position adjustments
Depending on your strategy, you may encounter the need to adjust the stoploss in both directions after a [position adjustment](#adjust-trade-position).
For this, freqtrade will make an additional call with `after_fill=True` after an order fills, which will allow the strategy to move the stoploss in any direction (also widening the gap between stoploss and current price, which is otherwise forbidden).
!!! Note "backwards compatibility"
This call will only be made if the `after_fill` parameter is part of the function definition of your `custom_stoploss` function.
As such, this will not impact (and with that, surprise) existing, running strategies.
### Custom stoploss examples
The next section will show some examples on what's possible with the custom stoploss function.
Of course, many more things are possible, and all examples can be combined at will.
#### Trailing stop via custom stoploss
To simulate a regular trailing stoploss of 4% (trailing 4% behind the maximum reached price) you would use the following very simple method:
@@ -179,7 +204,8 @@ class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
"""
Custom stoploss logic, returning the new distance relative to current_rate (as ratio).
e.g. returning -0.05 would create a stoploss 5% below current_rate.
@@ -187,7 +213,7 @@ class AwesomeStrategy(IStrategy):
For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/
When not implemented by a strategy, returns the initial stoploss value
When not implemented by a strategy, returns the initial stoploss value.
Only called when use_custom_stoploss is set to True.
:param pair: Pair that's currently analyzed
@@ -195,25 +221,13 @@ class AwesomeStrategy(IStrategy):
:param current_time: datetime object, containing the current datetime
:param current_rate: Rate, calculated based on pricing settings in exit_pricing.
:param current_profit: Current profit (as ratio), calculated based on current_rate.
:param after_fill: True if the stoploss is called after the order was filled.
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
:return float: New stoploss value, relative to the current rate
:return float: New stoploss value, relative to the current_rate
"""
return -0.04
```
Stoploss on exchange works similar to `trailing_stop`, and the stoploss on exchange is updated as configured in `stoploss_on_exchange_interval` ([More details about stoploss on exchange](stoploss.md#stop-loss-on-exchange-freqtrade)).
!!! Note "Use of dates"
All time-based calculations should be done based on `current_time` - using `datetime.now()` or `datetime.utcnow()` is discouraged, as this will break backtesting support.
!!! Tip "Trailing stoploss"
It's recommended to disable `trailing_stop` when using custom stoploss values. Both can work in tandem, but you might encounter the trailing stop to move the price higher while your custom function would not want this, causing conflicting behavior.
### Custom stoploss examples
The next section will show some examples on what's possible with the custom stoploss function.
Of course, many more things are possible, and all examples can be combined at will.
#### Time based trailing stop
Use the initial stoploss for the first 60 minutes, after this change to 10% trailing stoploss, and after 2 hours (120 minutes) we use a 5% trailing stoploss.
@@ -229,14 +243,45 @@ class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
# Make sure you have the longest interval first - these conditions are evaluated from top to bottom.
if current_time - timedelta(minutes=120) > trade.open_date_utc:
return -0.05
elif current_time - timedelta(minutes=60) > trade.open_date_utc:
return -0.10
return 1
return None
```
#### Time based trailing stop with after-fill adjustments
Use the initial stoploss for the first 60 minutes, after this change to 10% trailing stoploss, and after 2 hours (120 minutes) we use a 5% trailing stoploss.
If an additional order fills, set stoploss to -10% below the new `open_rate` ([Averaged across all entries](#position-adjust-calculations)).
``` python
from datetime import datetime, timedelta
from freqtrade.persistence import Trade
class AwesomeStrategy(IStrategy):
# ... populate_* methods
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
if after_fill:
# After an additional order, start with a stoploss of 10% below the new open rate
return stoploss_from_open(0.10, current_profit, is_short=trade.is_short, leverage=trade.leverage)
# Make sure you have the longest interval first - these conditions are evaluated from top to bottom.
if current_time - timedelta(minutes=120) > trade.open_date_utc:
return -0.05
elif current_time - timedelta(minutes=60) > trade.open_date_utc:
return -0.10
return None
```
#### Different stoploss per pair
@@ -255,7 +300,8 @@ class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
if pair in ('ETH/BTC', 'XRP/BTC'):
return -0.10
@@ -281,7 +327,8 @@ class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
if current_profit < 0.04:
return -1 # return a value bigger than the initial stoploss to keep using the initial stoploss
@@ -314,7 +361,8 @@ class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
# evaluate highest to lowest, so that highest possible stop is used
if current_profit > 0.40:
@@ -325,7 +373,7 @@ class AwesomeStrategy(IStrategy):
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
return None
```
#### Custom stoploss using an indicator from dataframe example
@@ -342,7 +390,8 @@ class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
last_candle = dataframe.iloc[-1].squeeze()
@@ -352,10 +401,10 @@ 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
return None
```
See [Dataframe access](strategy-advanced.md#dataframe-access) for more information about dataframe use in strategy callbacks.
@@ -364,15 +413,89 @@ See [Dataframe access](strategy-advanced.md#dataframe-access) for more informati
#### Stoploss relative to open price
Stoploss values returned from `custom_stoploss()` always specify a percentage relative to `current_rate`. In order to set a stoploss relative to the *open* price, we need to use `current_profit` to calculate what percentage relative to the `current_rate` will give you the same result as if the percentage was specified from 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_ 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 trade profit above the entry point.
The helper function [`stoploss_from_open()`](strategy-customization.md#stoploss_from_open) can be used to convert from an open price relative stop, to a current price relative stop which can be returned from `custom_stoploss()`.
??? Example "Returning a stoploss relative to the open price from the custom stoploss function"
Say the open price was $100, and `current_price` is $121 (`current_profit` will be `0.21`).
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
from datetime import datetime
from freqtrade.persistence import Trade
from freqtrade.strategy import IStrategy, stoploss_from_open
class AwesomeStrategy(IStrategy):
# ... populate_* methods
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
# 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, leverage=trade.leverage)
return 1
```
Full examples can be found in the [Custom stoploss](strategy-advanced.md#custom-stoploss) section of the Documentation.
!!! Note
Providing invalid input to `stoploss_from_open()` may produce "CustomStoploss function did not return valid stoploss" warnings.
This may happen if `current_profit` parameter is below specified `open_relative_stop`. Such situations may arise when closing trade
is blocked by `confirm_trade_exit()` method. Warnings can be solved by never blocking stop loss sells by checking `exit_reason` in
`confirm_trade_exit()`, or by using `return stoploss_from_open(...) or 1` idiom, which will request to not change stop loss when
`current_profit < open_relative_stop`.
#### Stoploss percentage from absolute price
Stoploss values returned from `custom_stoploss()` always specify a percentage relative to `current_rate`. In order to set a stoploss at specified absolute price level, we need to use `stop_rate` to calculate what percentage relative to the `current_rate` will give you the same result as if the percentage was specified from the open price.
The helper function [`stoploss_from_absolute()`](strategy-customization.md#stoploss_from_absolute) can be used to convert from an absolute price, to a current price relative stop which can be returned from `custom_stoploss()`.
The helper function `stoploss_from_absolute()` can be used to convert from an absolute price, to a current price relative stop which can be returned from `custom_stoploss()`.
??? Example "Returning a stoploss using absolute price from the custom stoploss function"
If we want to trail a stop price at 2xATR below current price we can call `stoploss_from_absolute(current_rate + (side * candle['atr'] * 2), current_rate, is_short=trade.is_short, leverage=trade.leverage)`.
For futures, we need to adjust the direction (up or down), as well as adjust for leverage, since the [`custom_stoploss`](strategy-callbacks.md#custom-stoploss) callback returns the ["risk for this trade"](stoploss.md#stoploss-and-leverage) - not the relative price movement.
``` python
from datetime import datetime
from freqtrade.persistence import Trade
from freqtrade.strategy import IStrategy, stoploss_from_absolute, timeframe_to_prev_date
class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def populate_indicators_1h(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe['atr'] = ta.ATR(dataframe, timeperiod=14)
return dataframe
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
trade_date = timeframe_to_prev_date(self.timeframe, trade.open_date_utc)
candle = dataframe.iloc[-1].squeeze()
sign = 1 if trade.is_short else -1
return stoploss_from_absolute(current_rate + (side * candle['atr'] * 2),
current_rate, is_short=trade.is_short,
leverage=trade.leverage)
```
---
@@ -387,6 +510,9 @@ Each of these methods are called right before placing an order on the exchange.
!!! Note
If your custom pricing function return None or an invalid value, price will fall back to `proposed_rate`, which is based on the regular pricing configuration.
!!! Note
Using custom_entry_price, the Trade object will be available as soon as the first entry order associated with the trade is created, for the first entry, `trade` parameter value will be `None`.
### Custom order entry and exit price example
``` python
@@ -397,7 +523,7 @@ class AwesomeStrategy(IStrategy):
# ... populate_* methods
def custom_entry_price(self, pair: str, current_time: datetime, proposed_rate: float,
def custom_entry_price(self, pair: str, trade: Optional['Trade'], current_time: datetime, proposed_rate: float,
entry_tag: Optional[str], side: str, **kwargs) -> float:
dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=pair,
@@ -700,7 +826,7 @@ class DigDeeperStrategy(IStrategy):
"""
Custom trade adjustment logic, returning the stake amount that a trade should be
increased or decreased.
This means extra buy or sell orders with additional fees.
This means extra entry or exit orders with additional fees.
Only called when `position_adjustment_enable` is set to True.
For full documentation please go to https://www.freqtrade.io/en/latest/strategy-advanced/
@@ -709,8 +835,9 @@ class DigDeeperStrategy(IStrategy):
:param trade: trade object.
:param current_time: datetime object, containing the current datetime
:param current_rate: Current buy rate.
:param current_profit: Current profit (as ratio), calculated based on current_rate.
:param current_rate: Current entry rate (same as current_entry_profit)
:param current_profit: Current profit (as ratio), calculated based on current_rate
(same as current_entry_profit).
:param min_stake: Minimal stake size allowed by exchange (for both entries and exits)
:param max_stake: Maximum stake allowed (either through balance, or by exchange limits).
:param current_entry_rate: Current rate using entry pricing.
@@ -750,7 +877,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
@@ -793,6 +920,8 @@ Returning any other price will cancel the existing order, and replace it with a
The trade open-date (`trade.open_date_utc`) will remain at the time of the very first order placed.
Please make sure to be aware of this - and eventually adjust your logic in other callbacks to account for this, and use the date of the first filled order instead.
If the cancellation of the original order fails, then the order will not be replaced - though the order will most likely have been canceled on exchange. Having this happen on initial entries will result in the deletion of the order, while on position adjustment orders, it'll result in the trade size remaining as is.
!!! Warning "Regular timeout"
Entry `unfilledtimeout` mechanism (as well as `check_entry_timeout()`) takes precedence over this.
Entry Orders that are cancelled via the above methods will not have this callback called. Be sure to update timeout values to match your expectations.

View File

@@ -168,10 +168,12 @@ Most indicators have an instable startup period, in which they are either not av
To account for this, the strategy can be assigned the `startup_candle_count` attribute.
This should be set to the maximum number of candles that the strategy requires to calculate stable indicators. In the case where a user includes higher timeframes with informative pairs, the `startup_candle_count` does not necessarily change. The value is the maximum period (in candles) that any of the informatives timeframes need to compute stable indicators.
In this example strategy, this should be set to 100 (`startup_candle_count = 100`), since the longest needed history is 100 candles.
You can use [recursive-analysis](recursive-analysis.md) to check and find the correct `startup_candle_count` to be used.
In this example strategy, this should be set to 400 (`startup_candle_count = 400`), since the minimum needed history for ema100 calculation to make sure the value is correct is 400 candles.
``` python
dataframe['ema100'] = ta.EMA(dataframe, timeperiod=100)
dataframe['ema100'] = ta.EMA(dataframe, timeperiod=400)
```
By letting the bot know how much history is needed, backtest trades can start at the specified timerange during backtesting and hyperopt.
@@ -193,11 +195,11 @@ Let's try to backtest 1 month (January 2019) of 5m candles using an example stra
freqtrade backtesting --timerange 20190101-20190201 --timeframe 5m
```
Assuming `startup_candle_count` is set to 100, backtesting knows it needs 100 candles to generate valid buy signals. It will load data from `20190101 - (100 * 5m)` - which is ~2018-12-31 15:30:00.
Assuming `startup_candle_count` is set to 400, backtesting knows it needs 400 candles to generate valid buy signals. It will load data from `20190101 - (400 * 5m)` - which is ~2018-12-30 11:40:00.
If this data is available, indicators will be calculated with this extended timerange. The instable startup period (up to 2019-01-01 00:00:00) will then be removed before starting backtesting.
!!! Note
If data for the startup period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-01 08:30:00.
If data for the startup period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-02 09:20:00.
### Entry signal rules
@@ -264,7 +266,7 @@ def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFram
### Exit signal rules
Edit the method `populate_exit_trend()` into your strategy file to update your exit strategy.
The exit-signal is only used for exits if `use_exit_signal` is set to true in the configuration.
The exit-signal can be suppressed by setting `use_exit_signal` to false in the configuration or strategy.
`use_exit_signal` will not influence [signal collision rules](#colliding-signals) - which will still apply and can prevent entries.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
@@ -342,16 +344,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 ...)
@@ -590,6 +588,67 @@ for more information.
will overwrite previously defined method and not produce any errors due to limitations of Python programming language. In such cases you will find that indicators
created in earlier-defined methods are not available in the dataframe. Carefully review method names and make sure they are unique!
### *merge_informative_pair()*
This method helps you merge an informative pair to a regular dataframe without lookahead bias.
It's there to help you merge the dataframe in a safe and consistent way.
Options:
- Rename the columns for you to create unique columns
- Merge the dataframe without lookahead bias
- Forward-fill (optional)
For a full sample, please refer to the [complete data provider example](#complete-data-provider-sample) below.
All columns of the informative dataframe will be available on the returning dataframe in a renamed fashion:
!!! Example "Column renaming"
Assuming `inf_tf = '1d'` the resulting columns will be:
``` python
'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe
'date_1d', 'open_1d', 'high_1d', 'low_1d', 'close_1d', 'rsi_1d' # from the informative dataframe
```
??? Example "Column renaming - 1h"
Assuming `inf_tf = '1h'` the resulting columns will be:
``` python
'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe
'date_1h', 'open_1h', 'high_1h', 'low_1h', 'close_1h', 'rsi_1h' # from the informative dataframe
```
??? Example "Custom implementation"
A custom implementation for this is possible, and can be done as follows:
``` python
# Shift date by 1 candle
# This is necessary since the data is always the "open date"
# and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00
minutes = timeframe_to_minutes(inf_tf)
# Only do this if the timeframes are different:
informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm')
# Rename columns to be unique
informative.columns = [f"{col}_{inf_tf}" for col in informative.columns]
# Assuming inf_tf = '1d' - then the columns will now be:
# date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d
# Combine the 2 dataframes
# all indicators on the informative sample MUST be calculated before this point
dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_merge_{inf_tf}', how='left')
# FFill to have the 1d value available in every row throughout the day.
# Without this, comparisons would only work once per day.
dataframe = dataframe.ffill()
```
!!! Warning "Informative timeframe < timeframe"
Using informative timeframes smaller than the dataframe timeframe is not recommended with this method, as it will not use any of the additional information this would provide.
To use the more detailed information properly, more advanced methods should be applied (which are out of scope for freqtrade documentation, as it'll depend on the respective need).
## Additional data (DataProvider)
The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy.
@@ -814,146 +873,6 @@ class SampleStrategy(IStrategy):
***
## Helper functions
### *merge_informative_pair()*
This method helps you merge an informative pair to a regular dataframe without lookahead bias.
It's there to help you merge the dataframe in a safe and consistent way.
Options:
- Rename the columns for you to create unique columns
- Merge the dataframe without lookahead bias
- Forward-fill (optional)
For a full sample, please refer to the [complete data provider example](#complete-data-provider-sample) below.
All columns of the informative dataframe will be available on the returning dataframe in a renamed fashion:
!!! Example "Column renaming"
Assuming `inf_tf = '1d'` the resulting columns will be:
``` python
'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe
'date_1d', 'open_1d', 'high_1d', 'low_1d', 'close_1d', 'rsi_1d' # from the informative dataframe
```
??? Example "Column renaming - 1h"
Assuming `inf_tf = '1h'` the resulting columns will be:
``` python
'date', 'open', 'high', 'low', 'close', 'rsi' # from the original dataframe
'date_1h', 'open_1h', 'high_1h', 'low_1h', 'close_1h', 'rsi_1h' # from the informative dataframe
```
??? Example "Custom implementation"
A custom implementation for this is possible, and can be done as follows:
``` python
# Shift date by 1 candle
# This is necessary since the data is always the "open date"
# and a 15m candle starting at 12:15 should not know the close of the 1h candle from 12:00 to 13:00
minutes = timeframe_to_minutes(inf_tf)
# Only do this if the timeframes are different:
informative['date_merge'] = informative["date"] + pd.to_timedelta(minutes, 'm')
# Rename columns to be unique
informative.columns = [f"{col}_{inf_tf}" for col in informative.columns]
# Assuming inf_tf = '1d' - then the columns will now be:
# date_1d, open_1d, high_1d, low_1d, close_1d, rsi_1d
# Combine the 2 dataframes
# all indicators on the informative sample MUST be calculated before this point
dataframe = pd.merge(dataframe, informative, left_on='date', right_on=f'date_merge_{inf_tf}', how='left')
# FFill to have the 1d value available in every row throughout the day.
# Without this, comparisons would only work once per day.
dataframe = dataframe.ffill()
```
!!! Warning "Informative timeframe < timeframe"
Using informative timeframes smaller than the dataframe timeframe is not recommended with this method, as it will not use any of the additional information this would provide.
To use the more detailed information properly, more advanced methods should be applied (which are out of scope for freqtrade documentation, as it'll depend on the respective need).
***
### *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 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"
Say the open price was $100, and `current_price` is $121 (`current_profit` will be `0.21`).
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
from datetime import datetime
from freqtrade.persistence import Trade
from freqtrade.strategy import IStrategy, stoploss_from_open
class AwesomeStrategy(IStrategy):
# ... populate_* methods
use_custom_stoploss = True
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
# 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, leverage=trade.leverage)
return 1
```
Full examples can be found in the [Custom stoploss](strategy-advanced.md#custom-stoploss) section of the Documentation.
!!! Note
Providing invalid input to `stoploss_from_open()` may produce "CustomStoploss function did not return valid stoploss" warnings.
This may happen if `current_profit` parameter is below specified `open_relative_stop`. Such situations may arise when closing trade
is blocked by `confirm_trade_exit()` method. Warnings can be solved by never blocking stop loss sells by checking `exit_reason` in
`confirm_trade_exit()`, or by using `return stoploss_from_open(...) or 1` idiom, which will request to not change stop loss when
`current_profit < open_relative_stop`.
### *stoploss_from_absolute()*
In some situations it may be confusing to deal with stops relative to current rate. Instead, you may define a stoploss level using an absolute price.
??? Example "Returning a stoploss using absolute price from the custom stoploss function"
If we want to trail a stop price at 2xATR below current price we can call `stoploss_from_absolute(current_rate - (candle['atr'] * 2), current_rate, is_short=trade.is_short)`.
``` python
from datetime import datetime
from freqtrade.persistence import Trade
from freqtrade.strategy import IStrategy, stoploss_from_absolute
class AwesomeStrategy(IStrategy):
use_custom_stoploss = True
def populate_indicators_1h(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe['atr'] = ta.ATR(dataframe, timeperiod=14)
return dataframe
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
candle = dataframe.iloc[-1].squeeze()
return stoploss_from_absolute(current_rate - (candle['atr'] * 2), current_rate, is_short=trade.is_short)
```
## Additional data (Wallets)
The strategy provides access to the `wallets` object. This contains the current balances on the exchange.
@@ -1089,6 +1008,10 @@ The following lists some common patterns which should be avoided to prevent frus
- don't use `dataframe['volume'].mean()`. This uses the full DataFrame for backtesting, including data from the future. Use `dataframe['volume'].rolling(<window>).mean()` instead
- don't use `.resample('1h')`. This uses the left border of the interval, so moves data from an hour to the start of the hour. Use `.resample('1h', label='right')` instead.
!!! Tip "Identifying problems"
You may also want to check the 2 helper commands [lookahead-analysis](lookahead-analysis.md) and [recursive-analysis](recursive-analysis.md), which can each help you figure out problems with your strategy in different ways.
Please treat them as what they are - helpers to identify most common problems. A negative result of each does not guarantee that there's none of the above errors included.
### Colliding signals
When conflicting signals collide (e.g. both `'enter_long'` and `'exit_long'` are 1), freqtrade will do nothing and ignore the entry signal. This will avoid trades that enter, and exit immediately. Obviously, this can potentially lead to missed entries.

View File

@@ -167,7 +167,7 @@ trades.groupby("pair")["exit_reason"].value_counts()
# Plotting equity line (starting with 0 on day 1 and adding daily profit for each backtested day)
from freqtrade.configuration import Configuration
from freqtrade.data.btanalysis import load_backtest_data, load_backtest_stats
from freqtrade.data.btanalysis import load_backtest_stats
import plotly.express as px
import pandas as pd
@@ -178,20 +178,8 @@ import pandas as pd
stats = load_backtest_stats(backtest_dir)
strategy_stats = stats['strategy'][strategy]
dates = []
profits = []
for date_profit in strategy_stats['daily_profit']:
dates.append(date_profit[0])
profits.append(date_profit[1])
equity = 0
equity_daily = []
for daily_profit in profits:
equity_daily.append(equity)
equity += float(daily_profit)
df = pd.DataFrame({'dates': dates,'equity_daily': equity_daily})
df = pd.DataFrame(columns=['dates','equity'], data=strategy_stats['daily_profit'])
df['equity_daily'] = df['equity'].cumsum()
fig = px.line(df, x="dates", y="equity_daily")
fig.show()

View File

@@ -280,7 +280,7 @@ After:
``` python hl_lines="3"
class AwesomeStrategy(IStrategy):
def custom_entry_price(self, pair: str, current_time: datetime, proposed_rate: float,
def custom_entry_price(self, pair: str, trade: Optional[Trade], current_time: datetime, proposed_rate: float,
entry_tag: Optional[str], side: str, **kwargs) -> float:
return proposed_rate
```
@@ -311,12 +311,13 @@ After:
``` python hl_lines="5 7"
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, **kwargs) -> float:
current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]:
# 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_absolute(current_rate - (candle['atr'] * 2), current_rate, is_short=trade.is_short)
return stoploss_from_absolute(current_rate - (candle['atr'] * 2), current_rate, is_short=trade.is_short, leverage=trade.leverage)
```
@@ -578,7 +579,7 @@ def populate_any_indicators(
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):
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
@@ -638,7 +639,7 @@ Features will now expand automatically. As such, the expansion loops, as well as
Basic features. Make sure to remove the `{pair}` part from your features.
``` python linenums="1"
def feature_engineering_expand_basic(self, dataframe, **kwargs):
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
@@ -673,7 +674,7 @@ Basic features. Make sure to remove the `{pair}` part from your features.
### FreqAI - feature engineering standard
``` python linenums="1"
def feature_engineering_standard(self, dataframe, **kwargs):
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.
@@ -704,7 +705,7 @@ Basic features. Make sure to remove the `{pair}` part from your features.
Targets now get their own, dedicated method.
``` python linenums="1"
def set_freqai_targets(self, dataframe, **kwargs):
def set_freqai_targets(self, dataframe: DataFrame, **kwargs) -> DataFrame:
"""
*Only functional with FreqAI enabled strategies*
Required function to set the targets for the model.
@@ -728,3 +729,86 @@ Targets now get their own, dedicated method.
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

@@ -187,11 +187,13 @@ official commands. You can ask at any moment for help with `/help`.
| `/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)
@@ -202,7 +204,6 @@ official commands. You can ask at any moment for help with `/help`.
| `/blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
| `/edge` | Show validated pairs by Edge if it is enabled.
## Telegram commands in action
Below, example of Telegram message you will receive for each command.
@@ -279,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>

View File

@@ -141,7 +141,8 @@ Most properties here can be None as they are dependant on the exchange response.
`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
`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**

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).
@@ -956,7 +967,7 @@ Print trades with id 2 and 3 as json
freqtrade show-trades --db-url sqlite:///tradesv3.sqlite --trade-ids 2 3 --print-json
```
### Strategy-Updater
## 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.

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,15 +24,15 @@ 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.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, 3.10 and 3.11) and for 64bit Windows.
Other versions must be downloaded from the above link.
``` powershell
cd \path\freqtrade
python -m venv .env
.env\Scripts\activate.ps1
python -m venv .venv
.venv\Scripts\activate.ps1
# optionally install ta-lib from wheel
# Eventually adjust the below filename to match the downloaded wheel
pip install --find-links build_helpers\ TA-Lib -U
@@ -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,5 +1,5 @@
""" Freqtrade bot """
__version__ = '2023.3'
__version__ = '2023.10'
if 'dev' in __version__:
from pathlib import Path

View File

@@ -3,7 +3,7 @@
__main__.py for Freqtrade
To launch Freqtrade as a module
> python -m freqtrade (with Python >= 3.8)
> python -m freqtrade (with Python >= 3.9)
"""
from freqtrade import main

View File

@@ -19,7 +19,9 @@ 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,
start_recursive_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

52
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"]
@@ -65,10 +65,9 @@ ARGS_BUILD_CONFIG = ["config"]
ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "template"]
ARGS_CONVERT_DATA_TRADES = ["pairs", "format_from_trades", "format_to", "erase", "exchange"]
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,7 +105,8 @@ 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",
@@ -116,7 +116,13 @@ NO_CONF_REQURIED = ["convert-data", "convert-trade-data", "download-data", "list
NO_CONF_ALLOWED = ["create-userdir", "list-exchanges", "new-strategy"]
ARGS_STRATEGY_UTILS = ["strategy_list", "strategy_path", "recursive_strategy_search"]
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"]
ARGS_RECURSIVE_ANALYSIS = ["timeframe", "timerange", "dataformat_ohlcv", "pairs", "startup_candle"]
class Arguments:
@@ -200,9 +206,11 @@ 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_strategy_update,
start_test_pairlist, start_trading, start_webserver)
start_lookahead_analysis, start_new_config,
start_new_strategy, start_plot_dataframe, start_plot_profit,
start_recursive_analysis, 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
@@ -260,7 +268,7 @@ class Arguments:
parents=[_common_parser],
)
convert_trade_data_cmd.set_defaults(func=partial(start_convert_data, ohlcv=False))
self._build_args(optionlist=ARGS_CONVERT_DATA, parser=convert_trade_data_cmd)
self._build_args(optionlist=ARGS_CONVERT_DATA_TRADES, parser=convert_trade_data_cmd)
# Add trades-to-ohlcv subcommand
convert_trade_data_cmd = subparsers.add_parser(
@@ -450,4 +458,26 @@ class Arguments:
'files to the current version',
parents=[_common_parser])
strategy_updater_cmd.set_defaults(func=start_strategy_update)
self._build_args(optionlist=ARGS_STRATEGY_UTILS, parser=strategy_updater_cmd)
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)
# Add recursive_analysis subcommand
recursive_analayis_cmd = subparsers.add_parser(
'recursive-analysis',
help="Check for potential recursive formula issue.",
parents=[_common_parser, _strategy_parser])
recursive_analayis_cmd.set_defaults(func=start_recursive_analysis)
self._build_args(optionlist=ARGS_RECURSIVE_ANALYSIS,
parser=recursive_analayis_cmd)

View File

@@ -5,11 +5,12 @@ 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
from freqtrade.exchange import MAP_EXCHANGE_CHILDCLASS, available_exchanges
from freqtrade.misc import render_template
from freqtrade.util import render_template
logger = logging.getLogger(__name__)
@@ -104,7 +105,7 @@ def ask_user_config() -> Dict[str, Any]:
"type": "select",
"name": "exchange_name",
"message": "Select exchange",
"choices": lambda x: [
"choices": [
"binance",
"binanceus",
"bittrex",
@@ -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']
},
{

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

@@ -381,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='+',
),
@@ -421,6 +421,12 @@ AVAILABLE_CLI_OPTIONS = {
'desired timeframe as specified as --timeframes/-t.',
action='store_true',
),
"format_from_trades": Arg(
'--format-from',
help='Source format for data conversion.',
choices=constants.AVAILABLE_DATAHANDLERS + ['kraken_csv'],
required=True,
),
"format_from": Arg(
'--format-from',
help='Source format for data conversion.',
@@ -435,13 +441,13 @@ AVAILABLE_CLI_OPTIONS = {
),
"dataformat_ohlcv": Arg(
'--data-format-ohlcv',
help='Storage format for downloaded candle (OHLCV) data. (default: `json`).',
help='Storage format for downloaded candle (OHLCV) data. (default: `feather`).',
choices=constants.AVAILABLE_DATAHANDLERS,
),
"dataformat_trades": Arg(
'--data-format-trades',
help='Storage format for downloaded trades data. (default: `jsongz`).',
choices=constants.AVAILABLE_DATAHANDLERS_TRADES,
help='Storage format for downloaded trades data. (default: `feather`).',
choices=constants.AVAILABLE_DATAHANDLERS,
),
"show_timerange": Arg(
'--show-timerange',
@@ -450,14 +456,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(
@@ -636,30 +640,45 @@ AVAILABLE_CLI_OPTIONS = {
"4: by pair, enter_ and exit_tag (this can get quite large), "
"5: by exit_tag"),
nargs='+',
default=['0', '1', '2'],
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.',
@@ -675,4 +694,26 @@ 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
),
"startup_candle": Arg(
'--startup-candle',
help='Specify startup candles to be checked (`199`, `499`, `999`, `1999`).',
nargs='+',
),
}

View File

@@ -1,18 +1,16 @@
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, 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.constants import DATETIME_PRINT_FORMAT, DL_DATA_TIMEFRAMES, Config
from freqtrade.data.converter import (convert_ohlcv_format, convert_trades_format,
convert_trades_to_ohlcv)
from freqtrade.data.history import 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.resolvers import ExchangeResolver
from freqtrade.util.binance_mig import migrate_binance_futures_data
@@ -20,7 +18,7 @@ from freqtrade.util.binance_mig import migrate_binance_futures_data
logger = logging.getLogger(__name__)
def _data_download_sanity(config: Config) -> None:
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.")
@@ -37,78 +35,14 @@ def start_download_data(args: Dict[str, Any]) -> None:
"""
config = setup_utils_configuration(args, RunMode.UTIL_EXCHANGE)
_data_download_sanity(config)
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'] = ''
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)."
)
migrate_binance_futures_data(config)
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:
@@ -119,26 +53,19 @@ def start_convert_trades(args: Dict[str, Any]) -> None:
# 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.")
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'])
expanded_pairs = expand_pairlist(config['pairs'], list(exchange.markets))
logger.info(f"About to Convert pairs: {expanded_pairs}, "
f"intervals: {config['timeframes']} to {config['datadir']}")
for timeframe in config['timeframes']:
exchange.validate_timeframes(timeframe)
# Convert downloaded trade data to different timeframes
convert_trades_to_ohlcv(
pairs=expanded_pairs, timeframes=config['timeframes'],
pairs=config.get('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'],
@@ -152,14 +79,13 @@ def start_convert_data(args: Dict[str, Any], ohlcv: bool = True) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if ohlcv:
migrate_binance_futures_data(config)
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)
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'],
convert_from=args['format_from_trades'], convert_to=args['format_to'],
erase=args['erase'])

View File

@@ -10,7 +10,7 @@ from freqtrade.configuration.directory_operations import copy_sample_files, crea
from freqtrade.constants import USERPATH_STRATEGIES
from freqtrade.enums import RunMode
from freqtrade.exceptions import OperationalException
from freqtrade.misc import render_template, render_template_with_fallback
from freqtrade.util import render_template, render_template_with_fallback
logger = logging.getLogger(__name__)
@@ -35,6 +35,10 @@ def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: st
Deploy new strategy from template to strategy_path
"""
fallback = 'full'
attributes = render_template_with_fallback(
templatefile=f"strategy_subtemplates/strategy_attributes_{subtemplate}.j2",
templatefallbackfile=f"strategy_subtemplates/strategy_attributes_{fallback}.j2",
)
indicators = render_template_with_fallback(
templatefile=f"strategy_subtemplates/indicators_{subtemplate}.j2",
templatefallbackfile=f"strategy_subtemplates/indicators_{fallback}.j2",
@@ -58,6 +62,7 @@ def deploy_new_strategy(strategy_name: str, strategy_path: Path, subtemplate: st
strategy_text = render_template(templatefile='base_strategy.py.j2',
arguments={"strategy": strategy_name,
"attributes": attributes,
"indicators": indicators,
"buy_trend": buy_trend,
"sell_trend": sell_trend,

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,27 @@ 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.analysis.lookahead_helpers import LookaheadAnalysisSubFunctions
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
LookaheadAnalysisSubFunctions.start(config)
def start_recursive_analysis(args: Dict[str, Any]) -> None:
"""
Start the backtest recursive tester script
:param args: Cli args from Arguments()
:return: None
"""
from freqtrade.optimize.analysis.recursive_helpers import RecursiveAnalysisSubFunctions
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
RecursiveAnalysisSubFunctions.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

@@ -7,9 +7,10 @@ def start_webserver(args: Dict[str, Any]) -> None:
"""
Main entry point for webserver mode
"""
from freqtrade.configuration import Configuration
from freqtrade.configuration import setup_utils_configuration
from freqtrade.rpc.api_server import ApiServer
# Initialize configuration
config = Configuration(args, RunMode.WEBSERVER).get_config()
config = setup_utils_configuration(args, RunMode.WEBSERVER)
ApiServer(config, standalone=True)

View File

@@ -3,4 +3,5 @@
from freqtrade.configuration.config_setup import setup_utils_configuration
from freqtrade.configuration.config_validation import validate_config_consistency
from freqtrade.configuration.configuration import Configuration
from freqtrade.configuration.detect_environment import running_in_docker
from freqtrade.configuration.timerange import TimeRange

View File

@@ -51,6 +51,8 @@ def validate_config_schema(conf: Dict[str, Any], preliminary: bool = False) -> D
conf_schema['required'] = constants.SCHEMA_BACKTEST_REQUIRED
else:
conf_schema['required'] = constants.SCHEMA_BACKTEST_REQUIRED_FINAL
elif conf.get('runmode', RunMode.OTHER) == RunMode.WEBSERVER:
conf_schema['required'] = constants.SCHEMA_MINIMAL_WEBSERVER
else:
conf_schema['required'] = constants.SCHEMA_MINIMAL_REQUIRED
try:
@@ -174,7 +176,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

@@ -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,31 @@ 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: {}')
self._args_to_config(config, argname='startup_candle',
logstring='Startup candle to be used on recursive analysis: {}')
def _process_runmode(self, config: Config) -> None:
self._args_to_config(config, argname='dry_run',
@@ -543,6 +571,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

@@ -41,7 +41,7 @@ def flat_vars_to_nested_dict(env_dict: Dict[str, Any], prefix: str) -> Dict[str,
key = env_var.replace(prefix, '')
for k in reversed(key.split('__')):
val = {k.lower(): get_var_typed(val)
if type(val) != dict and k not in no_convert else val}
if not isinstance(val, dict) and k not in no_convert else val}
relevant_vars = deep_merge_dicts(val, relevant_vars)
return relevant_vars

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

@@ -8,8 +8,8 @@ from typing import Any, Dict, List, Literal, Tuple
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
@@ -33,13 +33,12 @@ HYPEROPT_LOSS_BUILTIN = ['ShortTradeDurHyperOptLoss', 'OnlyProfitHyperOptLoss',
'MaxDrawDownHyperOptLoss', 'MaxDrawDownRelativeHyperOptLoss',
'ProfitDrawDownHyperOptLoss']
AVAILABLE_PAIRLISTS = ['StaticPairList', 'VolumePairList', 'ProducerPairList', 'RemotePairList',
'AgeFilter', 'OffsetFilter', 'PerformanceFilter',
'AgeFilter', "FullTradesFilter", 'OffsetFilter', 'PerformanceFilter',
'PrecisionFilter', 'PriceFilter', 'RangeStabilityFilter',
'ShuffleFilter', 'SpreadFilter', 'VolatilityFilter']
AVAILABLE_PROTECTIONS = ['CooldownPeriod',
'LowProfitPairs', 'MaxDrawdown', 'StoplossGuard']
AVAILABLE_DATAHANDLERS_TRADES = ['json', 'jsongz', 'hdf5', 'feather']
AVAILABLE_DATAHANDLERS = AVAILABLE_DATAHANDLERS_TRADES + ['parquet']
AVAILABLE_DATAHANDLERS = ['json', 'jsongz', 'hdf5', 'feather', 'parquet']
BACKTEST_BREAKDOWNS = ['day', 'week', 'month']
BACKTEST_CACHE_AGE = ['none', 'day', 'week', 'month']
BACKTEST_CACHE_DEFAULT = 'day'
@@ -50,6 +49,15 @@ DEFAULT_DATAFRAME_COLUMNS = ['date', 'open', 'high', 'low', 'close', 'volume']
# Don't modify sequence of DEFAULT_TRADES_COLUMNS
# it has wide consequences for stored trades files
DEFAULT_TRADES_COLUMNS = ['timestamp', 'id', 'type', 'side', 'price', 'amount', 'cost']
TRADES_DTYPES = {
'timestamp': 'int64',
'id': 'str',
'type': 'str',
'side': 'str',
'price': 'float64',
'amount': 'float64',
'cost': 'float64',
}
TRADING_MODES = ['spot', 'margin', 'futures']
MARGIN_MODES = ['cross', 'isolated', '']
@@ -64,10 +72,13 @@ 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__'
NON_OPEN_EXCHANGE_STATES = ('cancelled', 'canceled', 'closed', 'expired')
CANCELED_EXCHANGE_STATES = ('cancelled', 'canceled', 'expired')
NON_OPEN_EXCHANGE_STATES = CANCELED_EXCHANGE_STATES + ('closed',)
# Define decimals per coin for outputs
# Only used for outputs.
@@ -110,6 +121,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',
@@ -147,10 +160,9 @@ 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},
'stoploss': {'type': 'number', 'maximum': 0, 'exclusiveMaximum': True},
'trailing_stop': {'type': 'boolean'},
'trailing_stop_positive': {'type': 'number', 'minimum': 0, 'maximum': 1},
'trailing_stop_positive_offset': {'type': 'number', 'minimum': 0, 'maximum': 1},
@@ -163,6 +175,14 @@ 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'},
'startup_candle': {
'type': 'array',
'uniqueItems': True,
'default': [199, 399, 499, 999, 1999],
},
'liquidation_buffer': {'type': 'number', 'minimum': 0.0, 'maximum': 0.99},
'backtest_breakdown': {
'type': 'array',
@@ -350,7 +370,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'},
@@ -439,12 +460,12 @@ CONF_SCHEMA = {
'dataformat_ohlcv': {
'type': 'string',
'enum': AVAILABLE_DATAHANDLERS,
'default': 'json'
'default': 'feather'
},
'dataformat_trades': {
'type': 'string',
'enum': AVAILABLE_DATAHANDLERS_TRADES,
'default': 'jsongz'
'enum': AVAILABLE_DATAHANDLERS,
'default': 'feather'
},
'position_adjustment_enable': {'type': 'boolean'},
'max_entry_position_adjustment': {'type': ['integer', 'number'], 'minimum': -1},
@@ -454,7 +475,6 @@ CONF_SCHEMA = {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'sandbox': {'type': 'boolean', 'default': False},
'key': {'type': 'string', 'default': ''},
'secret': {'type': 'string', 'default': ''},
'password': {'type': 'string', 'default': ''},
@@ -598,7 +618,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": {
@@ -660,6 +681,9 @@ SCHEMA_MINIMAL_REQUIRED = [
'dataformat_ohlcv',
'dataformat_trades',
]
SCHEMA_MINIMAL_WEBSERVER = SCHEMA_MINIMAL_REQUIRED + [
'api_server',
]
CANCEL_REASON = {
"TIMEOUT": "cancelled due to timeout",
@@ -670,6 +694,7 @@ CANCEL_REASON = {
"CANCELLED_ON_EXCHANGE": "cancelled on exchange",
"FORCE_EXIT": "forcesold",
"REPLACE": "cancelled to be replaced by new limit order",
"REPLACE_FAILED": "failed to replace order, deleting Trade",
"USER_CANCEL": "user requested order cancel"
}
@@ -688,4 +713,9 @@ BidAsk = Literal['bid', 'ask']
OBLiteral = Literal['asks', 'bids']
Config = Dict[str, Any]
# Exchange part of the configuration.
ExchangeConfig = Dict[str, Any]
IntOrInf = float
EntryExecuteMode = Literal['initial', 'pos_adjust', 'replace']

View File

@@ -5,16 +5,17 @@ import logging
from copy import copy
from datetime import datetime, timezone
from pathlib import Path
from typing import Any, Dict, List, Optional, Union
from typing import Any, Dict, List, Literal, Optional, Union
import numpy as np
import pandas as pd
from freqtrade.constants import LAST_BT_RESULT_FN, IntOrInf
from freqtrade.exceptions import OperationalException
from freqtrade.misc import json_load
from freqtrade.misc import file_dump_json, json_load
from freqtrade.optimize.backtest_caching import get_backtest_metadata_filename
from freqtrade.persistence import LocalTrade, Trade, init_db
from freqtrade.types import BacktestHistoryEntryType, BacktestResultType
logger = logging.getLogger(__name__)
@@ -128,7 +129,7 @@ def load_backtest_metadata(filename: Union[Path, str]) -> Dict[str, Any]:
raise OperationalException('Unexpected error while loading backtest metadata.') from e
def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]:
def load_backtest_stats(filename: Union[Path, str]) -> BacktestResultType:
"""
Load backtest statistics file.
:param filename: pathlib.Path object, or string pointing to the file.
@@ -147,21 +148,21 @@ def load_backtest_stats(filename: Union[Path, str]) -> Dict[str, Any]:
# Legacy list format does not contain metadata.
if isinstance(data, dict):
data['metadata'] = load_backtest_metadata(filename)
return data
def load_and_merge_backtest_result(strategy_name: str, filename: Path, results: Dict[str, Any]):
"""
Load one strategy from multi-strategy result
and merge it with results
Load one strategy from multi-strategy result and merge it with results
:param strategy_name: Name of the strategy contained in the result
:param filename: Backtest-result-filename to load
:param results: dict to merge the result to.
"""
bt_data = load_backtest_stats(filename)
for k in ('metadata', 'strategy'):
k: Literal['metadata', 'strategy']
for k in ('metadata', 'strategy'): # type: ignore
results[k][strategy_name] = bt_data[k][strategy_name]
results['metadata'][strategy_name]['filename'] = filename.stem
comparison = bt_data['strategy_comparison']
for i in range(len(comparison)):
if comparison[i]['key'] == strategy_name:
@@ -170,27 +171,67 @@ 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'))))
def get_backtest_resultlist(dirname: Path):
def get_backtest_result(filename: Path) -> List[BacktestHistoryEntryType]:
"""
Get backtest result read from metadata file
"""
return [
{
'filename': filename.stem,
'strategy': s,
'notes': v.get('notes', ''),
'run_id': v['run_id'],
'backtest_start_time': v['backtest_start_time'],
} for s, v in load_backtest_metadata(filename).items()
]
def get_backtest_resultlist(dirname: Path) -> List[BacktestHistoryEntryType]:
"""
Get list of backtest results read from metadata files
"""
results = []
for filename in _get_backtest_files(dirname):
metadata = load_backtest_metadata(filename)
if not metadata:
continue
for s, v in metadata.items():
results.append({
'filename': filename.name,
'strategy': s,
'run_id': v['run_id'],
'backtest_start_time': v['backtest_start_time'],
return [
{
'filename': filename.stem,
'strategy': s,
'run_id': v['run_id'],
'notes': v.get('notes', ''),
'backtest_start_time': v['backtest_start_time'],
}
for filename in _get_backtest_files(dirname)
for s, v in load_backtest_metadata(filename).items()
if v
]
})
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 update_backtest_metadata(filename: Path, strategy: str, content: Dict[str, Any]):
"""
Updates backtest metadata file with new content.
:raises: ValueError if metadata file does not exist, or strategy is not in this file.
"""
metadata = load_backtest_metadata(filename)
if not metadata:
raise ValueError("File does not exist.")
if strategy not in metadata:
raise ValueError("Strategy not in metadata.")
metadata[strategy].update(content)
# Write data again.
file_dump_json(get_backtest_metadata_filename(filename), metadata)
def find_existing_backtest_stats(dirname: Union[Path, str], run_ids: Dict[str, str],
@@ -211,7 +252,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:
@@ -246,14 +286,8 @@ 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,
infer_datetime_format=True
)
df['close_date'] = pd.to_datetime(df['close_date'],
utc=True,
infer_datetime_format=True
)
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

View File

@@ -0,0 +1,28 @@
from freqtrade.data.converter.converter import (clean_ohlcv_dataframe, convert_ohlcv_format,
ohlcv_fill_up_missing_data, ohlcv_to_dataframe,
order_book_to_dataframe, reduce_dataframe_footprint,
trim_dataframe, trim_dataframes)
from freqtrade.data.converter.trade_converter import (convert_trades_format,
convert_trades_to_ohlcv, trades_convert_types,
trades_df_remove_duplicates,
trades_dict_to_list, trades_list_to_df,
trades_to_ohlcv)
__all__ = [
'clean_ohlcv_dataframe',
'convert_ohlcv_format',
'ohlcv_fill_up_missing_data',
'ohlcv_to_dataframe',
'order_book_to_dataframe',
'reduce_dataframe_footprint',
'trim_dataframe',
'trim_dataframes',
'convert_trades_format',
'convert_trades_to_ohlcv',
'trades_convert_types',
'trades_df_remove_duplicates',
'trades_dict_to_list',
'trades_list_to_df',
'trades_to_ohlcv',
]

View File

@@ -1,17 +1,15 @@
"""
Functions to convert data from one format to another
"""
import itertools
import logging
from operator import itemgetter
from typing import Dict, List
from typing import Dict
import numpy as np
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.constants import DEFAULT_DATAFRAME_COLUMNS, Config
from freqtrade.enums import CandleType, TradingMode
logger = logging.getLogger(__name__)
@@ -34,7 +32,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,11 +94,17 @@ 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')
df['close'] = df['close'].ffill()
# Use close for "open, high, low"
df.loc[:, ['open', 'high', 'low']] = df[['open', 'high', 'low']].fillna(
value={'open': df['close'],
@@ -122,7 +126,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
@@ -189,82 +193,11 @@ def order_book_to_dataframe(bids: list, asks: list) -> DataFrame:
return frame
def trades_remove_duplicates(trades: List[List]) -> List[List]:
"""
Removes duplicates from the trades list.
Uses itertools.groupby to avoid converting to pandas.
Tests show it as being pretty efficient on lists of 4M Lists.
:param trades: List of Lists with constants.DEFAULT_TRADES_COLUMNS as columns
:return: same format as above, but with duplicates removed
"""
return [i for i, _ in itertools.groupby(sorted(trades, key=itemgetter(0)))]
def trades_dict_to_list(trades: List[Dict]) -> TradeList:
"""
Convert fetch_trades result into a List (to be more memory efficient).
:param trades: List of trades, as returned by ccxt.fetch_trades.
:return: List of Lists, with constants.DEFAULT_TRADES_COLUMNS as columns
"""
return [[t[col] for col in DEFAULT_TRADES_COLUMNS] for t in trades]
def trades_to_ohlcv(trades: TradeList, timeframe: str) -> DataFrame:
"""
Converts trades list to OHLCV list
:param trades: List of trades, as returned by ccxt.fetch_trades.
:param timeframe: Timeframe to resample data to
:return: OHLCV Dataframe.
:raises: ValueError if no trades are provided
"""
from freqtrade.exchange import timeframe_to_minutes
timeframe_minutes = timeframe_to_minutes(timeframe)
if not trades:
raise ValueError('Trade-list empty.')
df = pd.DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS)
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms',
utc=True,)
df = df.set_index('timestamp')
df_new = df['price'].resample(f'{timeframe_minutes}min').ohlc()
df_new['volume'] = df['amount'].resample(f'{timeframe_minutes}min').sum()
df_new['date'] = df_new.index
# Drop 0 volume rows
df_new = df_new.dropna()
return df_new.loc[:, DEFAULT_DATAFRAME_COLUMNS]
def convert_trades_format(config: Config, convert_from: str, convert_to: str, erase: bool):
"""
Convert trades from one format to another format.
:param config: Config dictionary
: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)
"""
from freqtrade.data.history.idatahandler import get_datahandler
src = get_datahandler(config['datadir'], convert_from)
trg = get_datahandler(config['datadir'], convert_to)
if 'pairs' not in config:
config['pairs'] = src.trades_get_pairs(config['datadir'])
logger.info(f"Converting trades for {config['pairs']}")
for pair in config['pairs']:
data = src.trades_load(pair=pair)
logger.info(f"Converting {len(data)} trades for {pair}")
trg.trades_store(pair, data)
if erase and convert_from != convert_to:
logger.info(f"Deleting source Trade data for {pair}.")
src.trades_purge(pair=pair)
def convert_ohlcv_format(
config: Config,
convert_from: str,
convert_to: str,
erase: bool,
candle_type: CandleType
):
"""
Convert OHLCV from one format to another
@@ -272,7 +205,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 +212,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

@@ -0,0 +1,155 @@
"""
Functions to convert data from one format to another
"""
import logging
from pathlib import Path
from typing import Dict, List
import pandas as pd
from pandas import DataFrame, to_datetime
from freqtrade.configuration import TimeRange
from freqtrade.constants import (DEFAULT_DATAFRAME_COLUMNS, DEFAULT_TRADES_COLUMNS, TRADES_DTYPES,
Config, TradeList)
from freqtrade.enums import CandleType
from freqtrade.exceptions import OperationalException
logger = logging.getLogger(__name__)
def trades_df_remove_duplicates(trades: pd.DataFrame) -> pd.DataFrame:
"""
Removes duplicates from the trades DataFrame.
Uses pandas.DataFrame.drop_duplicates to remove duplicates based on the 'timestamp' column.
:param trades: DataFrame with the columns constants.DEFAULT_TRADES_COLUMNS
:return: DataFrame with duplicates removed based on the 'timestamp' column
"""
return trades.drop_duplicates(subset=['timestamp', 'id'])
def trades_dict_to_list(trades: List[Dict]) -> TradeList:
"""
Convert fetch_trades result into a List (to be more memory efficient).
:param trades: List of trades, as returned by ccxt.fetch_trades.
:return: List of Lists, with constants.DEFAULT_TRADES_COLUMNS as columns
"""
return [[t[col] for col in DEFAULT_TRADES_COLUMNS] for t in trades]
def trades_convert_types(trades: DataFrame) -> DataFrame:
"""
Convert Trades dtypes and add 'date' column
"""
trades = trades.astype(TRADES_DTYPES)
trades['date'] = to_datetime(trades['timestamp'], unit='ms', utc=True)
return trades
def trades_list_to_df(trades: TradeList, convert: bool = True):
"""
convert trades list to dataframe
:param trades: List of Lists with constants.DEFAULT_TRADES_COLUMNS as columns
"""
if not trades:
df = DataFrame(columns=DEFAULT_TRADES_COLUMNS)
else:
df = DataFrame(trades, columns=DEFAULT_TRADES_COLUMNS)
if convert:
df = trades_convert_types(df)
return df
def trades_to_ohlcv(trades: DataFrame, timeframe: str) -> DataFrame:
"""
Converts trades list to OHLCV list
:param trades: List of trades, as returned by ccxt.fetch_trades.
:param timeframe: Timeframe to resample data to
:return: OHLCV Dataframe.
:raises: ValueError if no trades are provided
"""
from freqtrade.exchange import timeframe_to_minutes
timeframe_minutes = timeframe_to_minutes(timeframe)
if trades.empty:
raise ValueError('Trade-list empty.')
df = trades.set_index('date', drop=True)
df_new = df['price'].resample(f'{timeframe_minutes}min').ohlc()
df_new['volume'] = df['amount'].resample(f'{timeframe_minutes}min').sum()
df_new['date'] = df_new.index
# Drop 0 volume rows
df_new = df_new.dropna()
return df_new.loc[:, DEFAULT_DATAFRAME_COLUMNS]
def convert_trades_to_ohlcv(
pairs: List[str],
timeframes: List[str],
datadir: Path,
timerange: TimeRange,
erase: bool = False,
data_format_ohlcv: str = 'feather',
data_format_trades: str = 'feather',
candle_type: CandleType = CandleType.SPOT
) -> None:
"""
Convert stored trades data to ohlcv data
"""
from freqtrade.data.history.idatahandler import get_datahandler
data_handler_trades = get_datahandler(datadir, data_format=data_format_trades)
data_handler_ohlcv = get_datahandler(datadir, data_format=data_format_ohlcv)
if not pairs:
pairs = data_handler_trades.trades_get_pairs(datadir)
logger.info(f"About to convert pairs: '{', '.join(pairs)}', "
f"intervals: '{', '.join(timeframes)}' to {datadir}")
for pair in pairs:
trades = data_handler_trades.trades_load(pair)
for timeframe in timeframes:
if erase:
if data_handler_ohlcv.ohlcv_purge(pair, timeframe, candle_type=candle_type):
logger.info(f'Deleting existing data for pair {pair}, interval {timeframe}.')
try:
ohlcv = trades_to_ohlcv(trades, timeframe)
# Store ohlcv
data_handler_ohlcv.ohlcv_store(pair, timeframe, data=ohlcv, candle_type=candle_type)
except ValueError:
logger.exception(f'Could not convert {pair} to OHLCV.')
def convert_trades_format(config: Config, convert_from: str, convert_to: str, erase: bool):
"""
Convert trades from one format to another format.
:param config: Config dictionary
: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)
"""
if convert_from == 'kraken_csv':
if config['exchange']['name'] != 'kraken':
raise OperationalException(
'Converting from csv is only supported for kraken.'
'Please refer to the documentation for details about this special mode.'
)
from freqtrade.data.converter.trade_converter_kraken import import_kraken_trades_from_csv
import_kraken_trades_from_csv(config, convert_to)
return
from freqtrade.data.history.idatahandler import get_datahandler
src = get_datahandler(config['datadir'], convert_from)
trg = get_datahandler(config['datadir'], convert_to)
if 'pairs' not in config:
config['pairs'] = src.trades_get_pairs(config['datadir'])
logger.info(f"Converting trades for {config['pairs']}")
for pair in config['pairs']:
data = src.trades_load(pair=pair)
logger.info(f"Converting {len(data)} trades for {pair}")
trg.trades_store(pair, data)
if erase and convert_from != convert_to:
logger.info(f"Deleting source Trade data for {pair}.")
src.trades_purge(pair=pair)

View File

@@ -0,0 +1,70 @@
import logging
from pathlib import Path
import pandas as pd
from freqtrade.constants import DATETIME_PRINT_FORMAT, DEFAULT_TRADES_COLUMNS, Config
from freqtrade.data.converter.trade_converter import (trades_convert_types,
trades_df_remove_duplicates)
from freqtrade.data.history.idatahandler import get_datahandler
from freqtrade.exceptions import OperationalException
from freqtrade.resolvers import ExchangeResolver
logger = logging.getLogger(__name__)
KRAKEN_CSV_TRADE_COLUMNS = ['timestamp', 'price', 'amount']
def import_kraken_trades_from_csv(config: Config, convert_to: str):
"""
Import kraken trades from csv
"""
if config['exchange']['name'] != 'kraken':
raise OperationalException('This function is only for the kraken exchange.')
datadir: Path = config['datadir']
data_handler = get_datahandler(datadir, data_format=convert_to)
tradesdir: Path = config['datadir'] / 'trades_csv'
exchange = ExchangeResolver.load_exchange(config, validate=False)
# iterate through directories in this directory
data_symbols = {p.stem for p in tradesdir.rglob('*.csv')}
# create pair/filename mapping
markets = {
(m['symbol'], m['altname']) for m in exchange.markets.values()
if m.get('altname') in data_symbols
}
logger.info(f"Found csv files for {', '.join(data_symbols)}.")
for pair, name in markets:
dfs = []
# Load and combine all csv files for this pair
for f in tradesdir.rglob(f"{name}.csv"):
df = pd.read_csv(f, names=KRAKEN_CSV_TRADE_COLUMNS)
dfs.append(df)
# Load existing trades data
if not dfs:
# edgecase, can only happen if the file was deleted between the above glob and here
logger.info(f"No data found for pair {pair}")
continue
trades = pd.concat(dfs, ignore_index=True)
trades.loc[:, 'timestamp'] = trades['timestamp'] * 1e3
trades.loc[:, 'cost'] = trades['price'] * trades['amount']
for col in DEFAULT_TRADES_COLUMNS:
if col not in trades.columns:
trades[col] = ''
trades = trades[DEFAULT_TRADES_COLUMNS]
trades = trades_convert_types(trades)
trades_df = trades_df_remove_duplicates(trades)
logger.info(f"{pair}: {len(trades_df)} trades, from "
f"{trades_df['date'].min():{DATETIME_PRINT_FORMAT}} to "
f"{trades_df['date'].max():{DATETIME_PRINT_FORMAT}}")
data_handler.trades_store(pair, trades_df)

View File

@@ -17,7 +17,7 @@ from freqtrade.constants import (FULL_DATAFRAME_THRESHOLD, Config, ListPairsWith
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 import Exchange, timeframe_to_prev_date, timeframe_to_seconds
from freqtrade.exchange.types import OrderBook
from freqtrade.misc import append_candles_to_dataframe
from freqtrade.rpc import RPCManager
@@ -46,6 +46,8 @@ class DataProvider:
self.__rpc = rpc
self.__cached_pairs: Dict[PairWithTimeframe, Tuple[DataFrame, datetime]] = {}
self.__slice_index: Optional[int] = None
self.__slice_date: Optional[datetime] = None
self.__cached_pairs_backtesting: Dict[PairWithTimeframe, DataFrame] = {}
self.__producer_pairs_df: Dict[str,
Dict[PairWithTimeframe, Tuple[DataFrame, datetime]]] = {}
@@ -64,10 +66,19 @@ class DataProvider:
def _set_dataframe_max_index(self, limit_index: int):
"""
Limit analyzed dataframe to max specified index.
Only relevant in backtesting.
:param limit_index: dataframe index.
"""
self.__slice_index = limit_index
def _set_dataframe_max_date(self, limit_date: datetime):
"""
Limit infomrative dataframe to max specified index.
Only relevant in backtesting.
:param limit_date: "current date"
"""
self.__slice_date = limit_date
def _set_cached_df(
self,
pair: str,
@@ -284,7 +295,7 @@ class DataProvider:
def historic_ohlcv(
self,
pair: str,
timeframe: Optional[str] = None,
timeframe: str,
candle_type: str = ''
) -> DataFrame:
"""
@@ -307,10 +318,10 @@ class DataProvider:
timerange.subtract_start(tf_seconds * startup_candles)
self.__cached_pairs_backtesting[saved_pair] = load_pair_history(
pair=pair,
timeframe=timeframe or self._config['timeframe'],
timeframe=timeframe,
datadir=self._config['datadir'],
timerange=timerange,
data_format=self._config.get('dataformat_ohlcv', 'json'),
data_format=self._config['dataformat_ohlcv'],
candle_type=_candle_type,
)
@@ -354,7 +365,13 @@ class DataProvider:
data = self.ohlcv(pair=pair, timeframe=timeframe, candle_type=candle_type)
else:
# Get historical OHLCV data (cached on disk).
timeframe = timeframe or self._config['timeframe']
data = self.historic_ohlcv(pair=pair, timeframe=timeframe, candle_type=candle_type)
# Cut date to timeframe-specific date.
# This is necessary to prevent lookahead bias in callbacks through informative pairs.
if self.__slice_date:
cutoff_date = timeframe_to_prev_date(timeframe, self.__slice_date)
data = data.loc[data['date'] < cutoff_date]
if len(data) == 0:
logger.warning(f"No data found for ({pair}, {timeframe}, {candle_type}).")
return data

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:
with scpf.open("rb") as scp:
signal_candles = joblib.load(scp)
logger.info(f"Loaded signal candles: {str(scpf)}")
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,9 +53,7 @@ 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)
@@ -85,7 +93,7 @@ def _analyze_candles_and_indicators(pair, trades: pd.DataFrame, 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":
@@ -111,12 +119,20 @@ def _do_group_table_output(bigdf, glist):
new['avg_win'] = (new['profit_abs_wins'] / new.iloc[:, 1]).fillna(0)
new['avg_loss'] = (new['profit_abs_loss'] / new.iloc[:, 2]).fillna(0)
new.columns = ['total_num_buys', 'wins', 'losses', 'profit_abs_wins', 'profit_abs_loss',
'profit_tot', 'wl_ratio_pct', 'avg_win', 'avg_loss']
new['exp_ratio'] = (
(
(1 + (new['avg_win'] / abs(new['avg_loss']))) * (new['wl_ratio_pct'] / 100)
) - 1).fillna(0)
new.columns = ['total_num_buys', 'wins', 'losses',
'profit_abs_wins', 'profit_abs_loss',
'profit_tot', 'wl_ratio_pct',
'avg_win', 'avg_loss', 'exp_ratio']
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'],
@@ -154,11 +170,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':
@@ -182,6 +211,7 @@ def prepare_results(analysed_trades, stratname,
timerange=None):
res_df = pd.DataFrame()
for pair, trades in analysed_trades[stratname].items():
trades.dropna(subset=['close_date'], inplace=True)
res_df = pd.concat([res_df, trades], ignore_index=True)
res_df = _select_rows_within_dates(res_df, timerange)
@@ -192,38 +222,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):
@@ -232,6 +288,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')))
@@ -241,8 +302,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)
@@ -253,7 +322,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