Compare commits

..

858 Commits

Author SHA1 Message Date
Matthias cc807d1cf9 Merge pull request #11945 from freqtrade/new_release
New release 2025.6
2025-07-02 21:08:03 +02:00
Matthias 5f907a4b1a chore: bump version to 2025.6 2025-07-02 20:03:29 +02:00
Matthias a464a2fdbc Merge branch 'stable' into new_release 2025-07-02 20:03:16 +02:00
Matthias fa3d95fd89 Merge pull request #11919 from freqtrade/stash86-patch-1
Fix example config
2025-07-02 18:16:51 +02:00
Matthias ba8778b181 chore: revert max_open_trades in sample config for now 2025-07-02 17:55:28 +02:00
Matthias 6421f767c6 chore: remove github buttons js code 2025-07-02 16:49:36 +02:00
Matthias f18c7f0cad docs: make sure github buttons render 2025-07-02 16:49:36 +02:00
Matthias e63017a2b9 docs: enable "edit" functionality for docs 2025-07-02 16:49:36 +02:00
Matthias 049cc10169 docs: improved github icon for docs 2025-07-02 16:49:36 +02:00
Matthias 595db54ac7 Merge pull request #11917 from froggleston/frog-contrib-exch-1
Add short explanation of where exchange files are
2025-07-02 09:16:54 +02:00
Matthias bfa9c818e6 chore: update margin/trading mode exception to be a configuration error 2025-07-02 07:47:38 +02:00
Matthias 30afedd4f8 chore: use value instead of string to avoid "none" output in "marginmode" 2025-07-02 07:47:19 +02:00
Matthias 6049ac1561 docs: update wording of developer docs 2025-07-02 07:35:02 +02:00
Matthias 25c24ddc9c chore: improve error message
part of #11923
2025-07-01 20:48:32 +02:00
Matthias 03df35b49b Merge pull request #11930 from freqtrade/dependabot/pip/develop/ast-comments-1.2.3
chore(deps): bump ast-comments from 1.2.2 to 1.2.3
2025-07-01 07:26:15 +02:00
Matthias 3b441cd08f Merge pull request #11942 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-07-01 07:22:09 +02:00
Freqtrade Bot 0f67d32b75 chore: update pre-commit hooks 2025-07-01 03:31:30 +00:00
Matthias 820a83c96f Merge pull request #11934 from freqtrade/dependabot/pip/develop/ccxt-4.4.91
chore(deps): bump ccxt from 4.4.90 to 4.4.91
2025-06-30 10:46:44 +02:00
dependabot[bot] fae30c6ff9 chore(deps): bump ccxt from 4.4.90 to 4.4.91
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.90 to 4.4.91.
- [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/v4.4.90...v4.4.91)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 07:54:13 +00:00
Matthias 3e4ffb9c1d Merge pull request #11939 from freqtrade/dependabot/pip/develop/uvicorn-0.35.0
chore(deps): bump uvicorn from 0.34.3 to 0.35.0
2025-06-30 09:53:10 +02:00
Matthias f6d10dad6a Merge pull request #11931 from freqtrade/dependabot/pip/develop/plotly-6.2.0
chore(deps): bump plotly from 6.1.2 to 6.2.0
2025-06-30 09:49:27 +02:00
Matthias 79b530d98e Merge pull request #11933 from freqtrade/dependabot/pip/develop/python-telegram-bot-22.2
chore(deps): bump python-telegram-bot from 22.1 to 22.2
2025-06-30 09:48:49 +02:00
Matthias 3b8e521b81 Merge pull request #11938 from freqtrade/dependabot/github_actions/develop/astral-sh/setup-uv-6.3.1
chore(deps): bump astral-sh/setup-uv from 6.3.0 to 6.3.1
2025-06-30 09:48:17 +02:00
Matthias 7e228ba7ab Merge pull request #11937 from freqtrade/dependabot/pip/develop/ruff-0.12.1
chore(deps-dev): bump ruff from 0.12.0 to 0.12.1
2025-06-30 08:23:56 +02:00
Matthias 6050d09ed8 Merge pull request #11936 from freqtrade/dependabot/github_actions/develop/rjstone/discord-webhook-notify-2.2.1
chore(deps): bump rjstone/discord-webhook-notify from 2.1.1 to 2.2.1
2025-06-30 08:23:18 +02:00
dependabot[bot] b7f158a79e chore(deps): bump uvicorn from 0.34.3 to 0.35.0
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.34.3 to 0.35.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.34.3...0.35.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 06:13:21 +00:00
Matthias bc13d1636c Merge pull request #11935 from freqtrade/dependabot/pip/develop/fastapi-0.115.14
chore(deps): bump fastapi from 0.115.13 to 0.115.14
2025-06-30 08:11:30 +02:00
dependabot[bot] 021fdcab43 chore(deps): bump astral-sh/setup-uv from 6.3.0 to 6.3.1
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/445689ea25e0de0a23313031f5fe577c74ae45a1...bd01e18f51369d5a26f1651c3cb451d3417e3bba)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 6.3.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 04:40:04 +00:00
dependabot[bot] d206b601b3 chore(deps-dev): bump ruff from 0.12.0 to 0.12.1
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.12.0 to 0.12.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/0.12.0...0.12.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 04:39:33 +00:00
dependabot[bot] 949c7318f4 chore(deps): bump rjstone/discord-webhook-notify from 2.1.1 to 2.2.1
Bumps [rjstone/discord-webhook-notify](https://github.com/rjstone/discord-webhook-notify) from 2.1.1 to 2.2.1.
- [Release notes](https://github.com/rjstone/discord-webhook-notify/releases)
- [Commits](https://github.com/rjstone/discord-webhook-notify/compare/a975c85e53c8ea07b0b10f8461b0a90059816dcf...c2597273488aeda841dd1e891321952b51f7996f)

---
updated-dependencies:
- dependency-name: rjstone/discord-webhook-notify
  dependency-version: 2.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 04:39:19 +00:00
dependabot[bot] 3666362479 chore(deps): bump fastapi from 0.115.13 to 0.115.14
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.13 to 0.115.14.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.115.13...0.115.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 04:39:08 +00:00
dependabot[bot] f27540d221 chore(deps): bump python-telegram-bot from 22.1 to 22.2
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 22.1 to 22.2.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v22.1...v22.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 04:39:00 +00:00
dependabot[bot] 31dc0fe327 chore(deps): bump plotly from 6.1.2 to 6.2.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 6.1.2 to 6.2.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/main/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v6.1.2...v6.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 04:37:03 +00:00
dependabot[bot] 1125c60f07 chore(deps): bump ast-comments from 1.2.2 to 1.2.3
Bumps [ast-comments](https://github.com/t3rn0/ast-comments) from 1.2.2 to 1.2.3.
- [Release notes](https://github.com/t3rn0/ast-comments/releases)
- [Commits](https://github.com/t3rn0/ast-comments/compare/1.2.2...1.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-30 04:36:19 +00:00
Matthias 9f5fd574b4 Merge pull request #11922 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-06-26 10:47:19 +02:00
Freqtrade Bot 74eb0d9f88 chore: update pre-commit hooks 2025-06-26 03:24:41 +00:00
Stefano 52c78966ef Fix example config
- Fix the low stake anount
- Set max open trades to unlimited, as a good practice
2025-06-25 19:21:00 +09:00
froggleston 1641f56956 Add short explanation of where exchange files are 2025-06-24 15:23:45 +01:00
Matthias d27981f8cf Merge pull request #11915 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-06-24 09:06:24 +02:00
Freqtrade Bot 6031ccabac chore: update pre-commit hooks 2025-06-24 03:25:22 +00:00
Matthias c64b6b0d69 Merge pull request #11901 from freqtrade/dependabot/pip/develop/ruff-0.12.0
chore(deps-dev): bump ruff from 0.11.13 to 0.12.0
2025-06-23 15:16:57 +02:00
Matthias 4203693428 chore: Ruf ignore extension 2025-06-23 15:01:59 +02:00
Matthias c76c26cc34 Merge pull request #11910 from freqtrade/dependabot/github_actions/develop/astral-sh/setup-uv-6.3.0
chore(deps): bump astral-sh/setup-uv from 6.1.0 to 6.3.0
2025-06-23 09:14:13 +02:00
Matthias 1c87748b99 Merge pull request #11906 from freqtrade/dependabot/pip/develop/optuna-4.4.0
chore(deps): bump optuna from 4.3.0 to 4.4.0
2025-06-23 08:58:31 +02:00
Matthias 4ae80423e0 Merge pull request #11903 from freqtrade/dependabot/pip/develop/markdown-3.8.2
chore(deps): bump markdown from 3.8 to 3.8.2
2025-06-23 08:09:38 +02:00
Matthias 4e6ae88557 Merge pull request #11911 from freqtrade/dependabot/pip/develop/fastapi-0.115.13
chore(deps): bump fastapi from 0.115.12 to 0.115.13
2025-06-23 07:56:52 +02:00
dependabot[bot] 102c33d68b chore(deps-dev): bump ruff from 0.11.13 to 0.12.0
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.13 to 0.12.0.
- [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/0.11.13...0.12.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 05:41:30 +00:00
Matthias 12a72fa161 Merge pull request #11909 from freqtrade/dependabot/pip/develop/mypy-1.16.1
chore(deps-dev): bump mypy from 1.16.0 to 1.16.1
2025-06-23 07:41:01 +02:00
dependabot[bot] 3a5b555f1e chore(deps): bump markdown from 3.8 to 3.8.2
---
updated-dependencies:
- dependency-name: markdown
  dependency-version: 3.8.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 05:40:59 +00:00
Matthias 8f2ee28395 Merge pull request #11908 from freqtrade/dependabot/pip/develop/pytest-4784b1c68e
chore(deps-dev): bump the pytest group with 2 updates
2025-06-23 07:40:07 +02:00
Matthias e57d0e3bc4 Merge pull request #11905 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.16
chore(deps): bump pymdown-extensions from 10.15 to 10.16
2025-06-23 07:38:53 +02:00
Matthias f5205da459 Merge pull request #11902 from freqtrade/dependabot/pip/develop/cachetools-6.1.0
chore(deps): bump cachetools from 6.0.0 to 6.1.0
2025-06-23 07:27:09 +02:00
Matthias bd773b9baf Merge pull request #11907 from freqtrade/dependabot/pip/develop/ccxt-4.4.90
chore(deps): bump ccxt from 4.4.89 to 4.4.90
2025-06-23 07:20:53 +02:00
Matthias 7b4a6a48ee Merge pull request #11904 from freqtrade/dependabot/github_actions/develop/docker/setup-buildx-action-3.11.1
chore(deps): bump docker/setup-buildx-action from 3.10.0 to 3.11.1
2025-06-23 07:16:40 +02:00
dependabot[bot] 24a3a29360 chore(deps): bump fastapi from 0.115.12 to 0.115.13
---
updated-dependencies:
- dependency-name: fastapi
  dependency-version: 0.115.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:46:28 +00:00
dependabot[bot] 6a279043fa chore(deps): bump astral-sh/setup-uv from 6.1.0 to 6.3.0
---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:45:59 +00:00
dependabot[bot] 60764500db chore(deps-dev): bump mypy from 1.16.0 to 1.16.1
Bumps [mypy](https://github.com/python/mypy) from 1.16.0 to 1.16.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.16.0...v1.16.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:45:07 +00:00
dependabot[bot] ba5a64aa34 chore(deps-dev): bump the pytest group with 2 updates
Bumps the pytest group with 2 updates: [pytest](https://github.com/pytest-dev/pytest) and [pytest-random-order](https://github.com/jbasko/pytest-random-order).


Updates `pytest` from 8.4.0 to 8.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/8.4.0...8.4.1)

Updates `pytest-random-order` from 1.1.1 to 1.2.0
- [Release notes](https://github.com/jbasko/pytest-random-order/releases)
- [Changelog](https://github.com/pytest-dev/pytest-random-order/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/jbasko/pytest-random-order/compare/v1.1.1...v1.2.0)

---
updated-dependencies:
- dependency-name: pytest
  dependency-version: 8.4.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: pytest
- dependency-name: pytest-random-order
  dependency-version: 1.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pytest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:44:37 +00:00
dependabot[bot] f40576091a chore(deps): bump ccxt from 4.4.89 to 4.4.90
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.89 to 4.4.90.
- [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/v4.4.89...v4.4.90)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:43:55 +00:00
dependabot[bot] de3eedb39e chore(deps): bump optuna from 4.3.0 to 4.4.0
---
updated-dependencies:
- dependency-name: optuna
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:43:46 +00:00
dependabot[bot] fded8bf43e chore(deps): bump pymdown-extensions from 10.15 to 10.16
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.15 to 10.16.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.15...10.16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:42:57 +00:00
dependabot[bot] 5a45b4a3e1 chore(deps): bump docker/setup-buildx-action from 3.10.0 to 3.11.1
---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: 3.11.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:39:03 +00:00
dependabot[bot] 0b3ea4d0ed chore(deps): bump cachetools from 6.0.0 to 6.1.0
Bumps [cachetools](https://github.com/tkem/cachetools) from 6.0.0 to 6.1.0.
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v6.0.0...v6.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-23 03:38:14 +00:00
Matthias 822dce09b7 tests: keys are no longer added to the dict 2025-06-22 11:29:45 +00:00
Matthias 3465f35d75 feat: reuse exchange secrets for exchange credential removal 2025-06-20 20:23:22 +02:00
Matthias 2165c3e542 tests: update tests to ues new module 2025-06-20 20:19:38 +02:00
Matthias 5e059660d4 chore: move remove_exchange_credentials to config module 2025-06-20 20:19:20 +02:00
Matthias 5ca69687dc chore: minor refactor of config cleanup 2025-06-20 20:12:50 +02:00
Matthias d042085b24 chore: remove macos-13 from CI
(it's slow and going to be EOL in November 2025 anyway)
2025-06-19 20:16:18 +02:00
Matthias effd989796 Merge pull request #11895 from freqtrade/dependabot/pip/urllib3-2.5.0
chore(deps): bump urllib3 from 2.4.0 to 2.5.0
2025-06-19 06:26:04 +02:00
Matthias ca85deafb8 Merge pull request #11896 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-06-19 06:25:34 +02:00
Freqtrade Bot d46cc552be chore: update pre-commit hooks 2025-06-19 03:23:34 +00:00
dependabot[bot] 1dc2bcb47e chore(deps): bump urllib3 from 2.4.0 to 2.5.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.4.0 to 2.5.0.
- [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.4.0...2.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-18 18:33:07 +00:00
Matthias d6bf20b7b4 Merge pull request #11889 from racequite/develop
docs: Fix comment
2025-06-18 07:07:20 +02:00
Matthias 2d842ea129 Merge pull request #11891 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-06-17 06:30:06 +02:00
Freqtrade Bot 76d5423eee chore: update pre-commit hooks 2025-06-17 03:24:27 +00:00
racequite 489b7e6d18 docs: Fix comment
Signed-off-by: racequite <quiterace@gmail.com>
2025-06-16 22:16:14 +08:00
Matthias 18dfb0fe39 Merge pull request #11886 from freqtrade/dependabot/pip/develop/numexpr-2.11.0
chore(deps): bump numexpr from 2.10.2 to 2.11.0
2025-06-16 09:47:45 +02:00
Matthias 63efed736c Merge pull request #11885 from freqtrade/dependabot/pip/develop/aiohttp-3.12.13
chore(deps): bump aiohttp from 3.12.11 to 3.12.13
2025-06-16 09:44:14 +02:00
Matthias 4c568e40c2 Merge pull request #11879 from freqtrade/dependabot/pip/develop/types-8fad52cb21
chore(deps-dev): bump types-requests from 2.32.0.20250602 to 2.32.4.20250611 in the types group
2025-06-16 09:20:14 +02:00
dependabot[bot] b54d231b79 chore(deps): bump numexpr from 2.10.2 to 2.11.0
Bumps [numexpr](https://github.com/pydata/numexpr) from 2.10.2 to 2.11.0.
- [Release notes](https://github.com/pydata/numexpr/releases)
- [Changelog](https://github.com/pydata/numexpr/blob/master/RELEASE_NOTES.rst)
- [Commits](https://github.com/pydata/numexpr/compare/v2.10.2...v2.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 07:09:21 +00:00
Matthias 58f361f8b3 Merge pull request #11888 from freqtrade/dependabot/pip/develop/bottleneck-1.5.0
chore(deps): bump bottleneck from 1.4.2 to 1.5.0
2025-06-16 09:08:13 +02:00
Matthias f78d383448 Merge pull request #11887 from freqtrade/dependabot/pip/develop/scikit-learn-1.7.0
chore(deps): bump scikit-learn from 1.6.1 to 1.7.0
2025-06-16 09:04:43 +02:00
Matthias 1be9a79e96 Merge pull request #11884 from freqtrade/dependabot/pip/develop/stable-baselines3-2.6.0
chore(deps): bump stable-baselines3 from 2.5.0 to 2.6.0
2025-06-16 09:00:54 +02:00
Matthias d9e98bb687 Merge pull request #11882 from freqtrade/dependabot/pip/develop/certifi-2025.6.15
chore(deps): bump certifi from 2025.4.26 to 2025.6.15
2025-06-16 08:37:07 +02:00
Matthias 7fd7061304 Merge pull request #11880 from freqtrade/dependabot/pip/develop/pytest-ed2313a973
chore(deps-dev): bump the pytest group with 2 updates
2025-06-16 08:36:20 +02:00
dependabot[bot] db50d2b85d chore(deps): bump aiohttp from 3.12.11 to 3.12.13
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.12.13
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 06:29:44 +00:00
Matthias d2a1e52d79 Merge pull request #11883 from freqtrade/dependabot/pip/develop/cryptography-45.0.4
chore(deps): bump cryptography from 45.0.3 to 45.0.4
2025-06-16 08:28:28 +02:00
Matthias 70e78e6521 Merge pull request #11881 from freqtrade/dependabot/pip/develop/pydantic-2.11.7
chore(deps): bump pydantic from 2.11.5 to 2.11.7
2025-06-16 07:59:13 +02:00
Matthias 913148bf1d Merge pull request #11877 from freqtrade/dependabot/github_actions/develop/rjstone/discord-webhook-notify-2.1.1
chore(deps): bump rjstone/discord-webhook-notify from 1.1.1 to 2.1.1
2025-06-16 06:40:30 +02:00
Matthias 0ecb3e45f6 chore: bump types-requests in pre-commit config 2025-06-16 06:39:55 +02:00
dependabot[bot] 74f870c435 chore(deps): bump bottleneck from 1.4.2 to 1.5.0
Bumps [bottleneck](https://github.com/pydata/bottleneck) from 1.4.2 to 1.5.0.
- [Release notes](https://github.com/pydata/bottleneck/releases)
- [Changelog](https://github.com/pydata/bottleneck/blob/master/RELEASE.rst)
- [Commits](https://github.com/pydata/bottleneck/compare/v1.4.2...v1.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:35:14 +00:00
dependabot[bot] 8f62462e15 chore(deps): bump scikit-learn from 1.6.1 to 1.7.0
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 1.6.1 to 1.7.0.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/1.6.1...1.7.0)

---
updated-dependencies:
- dependency-name: scikit-learn
  dependency-version: 1.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:35:06 +00:00
dependabot[bot] 38183fe952 chore(deps): bump stable-baselines3 from 2.5.0 to 2.6.0
Bumps [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) from 2.5.0 to 2.6.0.
- [Release notes](https://github.com/DLR-RM/stable-baselines3/releases)
- [Commits](https://github.com/DLR-RM/stable-baselines3/compare/v2.5.0...v2.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:34:39 +00:00
dependabot[bot] 215b111cff chore(deps): bump cryptography from 45.0.3 to 45.0.4
Bumps [cryptography](https://github.com/pyca/cryptography) from 45.0.3 to 45.0.4.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/45.0.3...45.0.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:34:35 +00:00
dependabot[bot] 4ea9d70743 chore(deps): bump certifi from 2025.4.26 to 2025.6.15
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.4.26 to 2025.6.15.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.04.26...2025.06.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:34:29 +00:00
dependabot[bot] 0893350285 chore(deps): bump pydantic from 2.11.5 to 2.11.7
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.5 to 2.11.7.
- [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.11.5...v2.11.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:34:20 +00:00
dependabot[bot] 27bd34c3be chore(deps-dev): bump the pytest group with 2 updates
Bumps the pytest group with 2 updates: [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) and [pytest-cov](https://github.com/pytest-dev/pytest-cov).


Updates `pytest-asyncio` from 0.26.0 to 1.0.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.26.0...v1.0.0)

Updates `pytest-cov` from 6.1.1 to 6.2.1
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.1.1...v6.2.1)

---
updated-dependencies:
- dependency-name: pytest-asyncio
  dependency-version: 1.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: pytest
- dependency-name: pytest-cov
  dependency-version: 6.2.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pytest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:34:05 +00:00
dependabot[bot] ebf6ca1a5f chore(deps-dev): bump types-requests in the types group
Bumps the types group with 1 update: [types-requests](https://github.com/typeshed-internal/stub_uploader).


Updates `types-requests` from 2.32.0.20250602 to 2.32.4.20250611
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:33:36 +00:00
dependabot[bot] a91ed0b4d9 chore(deps): bump rjstone/discord-webhook-notify from 1.1.1 to 2.1.1
Bumps [rjstone/discord-webhook-notify](https://github.com/rjstone/discord-webhook-notify) from 1.1.1 to 2.1.1.
- [Release notes](https://github.com/rjstone/discord-webhook-notify/releases)
- [Commits](https://github.com/rjstone/discord-webhook-notify/compare/1399c1b2d57cc05894d506d2cfdc33c5f012b993...a975c85e53c8ea07b0b10f8461b0a90059816dcf)

---
updated-dependencies:
- dependency-name: rjstone/discord-webhook-notify
  dependency-version: 2.1.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-16 03:07:41 +00:00
Matthias 097b27208d chore: remove pointless TODO 2025-06-15 09:36:53 +02:00
Matthias 136623b3f5 Merge pull request #11874 from freqtrade/deps/ccxt_update
chore: bump ccxt to 4.4.89
2025-06-13 08:54:41 +02:00
Matthias 02648e29c4 chore: bump ccxt to 4.4.89 2025-06-13 06:43:10 +02:00
Matthias beb6d41360 chore: remove py_find_1st from requirements
this was only required by edge
2025-06-13 06:38:21 +02:00
Matthias a1207eca56 Merge pull request #11872 from freqtrade/dependabot/docker/python-3.13.5-slim-bookworm
chore(deps): bump python from 3.13.4-slim-bookworm to 3.13.5-slim-bookworm
2025-06-13 06:12:21 +02:00
dependabot[bot] 1a247a1035 chore(deps): bump python
Bumps python from 3.13.4-slim-bookworm to 3.13.5-slim-bookworm.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-13 03:37:34 +00:00
Matthias 4e0203d4af Merge pull request #11870 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-06-12 06:24:48 +02:00
Freqtrade Bot 332518c1a0 chore: update pre-commit hooks 2025-06-12 03:22:52 +00:00
Matthias 15353f44f0 fix: improve "missing fee" recovery
closes #11813
2025-06-11 06:43:51 +02:00
Matthias 093cdae39c chore: add explaining comments to some columns 2025-06-11 06:41:46 +02:00
Matthias 5dd5b95d6a Merge pull request #11867 from freqtrade/maint/remove_edge
Remove Edge from Freqtrade
2025-06-10 20:19:53 +02:00
Matthias 20e0b542e3 docs: update command partials 2025-06-10 19:36:02 +02:00
Matthias 1d24f9047c Merge pull request #11869 from mrpabloyeah/fix-telegram-balance-command-when-fiat_display_currency-is-not-set
Fix Telegram balance command when fiat_display_currency is not set
2025-06-10 19:30:16 +02:00
Matthias f2c37e2575 test: remove missed test 2025-06-10 19:27:23 +02:00
Matthias 95fbe04225 test: add tests for edge startup errors 2025-06-10 18:24:47 +02:00
Matthias 43c5b8d0ed test: remove final edge test occurance 2025-06-10 18:21:45 +02:00
Matthias 301d85ef4f test: remove edge tests 2025-06-10 18:20:02 +02:00
mrpabloyeah 48f3d612e9 Fix Telegram balance command when fiat_display_currency is not set 2025-06-10 13:35:49 +02:00
Matthias c53c70d597 tests: further test cleanup 2025-06-10 07:27:03 +02:00
Matthias aa89ce80ab test: remove edge from tests (initial round) 2025-06-10 07:15:02 +02:00
Matthias 971dfef0ee chore: remove edge from RPC modules 2025-06-10 07:09:30 +02:00
Matthias 5d8a3cdb31 feat: fail if edge is in config 2025-06-10 07:09:20 +02:00
Matthias 5246eecaf6 chore: remove edge runmode 2025-06-10 07:09:10 +02:00
Matthias 18b6f374d6 chore: remove edge_cli module 2025-06-10 07:06:31 +02:00
Matthias 95c6997209 chore: remove edge as RunMode 2025-06-10 07:05:36 +02:00
Matthias ca79b84e4a docs: reword section around edge in utility subcommands 2025-06-10 07:05:36 +02:00
Matthias 3670df8771 chore: remove edge from ft_rest_client 2025-06-10 07:05:24 +02:00
Matthias ff06d58ace chore: remove edge module and config options 2025-06-10 07:01:33 +02:00
Matthias 1b4592a2f3 chore: remove edge from full_config 2025-06-10 07:00:11 +02:00
Matthias 5138e97b70 docs: remove edge from FAQ 2025-06-10 06:53:44 +02:00
Matthias 340cad3707 chore: remove edge from freqtradebot 2025-06-10 06:53:07 +02:00
Matthias ca32cb9e61 docs: remove further edge usages 2025-06-10 06:50:55 +02:00
Matthias c911b7fa70 chore: remove edge from config schema 2025-06-10 06:49:42 +02:00
Matthias 9323b6b946 chore: fail to start edge command. 2025-06-10 06:48:31 +02:00
Matthias 92ef1ef761 docs: deprecated: removal of Edge module 2025-06-10 06:46:39 +02:00
Matthias e38504b9db chore: remove edge from docs 2025-06-10 06:44:14 +02:00
Matthias e437847916 Merge pull request #11865 from freqtrade/dependabot/pip/requests-2.32.4
chore(deps): bump requests from 2.32.3 to 2.32.4
2025-06-10 06:28:18 +02:00
Matthias a3a30f9046 Merge pull request #11866 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-06-10 06:28:09 +02:00
Freqtrade Bot df507e2335 chore: update pre-commit hooks 2025-06-10 03:24:54 +00:00
dependabot[bot] 2f1f60a8fc chore(deps): bump requests from 2.32.3 to 2.32.4
Bumps [requests](https://github.com/psf/requests) from 2.32.3 to 2.32.4.
- [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.32.3...v2.32.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 21:15:23 +00:00
Matthias 1c1a165ba4 chore(ci): improve docker-build action 2025-06-09 19:20:48 +02:00
Matthias 00fe02c854 feat(ci): extract docker container building 2025-06-09 19:20:48 +02:00
Matthias 6ff26b075e fix: error during logging shutdown 2025-06-09 19:12:57 +02:00
Matthias 03a46ec784 chore: reorder requirements logically 2025-06-09 18:06:09 +02:00
Matthias ec31764aed chore: update technical to 1.5.1 2025-06-09 18:05:07 +02:00
Matthias 1ba411cccf tests: Update empty error match 2025-06-09 18:04:21 +02:00
Matthias 7957231ce4 Merge pull request #11864 from freqtrade/deps/pip/talib
Update ta-lib to version 0.5.5
2025-06-09 12:10:19 +02:00
Matthias 6b88c49e0a chore: revert ta-lib install workarounds 2025-06-09 09:37:36 +02:00
Matthias 4fe99e0333 chore: update binary files for ta-lib 2025-06-09 09:37:36 +02:00
Matthias 9a38dfcc26 Merge pull request #11859 from freqtrade/dependabot/pip/develop/pytest-5ee6585723
chore(deps-dev): bump pytest from 8.3.5 to 8.4.0 in the pytest group
2025-06-09 09:27:04 +02:00
Matthias 3ecbfeb1d5 chore: bump ta-lib to 0.5.5 2025-06-09 09:20:37 +02:00
Matthias 02229c959f Merge pull request #11863 from freqtrade/dependabot/pip/develop/aiohttp-3.12.11
chore(deps): bump aiohttp from 3.12.6 to 3.12.11
2025-06-09 09:15:28 +02:00
Matthias 2a2f205fbe Merge pull request #11858 from freqtrade/dependabot/pip/develop/pandas-2.3.0
chore(deps): bump pandas from 2.2.3 to 2.3.0
2025-06-09 09:09:17 +02:00
dependabot[bot] c415dab846 chore(deps-dev): bump pytest from 8.3.5 to 8.4.0 in the pytest group
Bumps the pytest group with 1 update: [pytest](https://github.com/pytest-dev/pytest).


Updates `pytest` from 8.3.5 to 8.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/8.3.5...8.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 06:11:09 +00:00
dependabot[bot] 5b47960567 chore(deps): bump aiohttp from 3.12.6 to 3.12.11
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.12.11
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 06:09:32 +00:00
dependabot[bot] 3f9749b03b chore(deps): bump pandas from 2.2.3 to 2.3.0
Bumps [pandas](https://github.com/pandas-dev/pandas) from 2.2.3 to 2.3.0.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](https://github.com/pandas-dev/pandas/compare/v2.2.3...v2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 06:09:32 +00:00
Matthias 528b11af07 Merge pull request #11861 from freqtrade/dependabot/pip/develop/ruff-0.11.13
chore(deps-dev): bump ruff from 0.11.12 to 0.11.13
2025-06-09 08:08:29 +02:00
Matthias 0a31ff3747 Merge pull request #11860 from freqtrade/dependabot/pip/develop/ccxt-4.4.88
chore(deps): bump ccxt from 4.4.87 to 4.4.88
2025-06-09 08:08:17 +02:00
dependabot[bot] e1ee566634 chore(deps-dev): bump ruff from 0.11.12 to 0.11.13
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.12 to 0.11.13.
- [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/0.11.12...0.11.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 03:41:24 +00:00
dependabot[bot] 1cff4d13de chore(deps): bump ccxt from 4.4.87 to 4.4.88
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.87 to 4.4.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/v4.4.87...v4.4.88)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-09 03:41:22 +00:00
Matthias 22b1bc7210 Merge pull request #11855 from hippocritical/develop
fix parsing trade-data for kraken_csv
2025-06-08 19:57:05 +02:00
hippocritical c741c168e8 Merge remote-tracking branch 'origin/develop' into develop 2025-06-08 19:33:50 +02:00
hippocritical c997f02085 removed %1 = 0 since it was not truly necessary 2025-06-08 19:31:17 +02:00
hippocritical ead6d89e35 Merge branch 'freqtrade:develop' into develop 2025-06-08 14:07:49 +02:00
hippocritical 985c15bdd9 checking kraken data for any rows not having a timestamp in the timestamp column, purging those
(there was a text in the 1st row of USDGEUR.csv, making the conversion fail previously)
2025-06-08 14:07:31 +02:00
Matthias 7fb7c43e45 chore: pip_constraint fix for dockerfile 2025-06-08 12:52:06 +02:00
Matthias 0e68de0c6d feat: document --notes usage 2025-06-08 12:51:38 +02:00
Matthias ba5f771e65 chore: update documentation command 2025-06-08 12:46:25 +02:00
Matthias e0f147e076 feat: add "--notes" to backtest command
closes #11847
2025-06-08 12:42:26 +02:00
Matthias b874ceaf2f chore: improved "pins" for numpy 2025-06-08 11:11:15 +02:00
Matthias 11f339f802 chore(ci): UV workaround for build-online 2025-06-08 10:25:41 +02:00
Matthias 9d46fd21dc chore(ci): clean up after pip install 2025-06-08 10:17:14 +02:00
Matthias 286f385f99 chore(ci): use proper directory 2025-06-08 10:07:01 +02:00
Matthias 69cca13d15 chore: use UV_BUILD_CONSTRAINT 2025-06-08 10:05:56 +02:00
Matthias 37d03a5b44 chore: proper naming for environment var 2025-06-08 10:04:04 +02:00
Matthias 0e1d3e279c chore: attempt CI workaround for ta-lib build failure 2025-06-08 10:02:52 +02:00
Matthias ae671c736e feat: don't lowercase ccxt_config keys
closes #11852
2025-06-08 09:52:58 +02:00
Matthias 28064d013c feat: add ccxt_sync_config to json schema 2025-06-08 09:36:38 +02:00
Matthias 5b9c03e7e2 fix: don't filter min duration on > 0
closes #11838
2025-06-08 09:15:52 +02:00
Matthias f2569e36e8 chore: develop doesn't need to depend on coveralls
closes #11848
2025-06-07 20:58:13 +02:00
Matthias bf2092977c chore: add docstring 2025-06-07 16:53:14 +02:00
Matthias 613e31a9a5 chore: simplify handle_order_fee code 2025-06-07 08:43:26 +02:00
Matthias 326a4f17d2 chore: update missleading comment 2025-06-07 08:39:08 +02:00
Matthias a8d617d747 chore: load ft_fee_base when loading from_json 2025-06-07 08:35:19 +02:00
Matthias ba9f795df5 fix: Order is not bound to a Session
closes #11831
2025-06-06 20:54:34 +02:00
Matthias dbccc69f05 Merge pull request #11841 from freqtrade/dependabot/docker/python-3.13.4-slim-bookworm
chore(deps): bump python from 3.12.10-slim-bookworm to 3.13.4-slim-bookworm
2025-06-06 06:35:38 +02:00
Matthias db80318946 Merge pull request #11843 from freqtrade/dependabot/pip/torch-2.7.1
chore(deps): bump torch from 2.7.0 to 2.7.1
2025-06-05 16:00:20 +02:00
dependabot[bot] 5698793dcc chore(deps): bump torch from 2.7.0 to 2.7.1
Bumps [torch](https://github.com/pytorch/pytorch) from 2.7.0 to 2.7.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.7.0...v2.7.1)

---
updated-dependencies:
- dependency-name: torch
  dependency-version: 2.7.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 13:32:25 +00:00
Matthias bf96be2b71 chore: bump ccxt to 4.4.87 2025-06-05 06:46:17 +02:00
dependabot[bot] 2af454333b chore(deps): bump python
Bumps python from 3.12.10-slim-bookworm to 3.13.4-slim-bookworm.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-05 04:32:28 +00:00
Matthias cb869a2e4d chore: bump armhf dockerfile to 3.11.13 2025-06-05 06:31:29 +02:00
Matthias afc5205bea Merge pull request #11840 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-06-05 06:26:34 +02:00
Freqtrade Bot 842f3a2a36 chore: update pre-commit hooks 2025-06-05 03:23:11 +00:00
Matthias 582871b0d5 Merge pull request #11837 from freqtrade/feat/python_13
Add support for python 3.13
2025-06-04 18:24:35 +02:00
Matthias c6c2934741 chore(ci): fix 3.13 tests and incompatibilities 2025-06-04 08:18:50 +02:00
Matthias d3b5be6cb6 chore: update docs and ft_client taxonomy 2025-06-04 07:21:13 +02:00
Matthias 473a15c4ef chore: scripts should support 3.13 2025-06-04 07:20:58 +02:00
Matthias 2c4452453a chore: update pyproject for python 3.13 2025-06-04 07:19:40 +02:00
Matthias da6affcd6a chore: run CI against 3.13 2025-06-04 07:18:24 +02:00
Matthias 3ebbe2b56c chore: pin ta-lib<0.6 to avoid false installs 2025-06-04 07:16:29 +02:00
Matthias 8f13a5db29 Merge pull request #11834 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-06-03 06:41:42 +02:00
Matthias 3155dfc14c Merge pull request #11789 from freqtrade/fix/customdata_sessions
fix: improved session handling for custom_data sessions
2025-06-03 06:30:39 +02:00
Freqtrade Bot cc30e71ab2 chore: update pre-commit hooks 2025-06-03 03:23:16 +00:00
Matthias f5cb486f5e Merge pull request #11828 from freqtrade/dependabot/pip/develop/mypy-1.16.0
chore(deps-dev): bump mypy from 1.15.0 to 1.16.0
2025-06-02 11:03:05 +02:00
Matthias 42c8795141 Merge pull request #11827 from freqtrade/dependabot/pip/develop/types-59cf8d3746
chore(deps-dev): bump types-requests from 2.32.0.20250515 to 2.32.0.20250602 in the types group
2025-06-02 09:40:14 +02:00
Matthias f878d051df Merge pull request #11823 from freqtrade/dependabot/pip/develop/ccxt-4.4.86
chore(deps): bump ccxt from 4.4.85 to 4.4.86
2025-06-02 09:13:28 +02:00
Matthias aefa7e401c chore: bump mypy in pre-commit config 2025-06-02 08:54:19 +02:00
Matthias dc06510d4a chore: adjust type-ignores for new mypy version 2025-06-02 08:54:19 +02:00
Matthias 7740b61f02 chore: remove unused #type-ignore settings 2025-06-02 08:54:19 +02:00
dependabot[bot] 950f5a722e chore(deps-dev): bump mypy from 1.15.0 to 1.16.0
Bumps [mypy](https://github.com/python/mypy) from 1.15.0 to 1.16.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.15.0...v1.16.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 06:49:06 +00:00
Matthias 9b56245b1d Merge pull request #11830 from freqtrade/dependabot/pip/develop/ruff-0.11.12
chore(deps-dev): bump ruff from 0.11.11 to 0.11.12
2025-06-02 08:47:43 +02:00
Matthias b05fb57fb7 chore: huobijp rename to bittrade
aligned with https://github.com/ccxt/ccxt/pull/26036
2025-06-02 08:40:05 +02:00
Matthias 1a4db77131 chore: types-requests update 2025-06-02 08:34:52 +02:00
dependabot[bot] 71920cefb1 chore(deps): bump ccxt from 4.4.85 to 4.4.86
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.85 to 4.4.86.
- [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/v4.4.85...v4.4.86)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 06:34:10 +00:00
Matthias b5cbbd7c30 Merge pull request #11822 from freqtrade/dependabot/pip/develop/pytest-6fa8ff6387
chore(deps-dev): bump the pytest group with 2 updates
2025-06-02 08:33:40 +02:00
Matthias f75a0817a6 Merge pull request #11826 from freqtrade/dependabot/pip/develop/plotly-6.1.2
chore(deps): bump plotly from 6.1.1 to 6.1.2
2025-06-02 08:33:17 +02:00
Matthias d12132ae7a Merge pull request #11829 from freqtrade/dependabot/pip/develop/aiohttp-3.12.6
chore(deps): bump aiohttp from 3.11.18 to 3.12.6
2025-06-02 08:32:17 +02:00
Matthias a81bec0da2 Merge pull request #11825 from freqtrade/dependabot/pip/develop/jsonschema-4.24.0
chore(deps): bump jsonschema from 4.23.0 to 4.24.0
2025-06-02 08:31:50 +02:00
Matthias cc41cb831f Merge pull request #11824 from freqtrade/dependabot/pip/develop/uvicorn-0.34.3
chore(deps): bump uvicorn from 0.34.2 to 0.34.3
2025-06-02 08:31:35 +02:00
dependabot[bot] 2b70ec896d chore(deps-dev): bump ruff from 0.11.11 to 0.11.12
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.11 to 0.11.12.
- [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/0.11.11...0.11.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 03:40:08 +00:00
dependabot[bot] 470dbb6060 chore(deps): bump aiohttp from 3.11.18 to 3.12.6
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.12.6
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 03:39:55 +00:00
dependabot[bot] afc61ca788 chore(deps-dev): bump types-requests in the types group
Bumps the types group with 1 update: [types-requests](https://github.com/typeshed-internal/stub_uploader).


Updates `types-requests` from 2.32.0.20250515 to 2.32.0.20250602
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 03:37:48 +00:00
dependabot[bot] ba62e5e007 chore(deps): bump plotly from 6.1.1 to 6.1.2
Bumps [plotly](https://github.com/plotly/plotly.py) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/main/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v6.1.1...v6.1.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 03:37:38 +00:00
dependabot[bot] 9af401b091 chore(deps): bump jsonschema from 4.23.0 to 4.24.0
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.23.0 to 4.24.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.23.0...v4.24.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 03:37:22 +00:00
dependabot[bot] 1fdbace02d chore(deps): bump uvicorn from 0.34.2 to 0.34.3
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.34.2 to 0.34.3.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.34.2...0.34.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 03:37:05 +00:00
dependabot[bot] cfeda4493b chore(deps-dev): bump the pytest group with 2 updates
Bumps the pytest group with 2 updates: [pytest-mock](https://github.com/pytest-dev/pytest-mock) and [pytest-xdist](https://github.com/pytest-dev/pytest-xdist).


Updates `pytest-mock` from 3.14.0 to 3.14.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.14.0...v3.14.1)

Updates `pytest-xdist` from 3.6.1 to 3.7.0
- [Release notes](https://github.com/pytest-dev/pytest-xdist/releases)
- [Changelog](https://github.com/pytest-dev/pytest-xdist/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-xdist/compare/v3.6.1...v3.7.0)

---
updated-dependencies:
- dependency-name: pytest-mock
  dependency-version: 3.14.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: pytest
- dependency-name: pytest-xdist
  dependency-version: 3.7.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: pytest
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-06-02 03:35:48 +00:00
Matthias 0de48d90f8 Merge pull request #11820 from mrpabloyeah/fix-telegram-profit-stats-when-fiat_display_currency-is-not-set
Fix telegram profit stats when fiat_display_currency is not set
2025-06-01 14:53:24 +02:00
mrpabloyeah c4eb26be9d Fix telegram profit stats when fiat_display_currency is not set 2025-06-01 13:53:17 +02:00
Matthias 04a8539f10 Merge pull request #11819 from arenstar/patch-3
fix: order_by_id always true
2025-06-01 13:28:05 +02:00
David Arena d600461a84 fix: order_by_id always true 2025-06-01 12:03:44 +02:00
Matthias ce46cd7343 Merge pull request #11646 from freqtrade/deps/numpy2
Bump numpy to 2.x
2025-06-01 09:13:58 +02:00
Matthias d1cca4ac51 Merge pull request #11796 from freqtrade/dependabot/pip/develop/ccxt-4.4.85
chore(deps): bump ccxt from 4.4.82 to 4.4.85
2025-05-31 17:57:26 +02:00
Matthias 28399aaab2 Merge pull request #11814 from freqtrade/new_release
New release 2025.5
2025-05-31 17:37:56 +02:00
Matthias eb5d5e0d3f chore: bump dev version to 2025.6-dev 2025-05-31 16:39:46 +02:00
Matthias 560085ab92 chore: bump version to 2025.5 2025-05-31 16:34:27 +02:00
Matthias 17c315bf4a Merge branch 'stable' into new_release 2025-05-31 16:34:04 +02:00
Matthias e8145e0057 Merge pull request #11805 from viotemp1/optuna_addons
fix hyperopt repeated parameters between batches
2025-05-31 16:26:32 +02:00
Matthias ae9073885f chore: Update log wording, only log "duplicate parameters" once 2025-05-31 16:05:39 +02:00
Matthias 61886942c5 chore: fix log message missing space 2025-05-31 09:04:17 +02:00
viotemp1 12d31c4acb keep INITIAL_POINTS only in hyperopt_optimizer.py 2025-05-31 08:21:44 +03:00
viotemp1 14cfdb13c5 add back INITIAL_POINTS (default 30) for Samplers which support this 2025-05-30 18:17:15 +03:00
Matthias e58ab7852a docs: add operatorId to bitvavo docs
closes #11748
2025-05-30 07:32:36 +02:00
Matthias 77dcc5354c test: update hyperliquid test for new load_markets behavior 2025-05-30 07:08:58 +02:00
Matthias 3ac4a872b1 Merge remote-tracking branch 'origin/develop' into dependabot/pip/develop/ccxt-4.4.85 2025-05-29 20:14:05 +02:00
Matthias b8b94d58c4 test: update tests for new reload_markets behavior 2025-05-29 20:12:59 +02:00
viotemp1 dfae7ca2ec fix duplicate params in same batch also 2025-05-29 15:41:47 +03:00
vio 17cd0452ec Merge branch 'freqtrade:develop' into optuna_addons 2025-05-29 14:22:17 +03:00
Matthias 33b5482065 fix: memory leak on binance in combination with aiohttp>3.10
apparently, returning big data through
run_until_complete can cause this (or

closes #11317
2025-05-29 07:06:57 +02:00
Matthias 9fe361f6fc Merge pull request #11808 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-05-29 06:44:07 +02:00
Freqtrade Bot da7f35db8d chore: update pre-commit hooks 2025-05-29 03:21:16 +00:00
Matthias 4f216eb861 Merge pull request #11790 from freqtrade/docs/compare_exit_callbacks
docs: add "exit logic comparisons" table
2025-05-28 15:22:15 +02:00
viotemp1 53383f3184 add up to 5 retries for ask in case of duplicate params 2025-05-28 09:35:20 +02:00
viotemp1 b51c937e87 fix hyperopt repeated parameters between batches 2025-05-27 13:38:03 +02:00
Matthias f3d7f67671 Merge pull request #11803 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-05-27 06:31:54 +02:00
Freqtrade Bot 87001d0806 chore: update pre-commit hooks 2025-05-27 03:20:40 +00:00
Matthias ffce0dfb2e Merge pull request #11800 from freqtrade/dependabot/github_actions/develop/astral-sh/setup-uv-6.1.0
chore(deps): bump astral-sh/setup-uv from 6.0.1 to 6.1.0
2025-05-26 08:21:17 +02:00
Matthias c1d08019d9 Merge pull request #11798 from freqtrade/dependabot/pip/develop/ruff-0.11.11
chore(deps-dev): bump ruff from 0.11.10 to 0.11.11
2025-05-26 08:18:26 +02:00
Matthias bfa95ad976 Merge pull request #11799 from freqtrade/dependabot/pip/develop/joblib-1.5.1
chore(deps): bump joblib from 1.5.0 to 1.5.1
2025-05-26 08:14:39 +02:00
Matthias 4a4b39f898 Merge pull request #11795 from freqtrade/dependabot/pip/develop/pydantic-2.11.5
chore(deps): bump pydantic from 2.11.4 to 2.11.5
2025-05-26 08:12:58 +02:00
Matthias 215499a3f8 Merge pull request #11793 from freqtrade/dependabot/pip/develop/plotly-6.1.1
chore(deps): bump plotly from 6.0.1 to 6.1.1
2025-05-26 08:08:58 +02:00
Matthias 8c11974644 Merge pull request #11791 from freqtrade/dependabot/pip/develop/types-af298ab694
chore(deps-dev): bump types-cachetools from 5.5.0.20240820 to 6.0.0.20250525 in the types group
2025-05-26 08:08:33 +02:00
Matthias 7dcbd8108e Merge pull request #11797 from freqtrade/dependabot/pip/develop/cryptography-45.0.3
chore(deps): bump cryptography from 45.0.2 to 45.0.3
2025-05-26 07:58:27 +02:00
Matthias 43fea43363 chore: bump aiohttp to 3.11.18
Aligns dependency with ccxt requirements.
2025-05-26 07:15:38 +02:00
Matthias e00b74c0e0 fix: capture ws edge-case on reconnect 2025-05-26 07:06:56 +02:00
Matthias 5ef439dd0f Merge pull request #11794 from freqtrade/dependabot/pip/develop/cachetools-6.0.0
chore(deps): bump cachetools from 5.5.2 to 6.0.0
2025-05-26 07:00:18 +02:00
dependabot[bot] 538c7b3c97 chore(deps): bump joblib from 1.5.0 to 1.5.1
Bumps [joblib](https://github.com/joblib/joblib) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/main/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/1.5.0...1.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 04:55:08 +00:00
Matthias 81456b2340 Merge pull request #11792 from freqtrade/dependabot/pip/develop/xgboost-3.0.2
chore(deps): bump xgboost from 3.0.1 to 3.0.2
2025-05-26 06:52:38 +02:00
Matthias dfec3f16ab chore: Bump pre-commit types-cachetools 2025-05-26 06:34:46 +02:00
dependabot[bot] e67499e6cc chore(deps): bump astral-sh/setup-uv from 6.0.1 to 6.1.0
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 6.0.1 to 6.1.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/6b9c6063abd6010835644d4c2e1bef4cf5cd0fca...f0ec1fc3b38f5e7cd731bb6ce540c5af426746bb)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:45:35 +00:00
dependabot[bot] a1b5e7899f chore(deps-dev): bump ruff from 0.11.10 to 0.11.11
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.10 to 0.11.11.
- [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/0.11.10...0.11.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:13:45 +00:00
dependabot[bot] a88a149999 chore(deps): bump cryptography from 45.0.2 to 45.0.3
Bumps [cryptography](https://github.com/pyca/cryptography) from 45.0.2 to 45.0.3.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/45.0.2...45.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:13:38 +00:00
dependabot[bot] 168593d7af chore(deps): bump ccxt from 4.4.82 to 4.4.85
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.82 to 4.4.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/v4.4.82...v4.4.85)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:13:34 +00:00
dependabot[bot] c646abc05d chore(deps): bump pydantic from 2.11.4 to 2.11.5
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.4 to 2.11.5.
- [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.11.4...v2.11.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:13:27 +00:00
dependabot[bot] f2a1561d31 chore(deps): bump cachetools from 5.5.2 to 6.0.0
Bumps [cachetools](https://github.com/tkem/cachetools) from 5.5.2 to 6.0.0.
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v5.5.2...v6.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:13:20 +00:00
dependabot[bot] d7a3aeaa1b chore(deps): bump plotly from 6.0.1 to 6.1.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 6.0.1 to 6.1.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/main/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v6.0.1...v6.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:13:18 +00:00
dependabot[bot] 4b9a63de19 chore(deps): bump xgboost from 3.0.1 to 3.0.2
Bumps [xgboost](https://github.com/dmlc/xgboost) from 3.0.1 to 3.0.2.
- [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/v3.0.1...v3.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:13:10 +00:00
dependabot[bot] 07985c2cae chore(deps-dev): bump types-cachetools in the types group
Bumps the types group with 1 update: [types-cachetools](https://github.com/typeshed-internal/stub_uploader).


Updates `types-cachetools` from 5.5.0.20240820 to 6.0.0.20250525
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

---
updated-dependencies:
- dependency-name: types-cachetools
  dependency-version: 6.0.0.20250525
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: types
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-26 03:12:22 +00:00
Robert Davey 0c13414f14 Slight rewording for clarity 2025-05-25 12:47:19 +01:00
Robert Davey 1021c7a7af Minor typo 2025-05-25 12:41:31 +01:00
Robert Davey 5306fb3709 Add clarification to the exit table 2025-05-25 12:40:11 +01:00
Matthias 1afddf9db4 docs: no dots on exit comparison 2025-05-25 10:01:39 +02:00
Matthias 929538dd5f docs: refactor exit logic comparisons to includes file
this might allow us to reuse this in other parts of the docs.
2025-05-25 09:44:52 +02:00
Matthias f432e65a14 docs: add "exit logic comparisons" table 2025-05-25 09:42:37 +02:00
Matthias dfc1193c52 Merge pull request #11656 from mrpabloyeah/add-custom-roi-strategy-callback
Add custom_roi() strategy callback
2025-05-25 09:13:32 +02:00
Matthias 25077a1008 feat: write empty "custom_roi" with advanced strategy template 2025-05-25 08:56:39 +02:00
Matthias b3b3bf6c1d feat: allow break-even (0.0) as valid return from custom_roi 2025-05-25 08:54:11 +02:00
Matthias 29ae71333a fix: improved session handling for custom_data sessions 2025-05-25 08:37:01 +02:00
Matthias a7ebbd89c0 feat: add strategy-ResultValidator to backtesting
helps issues such as #11781
2025-05-24 16:46:29 +02:00
Matthias ee25635c79 test: update tests for new StrategyValidator 2025-05-24 16:35:12 +02:00
Matthias b8e19ae78a refactor: move dataframe assertion to it's own class 2025-05-24 16:10:15 +02:00
Matthias 937bd892fd fix: workaround for ccxt bybit stop_order bug 2025-05-24 11:20:47 +02:00
Matthias adce6e4f68 fix: don't try to place stoploss orders with blocking assets 2025-05-24 11:20:47 +02:00
Robert Caulk 0b1ba0458d Merge pull request #11490 from freqtrade/fix/continual_learning_pytorch
Fix continual learning pytorch
2025-05-24 11:12:05 +02:00
Robert Caulk 7668b95900 Merge pull request #11588 from skyoo2003/develop
fix: remove spaces from rename_dict/rename_dict_old in BaseReinforcementLearningModel
2025-05-24 10:47:31 +02:00
Robert Caulk 47465f198c Merge pull request #11772 from freqtrade/dependabot/pip/develop/xgboost-3.0.1
chore(deps): bump xgboost from 2.1.4 to 3.0.1
2025-05-24 10:35:26 +02:00
Matthias f3d03dd26a feat: ensure uniqueness among fetched orders
closes #11786
2025-05-23 07:39:35 +02:00
Matthias ecdd84efd8 fix: "until" shouldn't be in the future.
part of #11786
2025-05-23 07:26:39 +02:00
Matthias 0ad6a6a951 docs: fix broken links 2025-05-22 20:25:59 +02:00
Matthias dc97f709d7 docs: exclude "import only" links 2025-05-22 20:23:11 +02:00
Matthias 34ccf141d1 test: enhance now_is_time_to_refresh test 2025-05-22 20:03:43 +02:00
Matthias f0b16c277c docs: add "sold the bots capital" FAQ entry 2025-05-22 19:22:59 +02:00
Matthias 68061444d8 chore: remove unused imports 2025-05-22 19:11:04 +02:00
Matthias 93356286d8 fix: Activate fetch-orders pagination for binance
potential fix for #11786
2025-05-22 19:10:53 +02:00
Matthias 84e816fc5b refactor: fetch_orders pagination to base class 2025-05-22 19:07:10 +02:00
Matthias 12a482a6ba Merge pull request #11785 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-05-22 06:25:35 +02:00
Freqtrade Bot a26a40d00f chore: update pre-commit hooks 2025-05-22 03:20:06 +00:00
Matthias 64c6b4718d Merge pull request #11758 from mrpabloyeah/add-max-trade-duration-to-backtest-results
Add min/max trade duration to backtest results
2025-05-21 20:45:24 +02:00
Matthias d1ebdf5df2 chore: remove polyfill.io from mkdocs 2025-05-21 19:36:15 +02:00
Matthias 496c4947bd chore: Fix lint error 2025-05-21 19:34:30 +02:00
Matthias 82f98746bd test: update test for new behavior 2025-05-21 19:27:23 +02:00
hippocritical 65418c7c00 changed the text a bit 2025-05-20 21:32:21 +02:00
hippocritical bbf6bade7c Fixed a bug where the pairlist was just .*/USDT (with a length of 1.)
The bug happened since it just checked the length of the list itself, not what it represents. in this case .*/USDT could be any amount of pairs

when the user sets a max_open_trades of let's say 3 then the pairs only have 3 trade slots of whatever amount of pairs it really has and thereby creating a bottleneck.

This just sets the max_open_trades to -1 without even checking it, letting freqtrade itself handle the amount of trades allowed at a given time.
2025-05-20 21:30:41 +02:00
Matthias b6cde05f0d chore: remove unused import 2025-05-20 19:39:07 +02:00
Matthias 0a3a1d7eca fix: remove unnecessary kraken workaround
fixes "list-pairs" command for kraken.
2025-05-20 19:22:05 +02:00
Matthias 947cbdd858 test: add format_duration test 2025-05-20 18:15:54 +02:00
Matthias 7a84d1ecba chore: bump numpy to 2.2.6 2025-05-20 07:14:55 +02:00
Matthias 8c999cd60c chore: treat webhook.url as secret 2025-05-20 07:05:08 +02:00
Matthias ad5d2a36bc feat: Further ENV recommendations to config schema 2025-05-20 07:05:08 +02:00
Matthias 1666746692 feat: recommend setting secrets via environment variable 2025-05-20 07:05:08 +02:00
Matthias 3a74fc85b4 chore: update schema.json 2025-05-20 07:05:08 +02:00
Matthias 92a1c304a8 feat: add additional supported keys to config schema 2025-05-20 07:05:08 +02:00
Matthias d8c24663fc Merge pull request #11736 from viotemp1/optuna_addons
add early stopping for hyperopt
2025-05-20 06:45:15 +02:00
Matthias 195c15c8dc Merge pull request #11778 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-05-20 06:27:41 +02:00
Freqtrade Bot 44c06f6d20 chore: update pre-commit hooks 2025-05-20 03:20:51 +00:00
Matthias c268f20d18 Merge pull request #11776 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.41
chore(deps): bump sqlalchemy from 2.0.40 to 2.0.41
2025-05-19 16:26:48 +02:00
Matthias 83c92f3ac1 chore: Bump sqlalchemy in pre-commit 2025-05-19 14:36:11 +02:00
dependabot[bot] b4a3eccfa3 chore(deps): bump sqlalchemy from 2.0.40 to 2.0.41
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.40 to 2.0.41.
- [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-version: 2.0.41
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 11:59:40 +00:00
Matthias 837d006e11 Merge pull request #11774 from freqtrade/dependabot/pip/develop/ccxt-4.4.82
chore(deps): bump ccxt from 4.4.80 to 4.4.82
2025-05-19 13:58:26 +02:00
dependabot[bot] c1f1639807 chore(deps): bump ccxt from 4.4.80 to 4.4.82
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.80 to 4.4.82.
- [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/v4.4.80...v4.4.82)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 06:29:16 +00:00
Matthias 8f71e45666 Merge pull request #11775 from freqtrade/dependabot/pip/develop/cryptography-45.0.2
chore(deps): bump cryptography from 44.0.3 to 45.0.2
2025-05-19 08:28:06 +02:00
Matthias 17fa2c9933 Merge pull request #11768 from freqtrade/dependabot/pip/develop/types-462239796a
chore(deps-dev): bump the types group with 2 updates
2025-05-19 08:10:35 +02:00
dependabot[bot] 22fdf157ef chore(deps): bump cryptography from 44.0.3 to 45.0.2
Bumps [cryptography](https://github.com/pyca/cryptography) from 44.0.3 to 45.0.2.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/44.0.3...45.0.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 05:10:41 +00:00
Matthias 6c8b39d32a Merge pull request #11770 from freqtrade/dependabot/pip/develop/python-telegram-bot-22.1
chore(deps): bump python-telegram-bot from 22.0 to 22.1
2025-05-19 07:09:30 +02:00
Matthias 5a2b3d9d87 chore: show the actually used value 2025-05-19 07:04:11 +02:00
Matthias 8641796d04 test: Add test for early-stop config adjustment 2025-05-19 07:03:41 +02:00
Matthias c5c5cfb4d5 Merge pull request #11771 from freqtrade/dependabot/pip/develop/ruff-0.11.10
chore(deps-dev): bump ruff from 0.11.9 to 0.11.10
2025-05-19 06:53:50 +02:00
Matthias c74033d7f1 chore: bump types for pre-commit 2025-05-19 06:49:45 +02:00
Matthias d8c6873ee9 Merge pull request #11769 from freqtrade/dependabot/pip/develop/mkdocs-90ecda04c5
chore(deps): bump mkdocs-material from 9.6.13 to 9.6.14 in the mkdocs group
2025-05-19 06:34:43 +02:00
Matthias b0cc2a2a1d chore: slightly improve comment wording 2025-05-19 06:32:09 +02:00
Matthias 226f9b7857 Merge pull request #11766 from AchmadFathoni/develop
docs: trades space not included in default spaces
2025-05-19 06:31:11 +02:00
dependabot[bot] 1abf72855e chore(deps): bump xgboost from 2.1.4 to 3.0.1
Bumps [xgboost](https://github.com/dmlc/xgboost) from 2.1.4 to 3.0.1.
- [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/v2.1.4...v3.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:10:25 +00:00
dependabot[bot] b044410e42 chore(deps-dev): bump ruff from 0.11.9 to 0.11.10
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.9 to 0.11.10.
- [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/0.11.9...0.11.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:10:15 +00:00
dependabot[bot] b64052850f chore(deps): bump python-telegram-bot from 22.0 to 22.1
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 22.0 to 22.1.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v22.0...v22.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:10:08 +00:00
dependabot[bot] 8868b10042 chore(deps): bump mkdocs-material in the mkdocs group
Bumps the mkdocs group with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material).


Updates `mkdocs-material` from 9.6.13 to 9.6.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.6.13...9.6.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:10:04 +00:00
dependabot[bot] b18190891d chore(deps-dev): bump the types group with 2 updates
Bumps the types group with 2 updates: [types-requests](https://github.com/typeshed-internal/stub_uploader) and [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader).


Updates `types-requests` from 2.32.0.20250328 to 2.32.0.20250515
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

Updates `types-python-dateutil` from 2.9.0.20241206 to 2.9.0.20250516
- [Commits](https://github.com/typeshed-internal/stub_uploader/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-19 03:09:28 +00:00
Achmad Fathoni 5b001eec3e docs: trades space not included in default spaces 2025-05-18 21:26:57 +07:00
mrpabloyeah 882ca44816 Fix test_optimize_reports 2025-05-18 14:19:10 +02:00
mrpabloyeah 60157606fe Format only winner/loser durations 2025-05-18 13:39:50 +02:00
mrpabloyeah cbb0294cd2 Format duration to make results more readable 2025-05-18 13:02:47 +02:00
Matthias 1b4802ab73 chore: Improved wording in issue templates 2025-05-18 08:38:27 +02:00
Matthias 6b7f210ef3 chore: Improve bug report template about AI
AI generated strategies and configs cause a lot of noise.
we should be clear that people shall read the documentation first
(this will also allow us to point people at this within the issue).
2025-05-18 08:35:59 +02:00
Matthias 571b154345 Merge pull request #11763 from emmanuel-ferdman/develop
fix: display pair information in message
2025-05-17 19:37:09 +02:00
Emmanuel Ferdman 9a2b5a1219 Display pair information in message
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2025-05-17 07:51:03 -07:00
Matthias fe9de41d58 docs: fix Note boxes not rendering correctly 2025-05-17 16:16:27 +02:00
Matthias daff50e79e test: improve admotion test by skipping empty lines 2025-05-17 16:16:19 +02:00
Matthias 09b687d66f test: add test checking proper admotion logic 2025-05-17 16:12:19 +02:00
Matthias 665ff9f14e test: extend test_docs for collapsed info boxes 2025-05-17 15:36:32 +02:00
viotemp1 bd1a12ceaa fix formatting 2025-05-17 16:27:33 +03:00
viotemp1 d33e931a0d early stop - replace values lower than 20 with 20 and display a warning. 2025-05-17 16:23:25 +03:00
mrpabloyeah fbe38c362c Fix typo 2025-05-17 15:10:04 +02:00
mrpabloyeah 718efc828a Also add min trade duration and display the info horizontally 2025-05-17 14:22:25 +02:00
mrpabloyeah 6d3ed84807 Add max trade duration to backtest results 2025-05-17 02:50:10 +02:00
viotemp1 28e5efc902 fix docs 2025-05-17 01:15:10 +03:00
Matthias 510c47bd78 docs: update doc wording in custom_exit callback 2025-05-16 06:39:24 +02:00
Matthias 2e0065216f Merge pull request #11755 from Silur/develop
fix binance futures candle type hardcoding for trades data
2025-05-15 19:52:58 +02:00
silur ce024c74e1 fix binance futures candle type hardcoding 2025-05-15 21:31:01 +04:00
mrpabloyeah 90e2935abf Add trade_duration parameter to custom_roi 2025-05-15 11:53:48 +02:00
mrpabloyeah 12cd654bce Merge branch 'freqtrade:develop' into add-custom-roi-strategy-callback 2025-05-15 10:14:53 +02:00
Matthias c3ea793abb Merge branch 'develop' into add-custom-roi-strategy-callback 2025-05-15 07:22:25 +02:00
Matthias c901f6d1dd test: add test for custom_roi behavior 2025-05-15 07:22:18 +02:00
Matthias 193cfb634c Merge pull request #11754 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-05-15 06:28:13 +02:00
Freqtrade Bot a2b7620b64 chore: update pre-commit hooks 2025-05-15 03:19:37 +00:00
Matthias 9d91a4a298 fix: default max_open_trades to inf instead of -1
Without this, the auto-conversion doesn't backpopulate to the config

closes #11752
2025-05-14 20:14:10 +02:00
Matthias 3b6dbaccf8 test: add failing test for #11752 2025-05-14 20:12:33 +02:00
Matthias 3fe9e6b82b fix: don't use exchange.precision_mode_price
closes #11751
2025-05-14 06:59:51 +02:00
Matthias b6614045aa Merge pull request #11738 from snussik/patch-1
Update strategy-callbacks.md
2025-05-13 20:03:57 +02:00
Matthias cbf27f0bdb docs: Simplify doc examples 2025-05-13 19:38:06 +02:00
Matthias bc78e2e1b9 feat: update to ft-pandas-ta
Freqtrade's compatibility fork of pandas-ta
available at https://github.com/freqtrade/pandas-ta/
2025-05-13 07:03:52 +02:00
Matthias deafe39f76 Merge pull request #11750 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-05-13 07:03:13 +02:00
Freqtrade Bot 1f63eca1a8 chore: update pre-commit hooks 2025-05-13 03:20:47 +00:00
Matthias 3fb6bc888b chore: Mypy-exclusions to account for ta-lib import problem 2025-05-12 18:22:01 +02:00
Matthias 2c0db908b5 Merge pull request #11747 from nisuhw/patch-1
Update installation.md for older Raspberry Pi 2
2025-05-12 13:14:58 +02:00
nisuhw ca9403f981 Update installation.md for older Raspberry Pi 2
I got the following error on Pi 2 (using Debian Bookworm armhf arch)
```
...
            running bdist_wheel
            running build
            running build_py
            creating build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/lock.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/backend_ctypes.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/_imp_emulation.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/model.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/ffiplatform.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/setuptools_ext.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/error.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/vengine_gen.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/api.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/__init__.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/recompiler.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/cffi_opcode.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/pkgconfig.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/verifier.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/cparser.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/_shimmed_dist_utils.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/commontypes.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/vengine_cpy.py -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/_cffi_include.h -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/parse_c_type.h -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/_embedding.h -> build/lib.linux-armv7l-cpython-311/cffi
            copying src/cffi/_cffi_errors.h -> build/lib.linux-armv7l-cpython-311/cffi
            running build_ext
            building '_cffi_backend' extension
            creating build/temp.linux-armv7l-cpython-311/src/c
            arm-linux-gnueabihf-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -DFFI_BUILDING=1 -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/freqtrade/.venv/include -I/usr/include/python3.11 -c src/c/_cffi_backend.c -o build/temp.linux-armv7l-cpython-311/src/c/_cffi_backend.o
            src/c/_cffi_backend.c:15:10: fatal error: ffi.h: No such file or directory
               15 | #include <ffi.h>
                  |          ^~~~~~~
            compilation terminated.
            error: command '/usr/bin/arm-linux-gnueabihf-gcc' failed with exit code 1
            [end of output]
      
        note: This error originates from a subprocess, and is likely not a problem with pip.
        ERROR: Failed building wheel for cffi
      Failed to build cffi
      ERROR: Failed to build installable wheels for some pyproject.toml based projects (cffi)
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× pip subprocess to install build dependencies did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
Failed installing dependencies
```

It can be Easily solved by installing libffi-dev before hand
2025-05-12 16:01:25 +07:00
Matthias a8d96087c1 Merge pull request #11743 from freqtrade/dependabot/pip/develop/ccxt-4.4.80
chore(deps): bump ccxt from 4.4.78 to 4.4.80
2025-05-12 08:50:16 +02:00
Matthias 1649505121 Merge pull request #11741 from freqtrade/dependabot/pip/develop/optuna-4.3.0
chore(deps): bump optuna from 4.2.1 to 4.3.0
2025-05-12 08:03:05 +02:00
Matthias 41a063e2ac Merge pull request #11745 from freqtrade/dependabot/pip/develop/datasieve-0.1.9
chore(deps): bump datasieve from 0.1.7 to 0.1.9
2025-05-12 07:45:57 +02:00
dependabot[bot] ba019ad143 chore(deps): bump optuna from 4.2.1 to 4.3.0
Bumps [optuna](https://github.com/optuna/optuna) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/optuna/optuna/releases)
- [Commits](https://github.com/optuna/optuna/compare/v4.2.1...v4.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 05:35:28 +00:00
Matthias 6f3071f6ce Merge pull request #11742 from freqtrade/dependabot/pip/develop/scipy-1.15.3
chore(deps): bump scipy from 1.15.2 to 1.15.3
2025-05-12 07:34:16 +02:00
Matthias 5cdb2dd601 Merge pull request #11744 from freqtrade/dependabot/pip/develop/ruff-0.11.9
chore(deps-dev): bump ruff from 0.11.8 to 0.11.9
2025-05-12 07:21:22 +02:00
Matthias 4db41f0225 Merge pull request #11740 from freqtrade/dependabot/pip/develop/mkdocs-b2e01260d9
chore(deps): bump mkdocs-material from 9.6.12 to 9.6.13 in the mkdocs group
2025-05-12 06:46:32 +02:00
Matthias cc8581164d Merge pull request #11739 from freqtrade/dependabot/pip/develop/pytest-5fb0fe6743
chore(deps-dev): bump pytest-timeout from 2.3.1 to 2.4.0 in the pytest group
2025-05-12 06:26:25 +02:00
dependabot[bot] 7d50353697 chore(deps): bump datasieve from 0.1.7 to 0.1.9
Bumps [datasieve](https://github.com/emergentmethods/datasieve) from 0.1.7 to 0.1.9.
- [Release notes](https://github.com/emergentmethods/datasieve/releases)
- [Commits](https://github.com/emergentmethods/datasieve/compare/v0.1.7...v0.1.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:43:51 +00:00
dependabot[bot] d742f8b88f chore(deps-dev): bump ruff from 0.11.8 to 0.11.9
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.8 to 0.11.9.
- [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/0.11.8...0.11.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:43:39 +00:00
dependabot[bot] 22bf036a66 chore(deps): bump ccxt from 4.4.78 to 4.4.80
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.78 to 4.4.80.
- [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/v4.4.78...v4.4.80)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:43:28 +00:00
dependabot[bot] c45351beff chore(deps): bump scipy from 1.15.2 to 1.15.3
Bumps [scipy](https://github.com/scipy/scipy) from 1.15.2 to 1.15.3.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.15.2...v1.15.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:43:14 +00:00
dependabot[bot] 6d1d0751e8 chore(deps): bump mkdocs-material in the mkdocs group
Bumps the mkdocs group with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material).


Updates `mkdocs-material` from 9.6.12 to 9.6.13
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.12...9.6.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:42:57 +00:00
dependabot[bot] 15012ec58c chore(deps-dev): bump pytest-timeout in the pytest group
Bumps the pytest group with 1 update: [pytest-timeout](https://github.com/pytest-dev/pytest-timeout).


Updates `pytest-timeout` from 2.3.1 to 2.4.0
- [Commits](https://github.com/pytest-dev/pytest-timeout/compare/2.3.1...2.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-12 03:42:46 +00:00
snussik fed91ff5a1 Update strategy-callbacks.md
Taking leverage into account https://github.com/freqtrade/freqtrade-strategies/issues/322
2025-05-11 17:58:10 +03:00
Matthias 0228ec796b chore: bump datasieve to 0.1.9 2025-05-11 16:28:15 +02:00
viotemp1 5b92af6a90 fix some spelling errors 2025-05-10 19:45:16 +03:00
viotemp1 442a1ba50d add early stopping for hyperopt 2025-05-10 19:36:48 +03:00
Matthias c3f6aa17ee Merge pull request #11711 from freqtrade/feat/bt_historic_precision
Improve price precision logic and add significant digits calculation
2025-05-10 16:03:38 +02:00
Matthias 69de7b4045 chore: bump datasieve to 0.1.8 2025-05-10 13:51:37 +02:00
Matthias 8dc278f1a0 refactor: simplify ws exchange handling 2025-05-10 13:30:26 +02:00
Matthias 5f907d4219 chore: move candletype check to can_use_websocket. 2025-05-10 11:43:52 +02:00
Matthias c39c5f254f Extract "can use websocket" method 2025-05-10 11:31:30 +02:00
Matthias 0dfc4ed696 refactor: extract websocket builder logic to it's own function 2025-05-10 11:24:54 +02:00
Matthias 950a0df8b1 docs: improved documentation of order object 2025-05-10 08:38:45 +02:00
Matthias 2a0dd4cf55 Merge pull request #11558 from viotemp1/optuna
switch hyperopt from scikit-optimize to  Optuna
2025-05-09 09:53:13 +02:00
Matthias 575c381e65 chore: fix mypy error 2025-05-09 09:36:08 +02:00
Matthias 87061bcce8 docs: adopt autosampler example as advanced hyperopt approach 2025-05-09 06:42:37 +02:00
Matthias a6d3995013 feat: Improved typing, exception if neither step nor decimals is set 2025-05-09 06:34:59 +02:00
Matthias d0d40f4fce test: Improve skdecimal test 2025-05-09 06:34:33 +02:00
Matthias ce7d81325d chore: improved docstring for skdecimal 2025-05-09 06:32:43 +02:00
Matthias 7cfecab7e2 Merge branch 'develop' into optuna 2025-05-08 19:25:33 +02:00
Matthias 8f8da51808 feat: round hyperopt results to 13 digits (this removes floating point errors) 2025-05-08 19:24:31 +02:00
Matthias f94fd7d5fc chore: minor formatting 2025-05-08 07:07:22 +02:00
Matthias befc41ae54 Merge pull request #11717 from freqtrade/dependabot/pip/develop/certifi-2025.4.26
chore(deps): bump certifi from 2025.01.31 to 2025.4.26
2025-05-08 07:03:09 +02:00
dependabot[bot] 02092926ab chore(deps): bump certifi from 2025.01.31 to 2025.4.26
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.01.31 to 2025.4.26.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.01.31...2025.04.26)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2025.4.26
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-08 04:44:37 +00:00
Matthias a49b4ab93a Merge pull request #11731 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-05-08 06:23:36 +02:00
Freqtrade Bot bd7549bc8b chore: update pre-commit hooks 2025-05-08 03:19:45 +00:00
viotemp1 47e1d209db round to decimals low and high 2025-05-08 05:49:34 +03:00
viotemp1 5d2f5ec12f change SKDecimal low/high to be rounded by decimals 2025-05-07 21:57:56 +03:00
viotemp1 2d2dc7f14a Merge remote-tracking branch 'refs/remotes/origin/optuna' into optuna 2025-05-07 17:25:14 +03:00
viotemp1 43bd2a060c fix optuna userwarning the range is not divisible by step 2025-05-07 17:20:17 +03:00
Matthias b518d66aa2 chore: improve docstring for get_Trades_proxy. 2025-05-06 19:37:06 +02:00
Matthias 2ba59cebe3 Merge pull request #11724 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-05-06 06:33:06 +02:00
Freqtrade Bot f165c85e69 chore: update pre-commit hooks 2025-05-06 03:18:59 +00:00
Matthias fca454bba3 Merge pull request #11708 from hippocritical/develop
lookahead-analysis docs changed to better explain the output table
2025-05-05 19:52:45 +02:00
Matthias 3dc1adfad4 docs: slight formatting tweaks 2025-05-05 19:35:04 +02:00
Robert Davey 38754e0598 Small tweaks to lookahead docs 2025-05-05 11:50:29 +01:00
Matthias 8fb4446d82 Merge pull request #11716 from freqtrade/dependabot/pip/develop/cryptography-44.0.3
chore(deps): bump cryptography from 44.0.2 to 44.0.3
2025-05-05 09:37:47 +02:00
Matthias 3725ac145b Merge pull request #11720 from freqtrade/dependabot/pip/develop/humanize-4.12.3
chore(deps): bump humanize from 4.12.2 to 4.12.3
2025-05-05 08:08:13 +02:00
Matthias 7df0d06005 Merge pull request #11719 from freqtrade/dependabot/pip/develop/orjson-3.10.18
chore(deps): bump orjson from 3.10.16 to 3.10.18
2025-05-05 08:00:50 +02:00
Matthias 4e855b638b Merge pull request #11721 from freqtrade/dependabot/github_actions/develop/astral-sh/setup-uv-6.0.1
chore(deps): bump astral-sh/setup-uv from 6.0.0 to 6.0.1
2025-05-05 07:32:06 +02:00
Matthias 9783aba09c Merge pull request #11718 from freqtrade/dependabot/pip/develop/pydantic-2.11.4
chore(deps): bump pydantic from 2.11.3 to 2.11.4
2025-05-05 07:20:59 +02:00
Matthias 1936b20309 Merge pull request #11715 from freqtrade/dependabot/pip/develop/ruff-0.11.8
chore(deps-dev): bump ruff from 0.11.7 to 0.11.8
2025-05-05 06:58:02 +02:00
dependabot[bot] 69de9687d0 chore(deps): bump cryptography from 44.0.2 to 44.0.3
Bumps [cryptography](https://github.com/pyca/cryptography) from 44.0.2 to 44.0.3.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/44.0.2...44.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 04:49:45 +00:00
Matthias bdeeca7d43 Merge pull request #11714 from freqtrade/dependabot/pip/develop/ccxt-4.4.78
chore(deps): bump ccxt from 4.4.77 to 4.4.78
2025-05-05 06:48:36 +02:00
Matthias a7ba3cad85 Merge pull request #11713 from freqtrade/dependabot/pip/develop/joblib-1.5.0
chore(deps): bump joblib from 1.4.2 to 1.5.0
2025-05-05 06:30:45 +02:00
dependabot[bot] ef5fcad8cf chore(deps): bump astral-sh/setup-uv from 6.0.0 to 6.0.1
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 6.0.0 to 6.0.1.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/c7f87aa956e4c323abf06d5dec078e358f6b4d04...6b9c6063abd6010835644d4c2e1bef4cf5cd0fca)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 03:57:55 +00:00
dependabot[bot] d8de6c8f7b chore(deps): bump humanize from 4.12.2 to 4.12.3
Bumps [humanize](https://github.com/python-humanize/humanize) from 4.12.2 to 4.12.3.
- [Release notes](https://github.com/python-humanize/humanize/releases)
- [Commits](https://github.com/python-humanize/humanize/compare/4.12.2...4.12.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 03:26:59 +00:00
dependabot[bot] c3239da266 chore(deps): bump orjson from 3.10.16 to 3.10.18
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.16 to 3.10.18.
- [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.10.16...3.10.18)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 03:26:54 +00:00
dependabot[bot] 1edf948e49 chore(deps): bump pydantic from 2.11.3 to 2.11.4
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.3 to 2.11.4.
- [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.11.3...v2.11.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 03:26:49 +00:00
dependabot[bot] 224c4a717b chore(deps-dev): bump ruff from 0.11.7 to 0.11.8
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.7 to 0.11.8.
- [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/0.11.7...0.11.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 03:26:29 +00:00
dependabot[bot] 6202436bfd chore(deps): bump ccxt from 4.4.77 to 4.4.78
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.77 to 4.4.78.
- [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/v4.4.77...v4.4.78)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 03:26:19 +00:00
dependabot[bot] 122144857e chore(deps): bump joblib from 1.4.2 to 1.5.0
Bumps [joblib](https://github.com/joblib/joblib) from 1.4.2 to 1.5.0.
- [Release notes](https://github.com/joblib/joblib/releases)
- [Changelog](https://github.com/joblib/joblib/blob/main/CHANGES.rst)
- [Commits](https://github.com/joblib/joblib/compare/1.4.2...1.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-05 03:26:13 +00:00
Matthias 92bcf672fb docs: document consumer's initial_candle_limit 2025-05-04 19:53:09 +02:00
Matthias 6f4ffa0758 chore: minor cleanup 2025-05-04 19:32:09 +02:00
Matthias 82186c8a7f docs: fix typo in docs causing note-box to not render 2025-05-04 19:26:26 +02:00
hippocritical 50596e1a6a fixed typo 2025-05-04 17:53:23 +02:00
hippocritical 9edcbbb9a8 Changed formatting to be more readable in source
Added
- How to find and remove bias? How can I salvage the strategy?
- Examples of lookahead-bias
2025-05-04 16:59:24 +02:00
Matthias a59805d739 docs: small formatting 2025-05-04 14:05:23 +02:00
Robert Davey b96c06ffdc Update lookahead-analysis.md
Englishified.
2025-05-04 12:34:48 +01:00
Matthias 8abe358c1e docs: improved rendering 2025-05-04 11:57:03 +02:00
Matthias 2142b2aea3 chore: fix type-check 2025-05-04 11:49:03 +02:00
Matthias 53ba3ced06 test: add test for backtest "get price precision" logic 2025-05-04 11:47:42 +02:00
hippocritical a0f336c31f changed lookahead-analysis.md to better explain the output of the command 2025-05-03 22:12:25 +02:00
Matthias 081fa2209a refactor: correct naming of new function 2025-05-03 20:45:52 +02:00
Matthias ca67d3fb2c chore: improve price_precision logic resiliancy 2025-05-03 20:44:14 +02:00
Matthias 5a6b43da46 feat: use hsitoric price precision for improved accuracy
closes #11203
2025-05-03 20:37:57 +02:00
Matthias 7d3fa41911 test: add tests for get_significant_digits_over_time 2025-05-03 20:30:25 +02:00
Matthias b8f3f5e8d2 fix: use month-start for the resample 2025-05-03 20:28:10 +02:00
Matthias 4849d5413f feat: add function to count "significant digits over time". 2025-05-03 20:14:37 +02:00
Matthias 8b8bf6f97d refactor: automatically load detailed bt data 2025-05-03 20:01:13 +02:00
viotemp1 9eea958e17 remove unwrap 2025-05-03 16:55:41 +03:00
Matthias f8a151c2a5 feat: Add funding_fee to backtest results
closes #11699
2025-05-03 14:14:32 +02:00
Matthias 1013c32316 fix: duplicate generate_optimizer to have a non-delayed alternative 2025-05-03 09:19:50 +02:00
viotemp1 d9ed7e1fb2 remove backtest from assign_params 2025-05-03 09:49:34 +03:00
Matthias 689da4c479 Merge pull request #11158 from freqtrade/feat/plot_annotations
add support for plot_annotations
2025-05-03 08:25:57 +02:00
Matthias 87d954a322 refactor: fix variable typo 2025-05-03 08:03:16 +02:00
Matthias 74f601b352 docs: Improved plot annotations sample 2025-05-03 08:02:09 +02:00
Matthias a3359b62d4 feat: validate annotation-type before returning
this avoids breaking the whole chart due to annotations.
2025-05-02 20:58:13 +02:00
Matthias 064708a354 feat: validate annotations and only return valid ones to avoid breaking the whole chart 2025-05-02 20:45:42 +02:00
Matthias 066a46d7aa Switch annotationType to Pydantic 2025-05-02 20:41:43 +02:00
Matthias 333660e628 feat: improved doc-string for plot-annotations 2025-05-02 20:41:30 +02:00
Matthias 81f80a6b22 docs: add visual documentation for plot annotations 2025-05-02 20:28:32 +02:00
viotemp1 dd613ac86c fix formatting 2025-05-02 21:07:34 +03:00
viotemp1 73c28890d7 move @delayed and @wrap_non_picklable_objects in hyperopt_optimizer.py
one test with analyze_per_epoch is failing
2025-05-02 21:03:51 +03:00
Matthias 61dd94ceb0 test: add tests for annotations feature 2025-05-02 19:59:23 +02:00
Matthias 1fec5a873e Merge branch 'develop' into feat/plot_annotations 2025-05-02 19:48:50 +02:00
Matthias 9c4abcc927 refactor: improve variable naming 2025-05-02 13:17:16 +02:00
Matthias b74e38ef63 refactor: improve variable naming 2025-05-02 13:17:03 +02:00
Matthias 86f640627f Merge pull request #11692 from freqtrade/reenable_htx
chore(ci): reenable htx online tests
2025-05-01 16:46:29 +02:00
Matthias e27568a9d8 chore: pin certifi until upstream issue is fixed
problematic point: https://github.com/certifi/python-certifi/issues/349
2025-05-01 16:22:47 +02:00
Matthias 149133cc44 refactor: remove _get_params_dict method 2025-05-01 12:03:04 +02:00
Matthias 1b2d5a357f test: change level of test mock 2025-05-01 11:57:17 +02:00
Matthias ecc6371733 test: reduce amount of mocking 2025-05-01 10:19:20 +02:00
Matthias 0c66180cf3 chore: add optuna to hyperopt optional dependencies 2025-05-01 10:15:35 +02:00
Matthias 5954c64cc3 chore: use ubuntu 24.04 for online tests 2025-05-01 08:55:35 +02:00
Matthias d0b7a52202 Merge pull request #11703 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-05-01 08:10:03 +02:00
Freqtrade Bot c18085d173 chore: update pre-commit hooks 2025-05-01 03:22:32 +00:00
Matthias b11119dbe5 Merge pull request #11698 from freqtrade/new_release
New release 2025.4
2025-04-30 18:00:04 +02:00
Matthias 67f88ea97a Merge pull request #11681 from JamesLinxun/develop
skip trade-related columns
2025-04-30 17:59:54 +02:00
Matthias 14353afa78 chore: bump develop version to 2025.5-dev 2025-04-30 07:02:57 +02:00
Matthias cefc833ab1 chore: bump version to 2025.4 2025-04-30 06:59:57 +02:00
Matthias 5c7c3a88fb Merge branch 'stable' into new_release 2025-04-30 06:59:40 +02:00
Matthias 14e2e160af chore: reformat utility script 2025-04-30 06:53:02 +02:00
Matthias 000eb875a2 chore: bump binance leverage tiers 2025-04-30 06:51:51 +02:00
Matthias 33c8969411 Merge pull request #11697 from froggleston/frog_logs_docs_1
Improve logging docs in 101 and advanced setup
2025-04-29 21:04:07 +02:00
Matthias d90666d2e8 docs: minor link refactor 2025-04-29 20:22:47 +02:00
Matthias f568d63c41 Merge pull request #11695 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-04-29 20:08:24 +02:00
James Lin a77618cc6b fix 2025-04-29 12:09:13 -04:00
JamesLinxun cac2c363fa Merge branch 'freqtrade:develop' into develop 2025-04-29 10:18:13 -04:00
viotemp1 ced1ce340a fix some formatting issues 2025-04-29 17:09:16 +03:00
froggleston 78943bf88d Add link to FAQ 2025-04-29 14:57:54 +01:00
froggleston 1b8a42d472 Improve logging docs in 101 and advanced setup 2025-04-29 14:55:36 +01:00
James Lin 1d99b7d0f9 move ORDERFLOW_ADDED_COLUMNS to constant 2025-04-29 09:18:07 -04:00
viotemp1 5c47a75f63 move back delayed and wrap_non_picklable_objects from hyperopt_optimizer to hyperopt.
There are tests failing when using delayed and wrap_non_picklable_objects as decorator.
until I'll find a solution to run generate_optimizer standalone for analyze_per_epoch=True
2025-04-29 08:16:44 +03:00
Matthias 1ef2eeb456 chore(ci): reenable htx online tests through proxy 2025-04-29 06:58:59 +02:00
Freqtrade Bot faa398053a chore: update pre-commit hooks 2025-04-29 03:17:49 +00:00
viotemp1 c32f8e972a move delayed and wrap_non_picklable_objects from hyperopt to hyperopt_optimizer 2025-04-28 18:50:09 +03:00
Matthias 23e4943b3a Merge pull request #11690 from freqtrade/dependabot/pip/develop/pyarrow-20.0.0
chore(deps): bump pyarrow from 19.0.1 to 20.0.0
2025-04-28 12:40:41 +02:00
Matthias b3ec69fa8a chore: update pyarrow prebuilt wheel 2025-04-28 12:21:27 +02:00
Matthias dc4aaf0a82 Merge pull request #11688 from freqtrade/dependabot/pip/develop/ccxt-4.4.77
chore(deps): bump ccxt from 4.4.75 to 4.4.77
2025-04-28 10:49:21 +02:00
Matthias d5b9c6dde8 Merge pull request #11689 from freqtrade/dependabot/pip/develop/torch-2.7.0
chore(deps): bump torch from 2.6.0 to 2.7.0
2025-04-28 09:18:41 +02:00
Matthias bdfd3396cc Merge pull request #11685 from freqtrade/dependabot/pip/develop/ruff-0.11.7
chore(deps-dev): bump ruff from 0.11.6 to 0.11.7
2025-04-28 08:55:14 +02:00
dependabot[bot] c9256e0d9f chore(deps): bump torch from 2.6.0 to 2.7.0
Bumps [torch](https://github.com/pytorch/pytorch) from 2.6.0 to 2.7.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.6.0...v2.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 06:42:31 +00:00
dependabot[bot] c7e02b9a7f chore(deps): bump ccxt from 4.4.75 to 4.4.77
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.75 to 4.4.77.
- [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/v4.4.75...v4.4.77)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 06:42:29 +00:00
Matthias 7d5cd998a3 Merge pull request #11683 from freqtrade/dependabot/github_actions/develop/astral-sh/setup-uv-6.0.0
chore(deps): bump astral-sh/setup-uv from 5.4.2 to 6.0.0
2025-04-28 07:59:41 +02:00
Matthias 96e8319e82 Merge pull request #11686 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.15
chore(deps): bump pymdown-extensions from 10.14.3 to 10.15
2025-04-28 07:41:33 +02:00
Matthias 12d8fc8c3a Merge pull request #11684 from freqtrade/dependabot/github_actions/develop/rjstone/discord-webhook-notify-1.1.1
chore(deps): bump rjstone/discord-webhook-notify from 1.0.4 to 1.1.1
2025-04-28 07:38:09 +02:00
Matthias 1ad0e423c9 chore(ci): add new mandatory parameter to setup-uv 2025-04-28 06:56:19 +02:00
dependabot[bot] 2ef1e203c6 chore(deps): bump pymdown-extensions from 10.14.3 to 10.15
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.14.3 to 10.15.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.14.3...10.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 04:42:22 +00:00
dependabot[bot] 959f81f4ac chore(deps): bump rjstone/discord-webhook-notify from 1.0.4 to 1.1.1
Bumps [rjstone/discord-webhook-notify](https://github.com/rjstone/discord-webhook-notify) from 1.0.4 to 1.1.1.
- [Release notes](https://github.com/rjstone/discord-webhook-notify/releases)
- [Commits](https://github.com/rjstone/discord-webhook-notify/compare/89b0bf43c2c8514f70d0dcba4a706b904e8a3112...1399c1b2d57cc05894d506d2cfdc33c5f012b993)

---
updated-dependencies:
- dependency-name: rjstone/discord-webhook-notify
  dependency-version: 1.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 04:41:01 +00:00
dependabot[bot] 3090e47a12 chore(deps-dev): bump ruff from 0.11.6 to 0.11.7
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.6 to 0.11.7.
- [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/0.11.6...0.11.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 04:32:42 +00:00
Matthias 02ab0eb139 test: temporarily disable HTX tests 2025-04-28 06:29:48 +02:00
dependabot[bot] 5d8759de78 chore(deps): bump pyarrow from 19.0.1 to 20.0.0
Bumps [pyarrow](https://github.com/apache/arrow) from 19.0.1 to 20.0.0.
- [Release notes](https://github.com/apache/arrow/releases)
- [Commits](https://github.com/apache/arrow/compare/apache-arrow-19.0.1...apache-arrow-20.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 03:55:39 +00:00
dependabot[bot] b13b00df17 chore(deps): bump astral-sh/setup-uv from 5.4.2 to 6.0.0
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 5.4.2 to 6.0.0.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/d4b2f3b6ecc6e67c4457f6d3e41ec42d3d0fcb86...c7f87aa956e4c323abf06d5dec078e358f6b4d04)

---
updated-dependencies:
- dependency-name: astral-sh/setup-uv
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-28 03:53:27 +00:00
viotemp1 04492e75b2 remove # Suppress optuna ExperimentalWarning from skopt
with warnings.catch_warnings():
    from optuna.exceptions import ExperimentalWarning
    warnings.filterwarnings("ignore", category=FutureWarning)
this should be when importing sampler
2025-04-27 22:02:39 +03:00
viotemp1 8d0ca7f5c1 remove backtesting from generate_optimizer 2025-04-27 21:26:06 +03:00
Matthias d8b51875bf test: update tests for new file structure 2025-04-27 11:35:06 +02:00
Matthias 7f12f3a0e4 refactor: rename btanalysis file to be clearer 2025-04-27 11:23:40 +02:00
Matthias 6afcc80937 refactor: move some utils to a separate file 2025-04-27 11:17:14 +02:00
Matthias efdb726362 refactor: btanalysis -> package 2025-04-27 11:13:35 +02:00
Matthias 3ca7407b09 refactor: improve variable naming 2025-04-27 11:05:51 +02:00
Matthias 22ba0e61e3 chore: add docstring to explain what the migration method does 2025-04-27 09:12:39 +02:00
Matthias 6e83890a13 chore: reduce log-level of binance migration 2025-04-27 08:45:06 +02:00
Matthias 8a8cc5e563 chore: don't rerun binance futures migration
once it's migrated, new migrations shouldn't be necessary.
2025-04-27 08:44:48 +02:00
Matthias e1bf3bb825 chore: improve type-safety for migrations 2025-04-26 18:14:39 +02:00
James Lin 0a4f82bc22 update columns from ORDERFLOW_ADDED_COLUMNS 2025-04-26 10:24:53 -04:00
James Lin 5ee7f8037d fix 2025-04-26 10:20:09 -04:00
James Lin 12728c0fcc fix 2025-04-26 10:18:39 -04:00
Matthias 875216cdc5 refactor: improved variable naming 2025-04-26 09:20:55 +02:00
James Lin 362f0895f4 skip trade-related columns 2025-04-25 16:13:33 -04:00
Matthias 903b580026 fix: new_pair logic for binance won't work on funding rates
closes #11680
2025-04-25 16:18:12 +02:00
Matthias 073b625355 test: update test for calculate_market_change 2025-04-25 08:28:31 +02:00
Matthias b3b21e6b93 fix: market_change deviation between backtesting and hyperopt
closes #11672
2025-04-25 08:28:19 +02:00
Matthias b8b4b2d2f3 Merge pull request #11676 from mrpabloyeah/fix-mixed-tag-stats-in-backtest-output
Fix mixed tag stats in backtest output
2025-04-24 19:43:19 +02:00
mrpabloyeah 0cf1f6dc88 Fix 2 for passing CI 2025-04-24 14:53:25 +02:00
mrpabloyeah 502d50c988 Fix for passing CI 2025-04-24 14:44:33 +02:00
mrpabloyeah ed8b8fbf61 Fix mixed tag stats in backtest output 2025-04-24 14:24:36 +02:00
Matthias 956398ab21 Merge pull request #11671 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-04-24 06:25:54 +02:00
Freqtrade Bot f3154423bd chore: update pre-commit hooks 2025-04-24 03:17:07 +00:00
Matthias fb64ac942b chore: raise freqtrade exception so upstream handling is in place 2025-04-23 20:18:58 +02:00
Matthias 3fc40f45b3 chore: simplify diff in hyperopt-tinterface
Use aliases where possible.
2025-04-23 20:15:24 +02:00
Matthias ca5ccc8799 chore: cleanup some code 2025-04-23 20:07:40 +02:00
Matthias 057cc2538e chore: use optuna distribution aliases in parameters 2025-04-23 20:02:58 +02:00
Matthias ed22789a1a chore: cleanup unused import 2025-04-23 19:53:07 +02:00
Matthias 2abf22e37b chore: simplify usage of data_pickle_file 2025-04-23 19:50:17 +02:00
Matthias 9b08b51ad8 chore: cleanup dead code 2025-04-23 19:50:17 +02:00
Matthias 83cdf76636 chore: simplify import/exports 2025-04-23 19:50:17 +02:00
Matthias f545113840 chore: improve EstimatorType type 2025-04-23 19:50:17 +02:00
Matthias f86bc71c43 chore: cleanup some test code 2025-04-23 19:19:55 +02:00
Matthias 8af9875d45 docs: remove scikit-optimize references from docs 2025-04-23 19:17:43 +02:00
Matthias 8a9b31eccd chore: remove scikit-optimize dependency 2025-04-23 19:16:17 +02:00
Matthias 124c051432 docs: add "realized_profit" field to trade object docs
closes #11668
2025-04-22 19:09:07 +02:00
Matthias 67bcf38ea5 Merge pull request #11669 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-04-22 07:19:45 +02:00
Matthias a98dd0eea3 chore: Pin docker github action versions 2025-04-22 07:02:07 +02:00
Matthias 103f64227f chore: Pin more github action versions 2025-04-22 07:00:33 +02:00
Matthias 5b481009d6 chore(ci): pin github actions 2025-04-22 06:56:45 +02:00
Freqtrade Bot 3da6a8146e chore: update pre-commit hooks 2025-04-22 03:16:59 +00:00
Matthias a8b313d387 Merge pull request #11661 from freqtrade/dependabot/pip/develop/mkdocs-206b511215
chore(deps): bump mkdocs-material from 9.6.11 to 9.6.12 in the mkdocs group
2025-04-21 11:52:58 +02:00
Matthias 574419f3a4 test: freeze time to avoid random test failure 2025-04-21 11:22:16 +02:00
Matthias 5793888113 Merge pull request #11665 from freqtrade/dependabot/pip/develop/uvicorn-0.34.2
chore(deps): bump uvicorn from 0.34.1 to 0.34.2
2025-04-21 08:57:00 +02:00
Matthias b835af58c5 Merge pull request #11666 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.51
chore(deps): bump prompt-toolkit from 3.0.50 to 3.0.51
2025-04-21 08:15:35 +02:00
Matthias ca0b6998f0 Merge pull request #11662 from freqtrade/dependabot/pip/develop/packaging-25.0
chore(deps): bump packaging from 24.2 to 25.0
2025-04-21 08:15:02 +02:00
Matthias 77c3894fe2 Merge pull request #11667 from freqtrade/dependabot/pip/develop/ruff-0.11.6
chore(deps-dev): bump ruff from 0.11.5 to 0.11.6
2025-04-21 08:14:46 +02:00
dependabot[bot] 0c46afaee4 chore(deps-dev): bump ruff from 0.11.5 to 0.11.6
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.5 to 0.11.6.
- [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/0.11.5...0.11.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 04:07:25 +00:00
dependabot[bot] b6e9609039 chore(deps): bump prompt-toolkit from 3.0.50 to 3.0.51
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.50 to 3.0.51.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/main/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.50...3.0.51)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 04:06:57 +00:00
dependabot[bot] 1b6dadbc87 chore(deps): bump uvicorn from 0.34.1 to 0.34.2
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.34.1 to 0.34.2.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.34.1...0.34.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 04:06:46 +00:00
dependabot[bot] 1b18856d0b chore(deps): bump packaging from 24.2 to 25.0
Bumps [packaging](https://github.com/pypa/packaging) from 24.2 to 25.0.
- [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/24.2...25.0)

---
updated-dependencies:
- dependency-name: packaging
  dependency-version: '25.0'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 04:06:02 +00:00
dependabot[bot] 35e9805ef1 chore(deps): bump mkdocs-material in the mkdocs group
Bumps the mkdocs group with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material).


Updates `mkdocs-material` from 9.6.11 to 9.6.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.6.11...9.6.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-21 04:02:45 +00:00
Matthias dcf38557ee chore: add segment about AI
We'll reserve the right to close questions asking for help with AI
generated strategies or configurations.
2025-04-20 15:55:34 +02:00
Matthias 54d78fd1c6 chore: update documentation link in template 2025-04-20 15:54:47 +02:00
Matthias 6040c391d3 chore: improved bug-report wording 2025-04-20 15:51:16 +02:00
mrpabloyeah b4a5f66f29 Return the trade duration along with the profit threshold returned by custom_roi 2025-04-20 13:39:35 +02:00
mrpabloyeah e105ea660b Improve documentation 2025-04-20 13:16:27 +02:00
mrpabloyeah 1149393789 Fix LocalTrade compatibility correctly 2025-04-20 01:33:34 +02:00
mrpabloyeah d4655660f4 Fix LocalTrade compatibility in custom_roi and min_roi_reached_entry 2025-04-19 16:36:13 +02:00
mrpabloyeah e656063771 Add custom_roi strategy callback 2025-04-19 15:42:44 +02:00
Matthias 0c6ed588b5 Merge pull request #11655 from freqtrade/fix/11650
Fix max-stake-amount with high leverage
2025-04-19 14:19:39 +02:00
Matthias 45dc667233 Merge pull request #11651 from hippocritical/develop
added mentioning of the base exchange folder to list-data
2025-04-18 15:34:57 +02:00
Matthias 10d79f6232 feat: update --datadir description
Updates across all subcommands and when running with `--help`.
2025-04-18 14:59:06 +02:00
Matthias 3c20106e7d Merge pull request #11652 from Code0x58/bugfix/log_config
Fix config["log_config"] use so it doesn't break during deepcopy/backtesting
2025-04-18 14:53:41 +02:00
Matthias 1e1c9a28f2 chore: simplify types in exchange class 2025-04-18 14:46:13 +02:00
Matthias 6a01985fd1 test: add test case to ensure max_stake considers leverage tiers 2025-04-18 14:35:54 +02:00
Matthias be572ba046 fix: include leverage tiers in max_stake calculation
closes #11650
2025-04-18 14:19:28 +02:00
Matthias f711afd843 chore: slight reordering within stake_amount_limit method 2025-04-18 14:07:04 +02:00
Matthias d6f58cd6cf test: fix leverage test 2025-04-18 14:02:05 +02:00
Matthias 9dd1ce71ca fix: improve get_max_leverage logic 2025-04-18 14:01:34 +02:00
Matthias 0a0a8428d5 chore: simplify method 2025-04-18 13:02:22 +02:00
Matthias fdc248a1b1 fix: entry_stakes should be leverage adjusted 2025-04-18 12:53:52 +02:00
Matthias bfadd54ea3 Merge pull request #11653 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-04-17 06:29:17 +02:00
Freqtrade Bot ed23dc0f72 chore: update pre-commit hooks 2025-04-17 03:16:17 +00:00
hippocritical 27e3ae8c24 added list-data comment for --datadir to have the user not specify [exchange]/futures/ by themselves. They should use --trading-mode.
They will get a timerange of 1970-1970 in conjunction with --show-timerange otherwise.
2025-04-16 21:23:26 +02:00
hippocritical f6cb446bff added list-data comment for --datadir to have the user not specify [exchange]/futures/ by themselves. They should use --trading-mode.
They will get a timerange of 1970-1970 in conjunction with --show-timerange otherwise.
2025-04-16 21:22:55 +02:00
Matthias 72786ca706 chore: drop pandas_ta from default template 2025-04-16 18:28:07 +02:00
Matthias 825c059c2e chore: update ta-lib binaries 2025-04-16 07:12:56 +02:00
Oliver Bristow 3e2a799d9f Fix config["log_config"] use so it doesn't break in backtesting
The issue as that `logging.config.dictConfig(log_config)` ends up using the dictionary in place and including non-picklable items (saw an RLock), blowing up backtesting.
2025-04-16 00:13:05 +01:00
Matthias 8e8f4dbdd3 chore: drop stable-baselines install from mac x64
in line with #11541
2025-04-15 06:38:08 +02:00
Matthias 841f57800e Merge pull request #11645 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-04-15 06:35:55 +02:00
Matthias 865c253922 chore: bump dockerfile and windows install numpy 2025-04-15 06:31:16 +02:00
Matthias cd6e06c86e chore: bump ta-lib to 0.5.4
This version supports numpy2 - while still remaining on ta-lib C of 0.4
This will avoid huge update problems, as the underlying library doesn't need to be updated
2025-04-15 06:30:34 +02:00
Matthias 422f225e8e chore: update numpy pyproject lock range 2025-04-15 06:29:26 +02:00
Matthias 9921c54882 chore: bump nunmpy to 2.2.4 2025-04-15 06:28:40 +02:00
Freqtrade Bot 5b6ea5ca90 chore: update pre-commit hooks 2025-04-15 03:17:51 +00:00
Matthias 162c1c606c Merge pull request #11639 from freqtrade/dependabot/pip/develop/urllib3-2.4.0
chore(deps): bump urllib3 from 2.3.0 to 2.4.0
2025-04-14 18:26:23 +02:00
Matthias de0759c36a Merge pull request #11635 from freqtrade/dependabot/pip/develop/uvicorn-0.34.1
chore(deps): bump uvicorn from 0.34.0 to 0.34.1
2025-04-14 07:41:30 +02:00
Matthias 1dbef58fe9 Merge pull request #11637 from freqtrade/dependabot/pip/develop/ccxt-4.4.75
chore(deps): bump ccxt from 4.4.73 to 4.4.75
2025-04-14 07:17:59 +02:00
Matthias a63280bfa5 Merge pull request #11640 from freqtrade/dependabot/pip/develop/markdown-3.8
chore(deps): bump markdown from 3.7 to 3.8
2025-04-14 07:17:22 +02:00
Matthias 093a3f0e25 Merge pull request #11638 from freqtrade/dependabot/pip/develop/ruff-0.11.5
chore(deps-dev): bump ruff from 0.11.4 to 0.11.5
2025-04-14 07:12:39 +02:00
Matthias f8fc8a7f33 Merge pull request #11636 from freqtrade/dependabot/pip/develop/catboost-1.2.8
chore(deps): bump catboost from 1.2.7 to 1.2.8
2025-04-14 07:03:17 +02:00
dependabot[bot] f8bf850673 chore(deps): bump uvicorn from 0.34.0 to 0.34.1
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.34.0 to 0.34.1.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/docs/release-notes.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.34.0...0.34.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 04:54:35 +00:00
Matthias d06a531c72 Merge pull request #11634 from freqtrade/dependabot/pip/develop/pydantic-2.11.3
chore(deps): bump pydantic from 2.11.2 to 2.11.3
2025-04-14 06:53:12 +02:00
dependabot[bot] b341bc5a8c chore(deps): bump markdown from 3.7 to 3.8
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.7 to 3.8.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.7...3.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 03:36:31 +00:00
dependabot[bot] 5ac1cf929b chore(deps): bump urllib3 from 2.3.0 to 2.4.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.3.0 to 2.4.0.
- [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.3.0...2.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 03:36:23 +00:00
dependabot[bot] eca2ca3dc2 chore(deps-dev): bump ruff from 0.11.4 to 0.11.5
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.4 to 0.11.5.
- [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/0.11.4...0.11.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 03:36:19 +00:00
dependabot[bot] 1d8fd059c6 chore(deps): bump ccxt from 4.4.73 to 4.4.75
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.73 to 4.4.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/v4.4.73...v4.4.75)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 03:36:07 +00:00
dependabot[bot] a95972ae3f chore(deps): bump catboost from 1.2.7 to 1.2.8
Bumps [catboost](https://github.com/catboost/catboost) from 1.2.7 to 1.2.8.
- [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.7...v1.2.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 03:35:59 +00:00
dependabot[bot] 37985dfeea chore(deps): bump pydantic from 2.11.2 to 2.11.3
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.2 to 2.11.3.
- [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.11.2...v2.11.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 03:35:46 +00:00
Matthias 768efc45ff Merge pull request #11628 from mrpabloyeah/allow-warning-messages-when-starting-backtesting
Allow warning messages when starting backtesting
2025-04-13 19:28:20 +02:00
mrpabloyeah e6b5233d2f Add space after docstring 2025-04-13 13:25:30 +02:00
mrpabloyeah 6fa1133c61 Remove space at the end of logging_mixin.py 2025-04-13 13:12:43 +02:00
Matthias b1adb2b13d Merge pull request #11627 from arenstar/ftclient_trades_order_fix
Ftclient trades order fix
2025-04-13 13:09:07 +02:00
mrpabloyeah 16378d32d7 Show only selected warnings using the force_show parameter 2025-04-13 13:06:35 +02:00
mrpabloyeah 33105a996e Show only whitelist warnings 2025-04-13 12:27:19 +02:00
viotemp1 20fca07d8f fixed mypy errors
freqtrade/optimize/space/optunaspaces.py:39: error: Argument 1 to "__init__" of "IntDistribution" has incompatible type "int | float"; expected "int"  [arg-type]
	freqtrade/optimize/space/optunaspaces.py:39: error: Argument 2 to "__init__" of "IntDistribution" has incompatible type "int | float"; expected "int"  [arg-type]
remove all references for ExtraTreesRegressor and skopt.space
2025-04-13 12:39:44 +03:00
viotemp1 8ee40ade45 update docs/advanced-hyperopt.md 2025-04-13 11:27:33 +03:00
Matthias a6d76cad39 test: improve api test to ensure the default is what we expect 2025-04-13 10:24:34 +02:00
viotemp1 30ead79e11 fixed freqtrade/optimize/space/__init__.py:1:66: RUF100 [*] Unused noqa directive (unused: F401) 2025-04-13 11:22:07 +03:00
viotemp1 5c859d929b add optunaspaces.py 2025-04-13 11:06:39 +03:00
viotemp1 c89058788e remove decimal module 2025-04-13 09:49:33 +03:00
viotemp1 35c3868c56 change for SKDecimal and othercomments 2025-04-13 08:58:42 +03:00
mrpabloyeah 3d1568783e Allow warning messages when starting backtesting 2025-04-13 01:39:03 +02:00
David Arena 194d53acf8 fix: adding checks for trades and order_by_id 2025-04-12 16:57:30 +02:00
Matthias 85689ebc1c test: update skdecimal test to use optuna 2025-04-12 12:37:17 +02:00
Matthias 4fcc9dd587 feat: use floatDistribution for SKDecimal 2025-04-12 12:10:48 +02:00
Matthias 05f19d574a chore: remove commented skopt usages 2025-04-12 10:13:42 +02:00
Matthias 1a24559729 chore: cleanup old usages 2025-04-12 10:08:41 +02:00
Matthias 7a51c9d540 types: slightly improved typing 2025-04-12 10:05:11 +02:00
Matthias 1d22377cad chore: remove some skopt usages 2025-04-12 09:58:44 +02:00
Matthias 82cd343fc1 Merge pull request #11626 from hippocritical/develop
removed legacy port 3000 at frequenthippo.ddns.net
2025-04-12 07:59:14 +02:00
David Arena 751d98495f fix: tests/formatting 2025-04-12 00:02:31 +02:00
David Arena 49b119f1dc Feat: option for order_by_id 2025-04-11 23:53:27 +02:00
David Arena 6ba0eaf593 Merge pull request #1 from freqtrade/develop
Merge from upstream
2025-04-11 23:40:05 +02:00
hippocritical 87f07d5f91 fixed description 2025-04-11 21:11:54 +02:00
hippocritical a24f5d64a1 removed legacy port 3000 at frequenthippo.ddns.net 2025-04-11 20:25:23 +02:00
Matthias 30eb32862c docs: update title in parameter table 2025-04-11 06:31:15 +02:00
Matthias 6ae5724ad1 Merge pull request #11618 from mrpabloyeah/hyperopt_loss_max_drawdown_per_pair
Add new loss function based on profit/drawdown ratio per pair
2025-04-10 07:14:34 +02:00
Matthias 90a57e7384 Merge pull request #11621 from freqtrade/dependabot/docker/python-3.13.3-slim-bookworm
chore(deps): bump python from 3.12.9-slim-bookworm to 3.12.10-slim-bookworm
2025-04-10 06:43:18 +02:00
Matthias 16379bbcc5 test: small adjustment to test
(simplifying future usage)
2025-04-10 06:43:12 +02:00
Matthias 05bb7e2fad Merge pull request #11620 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-04-10 06:22:55 +02:00
Matthias 6e98635345 chore: bump armhf dockerfile to 3.11.12 2025-04-10 06:22:38 +02:00
Matthias de8dd83340 chore: docker should stay at 3.12 for now. 2025-04-10 06:21:39 +02:00
dependabot[bot] b3296b75e9 chore(deps): bump python
Bumps python from 3.12.9-slim-bookworm to 3.13.3-slim-bookworm.

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-10 03:36:43 +00:00
Freqtrade Bot 2f9ec970a5 chore: update pre-commit hooks 2025-04-10 03:15:12 +00:00
mrpabloyeah 568c579cab Improve documentation 2025-04-10 00:46:07 +02:00
Matthias e116b71400 feat: Improve ruff config (use RUF rules) 2025-04-09 20:10:44 +02:00
Matthias a85dc6972d chore: Fix errors through S404 noqa's 2025-04-09 20:10:19 +02:00
Matthias feab28de91 chore: unpack instead of list concat 2025-04-09 20:05:15 +02:00
Matthias 0aa05855d5 chore: unpack instead of list concat 2025-04-09 20:03:38 +02:00
Matthias 44591053b6 refactor: simplify some checks 2025-04-09 19:58:55 +02:00
Matthias c11de3ac38 chore: remove pointless ambiguous unicode characters 2025-04-09 19:52:05 +02:00
Matthias b797a5bf2f chore: remove some unused noqa's 2025-04-09 19:51:38 +02:00
Matthias 1d9d2fce7f chore: add noQA for S404 2025-04-09 19:49:02 +02:00
Matthias 0e92372b0b chore: don't use list[0] - but next 2025-04-09 19:42:46 +02:00
Matthias 68fbab5c32 test: fix type-problem in tests 2025-04-09 19:31:30 +02:00
Matthias 596f6711f3 chore: don't use deprecated logger.warn method 2025-04-09 18:58:24 +02:00
mrpabloyeah c2296d83c3 Fix for passing CI 2025-04-08 23:17:34 +02:00
mrpabloyeah 9a3ada65f5 Complete the integration on freqtrade 2025-04-08 23:12:51 +02:00
mrpabloyeah df50e03239 Complete the integration on freqtrade 2025-04-08 22:58:42 +02:00
Matthias 9d0f5df549 docs: update docs about reduce_df_footprint 2025-04-08 19:38:23 +02:00
Matthias 6b41594c53 refactor: _if_enabled_populate_trades may mutate the dataframe 2025-04-08 19:33:50 +02:00
Matthias 2d194995bc feat: add reduce_df_footprint to backtest/hyperopt modes
Co-authored-by: alisayyah <ali.sayyah2@gmail.com>
2025-04-08 19:21:49 +02:00
mrpabloyeah 904580b914 Fix 2 for passing CI 2025-04-08 17:41:13 +02:00
mrpabloyeah 9373779fba Fix for passing CI 2025-04-08 17:29:12 +02:00
mrpabloyeah 692bb36c80 Add new loss function based on profit/drawodown ratio per pair 2025-04-08 17:06:43 +02:00
Matthias 8de5e2b7b8 Merge pull request #11609 from Axel-CH/doc/update-stopbuy-doc
doc: Update telegram usage doc to match paused state feature and usage
2025-04-08 06:49:52 +02:00
Matthias 6185761727 chore: add note about multiTarget being a copy
It's a copy of XGBoostRegressor.
2025-04-08 06:33:20 +02:00
Matthias 6c625c77c0 Merge pull request #11616 from freqtrade/alias-xgboost-model
Make XgboostMulti an alias of Xgboost
2025-04-08 06:30:07 +02:00
Matthias 9950ed715e Merge pull request #11617 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-04-08 06:28:17 +02:00
Matthias 9b9ef6ae6d docs: Minor adjustment to doc wording 2025-04-08 06:26:49 +02:00
Freqtrade Bot 8075106286 chore: update pre-commit hooks 2025-04-08 03:14:59 +00:00
Matthias 6b033c211e chore: ensure trades are committed after the exit loop 2025-04-07 19:52:35 +02:00
Matthias 8be31275d7 chore: use "pass" for empty type 2025-04-07 19:31:14 +02:00
Matthias a3d3a4de51 test: Update test to reflect new total_profit calculation 2025-04-07 19:28:43 +02:00
Matthias f1b890954a test: enable total_profit_ratio asserts 2025-04-07 19:28:43 +02:00
Matthias 0f2ff70bdf test: adjust test to reflect reality
(amount is * leverage)
2025-04-07 19:28:43 +02:00
Matthias 4c42bd7100 fix: correct relative total_profit calculation
closes freqtrade/frequi#2369
2025-04-07 19:28:43 +02:00
Matthias 9acf8943ed Don't recalculate profit_abs twice 2025-04-07 19:28:43 +02:00
Matthias 4986f356ee refactor: Type backtest results 2025-04-07 19:28:43 +02:00
Matthias ca390eea6a refactor: move import to list_exchanges function 2025-04-07 19:28:43 +02:00
Axel-CH cd9c45e875 doc: slight order change in pause telegram command description 2025-04-07 09:23:49 -04:00
Axel-CH c90ac30077 doc: combine /pause and /stopentry /stopbuy sections in telegram usage doc 2025-04-07 09:20:21 -04:00
Matthias 466914d5c7 Merge pull request #11614 from freqtrade/dependabot/pip/develop/pydantic-2.11.2
chore(deps): bump pydantic from 2.11.1 to 2.11.2
2025-04-07 06:59:03 +02:00
Matthias f86f955e24 Merge pull request #11613 from freqtrade/dependabot/pip/develop/ruff-0.11.4
chore(deps-dev): bump ruff from 0.11.2 to 0.11.4
2025-04-07 06:47:48 +02:00
Matthias affab24185 Merge pull request #11611 from freqtrade/dependabot/pip/develop/mkdocs-004cc99d25
chore(deps): bump mkdocs-material from 9.6.10 to 9.6.11 in the mkdocs group
2025-04-07 06:43:42 +02:00
Matthias 125126fb86 Merge pull request #11612 from freqtrade/dependabot/pip/develop/ccxt-4.4.73
chore(deps): bump ccxt from 4.4.71 to 4.4.73
2025-04-07 06:36:35 +02:00
Matthias 010ed6992b Merge pull request #11610 from freqtrade/dependabot/pip/develop/pytest-acfb5e3268
chore(deps-dev): bump pytest-cov from 6.0.0 to 6.1.1 in the pytest group
2025-04-07 06:26:52 +02:00
dependabot[bot] d8bbd4054e chore(deps): bump pydantic from 2.11.1 to 2.11.2
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.11.1 to 2.11.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.11.1...v2.11.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:27:54 +00:00
dependabot[bot] baefaeb311 chore(deps-dev): bump ruff from 0.11.2 to 0.11.4
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.11.2 to 0.11.4.
- [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/0.11.2...0.11.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:27:49 +00:00
dependabot[bot] 288db16198 chore(deps): bump ccxt from 4.4.71 to 4.4.73
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.71 to 4.4.73.
- [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/v4.4.71...v4.4.73)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:27:39 +00:00
dependabot[bot] eb4199fe80 chore(deps): bump mkdocs-material in the mkdocs group
Bumps the mkdocs group with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material).


Updates `mkdocs-material` from 9.6.10 to 9.6.11
- [Release notes](https://github.com/squidfunk/mkdocs-material/releases)
- [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG)
- [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.10...9.6.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:27:25 +00:00
dependabot[bot] 9a151b1ecf chore(deps-dev): bump pytest-cov from 6.0.0 to 6.1.1 in the pytest group
Bumps the pytest group with 1 update: [pytest-cov](https://github.com/pytest-dev/pytest-cov).


Updates `pytest-cov` from 6.0.0 to 6.1.1
- [Changelog](https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest-cov/compare/v6.0.0...v6.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-07 03:27:16 +00:00
Axel-CH 7dddab18c4 doc: update telegram usage doc to match paused state feature and usage 2025-04-06 20:02:44 -04:00
Matthias a85afd9af3 feat: add "indicator_periods_candles" to config schema 2025-04-06 12:52:20 +02:00
Matthias d09efa6dd1 Merge pull request #11598 from Code0x58/feature/test-args-coupling
Add tests for coupling of `AVAILABLE_CLI_OPTIONS`, `ARGS_*`, and `Arguments`
2025-04-05 18:48:00 +02:00
Matthias f817b21d17 chore: fix ruff 2025-04-05 18:14:20 +02:00
Matthias b7298f472c Merge pull request #11561 from mrpabloyeah/calculate-and-save-all-metrics-per-pair
Calculate and save all metrics per pair
2025-04-05 18:12:35 +02:00
Matthias 96baa90003 Merge pull request #11599 from freqtrade/feat/config_schema_precommit
Add custom pre-commit hook for schema extraction
2025-04-04 19:32:35 +02:00
Robert Caulk fae7198bb4 fix: Make XgboostMulti an alias of Xgboost since it supports multiple targets implicitly now 2025-04-04 13:53:44 +02:00
Oliver Bristow 55be046933 Add test for coupling of AVAILABLE_CLI_OPTIONS and Arguments 2025-04-04 11:21:20 +01:00
Oliver Bristow 38fa7068ca Add test for coupling of AVAILABLE_CLI_OPTIONS and ARGS_* 2025-04-04 11:21:20 +01:00
Matthias e5389be209 chore: import sys only when necessary 2025-04-04 09:32:16 +02:00
Matthias 19a997a2db chore: add comment for custom pre-commit hook 2025-04-04 07:25:37 +02:00
Matthias eac440649b refactor: move config_schema to it's own package
This is to avoid import conflicts and allow running
 the schema extraction without a full freqtrade installation.
2025-04-04 07:23:45 +02:00
Matthias 21a47bb1ac chore: add config-schema extract to pre-commit 2025-04-04 07:20:04 +02:00
Matthias b839e159a8 chore: Support config schema extract without installation 2025-04-04 07:19:47 +02:00
Matthias 91df1257e7 chore: update install-ui command partial 2025-04-04 06:48:42 +02:00
Matthias 88f8e831d7 test: Update ui test to also test for pre-release filtering 2025-04-03 20:28:47 +02:00
Matthias 627eee5fcf feat: allow explicit download of pre-release UI versions 2025-04-03 20:28:25 +02:00
Matthias 26c7752b7c feat: don't install pre-releases 2025-04-03 20:21:08 +02:00
Matthias 1aaf0c2034 Merge pull request #11539 from Axel-CH/feat/add-paused-state
Feature: add paused state
2025-04-03 06:48:48 +02:00
Matthias ac3a5900b4 Merge pull request #11593 from mrpabloyeah/fix-drawdown-calculation-2
Fix drawdown calculation when maximum drawdown happens on the first trade
2025-04-03 06:31:53 +02:00
Matthias 60695fe205 Merge pull request #11595 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-04-03 06:24:17 +02:00
Freqtrade Bot 2e2f40ca10 chore: update pre-commit hooks 2025-04-03 03:14:19 +00:00
Matthias 1f09b90dbe chore: improved docstring 2025-04-02 19:43:56 +02:00
Matthias 9c39b99ec6 test: add test case for new next_limit_in_list usecase 2025-04-02 19:43:20 +02:00
Matthias 2e343b9fbd fix: add l2 upper-limit (for gate)
closes #11592
2025-04-02 19:41:07 +02:00
viotemp1 90aaaa50fc fix increasing memory usage. 2025-04-02 18:45:49 +03:00
mrpabloyeah 087fb31f26 Fix for passing CI 2025-04-02 16:02:42 +02:00
mrpabloyeah 3edc442f48 Fix drawdown calculation when maximum drawdown occurs on the first trade 2025-04-02 15:46:05 +02:00
Matthias b6cf3cc57d Merge branch 'develop' into pr/mrpabloyeah/11561 2025-04-02 07:05:36 +02:00
Matthias be2d97b559 Merge pull request #11590 from mrpabloyeah/fix-drawdown-calculation
Fix drawdown calculation when there are no winning trades
2025-04-02 07:04:48 +02:00
mrpabloyeah a3f23fd4fb Also fix the expected result in the test 2025-04-01 22:51:29 +02:00
mrpabloyeah 68f32d76ae Fix drawdown calculation when there are no winning trades 2025-04-01 20:54:03 +02:00
Sung-Kyu Yoo bffb3120c1 fix: remove space in rename_dict/rename_dict_old 2025-04-01 22:18:26 +09:00
Matthias bb596d6f8d Merge pull request #11586 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-04-01 06:51:59 +02:00
Axel-CH ca573a828f chore: update _rpc_pause return wording 2025-04-01 00:34:38 -04:00
Freqtrade Bot e9cd840f5b chore: update pre-commit hooks 2025-04-01 03:20:59 +00:00
viotemp1 3fcf6559ab change from skopt.space.Real to optuna.distributions.FloatDistribution 2025-03-31 13:48:12 +03:00
Matthias 7894c08b83 Merge pull request #11574 from freqtrade/dependabot/pip/develop/types-5caadd7f67
chore(deps-dev): bump types-requests from 2.32.0.20250306 to 2.32.0.20250328 in the types group
2025-03-31 09:40:31 +02:00
Matthias 296c14afc0 chore: bump pre-commit types-requests 2025-03-31 09:06:26 +02:00
dependabot[bot] b2b1518708 chore(deps-dev): bump types-requests in the types group
Bumps the types group with 1 update: [types-requests](https://github.com/python/typeshed).


Updates `types-requests` from 2.32.0.20250306 to 2.32.0.20250328
- [Commits](https://github.com/python/typeshed/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 07:04:07 +00:00
Matthias 93967ad8f0 Merge pull request #11580 from freqtrade/dependabot/pip/develop/ccxt-4.4.71
chore(deps): bump ccxt from 4.4.69 to 4.4.71
2025-03-31 09:02:38 +02:00
Matthias 6082beb58d Merge pull request #11579 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.40
chore(deps): bump sqlalchemy from 2.0.39 to 2.0.40
2025-03-31 08:14:26 +02:00
Matthias 8309853439 Merge pull request #11583 from freqtrade/dependabot/pip/develop/pytz-2025.2
chore(deps): bump pytz from 2025.1 to 2025.2
2025-03-31 07:55:00 +02:00
Matthias 2522a3be61 Merge pull request #11582 from freqtrade/dependabot/pip/develop/orjson-3.10.16
chore(deps): bump orjson from 3.10.15 to 3.10.16
2025-03-31 07:48:31 +02:00
Matthias 19b38a02fa Merge pull request #11578 from freqtrade/dependabot/pip/develop/humanize-4.12.2
chore(deps): bump humanize from 4.12.1 to 4.12.2
2025-03-31 07:25:35 +02:00
Matthias 4935e23271 Merge pull request #11581 from freqtrade/dependabot/pip/develop/rich-14.0.0
chore(deps): bump rich from 13.9.4 to 14.0.0
2025-03-31 07:13:15 +02:00
Matthias a4f9a25007 Merge pull request #11577 from freqtrade/dependabot/pip/develop/pydantic-2.11.1
chore(deps): bump pydantic from 2.10.6 to 2.11.1
2025-03-31 06:55:18 +02:00
Matthias 795a0b81ee chore: remove workaround for Kraken ".F" workaround 2025-03-31 06:47:23 +02:00
Matthias e5268a0449 chore: bump sqlalchemy in pre-commit config 2025-03-31 06:28:40 +02:00
Matthias c81761e3e2 Merge pull request #11576 from freqtrade/dependabot/pip/develop/mkdocs-5dc90396f2
chore(deps): bump mkdocs-material from 9.6.9 to 9.6.10 in the mkdocs group
2025-03-31 06:27:48 +02:00
Matthias 8fbb4e1e60 Merge pull request #11575 from freqtrade/dependabot/pip/develop/pytest-535e56647f
chore(deps-dev): bump pytest-asyncio from 0.25.3 to 0.26.0 in the pytest group
2025-03-31 06:27:27 +02:00
dependabot[bot] 937aa5c70e chore(deps): bump pytz from 2025.1 to 2025.2
Bumps [pytz](https://github.com/stub42/pytz) from 2025.1 to 2025.2.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2025.1...release_2025.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:05:55 +00:00
dependabot[bot] db647ab4d5 chore(deps): bump orjson from 3.10.15 to 3.10.16
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.15 to 3.10.16.
- [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.10.15...3.10.16)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:05:49 +00:00
dependabot[bot] 98652bfd89 chore(deps): bump rich from 13.9.4 to 14.0.0
Bumps [rich](https://github.com/Textualize/rich) from 13.9.4 to 14.0.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.9.4...v14.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:05:45 +00:00
dependabot[bot] 63010bc5e9 chore(deps): bump ccxt from 4.4.69 to 4.4.71
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.69 to 4.4.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/v4.4.69...v4.4.71)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:05:41 +00:00
dependabot[bot] dd388a51e0 chore(deps): bump sqlalchemy from 2.0.39 to 2.0.40
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.39 to 2.0.40.
- [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>
2025-03-31 03:05:33 +00:00
dependabot[bot] 22f109bab1 chore(deps): bump humanize from 4.12.1 to 4.12.2
Bumps [humanize](https://github.com/python-humanize/humanize) from 4.12.1 to 4.12.2.
- [Release notes](https://github.com/python-humanize/humanize/releases)
- [Commits](https://github.com/python-humanize/humanize/compare/4.12.1...4.12.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:05:18 +00:00
dependabot[bot] 67e2d9c730 chore(deps): bump pydantic from 2.10.6 to 2.11.1
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.10.6 to 2.11.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.10.6...v2.11.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:05:12 +00:00
dependabot[bot] 07fb941758 chore(deps): bump mkdocs-material in the mkdocs group
Bumps the mkdocs group with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material).


Updates `mkdocs-material` from 9.6.9 to 9.6.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.6.9...9.6.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:05:07 +00:00
dependabot[bot] 6fca35adae chore(deps-dev): bump pytest-asyncio in the pytest group
Bumps the pytest group with 1 update: [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio).


Updates `pytest-asyncio` from 0.25.3 to 0.26.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.3...v0.26.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-31 03:04:57 +00:00
viotemp1 85f4a8daea fix formatting 2025-03-31 00:10:52 +03:00
viotemp1 2595479e43 change CategoricalParameter and IntParameter in parameters.py to use optuna.distributions CategoricalDistribution and IntDistribution instead of skopt 2025-03-30 21:13:15 +03:00
Matthias ac9b26cc57 fix: allow backtesting for specific exchanges 2025-03-30 19:34:01 +02:00
Robert Caulk 31aa397492 Merge pull request #11541 from freqtrade/drop_pytorch_support
drop support for macos x64 PyTorch
2025-03-30 17:43:24 +02:00
Matthias b77739b5ca docs: add exchange docs about hyperliquid historic data 2025-03-30 15:22:11 +02:00
viotemp1 b603771242 Merge branch 'freqtrade:develop' into optuna 2025-03-30 16:19:16 +03:00
Axel-CH 722d5b2319 test: update test of _rpc_pause after removal of specific fallback if bot already paused 2025-03-28 10:18:21 -04:00
Axel-CH 91ace759c5 chore: update _rpc_pause remove specific fallback if bot alreadu paused 2025-03-28 10:17:16 -04:00
Axel-CH 3d8d2fc0c6 test: update tests related to paused state status message wording 2025-03-28 02:32:15 -04:00
Axel-CH 58154d76ae chore: update paused state status message wording 2025-03-28 02:31:18 -04:00
viotemp1 9c1183bc59 fix formatting requirements-hyperopt.txt 2025-03-28 08:12:37 +02:00
Matthias 38feb90f9e chore: update function naming 2025-03-28 06:42:07 +01:00
Matthias 4632839fc5 chore(ci): run coveralls on ubuntu 24.04 runner 2025-03-27 20:05:27 +01:00
Matthias 26ea4fdcc9 chore(ci): simplified syntax 2025-03-27 19:22:35 +01:00
Matthias 3637d7a54c chore(ci): run mypy only on the latest OS each 2025-03-27 18:14:36 +01:00
Matthias 583e20dc9d chore: bump dev version to 2025.4-dev 2025-03-27 07:10:48 +01:00
viotemp1 6b78b1c882 fix formatting 2025-03-26 21:30:18 +02:00
viotemp1 ee3d46c8fa change default optimizer to NSGAIIISampler - best results so far 2025-03-26 21:25:56 +02:00
viotemp1 59e52bb601 fix type-errors by declaring the type of o_dimensions in convert_dimensions_to_optuna_space 2025-03-26 16:55:43 +02:00
viotemp1 553dbccec7 simplify get_optimizer 2025-03-26 16:42:09 +02:00
viotemp1 2e06eb0e7b update docs for optuna sampler 2025-03-26 08:46:05 +02:00
viotemp1 31c4d35932 update docs for optuna sampler 2025-03-26 08:44:46 +02:00
viotemp1 eb03382b2d remove SKOPT_MODEL_QUEUE_SIZE comments 2025-03-26 08:36:55 +02:00
Matthias bb08880c4a test: simplify test_worker_lifecycle 2025-03-26 06:48:57 +01:00
Matthias 948487518d test: improve test_worker_lifecycle 2025-03-26 06:44:39 +01:00
mrpabloyeah be5d158761 Calculate and save all metrics per pair (fix 5) 2025-03-25 22:03:22 +01:00
mrpabloyeah 4f2681500a Calculate and save all metrics per pair (fix 4) 2025-03-25 21:08:38 +01:00
mrpabloyeah 00237d68e4 Calculate and save all metrics per pair (fix 3) 2025-03-25 20:53:09 +01:00
mrpabloyeah 20325a2b5e Calculate and save all metrics per pair (fix 2) 2025-03-25 20:24:29 +01:00
mrpabloyeah be40e828a9 Calculate and save all metrics per pair (fix) 2025-03-25 20:16:57 +01:00
mrpabloyeah 916ef43f7f Calculate and save all metrics per pair 2025-03-25 19:53:40 +01:00
Axel-CH 2b01d2e06b feat: display current status in notification after reload config 2025-03-25 13:38:06 -04:00
viotemp1 fcd0c1d606 formatting fix 2025-03-25 19:16:08 +02:00
Axel-CH 0553486e55 feat: prevent raising position size using adjustment position in paused state 2025-03-25 12:09:24 -04:00
Axel-CH 4fa8c3f9ab fix: worker startup condition 2025-03-25 11:55:57 -04:00
Axel-CH 543c77fe00 chore: slight refactor on rpc stop handler 2025-03-25 11:43:23 -04:00
Axel-CH e77ce8d481 chore: cosmetic worker condition refactoring 2025-03-25 11:39:31 -04:00
Axel-CH 285867f8c6 test: add test_worker_lifecycle 2025-03-25 11:35:48 -04:00
viotemp1 276ef6cdde Merge branch 'freqtrade:develop' into optuna 2025-03-25 15:08:03 +02:00
viotemp1 c5088e6b66 fix formatting 2025-03-25 15:07:09 +02:00
viotemp1 62f05964b4 change optimizer to optuna 2025-03-25 14:06:35 +02:00
Axel-CH b2898cf742 feat: add stop state change from pause state 2025-03-23 22:27:49 -04:00
Axel-CH 31625befd1 feat: trigger startup function only when the bot leave the stopped state 2025-03-23 22:19:16 -04:00
Axel-CH 394535c2e8 chore: update telegram _stopentry handling function description 2025-03-23 22:13:09 -04:00
Axel-CH 16576d37b1 feat: allow force_exit, rpc_cancel_open_order and _rpc_count in paused state 2025-03-23 15:25:34 -04:00
Axel-CH 53bd2d71a0 test: update test_worker_paused 2025-03-23 15:13:57 -04:00
Axel-CH df4b44d09e feat: update worker to make paused state capable of bot startup and running process 2025-03-23 15:12:42 -04:00
Axel-CH b6b3429b62 chore: remove _pause handler to use already existing _stopentry handler 2025-03-23 14:44:30 -04:00
Axel-CH 0adb264c9b test: update test_telegram_init with pause 2025-03-23 14:43:05 -04:00
Axel-CH 445c3a67db add pause in telegram commandHandler init 2025-03-23 14:31:36 -04:00
Axel-CH 06c4b661f7 test: fix test__send_msg_keyboard after pause key removal 2025-03-23 14:17:06 -04:00
Axel-CH b8dffe0eb0 chore: revert telegram keyboard list, remove paused button 2025-03-23 04:09:18 -04:00
Axel-CH 85772ac7f7 test: update stopentry related tests for rpc api and telegram 2025-03-23 00:27:52 -04:00
Axel-CH 3ec72f88e2 test: update test_rpc_stopentry, small wording change on _rpc_stopentry status 2025-03-23 00:14:22 -04:00
Axel-CH 4f4f927b97 chore: wording alignement update between schema.json and .py 2025-03-22 23:58:57 -04:00
Axel-CH 46fab55378 feat: /pause telegram command now use _rpc_stopentry function 2025-03-22 23:57:07 -04:00
Axel-CH 1d44f75659 feat: update api, change /pause from individual route to alias with /stopentry and /stopbuy 2025-03-22 23:50:27 -04:00
Axel-CH a4416b885a feat: _rpc_stopentry to handle paused state, remove _rpc_pause 2025-03-22 23:45:01 -04:00
Axel-CH 209c2e0ceb doc: paused state small wording fix 2025-03-22 23:31:38 -04:00
Axel-CH 324aada2bc feat: add paused state to config schema, restore it in generated shema.json 2025-03-22 23:24:39 -04:00
Matthias 6f58e01f8e chore: drop support for macos x64 PyTorch 2025-03-22 20:15:18 +01:00
Axel-CH 50d60fad89 chore: remove paused state from schema.json enum 2025-03-21 20:13:04 -04:00
Axel-CH 7286568447 chore: change order of initial_states schema enum 2025-03-21 19:49:45 -04:00
Axel-CH 3116fd34cf chore: update wording on initial_state description field of schema 2025-03-21 19:18:57 -04:00
Axel-CH f70815dd8e test: update test_rpc_telegram with new paused state telegram commands 2025-03-21 19:04:14 -04:00
Axel-CH 47151e77e1 feat: add paused state to telegram commands 2025-03-21 19:02:48 -04:00
Axel-CH 5a1f96d35c doc: update the doc with newly added paused state 2025-03-21 18:45:49 -04:00
Axel-CH fe03bf7ce0 test: add test_worker_paused 2025-03-21 18:16:31 -04:00
Axel-CH d09160fff8 feat: allow entry only if state is running 2025-03-21 17:30:32 -04:00
Axel-CH f46c8cdc4a feat: add paused state path to api 2025-03-21 16:58:23 -04:00
Axel-CH db57f83922 feat: add paused state handler to rpc 2025-03-21 16:49:05 -04:00
Axel-CH bbf0ac83a1 feat: add paused state to State class 2025-03-21 12:01:28 -04:00
Axel-CH a9714727b1 feat: add paused state to initial state in schema 2025-03-21 11:54:44 -04:00
Matthias b6a65ce125 fix: pickle error due to Lock object
tb_logger get's closed after training.
So we need to re-assign the new one, otherwise pickling fails.

closes #10034
2025-03-11 19:53:41 +01:00
Matthias 315421037f Merge branch 'develop' into feat/plot_annotations 2025-02-10 07:13:55 +01:00
Matthias 4ff200d315 docs: clarify docs about plot annotation callback 2024-12-28 16:38:40 +01:00
Matthias 5700f789e2 chore: improve type-safety 2024-12-28 15:49:41 +01:00
Matthias 689767e3ca chore: rename response model attribute 2024-12-28 15:46:38 +01:00
Matthias 66efc9a469 docs: add documentation for plot_annotations 2024-12-28 15:43:45 +01:00
Matthias 4c3e477667 chore: rename Annotation type 2024-12-28 15:41:10 +01:00
Matthias 8cdae5f56e feat: add plot_annotations interface 2024-12-28 15:26:37 +01:00
Matthias 347295ecaf feat: Expand pair_candles with plot_annotations call 2024-12-28 15:18:02 +01:00
Matthias 7272204d58 feat: add MarkArea type 2024-12-28 15:17:16 +01:00
250 changed files with 41518 additions and 24162 deletions
+6 -2
View File
@@ -1,6 +1,6 @@
---
name: Bug report
about: Create a report to help us improve
about: Create a report to help us improve. Do not use this for strategy assistance.
title: ''
labels: "Triage Needed"
assignees: ''
@@ -12,7 +12,11 @@ Have you searched for similar issues before posting it?
If you have discovered a bug in the bot, please [search the issue tracker](https://github.com/freqtrade/freqtrade/issues?q=is%3Aissue).
If it hasn't been reported, please create a new issue.
Please do not use bug reports to request new features.
Has your strategy or configuration been generated by an AI model, and is now not working?
This is almost certainly NOT a bug in Freqtrade, but a problem with the code your AI model generated.
Please consult the documentation. We'll close such issues and point to the documentation.
Please do not use the bug report template to request new features.
-->
## Describe your environment
+1 -1
View File
@@ -1,6 +1,6 @@
---
name: Feature request
about: Suggest an idea for this project
about: Suggest a new feature or idea for this project
title: ''
labels: ''
assignees: ''
+6 -3
View File
@@ -1,6 +1,6 @@
---
name: Question
about: Ask a question you could not find an answer in the docs
about: Ask a question you could not find an answer in the docs. Use this template if you've got problems with your strategy.
title: ''
labels: "Question"
assignees: ''
@@ -8,9 +8,12 @@ assignees: ''
---
<!--
Have you searched for similar issues before posting it?
Did you have a VERY good look at the [documentation](https://www.freqtrade.io/en/latest/) and are sure that the question is not explained there
Did you have a VERY good look at the [documentation](https://www.freqtrade.io/) and are sure that the question is not explained there
Please do not use the question template to report bugs or to request new features.
Has your strategy or configuration been generated by an AI model, and is now not working?
Please consult the documentation. We'll close such issues and point to the documentation.
-->
## Describe your environment
@@ -22,4 +25,4 @@ Please do not use the question template to report bugs or to request new feature
## Your question
*Ask the question you have not been able to find an answer in the [Documentation](https://www.freqtrade.io/en/latest/)*
*Ask the question you have not been able to find an answer in the [Documentation](https://www.freqtrade.io/)*
@@ -34,7 +34,7 @@ jobs:
run: python build_helpers/binance_update_lev_tiers.py
- uses: peter-evans/create-pull-request@v7
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ secrets.REPO_SCOPED_TOKEN }}
add-paths: freqtrade/exchange/binance_leverage_tiers.json
+38 -114
View File
@@ -25,7 +25,7 @@ jobs:
strategy:
matrix:
os: [ "ubuntu-22.04", "ubuntu-24.04" ]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
@@ -38,8 +38,9 @@ jobs:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
with:
activate-environment: true
enable-cache: true
python-version: ${{ matrix.python-version }}
cache-dependency-glob: "requirements**.txt"
@@ -73,22 +74,23 @@ jobs:
python build_helpers/freqtrade_client_version_align.py
- name: Tests
if: (!(runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-22.04'))
if: (!(runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-24.04'))
run: |
pytest --random-order
- name: Tests with Coveralls
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-22.04')
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-24.04')
run: |
pytest --random-order --cov=freqtrade --cov=freqtrade_client --cov-config=.coveragerc
- name: Coveralls
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-22.04')
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-24.04')
env:
# Coveralls token. Not used as secret due to github not providing secrets to forked repositories
COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu
run: |
# Allow failure for coveralls
uv pip install coveralls
coveralls || true
- name: Run json schema extract
@@ -102,6 +104,8 @@ jobs:
python build_helpers/create_command_partials.py
- name: Check for repository changes
# TODO: python 3.13 slightly changed the output of argparse.
if: (matrix.python-version != '3.13')
run: |
if [ -n "$(git status --porcelain)" ]; then
echo "Repository is dirty, changes detected:"
@@ -139,11 +143,12 @@ jobs:
ruff format --check
- name: Mypy
if: matrix.os == 'ubuntu-24.04'
run: |
mypy freqtrade scripts tests
- name: Discord notification
uses: rjstone/discord-webhook-notify@v1
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
severity: error
@@ -154,8 +159,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ "macos-13", "macos-14", "macos-15" ]
python-version: ["3.10", "3.11", "3.12"]
os: [ "macos-14", "macos-15" ]
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
@@ -169,8 +174,9 @@ jobs:
check-latest: true
- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
with:
activate-environment: true
enable-cache: true
python-version: ${{ matrix.python-version }}
cache-dependency-glob: "requirements**.txt"
@@ -264,11 +270,12 @@ jobs:
ruff format --check
- name: Mypy
if: matrix.os == 'macos-15'
run: |
mypy freqtrade scripts
- name: Discord notification
uses: rjstone/discord-webhook-notify@v1
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
severity: info
@@ -281,7 +288,7 @@ jobs:
strategy:
matrix:
os: [ windows-latest ]
python-version: ["3.10", "3.11", "3.12"]
python-version: ["3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
@@ -294,8 +301,9 @@ jobs:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
with:
activate-environment: true
enable-cache: true
python-version: ${{ matrix.python-version }}
cache-dependency-glob: "requirements**.txt"
@@ -361,7 +369,7 @@ jobs:
shell: powershell
- name: Discord notification
uses: rjstone/discord-webhook-notify@v1
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
severity: error
@@ -395,7 +403,7 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: "3.12"
- uses: pre-commit/action@v3.0.1
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
docs-check:
runs-on: ubuntu-22.04
@@ -419,7 +427,7 @@ jobs:
mkdocs build
- name: Discord notification
uses: rjstone/discord-webhook-notify@v1
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
if: failure() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
severity: error
@@ -429,7 +437,7 @@ jobs:
build-linux-online:
# Run pytest with "live" checks
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
@@ -441,8 +449,9 @@ jobs:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@bd01e18f51369d5a26f1651c3cb451d3417e3bba # v6.3.1
with:
activate-environment: true
enable-cache: true
python-version: "3.12"
cache-dependency-glob: "requirements**.txt"
@@ -499,14 +508,14 @@ jobs:
- name: Check user permission
id: check
uses: scherermichael-oss/action-has-permission@1.0.6
uses: scherermichael-oss/action-has-permission@136e061bfe093832d87f090dd768e14e27a740d3 # 1.0.6
with:
required-permission: write
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Discord notification
uses: rjstone/discord-webhook-notify@v1
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
if: always() && steps.check.outputs.has-permission && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
with:
severity: info
@@ -578,7 +587,7 @@ jobs:
merge-multiple: true
- name: Publish to PyPI (Test)
uses: pypa/gh-action-pypi-publish@v1.12.4
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
with:
repository-url: https://test.pypi.org/legacy/
@@ -607,103 +616,18 @@ jobs:
merge-multiple: true
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.12.4
uses: pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc # v1.12.4
deploy-docker:
docker-build:
name: "Docker Build and Deploy"
needs: [ build-linux, build-macos, build-windows, docs-check, mypy-version-check, pre-commit ]
runs-on: ubuntu-22.04
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Extract branch name
id: extract-branch
run: |
echo "GITHUB_REF='${GITHUB_REF}'"
echo "branch=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT"
- name: Dockerhub login
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
# We need docker experimental to pull the ARM image.
- name: Switch docker to experimental
run: |
docker version -f '{{.Server.Experimental}}'
echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
docker version -f '{{.Server.Experimental}}'
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Available platforms
run: echo ${PLATFORMS}
env:
PLATFORMS: ${{ steps.buildx.outputs.platforms }}
- name: Build and test and push docker images
env:
BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }}
run: |
build_helpers/publish_docker_multi.sh
deploy-arm:
name: "Deploy Docker"
uses: ./.github/workflows/docker-build.yml
permissions:
packages: write
needs: [ deploy-docker ]
# Only run on 64bit machines
runs-on: [self-hosted, linux, ARM64]
if: (github.event_name == 'push' || github.event_name == 'schedule' || github.event_name == 'release') && github.repository == 'freqtrade/freqtrade'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Extract branch name
id: extract-branch
run: |
echo "GITHUB_REF='${GITHUB_REF}'"
echo "branch=${GITHUB_REF##*/}" >> "$GITHUB_OUTPUT"
- name: Dockerhub login
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
- name: Build and test and push docker images
env:
BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }}
GHCR_USERNAME: ${{ github.actor }}
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
build_helpers/publish_docker_arm64.sh
- name: Discord notification
uses: rjstone/discord-webhook-notify@v1
if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) && (github.event_name != 'schedule')
with:
severity: info
details: Deploy Succeeded!
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
contents: read
secrets:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
+2 -2
View File
@@ -28,13 +28,13 @@ jobs:
with:
persist-credentials: false
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pre-build dev container image
uses: devcontainers/ci@v0.3
uses: devcontainers/ci@8bf61b26e9c3a98f69cb6ce2f88d24ff59b785c6 # v0.3.19
with:
subFolder: .github
imageName: ghcr.io/${{ github.repository }}-devcontainer
+132
View File
@@ -0,0 +1,132 @@
name: Docker Build and Deploy
on:
workflow_call:
secrets:
DOCKER_PASSWORD:
required: true
DOCKER_USERNAME:
required: true
DISCORD_WEBHOOK:
required: false
workflow_dispatch:
inputs:
branch_name:
description: 'Branch name to build Docker images for'
required: false
default: 'develop'
type: string
permissions:
contents: read
jobs:
deploy-docker:
runs-on: ubuntu-22.04
if: github.repository == 'freqtrade/freqtrade'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Extract branch name
id: extract-branch
env:
BRANCH_NAME_INPUT: ${{ github.event.inputs.branch_name }}
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
BRANCH_NAME="${BRANCH_NAME_INPUT}"
else
BRANCH_NAME="${GITHUB_REF##*/}"
fi
echo "GITHUB_REF='${GITHUB_REF}'"
echo "branch=${BRANCH_NAME}" >> "$GITHUB_OUTPUT"
- name: Dockerhub login
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
# We need docker experimental to pull the ARM image.
- name: Switch docker to experimental
run: |
docker version -f '{{.Server.Experimental}}'
echo $'{\n "experimental": true\n}' | sudo tee /etc/docker/daemon.json
sudo systemctl restart docker
docker version -f '{{.Server.Experimental}}'
- name: Set up QEMU
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 #v3.11.1
- name: Available platforms
run: echo ${PLATFORMS}
env:
PLATFORMS: ${{ steps.buildx.outputs.platforms }}
- name: Build and test and push docker images
env:
BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }}
run: |
build_helpers/publish_docker_multi.sh
deploy-arm:
name: "Deploy Docker"
permissions:
packages: write
needs: [ deploy-docker ]
# Only run on 64bit machines
runs-on: [self-hosted, linux, ARM64]
if: github.repository == 'freqtrade/freqtrade'
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Extract branch name
id: extract-branch
env:
BRANCH_NAME_INPUT: ${{ github.event.inputs.branch_name }}
run: |
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
BRANCH_NAME="${BRANCH_NAME_INPUT}"
else
BRANCH_NAME="${GITHUB_REF##*/}"
fi
echo "GITHUB_REF='${GITHUB_REF}'"
echo "branch=${BRANCH_NAME}" >> "$GITHUB_OUTPUT"
- name: Dockerhub login
env:
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
run: |
echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin
- name: Build and test and push docker images
env:
BRANCH_NAME: ${{ steps.extract-branch.outputs.branch }}
GHCR_USERNAME: ${{ github.actor }}
GHCR_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
build_helpers/publish_docker_arm64.sh
- name: Discord notification
uses: rjstone/discord-webhook-notify@c2597273488aeda841dd1e891321952b51f7996f #v2.2.1
if: always() && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false) && (github.event_name != 'schedule')
with:
severity: info
details: Deploy Succeeded!
webhookUrl: ${{ secrets.DISCORD_WEBHOOK }}
+1 -1
View File
@@ -16,7 +16,7 @@ jobs:
persist-credentials: false
- name: Docker Hub Description
uses: peter-evans/dockerhub-description@v4
uses: peter-evans/dockerhub-description@432a30c9e07499fd01da9f8a49f0faf9e0ca5b77 # v4.0.2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
- name: Run auto-update
run: pre-commit autoupdate
- uses: peter-evans/create-pull-request@v7
- uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
with:
token: ${{ secrets.REPO_SCOPED_TOKEN }}
add-paths: .pre-commit-config.yaml
+21 -9
View File
@@ -1,25 +1,37 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: local
# Keep json schema in sync with the config schema
# This will write the files - and fail pre-commit if a file has been changed.
hooks:
- id: Extract config json schema
name: extract-config-json-schema
entry: "python build_helpers/extract_config_json_schema.py"
language: python
pass_filenames: false
additional_dependencies: ["python-rapidjson", "jsonschema"]
- repo: https://github.com/pycqa/flake8
rev: "7.1.2"
rev: "7.3.0"
hooks:
- id: flake8
additional_dependencies: [Flake8-pyproject]
# stages: [push]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: "v1.15.0"
rev: "v1.16.1"
hooks:
- id: mypy
exclude: build_helpers
additional_dependencies:
- types-cachetools==5.5.0.20240820
- types-cachetools==6.0.0.20250525
- types-filelock==3.2.7
- types-requests==2.32.0.20250306
- types-requests==2.32.4.20250611
- types-tabulate==0.9.0.20241207
- types-python-dateutil==2.9.0.20241206
- SQLAlchemy==2.0.39
- types-python-dateutil==2.9.0.20250516
- SQLAlchemy==2.0.41
# stages: [push]
- repo: https://github.com/pycqa/isort
@@ -31,7 +43,7 @@ repos:
- repo: https://github.com/charliermarsh/ruff-pre-commit
# Ruff version.
rev: 'v0.11.2'
rev: 'v0.12.1'
hooks:
- id: ruff
- id: ruff-format
@@ -57,7 +69,7 @@ repos:
)$
- repo: https://github.com/stefmolin/exif-stripper
rev: 0.6.2
rev: 1.0.0
hooks:
- id: strip-exif
@@ -70,6 +82,6 @@ repos:
# Ensure github actions remain safe
- repo: https://github.com/woodruffw/zizmor-pre-commit
rev: v1.5.2
rev: v1.11.0
hooks:
- id: zizmor
+2 -2
View File
@@ -1,4 +1,4 @@
FROM python:3.12.9-slim-bookworm as base
FROM python:3.13.5-slim-bookworm as base
# Setup env
ENV LANG C.UTF-8
@@ -35,7 +35,7 @@ ENV LD_LIBRARY_PATH /usr/local/lib
# Install dependencies
COPY --chown=ftuser:ftuser requirements.txt requirements-hyperopt.txt /freqtrade/
USER ftuser
RUN pip install --user --no-cache-dir "numpy<2.0" \
RUN pip install --user --no-cache-dir "numpy<3.0" \
&& pip install --user --no-cache-dir -r requirements-hyperopt.txt
# Copy dependencies to runtime-image
-2
View File
@@ -70,7 +70,6 @@ Please find the complete documentation on the [freqtrade website](https://www.fr
- [x] **Backtesting**: Run a simulation of your buy/sell strategy.
- [x] **Strategy Optimization by machine learning**: Use machine learning to optimize your buy/sell strategy parameters with real exchange data.
- [X] **Adaptive prediction modeling**: Build a smart strategy with FreqAI that self-trains to the market via adaptive machine learning methods. [Learn more](https://www.freqtrade.io/en/stable/freqai/)
- [x] **Edge position sizing** Calculate your win rate, risk reward ratio, the best stoploss and adjust your position size before taking a position for each specific market. [Learn more](https://www.freqtrade.io/en/stable/edge/).
- [x] **Whitelist crypto-currencies**: Select which crypto-currency you want to trade or use dynamic whitelists.
- [x] **Blacklist crypto-currencies**: Select which crypto-currency you want to avoid.
- [x] **Builtin WebUI**: Builtin web UI to manage your bot.
@@ -112,7 +111,6 @@ positional arguments:
backtesting-show Show past Backtest results
backtesting-analysis
Backtest Analysis module.
edge Edge module.
hyperopt Hyperopt module.
hyperopt-list List Hyperopt results
hyperopt-show Show details of Hyperopt results
+6 -1
View File
@@ -12,7 +12,12 @@ secret = os.environ.get("FREQTRADE__EXCHANGE__SECRET")
proxy = os.environ.get("CI_WEB_PROXY")
exchange = ccxt.binance(
{"apiKey": key, "secret": secret, "httpsProxy": proxy, "options": {"defaultType": "swap"}}
{
"apiKey": key,
"secret": secret,
"httpsProxy": proxy,
"options": {"defaultType": "swap"},
}
)
_ = exchange.load_markets()
+1 -1
View File
@@ -1,4 +1,4 @@
import subprocess
import subprocess # noqa: S404, RUF100
from pathlib import Path
+15 -2
View File
@@ -4,10 +4,23 @@ from pathlib import Path
import rapidjson
from freqtrade.configuration.config_schema import CONF_SCHEMA
def extract_config_json_schema():
try:
# Try to import from the installed package
from freqtrade.config_schema import CONF_SCHEMA
except ImportError:
# If freqtrade is not installed, add the parent directory to sys.path
# to import directly from the source
import sys
script_dir = Path(__file__).parent
freqtrade_dir = script_dir.parent
sys.path.insert(0, str(freqtrade_dir))
# Now try to import from the source
from freqtrade.config_schema import CONF_SCHEMA
schema_filename = Path(__file__).parent / "schema.json"
with schema_filename.open("w") as f:
rapidjson.dump(CONF_SCHEMA, f, indent=2)
+1 -1
View File
@@ -3,7 +3,7 @@
python -m pip install --upgrade pip
python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"
pip install -U wheel "numpy<2"
pip install -U wheel "numpy<3.0"
pip install --only-binary ta-lib --find-links=build_helpers\ ta-lib
pip install -r requirements-dev.txt
+40 -62
View File
@@ -538,10 +538,6 @@
"description": "Exchange configuration.",
"$ref": "#/definitions/exchange"
},
"edge": {
"description": "Edge configuration.",
"$ref": "#/definitions/edge"
},
"log_config": {
"description": "Logging configuration.",
"$ref": "#/definitions/logging"
@@ -610,11 +606,11 @@
"type": "string"
},
"chat_id": {
"description": "Telegram chat or group ID",
"description": "Telegram chat or group ID. Recommended to be set via environment variable FREQTRADE__TELEGRAM__CHAT_ID",
"type": "string"
},
"topic_id": {
"description": "Telegram topic ID - only applicable for group chats",
"description": "Telegram topic ID - only applicable for group chats. Recommended to be set via environment variable FREQTRADE__TELEGRAM__TOPIC_ID",
"type": "string"
},
"authorized_users": {
@@ -773,9 +769,11 @@
"type": "object",
"properties": {
"enabled": {
"description": "Enable webhook notifications.",
"type": "boolean"
},
"url": {
"description": "Webhook URL. Recommended to be set via environment variable FREQTRADE__WEBHOOK__URL",
"type": "string"
},
"format": {
@@ -853,6 +851,7 @@
"type": "boolean"
},
"webhook_url": {
"description": "Discord webhook URL. Recommended to be set via environment variable FREQTRADE__DISCORD__WEBHOOK_URL",
"type": "string"
},
"exit_fill": {
@@ -1032,6 +1031,7 @@
"type": "string",
"enum": [
"running",
"paused",
"stopped"
]
},
@@ -1167,28 +1167,35 @@
"description": "Name of the exchange.",
"type": "string"
},
"enable_ws": {
"description": "Enable WebSocket connections to the exchange.",
"type": "boolean",
"default": true
},
"key": {
"description": "API key for the exchange.",
"description": "API key for the exchange. Recommended to be set via environment variable FREQTRADE__EXCHANGE__KEY",
"type": "string",
"default": ""
},
"secret": {
"description": "API secret for the exchange.",
"description": "API secret for the exchange. Recommended to be set via environment variable FREQTRADE__EXCHANGE__SECRET",
"type": "string",
"default": ""
},
"password": {
"description": "Password for the exchange, if required.",
"description": "Password for the exchange, if required. Recommended to be set via environment variable FREQTRADE__EXCHANGE__PASSWORD",
"type": "string",
"default": ""
},
"uid": {
"description": "User ID for the exchange, if required.",
"description": "User ID for the exchange, if required. Recommended to be set via environment variable FREQTRADE__EXCHANGE__UID",
"type": "string"
},
"account_id": {
"description": "Account ID for the exchange, if required. Recommended to be set via environment variable FREQTRADE__EXCHANGE__ACCOUNT_ID",
"type": "string"
},
"wallet_address": {
"description": "Wallet address for the exchange, if required. Usually used by DEX exchanges. Recommended to be set via environment variable FREQTRADE__EXCHANGE__WALLET_ADDRESS",
"type": "string"
},
"private_key": {
"description": "Private key for the exchange, if required. Usually used by DEX exchanges. Recommended to be set via environment variable FREQTRADE__EXCHANGE__PRIVATE_KEY",
"type": "string"
},
"pair_whitelist": {
@@ -1212,6 +1219,11 @@
"type": "boolean",
"default": false
},
"enable_ws": {
"description": "Enable WebSocket connections to the exchange.",
"type": "boolean",
"default": true
},
"unknown_fee_rate": {
"description": "Fee rate for unknown markets.",
"type": "number"
@@ -1231,7 +1243,11 @@
"type": "object"
},
"ccxt_async_config": {
"description": "CCXT asynchronous configuration settings.",
"description": "CCXT asynchronous configuration settings.Usually ccxt_config should be used instead.",
"type": "object"
},
"ccxt_sync_config": {
"description": "CCXT synchronous configuration settings. Usually ccxt_config should be used instead.",
"type": "object"
}
},
@@ -1239,52 +1255,6 @@
"name"
]
},
"edge": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"process_throttle_secs": {
"type": "integer",
"minimum": 600
},
"calculate_since_number_of_days": {
"type": "integer"
},
"allowed_risk": {
"type": "number"
},
"stoploss_range_min": {
"type": "number"
},
"stoploss_range_max": {
"type": "number"
},
"stoploss_range_step": {
"type": "number"
},
"minimum_winrate": {
"type": "number"
},
"minimum_expectancy": {
"type": "number"
},
"min_trade_number": {
"type": "number"
},
"max_trade_duration_minute": {
"type": "integer"
},
"remove_pumps": {
"type": "boolean"
}
},
"required": [
"process_throttle_secs",
"allowed_risk"
]
},
"logging": {
"type": "object",
"properties": {
@@ -1515,6 +1485,14 @@
"type": "boolean",
"default": false
},
"indicator_periods_candles": {
"description": "Time periods to calculate indicators for. The indicators are added to the base indicator dataset.",
"type": "array",
"items": {
"type": "number",
"minimum": 1
}
},
"use_SVM_to_remove_outliers": {
"description": "Use SVM to remove outliers from the features.",
"type": "boolean",
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -2,7 +2,7 @@
"$schema": "https://schema.freqtrade.io/schema.json",
"max_open_trades": 3,
"stake_currency": "USDT",
"stake_amount": 0.05,
"stake_amount": 30,
"tradable_balance_ratio": 0.99,
"fiat_display_currency": "USD",
"timeframe": "5m",
-14
View File
@@ -121,20 +121,6 @@
"outdated_offset": 5,
"markets_refresh_interval": 60
},
"edge": {
"enabled": false,
"process_throttle_secs": 3600,
"calculate_since_number_of_days": 7,
"allowed_risk": 0.01,
"stoploss_range_min": -0.01,
"stoploss_range_max": -0.1,
"stoploss_range_step": -0.01,
"minimum_winrate": 0.60,
"minimum_expectancy": 0.20,
"min_trade_number": 10,
"max_trade_duration_minute": 1440,
"remove_pumps": false
},
"telegram": {
"enabled": false,
"token": "your_telegram_token",
+2 -2
View File
@@ -1,4 +1,4 @@
FROM python:3.11.11-slim-bookworm as base
FROM python:3.11.13-slim-bookworm as base
# Setup env
ENV LANG C.UTF-8
@@ -34,7 +34,7 @@ COPY build_helpers/* /tmp/
# Install dependencies
COPY --chown=ftuser:ftuser requirements.txt /freqtrade/
USER ftuser
RUN pip install --user --no-cache-dir "numpy<2" \
RUN pip install --user --no-cache-dir "numpy<3.0" \
&& pip install --user --no-index --find-links /tmp/ pyarrow TA-Lib \
&& pip install --user --no-cache-dir -r requirements.txt
+35 -38
View File
@@ -161,56 +161,53 @@ class MyAwesomeStrategy(IStrategy):
### Overriding Base estimator
You can define your own estimator for Hyperopt by implementing `generate_estimator()` in the Hyperopt subclass.
You can define your own optuna sampler for Hyperopt by implementing `generate_estimator()` in the Hyperopt subclass.
```python
class MyAwesomeStrategy(IStrategy):
class HyperOpt:
def generate_estimator(dimensions: List['Dimension'], **kwargs):
return "RF"
return "NSGAIIISampler"
```
Possible values are either one of "GP", "RF", "ET", "GBRT" (Details can be found in the [scikit-optimize documentation](https://scikit-optimize.github.io/)), or "an instance of a class that inherits from `RegressorMixin` (from sklearn) and where the `predict` method has an optional `return_std` argument, which returns `std(Y | x)` along with `E[Y | x]`".
Possible values are either one of "NSGAIISampler", "TPESampler", "GPSampler", "CmaEsSampler", "NSGAIIISampler", "QMCSampler" (Details can be found in the [optuna-samplers documentation](https://optuna.readthedocs.io/en/stable/reference/samplers/index.html)), or "an instance of a class that inherits from `optuna.samplers.BaseSampler`".
Some research will be necessary to find additional Regressors.
Example for `ExtraTreesRegressor` ("ET") with additional parameters:
```python
class MyAwesomeStrategy(IStrategy):
class HyperOpt:
def generate_estimator(dimensions: List['Dimension'], **kwargs):
from skopt.learning import ExtraTreesRegressor
# Corresponds to "ET" - but allows additional parameters.
return ExtraTreesRegressor(n_estimators=100)
```
The `dimensions` parameter is the list of `skopt.space.Dimension` objects corresponding to the parameters to be optimized. It can be used to create isotropic kernels for the `skopt.learning.GaussianProcessRegressor` estimator. Here's an example:
```python
class MyAwesomeStrategy(IStrategy):
class HyperOpt:
def generate_estimator(dimensions: List['Dimension'], **kwargs):
from skopt.utils import cook_estimator
from skopt.learning.gaussian_process.kernels import (Matern, ConstantKernel)
kernel_bounds = (0.0001, 10000)
kernel = (
ConstantKernel(1.0, kernel_bounds) *
Matern(length_scale=np.ones(len(dimensions)), length_scale_bounds=[kernel_bounds for d in dimensions], nu=2.5)
)
kernel += (
ConstantKernel(1.0, kernel_bounds) *
Matern(length_scale=np.ones(len(dimensions)), length_scale_bounds=[kernel_bounds for d in dimensions], nu=1.5)
)
return cook_estimator("GP", space=dimensions, kernel=kernel, n_restarts_optimizer=2)
```
Some research will be necessary to find additional Samplers (from optunahub) for example.
!!! Note
While custom estimators can be provided, it's up to you as User to do research on possible parameters and analyze / understand which ones should be used.
If you're unsure about this, best use one of the Defaults (`"ET"` has proven to be the most versatile) without further parameters.
If you're unsure about this, best use one of the Defaults (`"NSGAIIISampler"` has proven to be the most versatile) without further parameters.
??? Example "Using `AutoSampler` from Optunahub"
[AutoSampler docs](https://hub.optuna.org/samplers/auto_sampler/)
Install the necessary dependencies
``` bash
pip install optunahub cmaes torch scipy
```
Implement `generate_estimator()` in your strategy
``` python
# ...
from freqtrade.strategy.interface import IStrategy
from typing import List
import optunahub
# ...
class my_strategy(IStrategy):
class HyperOpt:
def generate_estimator(dimensions: List["Dimension"], **kwargs):
if "random_state" in kwargs.keys():
return optunahub.load_module("samplers/auto_sampler").AutoSampler(seed=kwargs["random_state"])
else:
return optunahub.load_module("samplers/auto_sampler").AutoSampler()
```
Obviously the same approach will work for all other Samplers optuna supports.
## Space options
+18 -19
View File
@@ -177,7 +177,7 @@ sudo loginctl enable-linger "$USER"
If you run the bot as a service, you can use systemd service manager as a software watchdog monitoring freqtrade bot
state and restarting it in the case of failures. If the `internals.sd_notify` parameter is set to true in the
configuration or the `--sd-notify` command line option is used, the bot will send keep-alive ping messages to systemd
using the sd_notify (systemd notifications) protocol and will also tell systemd its current state (Running or Stopped)
using the sd_notify (systemd notifications) protocol and will also tell systemd its current state (Running, Paused or Stopped)
when it changes.
The `freqtrade.service.watchdog` file contains an example of the service unit configuration file which uses systemd
@@ -189,13 +189,15 @@ as the watchdog.
## Advanced Logging
Freqtrade uses the default logging module provided by python.
Python allows for extensive [logging configuration](https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig) in this regards - way more than what can be covered here.
Python allows for extensive [logging configuration](https://docs.python.org/3/library/logging.config.html#logging.config.dictConfig) in this regard - way more than what can be covered here.
Default logging (Colored terminal output) is setup by default if no `log_config` is provided.
Default logging format (coloured terminal output) is set up by default if no `log_config` is provided in your freqtrade configuration.
Using `--logfile logfile.log` will enable the RotatingFileHandler.
If you're not content with the log format - or with the default settings provided for the RotatingFileHandler, you can customize logging to your liking.
The default configuration looks roughly like the below - with the file handler being provided - but not enabled.
If you're not content with the log format, or with the default settings provided for the RotatingFileHandler, you can customize logging to your liking by adding the `log_config` configuration to your freqtrade configuration file(s).
The default configuration looks roughly like the below, with the file handler being provided but not enabled as the `filename` is commented out.
Uncomment this line and supply a valid path/filename to enable it.
``` json hl_lines="5-7 13-16 27"
{
@@ -237,12 +239,12 @@ The default configuration looks roughly like the below - with the file handler b
Highlighted lines in the above code-block define the Rich handler and belong together.
The formatter "standard" and "file" will belong to the FileHandler.
Each handler must use one of the defined formatters (by name) - and it's class must be available and a valid logging class.
To actually use a handler - it must be in the "handlers" section inside the "root" segment.
Each handler must use one of the defined formatters (by name), its class must be available, and must be a valid logging class.
To actually use a handler, it must be in the "handlers" section inside the "root" segment.
If this section is left out, freqtrade will provide no output (in the non-configured handler, anyway).
!!! Tip "Explicit log configuration"
We recommend to extract the logging configuration from your main configuration, and provide it to your bot via [multiple configuration files](configuration.md#multiple-configuration-files) functionality. This will avoid unnecessary code duplication.
We recommend to extract the logging configuration from your main freqtrade configuration file, and provide it to your bot via [multiple configuration files](configuration.md#multiple-configuration-files) functionality. This will avoid unnecessary code duplication.
---
@@ -313,7 +315,6 @@ $RepeatedMsgReduction on
The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character.
So, the following are the examples of possible addresses:
* `"address": "/dev/log"` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems.
@@ -321,20 +322,18 @@ So, the following are the examples of possible addresses:
* `"address": "localhost:514"` -- log to local syslog using UDP socket, if it listens on port 514.
* `"address": "<ip>:514"` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server.
??? Info "Deprecated - configure syslog via command line"
`--logfile syslog:<syslog_address>` -- send log messages to `syslog` service using the `<syslog_address>` as the syslog address.
`--logfile syslog:<syslog_address>` -- send log messages to `syslog` service using the `<syslog_address>` as the syslog address.
The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character.
The syslog address can be either a Unix domain socket (socket filename) or a UDP socket specification, consisting of IP address and UDP port, separated by the `:` character.
So, the following are the examples of possible usages:
So, the following are the examples of possible usages:
* `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems.
* `--logfile syslog` -- same as above, the shortcut for `/dev/log`.
* `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS.
* `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514.
* `--logfile syslog:<ip>:514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server.
* `--logfile syslog:/dev/log` -- log to syslog (rsyslog) using the `/dev/log` socket, suitable for most systems.
* `--logfile syslog` -- same as above, the shortcut for `/dev/log`.
* `--logfile syslog:/var/run/syslog` -- log to syslog (rsyslog) using the `/var/run/syslog` socket. Use this on MacOS.
* `--logfile syslog:localhost:514` -- log to local syslog using UDP socket, if it listens on port 514.
* `--logfile syslog:<ip>:514` -- log to remote syslog at IP address and port 514. This may be used on Windows for remote logging to an external syslog server.
### Logging to journald
Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

+6
View File
@@ -5,6 +5,8 @@ This page explains how to validate your strategy performance by using Backtestin
Backtesting 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.
Backtesting is also available in [webserver mode](freq-ui.md#backtesting), which allows you to run backtests via the web interface.
## Backtesting command reference
--8<-- "commands/backtesting.md"
@@ -435,6 +437,10 @@ To save time, by default backtest will reuse a cached result from within the las
To further analyze your backtest results, freqtrade will export the trades to file by default.
You can then load the trades to perform further analysis as shown in the [data analysis](strategy_analysis_example.md#load-backtest-results-to-pandas-dataframe) backtesting section.
Also, you can use freqtrade in [webserver mode](freq-ui.md#backtesting) to visualize the backtest results in a web interface.
This mode also allows you to load existing backtest results, so you can analyze them without running the backtest again.
For this mode - `--notes "<notes>"` can be used to add notes to the backtest results, which will be shown in the web interface.
### Backtest output file
The output file freqtrade produces is a zip file containing the following files:
+3 -1
View File
@@ -59,7 +59,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -30,7 +30,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+5 -2
View File
@@ -17,7 +17,7 @@ usage: freqtrade backtesting [-h] [-v] [--no-color] [--logfile FILE] [-V]
[--export-filename PATH]
[--breakdown {day,week,month,year} [{day,week,month,year} ...]]
[--cache {none,day,week,month}]
[--freqai-backtest-live-models]
[--freqai-backtest-live-models] [--notes TEXT]
options:
-h, --help show this help message and exit
@@ -73,6 +73,7 @@ options:
age (default: day).
--freqai-backtest-live-models
Run backtest with ready models.
--notes TEXT Add notes to the backtest results.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
@@ -89,7 +90,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -45,7 +45,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -34,7 +34,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -63,7 +63,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -7
View File
@@ -7,7 +7,6 @@ usage: freqtrade edge [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[--max-open-trades INT] [--stake-amount STAKE_AMOUNT]
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
[--stoplosses STOPLOSS_RANGE]
options:
-h, --help show this help message and exit
@@ -29,11 +28,6 @@ options:
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--stoplosses STOPLOSS_RANGE
Defines a range of stoploss values against which edge
will assess the strategy. The format is "min,max,step"
(without any space). Example:
`--stoplosses=-0.01,-0.1,-0.001`
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
@@ -50,7 +44,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -55,7 +55,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -37,7 +37,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+7 -1
View File
@@ -16,6 +16,7 @@ usage: freqtrade hyperopt [-h] [-v] [--no-color] [--logfile FILE] [-V]
[--random-state INT] [--min-trades INT]
[--hyperopt-loss NAME] [--disable-param-export]
[--ignore-missing-spaces] [--analyze-per-epoch]
[--early-stop INT]
options:
-h, --help show this help message and exit
@@ -79,6 +80,7 @@ options:
SortinoHyperOptLoss, SortinoHyperOptLossDaily,
CalmarHyperOptLoss, MaxDrawDownHyperOptLoss,
MaxDrawDownRelativeHyperOptLoss,
MaxDrawDownPerPairHyperOptLoss,
ProfitDrawDownHyperOptLoss, MultiMetricHyperOptLoss
--disable-param-export
Disable automatic hyperopt parameter export.
@@ -86,6 +88,8 @@ options:
Suppress errors for any requested Hyperopt spaces that
do not contain any parameters.
--analyze-per-epoch Run populate_indicators once per epoch.
--early-stop INT Early stop hyperopt if no improvement after (default:
0) epochs.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
@@ -102,7 +106,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+4 -1
View File
@@ -1,9 +1,12 @@
```
usage: freqtrade install-ui [-h] [--erase] [--ui-version UI_VERSION]
usage: freqtrade install-ui [-h] [--erase] [--prerelease]
[--ui-version UI_VERSION]
options:
-h, --help show this help message and exit
--erase Clean UI folder, don't download new version.
--prerelease Install the latest pre-release version of FreqUI. This
is not recommended for production use.
--ui-version UI_VERSION
Specify a specific version of FreqUI to install. Not
specifying this installs the latest version.
+3 -1
View File
@@ -41,7 +41,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -22,7 +22,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -24,7 +24,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -24,7 +24,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -39,7 +39,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -39,7 +39,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -27,7 +27,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -23,7 +23,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -89,7 +89,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+1 -1
View File
@@ -22,7 +22,7 @@ positional arguments:
backtesting-show Show past Backtest results
backtesting-analysis
Backtest Analysis module.
edge Edge module.
edge Edge module. No longer part of Freqtrade
hyperopt Hyperopt module.
hyperopt-list List Hyperopt results
hyperopt-show Show details of Hyperopt results
+3 -1
View File
@@ -63,7 +63,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -49,7 +49,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -41,7 +41,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -30,7 +30,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -34,7 +34,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -36,7 +36,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -41,7 +41,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+3 -1
View File
@@ -20,7 +20,9 @@ Common arguments:
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
Path to the base directory of the exchange with
historical backtesting data. To see futures data, use
trading-mode additionally.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
+5 -6
View File
@@ -180,7 +180,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `minimal_roi` | **Required.** Set the threshold as ratio the bot will use to exit a trade. [More information below](#understand-minimal_roi). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Dict
| `stoploss` | **Required.** Value as ratio of the stoploss used by the bot. More details in the [stoploss documentation](stoploss.md). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float (as ratio)
| `trailing_stop` | Enables trailing stoploss (based on `stoploss` in either configuration or strategy file). More details in the [stoploss documentation](stoploss.md#trailing-stop-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Boolean
| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-custom-positive-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float
| `trailing_stop_positive` | Changes stoploss once profit has been reached. More details in the [stoploss documentation](stoploss.md#trailing-stop-loss-different-positive-loss). [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** Float
| `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)
@@ -205,7 +205,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `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**
| | **Order/Signal handling**
| `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)
@@ -234,7 +234,6 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `exchange.only_from_ccxt` | Prevent data-download from data.binance.vision. Leaving this as false can greatly speed up downloads, but may be problematic if the site is not available.<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.
| `pairlists` | Define one or more pairlists to be used. [More information](plugins.md#pairlists-and-pairlist-handlers). <br>*Defaults to `StaticPairList`.* <br> **Datatype:** List of Dicts
| | **Telegram**
| `telegram.enabled` | Enable the usage of Telegram. <br> **Datatype:** Boolean
@@ -266,7 +265,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `bot_name` | Name of the bot. Passed via API to a client - can be shown to distinguish / name bots.<br> *Defaults to `freqtrade`*<br> **Datatype:** String
| `external_message_consumer` | Enable [Producer/Consumer mode](producer-consumer.md) for more details. <br> **Datatype:** Dict
| | **Other**
| `initial_state` | Defines the initial application state. If set to stopped, then the bot has to be explicitly started via `/start` RPC command. <br>*Defaults to `stopped`.* <br> **Datatype:** Enum, either `stopped` or `running`
| `initial_state` | Defines the initial application state. If set to stopped, then the bot has to be explicitly started via `/start` RPC command. <br>*Defaults to `stopped`.* <br> **Datatype:** Enum, either `running`, `paused` or `stopped`
| `force_entry_enable` | Enables the RPC Commands to force a Trade entry. More information below. <br> **Datatype:** Boolean
| `disable_dataframe_checks` | Disable checking the OHLCV dataframe returned from the strategy methods for correctness. Only use when intentionally changing the dataframe and understand what you are doing. [Strategy Override](#parameters-in-the-strategy).<br> *Defaults to `False`*. <br> **Datatype:** Boolean
| `internals.process_throttle_secs` | Set the process throttle, or minimum loop duration for one bot iteration loop. Value in second. <br>*Defaults to `5` seconds.* <br> **Datatype:** Positive Integer
@@ -281,7 +280,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `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 `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`.
| `reduce_df_footprint` | Recast all numeric columns to float32/int32, with the objective of reducing ram/disk usage (and decreasing train/inference timing backtesting/hyperopt and in FreqAI). <br> **Datatype:** Boolean. <br> Default: `False`.
| `log_config` | Dictionary containing the log config for python logging. [more info](advanced-setup.md#advanced-logging) <br> **Datatype:** dict. <br> Default: `FtRichHandler`
### Parameters in the strategy
@@ -672,7 +671,7 @@ Should you experience problems you suspect are caused by websockets, you can dis
}
```
Should you be required to use a proxy, please refer to the [proxy section](#using-proxy-with-freqtrade) for more information.
Should you be required to use a proxy, please refer to the [proxy section](#using-a-proxy-with-freqtrade) for more information.
!!! Info "Rollout"
We're implementing this out slowly, ensuring stability of your bots.
+5
View File
@@ -93,3 +93,8 @@ Please use the [`convert-data` subcommand](data-download.md#sub-command-convert-
Configuring syslog and journald via `--logfile systemd` and `--logfile journald` respectively has been deprecated in 2025.3.
Please use configuration based [log setup](advanced-setup.md#advanced-logging) instead.
## Removal of the edge module
The edge module has been deprecated in 2023.9 and removed in 2025.6.
All functionalities of edge have been removed, and having edge configured will result in an error.
+7
View File
@@ -304,6 +304,13 @@ The `IProtection` parent class provides a helper method for this in `calculate_l
Most exchanges supported by CCXT should work out of the box.
If you need to implement a specific exchange class, these are found in the `freqtrade/exchange` source folder. You'll also need to add the import to `freqtrade/exchange/__init__.py` to make the loading logic aware of the new exchange.
We recommend looking at existing exchange implementations to get an idea of what might be required.
!!! Warning
Implementing and testing an exchange can be a lot of trial and error, so please bear this in mind.
You should also have some development experience, as this is not a beginner task.
To quickly test the public endpoints of an exchange, add a configuration for your exchange to `tests/exchange_online/conftest.py` and run these tests with `pytest --longrun tests/exchange_online/test_ccxt_compat.py`.
Completing these tests successfully a good basis point (it's a requirement, actually), however these won't guarantee correct exchange functioning, as this only tests public endpoints, but no private endpoint (like generate order or similar).
-300
View File
@@ -1,300 +0,0 @@
# Edge positioning
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.
!!! Note
`Edge Positioning` only considers *its own* buy/sell/stoploss signals. It ignores the stoploss, trailing stoploss, and ROI settings in the strategy configuration file.
`Edge Positioning` improves the performance of some trading strategies and *decreases* the performance of others.
## Introduction
Trading strategies are not perfect. They are frameworks that are susceptible to the market and its indicators. Because the market is not at all predictable, sometimes a strategy will win and sometimes the same strategy will lose.
To obtain an edge in the market, a strategy has to make more money than it loses. Making money in trading is not only about *how often* the strategy makes or loses money.
!!! tip "It doesn't matter how often, but how much!"
A bad strategy might make 1 penny in *ten* transactions but lose 1 dollar in *one* transaction. If one only checks the number of winning trades, it would be misleading to think that the strategy is actually making a profit.
The Edge Positioning module seeks to improve a strategy's winning probability and the money that the strategy will make *on the long run*.
We raise the following question[^1]:
!!! Question "Which trade is a better option?"
a) A trade with 80% of chance of losing 100\$ and 20% chance of winning 200\$<br/>
b) A trade with 100% of chance of losing 30\$
???+ Info "Answer"
The expected value of *a)* is smaller than the expected value of *b)*.<br/>
Hence, *b*) represents a smaller loss in the long run.<br/>
However, the answer is: *it depends*
Another way to look at it is to ask a similar question:
!!! Question "Which trade is a better option?"
a) A trade with 80% of chance of winning 100\$ and 20% chance of losing 200\$<br/>
b) A trade with 100% of chance of winning 30\$
Edge positioning tries to answer the hard questions about risk/reward and position size automatically, seeking to minimizes the chances of losing of a given strategy.
### Trading, winning and losing
Let's call $o$ the return of a single transaction $o$ where $o \in \mathbb{R}$. The collection $O = \{o_1, o_2, ..., o_N\}$ is the set of all returns of transactions made during a trading session. We say that $N$ is the cardinality of $O$, or, in lay terms, it is the number of transactions made in a trading session.
!!! Example
In a session where a strategy made three transactions we can say that $O = \{3.5, -1, 15\}$. That means that $N = 3$ and $o_1 = 3.5$, $o_2 = -1$, $o_3 = 15$.
A winning trade is a trade where a strategy *made* money. Making money means that the strategy closed the position in a value that returned a profit, after all deducted fees. Formally, a winning trade will have a return $o_i > 0$. Similarly, a losing trade will have a return $o_j \leq 0$. With that, we can discover the set of all winning trades, $T_{win}$, as follows:
$$ T_{win} = \{ o \in O | o > 0 \} $$
Similarly, we can discover the set of losing trades $T_{lose}$ as follows:
$$ T_{lose} = \{o \in O | o \leq 0\} $$
!!! Example
In a section where a strategy made four transactions $O = \{3.5, -1, 15, 0\}$:<br>
$T_{win} = \{3.5, 15\}$<br>
$T_{lose} = \{-1, 0\}$<br>
### Win Rate and Lose Rate
The win rate $W$ is the proportion of winning trades with respect to all the trades made by a strategy. We use the following function to compute the win rate:
$$W = \frac{|T_{win}|}{N}$$
Where $W$ is the win rate, $N$ is the number of trades and, $T_{win}$ is the set of all trades where the strategy made money.
Similarly, we can compute the rate of losing trades:
$$
L = \frac{|T_{lose}|}{N}
$$
Where $L$ is the lose rate, $N$ is the amount of trades made and, $T_{lose}$ is the set of all trades where the strategy lost money. Note that the above formula is the same as calculating $L = 1 W$ or $W = 1 L$
### Risk Reward Ratio
Risk Reward Ratio ($R$) is a formula used to measure the expected gains of a given investment against the risk of loss. It is basically what you potentially win divided by what you potentially lose. Formally:
$$ R = \frac{\text{potential_profit}}{\text{potential_loss}} $$
???+ Example "Worked example of $R$ calculation"
Let's say that you think that the price of *stonecoin* today is 10.0\$. You believe that, because they will start mining stonecoin, it will go up to 15.0\$ tomorrow. There is the risk that the stone is too hard, and the GPUs can't mine it, so the price might go to 0\$ tomorrow. You are planning to invest 100\$, which will give you 10 shares (100 / 10).
Your potential profit is calculated as:
$\begin{aligned}
\text{potential_profit} &= (\text{potential_price} - \text{entry_price}) * \frac{\text{investment}}{\text{entry_price}} \\
&= (15 - 10) * (100 / 10) \\
&= 50
\end{aligned}$
Since the price might go to 0\$, the 100\$ dollars invested could turn into 0.
We do however use a stoploss of 15% - so in the worst case, we'll sell 15% below entry price (or at 8.5$\).
$\begin{aligned}
\text{potential_loss} &= (\text{entry_price} - \text{stoploss}) * \frac{\text{investment}}{\text{entry_price}} \\
&= (10 - 8.5) * (100 / 10)\\
&= 15
\end{aligned}$
We can compute the Risk Reward Ratio as follows:
$\begin{aligned}
R &= \frac{\text{potential_profit}}{\text{potential_loss}}\\
&= \frac{50}{15}\\
&= 3.33
\end{aligned}$<br>
What it effectively means is that the strategy have the potential to make 3.33\$ for each 1\$ invested.
On a long horizon, that is, on many trades, we can calculate the risk reward by dividing the strategy' average profit on winning trades by the strategy' average loss on losing trades. We can calculate the average profit, $\mu_{win}$, as follows:
$$ \text{average_profit} = \mu_{win} = \frac{\text{sum_of_profits}}{\text{count_winning_trades}} = \frac{\sum^{o \in T_{win}} o}{|T_{win}|} $$
Similarly, we can calculate the average loss, $\mu_{lose}$, as follows:
$$ \text{average_loss} = \mu_{lose} = \frac{\text{sum_of_losses}}{\text{count_losing_trades}} = \frac{\sum^{o \in T_{lose}} o}{|T_{lose}|} $$
Finally, we can calculate the Risk Reward ratio, $R$, as follows:
$$ R = \frac{\text{average_profit}}{\text{average_loss}} = \frac{\mu_{win}}{\mu_{lose}}\\ $$
???+ Example "Worked example of $R$ calculation using mean profit/loss"
Let's say the strategy that we are using makes an average win $\mu_{win} = 2.06$ and an average loss $\mu_{loss} = 4.11$.<br>
We calculate the risk reward ratio as follows:<br>
$R = \frac{\mu_{win}}{\mu_{loss}} = \frac{2.06}{4.11} = 0.5012...$
### Expectancy
By combining the Win Rate $W$ and the Risk Reward ratio $R$ to create an expectancy ratio $E$. A expectance ratio is the expected return of the investment made in a trade. We can compute the value of $E$ as follows:
$$E = R * W - L$$
!!! Example "Calculating $E$"
Let's say that a strategy has a win rate $W = 0.28$ and a risk reward ratio $R = 5$. What this means is that the strategy is expected to make 5 times the investment around on 28% of the trades it makes. Working out the example:<br>
$E = R * W - L = 5 * 0.28 - 0.72 = 0.68$
<br>
The expectancy worked out in the example above means that, on average, this strategy' trades will return 1.68 times the size of its losses. Said another way, the strategy makes 1.68\$ for every 1\$ it loses, on average.
This is important for two reasons: First, it may seem obvious, but you know right away that you have a positive return. Second, you now have a number you can compare to other candidate systems to make decisions about which ones you employ.
It is important to remember that any system with an expectancy greater than 0 is profitable using past data. The key is finding one that will be profitable in the future.
You can also use this value to evaluate the effectiveness of modifications to this system.
!!! Note
It's important to keep in mind that Edge is testing your expectancy using historical data, there's no guarantee that you will have a similar edge in the future. It's still vital to do this testing in order to build confidence in your methodology but be wary of "curve-fitting" your approach to the historical data as things are unlikely to play out the exact same way for future trades.
## How does it work?
Edge combines dynamic stoploss, dynamic positions, and whitelist generation into one isolated module which is then applied to the trading strategy. If enabled in config, Edge will go through historical data with a range of stoplosses in order to find buy and sell/stoploss signals. It then calculates win rate and expectancy over *N* trades for each stoploss. Here is an example:
| Pair | Stoploss | Win Rate | Risk Reward Ratio | Expectancy |
|----------|:-------------:|-------------:|------------------:|-----------:|
| XZC/ETH | -0.01 | 0.50 |1.176384 | 0.088 |
| XZC/ETH | -0.02 | 0.51 |1.115941 | 0.079 |
| XZC/ETH | -0.03 | 0.52 |1.359670 | 0.228 |
| XZC/ETH | -0.04 | 0.51 |1.234539 | 0.117 |
The goal here is to find the best stoploss for the strategy in order to have the maximum expectancy. In the above example stoploss at $3%$ leads to the maximum expectancy according to historical data.
Edge module then forces stoploss value it evaluated to your strategy dynamically.
### Position size
Edge dictates the amount at stake for each trade to the bot according to the following factors:
- Allowed capital at risk
- Stoploss
Allowed capital at risk is calculated as follows:
```
Allowed capital at risk = (Capital available_percentage) X (Allowed risk per trade)
```
Stoploss is calculated as described above with respect to historical data.
The position size is calculated as follows:
```
Position size = (Allowed capital at risk) / Stoploss
```
Example:
Let's say the stake currency is **ETH** and there is $10$ **ETH** on the wallet. The capital available percentage is $50%$ and the allowed risk per trade is $1\%$. Thus, the available capital for trading is $10 * 0.5 = 5$ **ETH** and the allowed capital at risk would be $5 * 0.01 = 0.05$ **ETH**.
- **Trade 1:** The strategy detects a new buy signal in the **XLM/ETH** market. `Edge Positioning` calculates a stoploss of $2\%$ and a position of $0.05 / 0.02 = 2.5$ **ETH**. The bot takes a position of $2.5$ **ETH** in the **XLM/ETH** market.
- **Trade 2:** The strategy detects a buy signal on the **BTC/ETH** market while **Trade 1** is still open. `Edge Positioning` calculates the stoploss of $4\%$ on this market. Thus, **Trade 2** position size is $0.05 / 0.04 = 1.25$ **ETH**.
!!! Tip "Available Capital $\neq$ Available in wallet"
The available capital for trading didn't change in **Trade 2** even with **Trade 1** still open. The available capital **is not** the free amount in the wallet.
- **Trade 3:** The strategy detects a buy signal in the **ADA/ETH** market. `Edge Positioning` calculates a stoploss of $1\%$ and a position of $0.05 / 0.01 = 5$ **ETH**. Since **Trade 1** has $2.5$ **ETH** blocked and **Trade 2** has $1.25$ **ETH** blocked, there is only $5 - 1.25 - 2.5 = 1.25$ **ETH** available. Hence, the position size of **Trade 3** is $1.25$ **ETH**.
!!! Tip "Available Capital Updates"
The available capital does not change before a position is sold. After a trade is closed the Available Capital goes up if the trade was profitable or goes down if the trade was a loss.
- The strategy detects a sell signal in the **XLM/ETH** market. The bot exits **Trade 1** for a profit of $1$ **ETH**. The total capital in the wallet becomes $11$ **ETH** and the available capital for trading becomes $5.5$ **ETH**.
- **Trade 4** The strategy detects a new buy signal int the **XLM/ETH** market. `Edge Positioning` calculates the stoploss of $2\%$, and the position size of $0.055 / 0.02 = 2.75$ **ETH**.
## Edge command reference
--8<-- "commands/edge.md"
## Configurations
Edge module has following configuration options:
| Parameter | Description |
|------------|-------------|
| `enabled` | If true, then Edge will run periodically. <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `process_throttle_secs` | How often should Edge run in seconds. <br>*Defaults to `3600` (once per hour).* <br> **Datatype:** Integer
| `calculate_since_number_of_days` | Number of days of data against which Edge calculates Win Rate, Risk Reward and Expectancy. <br> **Note** that it downloads historical data so increasing this number would lead to slowing down the bot. <br>*Defaults to `7`.* <br> **Datatype:** Integer
| `allowed_risk` | Ratio of allowed risk per trade. <br>*Defaults to `0.01` (1%)).* <br> **Datatype:** Float
| `stoploss_range_min` | Minimum stoploss. <br>*Defaults to `-0.01`.* <br> **Datatype:** Float
| `stoploss_range_max` | Maximum stoploss. <br>*Defaults to `-0.10`.* <br> **Datatype:** Float
| `stoploss_range_step` | As an example if this is set to -0.01 then Edge will test the strategy for `[-0.01, -0,02, -0,03 ..., -0.09, -0.10]` ranges. <br> **Note** than having a smaller step means having a bigger range which could lead to slow calculation. <br> If you set this parameter to -0.001, you then slow down the Edge calculation by a factor of 10. <br>*Defaults to `-0.001`.* <br> **Datatype:** Float
| `minimum_winrate` | It filters out pairs which don't have at least minimum_winrate. <br>This comes handy if you want to be conservative and don't comprise win rate in favour of risk reward ratio. <br>*Defaults to `0.60`.* <br> **Datatype:** Float
| `minimum_expectancy` | It filters out pairs which have the expectancy lower than this number. <br>Having an expectancy of 0.20 means if you put 10\$ on a trade you expect a 12\$ return. <br>*Defaults to `0.20`.* <br> **Datatype:** Float
| `min_trade_number` | When calculating *W*, *R* and *E* (expectancy) against historical data, you always want to have a minimum number of trades. The more this number is the more Edge is reliable. <br>Having a win rate of 100% on a single trade doesn't mean anything at all. But having a win rate of 70% over past 100 trades means clearly something. <br>*Defaults to `10` (it is highly recommended not to decrease this number).* <br> **Datatype:** Integer
| `max_trade_duration_minute` | Edge will filter out trades with long duration. If a trade is profitable after 1 month, it is hard to evaluate the strategy based on it. But if most of trades are profitable and they have maximum duration of 30 minutes, then it is clearly a good sign.<br>**NOTICE:** While configuring this value, you should take into consideration your timeframe. As an example filtering out trades having duration less than one day for a strategy which has 4h interval does not make sense. Default value is set assuming your strategy interval is relatively small (1m or 5m, etc.).<br>*Defaults to `1440` (one day).* <br> **Datatype:** Integer
| `remove_pumps` | Edge will remove sudden pumps in a given market while going through historical data. However, given that pumps happen very often in crypto markets, we recommend you keep this off.<br>*Defaults to `false`.* <br> **Datatype:** Boolean
## Running Edge independently
You can run Edge independently in order to see in details the result. Here is an example:
``` bash
freqtrade edge
```
An example of its output:
| **pair** | **stoploss** | **win rate** | **risk reward ratio** | **required risk reward** | **expectancy** | **total number of trades** | **average duration (min)** |
|:----------|-----------:|-----------:|--------------------:|-----------------------:|-------------:|-----------------:|---------------:|
| **AGI/BTC** | -0.02 | 0.64 | 5.86 | 0.56 | 3.41 | 14 | 54 |
| **NXS/BTC** | -0.03 | 0.64 | 2.99 | 0.57 | 1.54 | 11 | 26 |
| **LEND/BTC** | -0.02 | 0.82 | 2.05 | 0.22 | 1.50 | 11 | 36 |
| **VIA/BTC** | -0.01 | 0.55 | 3.01 | 0.83 | 1.19 | 11 | 48 |
| **MTH/BTC** | -0.09 | 0.56 | 2.82 | 0.80 | 1.12 | 18 | 52 |
| **ARDR/BTC** | -0.04 | 0.42 | 3.14 | 1.40 | 0.73 | 12 | 42 |
| **BCPT/BTC** | -0.01 | 0.71 | 1.34 | 0.40 | 0.67 | 14 | 30 |
| **WINGS/BTC** | -0.02 | 0.56 | 1.97 | 0.80 | 0.65 | 27 | 42 |
| **VIBE/BTC** | -0.02 | 0.83 | 0.91 | 0.20 | 0.59 | 12 | 35 |
| **MCO/BTC** | -0.02 | 0.79 | 0.97 | 0.27 | 0.55 | 14 | 31 |
| **GNT/BTC** | -0.02 | 0.50 | 2.06 | 1.00 | 0.53 | 18 | 24 |
| **HOT/BTC** | -0.01 | 0.17 | 7.72 | 4.81 | 0.50 | 209 | 7 |
| **SNM/BTC** | -0.03 | 0.71 | 1.06 | 0.42 | 0.45 | 17 | 38 |
| **APPC/BTC** | -0.02 | 0.44 | 2.28 | 1.27 | 0.44 | 25 | 43 |
| **NEBL/BTC** | -0.03 | 0.63 | 1.29 | 0.58 | 0.44 | 19 | 59 |
Edge produced the above table by comparing `calculate_since_number_of_days` to `minimum_expectancy` to find `min_trade_number` historical information based on the config file. The timerange Edge uses for its comparisons can be further limited by using the `--timerange` switch.
In live and dry-run modes, after the `process_throttle_secs` has passed, Edge will again process `calculate_since_number_of_days` against `minimum_expectancy` to find `min_trade_number`. If no `min_trade_number` is found, the bot will return "whitelist empty". Depending on the trade strategy being deployed, "whitelist empty" may be return much of the time - or *all* of the time. The use of Edge may also cause trading to occur in bursts, though this is rare.
If you encounter "whitelist empty" a lot, condsider tuning `calculate_since_number_of_days`, `minimum_expectancy` and `min_trade_number` to align to the trading frequency of your strategy.
### Update cached pairs with the latest data
Edge requires historic data the same way as backtesting does.
Please refer to the [Data Downloading](data-download.md) section of the documentation for details.
### Precising stoploss range
```bash
freqtrade edge --stoplosses=-0.01,-0.1,-0.001 #min,max,step
```
### Advanced use of timerange
```bash
freqtrade edge --timerange=20181110-20181113
```
Doing `--timerange=-20190901` will get all available data until September 1st (excluding September 1st 2019).
The full timerange specification:
* Use tickframes till 2018/01/31: `--timerange=-20180131`
* Use tickframes since 2018/01/31: `--timerange=20180131-`
* Use tickframes since 2018/01/31 till 2018/03/01 : `--timerange=20180131-20180301`
* Use tickframes between POSIX timestamps 1527595200 1527618600: `--timerange=1527595200-1527618600`
[^1]: Question extracted from MIT Opencourseware S096 - Mathematics with applications in Finance: https://ocw.mit.edu/courses/mathematics/18-s096-topics-in-mathematics-with-applications-in-finance-fall-2013/
+23
View File
@@ -363,6 +363,29 @@ Hyperliquid handles deposits and withdrawals on the Arbitrum One chain, a Layer
* Create a different software wallet, only transfer the funds you want to trade with to that wallet, and use that wallet to trade on Hyperliquid.
* If you have funds you don't want to use for trading (after making a profit for example), transfer them back to your hardware wallet.
### Historic Hyperliquid data
The Hyperliquid API does not provide historic data beyond the single call to fetch current data, so downloading data is not possible, as the downloaded data would not constitute proper historic data.
## Bitvavo
If your account is required to use an operatorId, you can set it in the configuration file as follows:
``` json
"exchange": {
"name": "bitvavo",
"key": "",
"secret": "",
"ccxt_config": {
"options": {
"operatorId": "123567"
}
},
}
```
Bitvavo expects the `operatorId` to be an integer.
## All exchanges
Should you experience constant errors with Nonce (like `InvalidNonce`), it is best to regenerate the API keys. Resetting Nonce is difficult and it's usually easier to regenerate the API keys.
+9 -18
View File
@@ -102,6 +102,14 @@ You can use "current" market data by using the [dataprovider](strategy-customiza
You can use the `/stopentry` command in Telegram to prevent future trade entry, followed by `/forceexit all` (sell all open trades).
### I sold the bot's capital and now there's errors in the log
Freqtrade assumes that the trades it opens are managed only though the bot.
If you happen to (accidentally) sell the bot's capital, freqtrade will try to recover by trying to re-find on-exchange orders.
This is a best-effort approach, and will not work in all cases, especially when using order types that are not supported by freqtrade (OCO, iceberg, etc.), or when working with older trades (where the exchange no longer provides full order information).
The exact limits will vary between exchanges - with the details usually being documented in the exchange's API documentation.
### I want to run multiple bots on the same machine
Please look at the [advanced setup documentation Page](advanced-setup.md#running-multiple-instances-of-freqtrade).
@@ -219,10 +227,7 @@ On Windows, the `--logfile` option is also supported by Freqtrade and you can us
First of all, most indicator libraries don't have GPU support - as such, there would be little benefit for indicator calculations.
The GPU improvements would only apply to pandas-native calculations - or ones written by yourself.
For hyperopt, freqtrade is using scikit-optimize, which is built on top of scikit-learn.
Their statement about GPU support is [pretty clear](https://scikit-learn.org/stable/faq.html#will-you-add-gpu-support).
GPU's also are only good at crunching numbers (floating point operations).
GPU's are only good at crunching numbers (floating point operations).
For hyperopt, we need both number-crunching (find next parameters) and running python code (running backtesting).
As such, GPU's are not too well suited for most parts of hyperopt.
@@ -271,20 +276,6 @@ Example: 4% profit 650 times vs 0,3% profit a trade 10000 times in a year. If we
Example:
`freqtrade --config config.json --strategy SampleStrategy --hyperopt SampleHyperopt -e 1000 --timerange 20190601-20200601`
## Edge module
### Edge implements interesting approach for controlling position size, is there any theory behind it?
The Edge module is mostly a result of brainstorming of [@mishaker](https://github.com/mishaker) and [@creslinux](https://github.com/creslinux) freqtrade team members.
You can find further info on expectancy, win rate, risk management and position size in the following sources:
- https://www.tradeciety.com/ultimate-math-guide-for-traders/
- https://samuraitradingacademy.com/trading-expectancy/
- https://www.learningmarkets.com/determining-expectancy-in-your-trading/
- https://www.lonestocktrader.com/make-money-trading-positive-expectancy/
- https://www.babypips.com/trading/trade-expectancy-matter
## Official channels
Freqtrade is using exclusively the following official channels:
+2
View File
@@ -258,6 +258,8 @@ freqtrade trade --config config_examples/config_freqai.example.json --strategy F
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.
PyTorch dropped support for macOS x64 (intel based Apple devices) in version 2.3. Subsequently, freqtrade also dropped support for PyTorch on this platform.
### Structure
#### Model
+2 -2
View File
@@ -181,7 +181,7 @@ You can ask for each of the defined features to be included also for informative
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"
!!! 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`
@@ -310,7 +310,7 @@ class MyCoolTransform(BaseTransform):
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).
More details about the migration can be found [here](strategy_migration.md#freqai-new-data-pipeline).
## Outlier detection
+1 -1
View File
@@ -79,7 +79,7 @@ pip install -r requirements-freqai.txt
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:stable_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:stable_freqaitorch`, `image: freqtradeorg/freqtrade:stable_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.
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
+6 -3
View File
@@ -1,10 +1,10 @@
# Hyperopt
This page explains how to tune your strategy by finding the optimal
parameters, a process called hyperparameter optimization. The bot uses algorithms included in the `scikit-optimize` package to accomplish this.
parameters, a process called hyperparameter optimization. The bot uses algorithms included in the `optuna` package to accomplish this.
The search will burn all your CPU cores, make your laptop sound like a fighter jet and still take a long time.
In general, the search for best parameters starts with a few random combinations (see [below](#reproducible-results) for more details) and then uses Bayesian search with a ML regressor algorithm (currently ExtraTreesRegressor) to quickly find a combination of parameters in the search hyperspace that minimizes the value of the [loss function](#loss-functions).
In general, the search for best parameters starts with a few random combinations (see [below](#reproducible-results) for more details) and then uses one of optuna's sampler algorithms (currently NSGAIIISampler) to quickly find a combination of parameters in the search hyperspace that minimizes the value of the [loss function](#loss-functions).
Hyperopt requires historic data to be available, just as backtesting does (hyperopt runs backtesting many times with different parameters).
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.
@@ -471,6 +471,7 @@ Currently, the following loss functions are builtin:
* `SortinoHyperOptLossDaily` - optimizes Sortino Ratio calculated on **daily** trade returns relative to **downside** standard deviation.
* `MaxDrawDownHyperOptLoss` - Optimizes Maximum absolute drawdown.
* `MaxDrawDownRelativeHyperOptLoss` - Optimizes both maximum absolute drawdown while also adjusting for maximum relative drawdown.
* `MaxDrawDownPerPairHyperOptLoss` - Calculates the profit/drawdown ratio per pair and returns the worst result as objective, forcing hyperopt to optimize the parameters for all pairs in the pairlist. This way, we prevent one or more pairs with good results from inflating the metrics, while the pairs with poor results are not represented and therefore not optimized.
* `CalmarHyperOptLoss` - Optimizes Calmar Ratio calculated on trade returns relative to max drawdown.
* `ProfitDrawDownHyperOptLoss` - Optimizes by max Profit & min Drawdown objective. `DRAWDOWN_MULT` variable within the hyperoptloss file can be adjusted to be stricter or more flexible on drawdown purposes.
* `MultiMetricHyperOptLoss` - Optimizes by several key metrics to achieve balanced performance. The primary focus is on maximizing Profit and minimizing Drawdown, while also considering additional metrics such as Profit Factor, Expectancy Ratio and Winrate. Moreover, it applies a penalty for epochs with a low number of trades, encouraging strategies with adequate trade frequency.
@@ -489,6 +490,8 @@ freqtrade hyperopt --config config.json --hyperopt-loss <hyperoptlossname> --str
```
The `-e` option will set how many evaluations hyperopt will do. Since hyperopt uses Bayesian search, running too many epochs at once may not produce greater results. Experience has shown that best results are usually not improving much after 500-1000 epochs.
The `--early-stop` option will set after how many epochs with no improvements hyperopt will stop. A good value is 20-30% of the total epochs. Any value greater than 0 and lower than 20 it will be replaced by 20. Early stop is by default disabled (`--early-stop=0`)
Doing multiple runs (executions) with a few 1000 epochs and different random state will most likely produce different results.
The `--spaces all` option determines that all possible parameters should be optimized. Possibilities are listed below.
@@ -531,7 +534,7 @@ Legal values are:
* `trailing`: search for the best trailing stop values
* `trades`: search for the best max open trades values
* `protection`: search for the best protection parameters (read the [protections section](#optimizing-protections) on how to properly define these)
* `default`: `all` except `trailing` and `protection`
* `default`: `all` except `trailing`, `trades` and `protection`
* space-separated list of any of the above values for example `--spaces roi stoploss`
The default Hyperopt Search Space, used when no `--space` command line option is specified, does not include the `trailing` hyperspace. We recommend you to run optimization for the `trailing` hyperspace separately, when the best parameters for other hyperspaces were found, validated and pasted into your custom strategy.
+1 -1
View File
@@ -3,7 +3,7 @@ This section will highlight a few projects from members of the community.
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).
- [FrequentHippo - Statistics of dry/live runs and backtests](http://frequenthippo.ddns.net) (by hippocritical).
- [Online pairlist generator](https://remotepairlist.com/) (by Blood4rc).
- [Freqtrade Backtesting Project](https://strat.ninja/) (by Blood4rc).
- [Freqtrade analysis notebook](https://github.com/froggleston/freqtrade_analysis_notebook) (by Froggleston).
@@ -0,0 +1,18 @@
## Exit logic comparisons
Freqtrade allows your strategy to implement different exit logic using signal-based or callback-based functions.
This section aims to compare each different function, helping you to choose the one that best fits your needs.
* **`populate_exit_trend()`** - Vectorized signal-based exit logic using indicators in the main dataframe
**Use** to define exit signals based on indicators or other data that can be calculated in a vectorized manner.
🚫 **Don't use** to customize exit conditions for each individual trade, or if trade data is necessary to make an exit decision.
* **`custom_exit()`** - Custom exit logic that will fully exit a trade immediately, called for every open trade at every bot loop iteration until a trade is closed.
**Use** to specify exit conditions for each individual trade (including any additional adjusted orders using `adjust_trade_position()`), or if trade data is necessary to make an exit decision, e.g. using profit data to exit.
🚫 **Don't use** when you want to exit using vectorised indicator-based data (use a `populate_exit_trend()` signal instead), or as a proxy for `custom_stoploss()`, and be aware that rate-based exits in backtesting can be inaccurate.
* **`custom_stoploss()`** - Custom trailing stoploss, called for every open trade every iteration until a trade is closed. The value returned here is also used for [stoploss on exchange](stoploss.md#stop-loss-on-exchangefreqtrade).
**Use** to customize the stoploss logic to set a dynamic stoploss based on trade data or other conditions.
🚫 **Don't use** to exit a trade immediately based on a specific condition. Use `custom_exit()` for that purpose.
* **`custom_roi()`** - Custom ROI, called for every open trade every iteration until a trade is closed.
**Use** to specify a minimum ROI threshold ("take-profit") to exit a trade at this ROI level at some point within the trade duration, based on profit or other conditions.
🚫 **Don't use** to exit a trade immediately based on a specific condition. Use `custom_exit()`.
🚫 **Don't use** for static ROI. Use `minimal_roi`.
+4 -5
View File
@@ -5,10 +5,10 @@
[![Coverage Status](https://coveralls.io/repos/github/freqtrade/freqtrade/badge.svg?branch=develop&service=github)](https://coveralls.io/github/freqtrade/freqtrade?branch=develop)
[![Maintainability](https://api.codeclimate.com/v1/badges/5737e6d668200b7518ff/maintainability)](https://codeclimate.com/github/freqtrade/freqtrade/maintainability)
<!-- Place this tag where you want the button to render. -->
<a class="github-button" href="https://github.com/freqtrade/freqtrade" data-icon="octicon-star" data-size="large" aria-label="Star freqtrade/freqtrade on GitHub">Star</a>
<a class="github-button" href="https://github.com/freqtrade/freqtrade/fork" data-icon="octicon-repo-forked" data-size="large" aria-label="Fork freqtrade/freqtrade on GitHub">Fork</a>
<a class="github-button" href="https://github.com/freqtrade/freqtrade/archive/stable.zip" data-icon="octicon-cloud-download" data-size="large" aria-label="Download freqtrade/freqtrade on GitHub">Download</a>
<!-- GitHub action buttons -->
[:octicons-star-16: Star](https://github.com/freqtrade/freqtrade){ .md-button .md-button--sm }
[:octicons-repo-forked-16: Fork](https://github.com/freqtrade/freqtrade/fork){ .md-button .md-button--sm }
[:octicons-download-16: Download](https://github.com/freqtrade/freqtrade/archive/stable.zip){ .md-button .md-button--sm }
## Introduction
@@ -31,7 +31,6 @@ Freqtrade is a free and open source crypto trading bot written in Python. It is
- Optimize: Find the best parameters for your strategy using hyperoptimization which employs machine learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy.
- Select markets: Create your static list or use an automatic one based on top traded volumes and/or prices (not available during backtesting). You can also explicitly blacklist markets you don't want to trade.
- Run: Test your strategy with simulated money (Dry-Run mode) or deploy it with real money (Live-Trade mode).
- Run using Edge (optional module): The concept is to find the best historical [trade expectancy](edge.md#expectancy) by markets based on variation of the stop-loss and then allow/reject markets to trade. The sizing of the trade is based on a risk of a percentage of your capital.
- Control/Monitor: Use Telegram or a WebUI (start/stop the bot, show profit/loss, daily summary, current open trades results, etc.).
- Analyze: Further analysis can be performed on either Backtesting data or Freqtrade trading history (SQL database), including automated standard plots, and methods to load the data into [interactive environments](data-analysis.md).
+1 -1
View File
@@ -87,7 +87,7 @@ OS Specific steps are listed first, the common section below is necessary for al
```bash
sudo apt-get install python3-venv libatlas-base-dev cmake curl
sudo apt-get install python3-venv libatlas-base-dev cmake curl libffi-dev
# Use piwheels.org to speed up installation
sudo echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > tee /etc/pip.conf
+70 -37
View File
@@ -1,23 +1,21 @@
# Lookahead analysis
This page explains how to validate your strategy in terms of look ahead bias.
This page explains how to validate your strategy in terms of lookahead 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.
Lookahead bias is the bane of any strategy since it is sometimes very easy to introduce this bias, but can be 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.
Backtesting initializes all timestamps (loads the whole dataframe into memory) and calculates all indicators at once.
This means that if your indicators or entry/exit signals look into future candles, this will falsify your backtest.
Lookahead-analysis requires historic data to be available.
The `lookahead-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.
`lookahead-analysis` also supports freqai strategies.
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.
This command internally chains backtests and pokes at the strategy to provoke it to show lookahead bias.
This is done by not looking at the strategy code itself, but at 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.
`lookahead-analysis` can use the typical options of [Backtesting](backtesting.md), but forces the following options:
- `--cache` is forced to "none".
- `--max-open-trades` is forced to be at least equal to the number of pairs.
@@ -25,48 +23,83 @@ It also supports the lookahead-analysis of freqai strategies.
- `--stake-amount` is forced to be a static 10000 (10k).
- `--enable-protections` is forced to be off.
Those are set to avoid users accidentally generating false positives.
These are set to avoid users accidentally generating false positives.
## Lookahead-analysis command reference
--8<-- "commands/lookahead-analysis.md"
!!! 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.
!!! Note
The above output was reduced to options that `lookahead-analysis` adds on top of regular backtesting commands.
### Introduction
Many strategies - without the programmer knowing - have fallen prey to look ahead bias.
Many strategies, without the programmer knowing, have fallen prey to lookahead bias.
This typically makes the strategy backtest look profitable, sometimes to extremes, but this is not realistic as the strategy is "cheating" by looking at data it would not have in dry or live modes.
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.
The reason why strategies can "cheat" is because the freqtrade backtesting process populates the full dataframe including all candle timestamps at the outset.
If the programmer is not careful or oblivious how things work internally
(which sometimes can be really hard to find out) then the strategy will look into the future.
This command is made to try to verify the validity in the form of the aforementioned look ahead bias.
This command is made to try to verify the validity in the form of the aforementioned lookahead 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 this initial backtest runs, it will look if the `minimum-trade-amount` is met and if not cancel the lookahead-analysis for this strategy.
If this happens, use a wider timerange to get more trades for the analysis, or use a timerange where more trades occur.
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.
After setting the baseline it will then do additional backtest runs for every entry and exit separately.
When these verification backtests complete, it will compare the indicators at the signal candles (both 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.
### How to find and remove bias? How can I salvage a biased strategy?
If you found a biased strategy online and want to have the same results, just without bias,
then you will be out of luck most of the time.
Usually the bias in the strategy is THE driving factor for "too good to be true" profits.
Removing conditions or indicators that push the profits up from bias will usually make the strategy significantly worse.
You might be able to salvage it partially if the biased indicators or conditions are not the core of the strategy, or there
are other entry and exit signals that are not biased.
### Examples of lookahead-bias
- `shift(-10)` looks 10 candles into the future.
- Using `iloc[]` in populate_* functions to access a specific row in the dataframe.
- For-loops are prone to introduce lookahead bias if you don't tightly control which numbers are looped through.
- Aggregation functions like `.mean()`, `.min()` and `.max()`, without a rolling window,
will calculate the value over the **whole** dataframe, so the signal candle will "see" a value including future candles.
A non-biased example would be to look back candles using `rolling()` instead:
e.g. `dataframe['volume_mean_12'] = dataframe['volume'].rolling(12).mean()`
- `ta.MACD(dataframe, 12, 26, 1)` will introduce bias with a signalperiod of 1.
### What do the columns in the results table mean?
- `filename`: name of the checked strategy file
- `strategy`: checked strategy class name
- `has_bias`: result of the lookahead-analysis. `No` would be good, `Yes` would be bad.
- `total_signals`: number of checked signals (default is 20)
- `biased_entry_signals`: found bias in that many entries
- `biased_exit_signals`: found bias in that many exits
- `biased_indicators`: shows you the indicators themselves that are defined in populate_indicators
You might get false positives in the `biased_exit_signals` if you have biased entry signals paired with those exits.
However, a biased entry will usually result in a biased exit too,
even if the exit itself does not produce the bias -
especially if your entry and exit conditions use the same biased indicator.
**Address the bias in the entries first, then address the exits.**
### 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.
- In the results table, the `biased_indicators` column will falsely flag FreqAI target indicators defined in `set_freqai_targets()` as biased. These are not biased and can safely be ignored.
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. Signals that are not triggered will not have been verified.
This would lead to a false-negative, i.e. the strategy will be reported as non-biased.
- `lookahead-analysis` has access to the same backtesting options and this can introduce problems.
Please don't use any options like enabling position stacking as this will distort the number of checked signals.
If you decide to do so, then make doubly sure that you won't ever run out of `max_open_trades` slots,
and that you have enough capital in the backtest wallet configuration.
- In the results table, the `biased_indicators` column
will falsely flag FreqAI target indicators defined in `set_freqai_targets()` as biased.
**These are not biased and can safely be ignored.**
-1
View File
@@ -37,7 +37,6 @@
{{ super() }}
<!-- Place this tag in your head or just before your close body tag. -->
<script async defer src="https://buttons.github.io/buttons.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
+1
View File
@@ -50,6 +50,7 @@ Enable subscribing to an instance by adding the `external_message_consumer` sect
| `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.
| `initial_candle_limit` | Initial candles to expect from the Producer.<br>*Defaults to `1500`.*<br> **Datatype:** Integer - Number of candles.
| `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.
+3 -3
View File
@@ -1,7 +1,7 @@
markdown==3.7
markdown==3.8.2
mkdocs==1.6.1
mkdocs-material==9.6.9
mkdocs-material==9.6.14
mdx_truly_sane_lists==1.3
pymdown-extensions==10.14.3
pymdown-extensions==10.16
jinja2==3.1.6
mike==2.1.3
+4 -4
View File
@@ -190,9 +190,6 @@ delete_trade
:param trade_id: Deletes the trade with this ID from the database.
edge
Return information about edge.
forcebuy
Buy an asset.
@@ -268,6 +265,9 @@ show_config
start
Start the bot if it's in the stopped state.
pause
Pause the bot if it's in the running state. If triggered on stopped state will handle open positions.
stats
Return the stats report (durations, sell-reasons).
@@ -333,6 +333,7 @@ All endpoints in the below table need to be prefixed with the base URL of the AP
|-----------|--------|--------------------------|
| `/ping` | GET | Simple command testing the API Readiness - requires no authentication.
| `/start` | POST | Starts the trader.
| `/pause` | POST | Pause the trader. Gracefully handle open trades according to their rules. Do not enter new positions.
| `/stop` | POST | Stops the trader.
| `/stopbuy` | POST | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
| `/reload_config` | POST | Reloads the configuration file.
@@ -364,7 +365,6 @@ All endpoints in the below table need to be prefixed with the base URL of the AP
| `/blacklist` | GET | Show the current blacklist.
| `/blacklist` | POST | Adds the specified pair to the blacklist.<br/>*Params:*<br/>- `pair` (`str`)
| `/blacklist` | DELETE | Deletes the specified list of pairs from the blacklist.<br/>*Params:*<br/>- `[pair,pair]` (`list[str]`)
| `/edge` | GET | Show validated pairs by Edge if it is enabled.
| `/pair_candles` | GET | Returns dataframe for a pair / timeframe combination while the bot is running. **Alpha**
| `/pair_candles` | POST | Returns dataframe for a pair / timeframe combination while the bot is running, filtered by a provided list of columns to return. **Alpha**<br/>*Params:*<br/>- `<column_list>` (`list[str]`)
| `/pair_history` | GET | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. **Alpha**
+1 -1
View File
@@ -256,4 +256,4 @@ The new stoploss value will be applied to open trades (and corresponding log-mes
### Limitations
Stoploss values cannot be changed if `trailing_stop` is enabled and the stoploss has already been adjusted, or if [Edge](edge.md) is enabled (since Edge would recalculate stoploss based on the current market situation).
Stoploss values cannot be changed if `trailing_stop` is enabled and the stoploss has already been adjusted.
+7 -2
View File
@@ -165,18 +165,23 @@ If there is any significant difference, verify that your entry and exit signals
## Controlling or monitoring a running bot
Once your bot is running in dry or live mode, Freqtrade has five mechanisms to control or monitor a running bot:
Once your bot is running in dry or live mode, Freqtrade has six mechanisms to control or monitor a running bot:
- **[FreqUI](freq-ui.md)**: The easiest to get started with, FreqUI is a web interface to see and control current activity of your bot.
- **[Telegram](telegram-usage.md)**: On mobile devices, Telegram integration is available to get alerts about your bot activity and to control certain aspects.
- **[FTUI](https://github.com/freqtrade/ftui)**: FTUI is a terminal (command line) interface to Freqtrade, and allows monitoring of a running bot only.
- **[REST API](rest-api.md)**: The REST API allows programmers to develop their own tools to interact with a Freqtrade bot.
- **[freqtrade-client](rest-api.md#consuming-the-api)**: A python implementation of the REST API, making it easy to make requests and consume bot responses from your python apps or the command line.
- **[REST API endpoints](rest-api.md#available-endpoints)**: The REST API allows programmers to develop their own tools to interact with a Freqtrade bot.
- **[Webhooks](webhook-config.md)**: Freqtrade can send information to other services, e.g. discord, by webhooks.
### Logs
Freqtrade generates extensive debugging logs to help you understand what's happening. Please familiarise yourself with the information and error messages you might see in your bot logs.
Logging by default occurs on standard out (the command line). If you want to write out to a file instead, many freqtrade commands, including the `trade` command, accept the `--logfile` option to write to a file.
Check the [FAQ](faq.md#how-do-i-search-the-bot-logs-for-something) for examples.
## Final Thoughts
Algo trading is difficult, and most public strategies are not good performers due to the time and effort to make a strategy work profitably in multiple scenarios.
+261 -10
View File
@@ -12,6 +12,7 @@ Currently available callbacks:
* [`custom_stake_amount()`](#stake-size-management)
* [`custom_exit()`](#custom-exit-signal)
* [`custom_stoploss()`](#custom-stoploss)
* [`custom_roi()`](#custom-roi)
* [`custom_entry_price()` and `custom_exit_price()`](#custom-order-price-rules)
* [`check_entry_timeout()` and `check_exit_timeout()`](#custom-order-timeout-rules)
* [`confirm_trade_entry()`](#trade-entry-buy-order-confirmation)
@@ -26,6 +27,9 @@ Currently available callbacks:
--8<-- "includes/strategy-imports.md"
--8<-- "includes/strategy-exit-comparisons.md"
## Bot start
A simple callback which is called once when the strategy is loaded.
@@ -121,7 +125,7 @@ Freqtrade will fall back to the `proposed_stake` value should your code raise an
Called for open trade every throttling iteration (roughly every 5 seconds) until a trade is closed.
Allows to define custom exit signals, indicating that specified position should be sold. This is very useful when we need to customize exit conditions for each individual trade, or if you need trade data to make an exit decision.
Allows to define custom exit signals, indicating that specified position should be closed (full exit). This is very useful when we need to customize exit conditions for each individual trade, or if you need trade data to make an exit decision.
For example you could implement a 1:2 risk-reward ROI with `custom_exit()`.
@@ -178,6 +182,8 @@ Returning `None` will be interpreted as "no desire to change", and is the only s
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-exchangefreqtrade)).
If you're on futures markets, please take note of the [stoploss and leverage](stoploss.md#stoploss-and-leverage) section, as the stoploss value returned from `custom_stoploss` is the risk for this trade - not the relative price movement.
!!! 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.
@@ -233,7 +239,7 @@ class AwesomeStrategy(IStrategy):
: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 -0.04
return -0.04 * trade.leverage
```
#### Time based trailing stop
@@ -255,9 +261,9 @@ class AwesomeStrategy(IStrategy):
# 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
return -0.05 * trade.leverage
elif current_time - timedelta(minutes=60) > trade.open_date_utc:
return -0.10
return -0.10 * trade.leverage
return None
```
@@ -284,9 +290,9 @@ class AwesomeStrategy(IStrategy):
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
return -0.05 * trade.leverage
elif current_time - timedelta(minutes=60) > trade.open_date_utc:
return -0.10
return -0.10 * trade.leverage
return None
```
@@ -309,10 +315,10 @@ class AwesomeStrategy(IStrategy):
**kwargs) -> float | None:
if pair in ("ETH/BTC", "XRP/BTC"):
return -0.10
return -0.10 * trade.leverage
elif pair in ("LTC/BTC"):
return -0.05
return -0.15
return -0.05 * trade.leverage
return -0.15 * trade.leverage
```
#### Trailing stoploss with positive offset
@@ -341,7 +347,7 @@ class AwesomeStrategy(IStrategy):
desired_stoploss = current_profit / 2
# Use a minimum of 2.5% and a maximum of 5%
return max(min(desired_stoploss, 0.05), 0.025)
return max(min(desired_stoploss, 0.05), 0.025) * trade.leverage
```
#### Stepped stoploss
@@ -497,6 +503,135 @@ The helper function `stoploss_from_absolute()` can be used to convert from an ab
---
## Custom ROI
Called for open trade every iteration (roughly every 5 seconds) until a trade is closed.
The usage of the custom ROI method must be enabled by setting `use_custom_roi=True` on the strategy object.
This method allows you to define a custom minimum ROI threshold for exiting a trade, expressed as a ratio (e.g., `0.05` for 5% profit). If both `minimal_roi` and `custom_roi` are defined, the lower of the two thresholds will trigger an exit. For example, if `minimal_roi` is set to `{"0": 0.10}` (10% at 0 minutes) and `custom_roi` returns `0.05`, the trade will exit when the profit reaches 5%. Also, if `custom_roi` returns `0.10` and `minimal_roi` is set to `{"0": 0.05}` (5% at 0 minutes), the trade will be closed when the profit reaches 5%.
The method must return a float representing the new ROI threshold as a ratio, or `None` to fall back to the `minimal_roi` logic. Returning `NaN` or `inf` values is considered invalid and will be treated as `None`, causing the bot to use the `minimal_roi` configuration.
### Custom ROI examples
The following examples illustrate how to use the `custom_roi` function to implement different ROI logics.
#### Custom ROI per side
Use different ROI thresholds depending on the `side`. In this example, 5% for long entries and 2% for short entries.
```python
# Default imports
class AwesomeStrategy(IStrategy):
use_custom_roi = True
# ... populate_* methods
def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int,
entry_tag: str | None, side: str, **kwargs) -> float | None:
"""
Custom ROI logic, returns a new minimum ROI threshold (as a ratio, e.g., 0.05 for +5%).
Only called when use_custom_roi is set to True.
If used at the same time as minimal_roi, an exit will be triggered when the lower
threshold is reached. Example: If minimal_roi = {"0": 0.01} and custom_roi returns 0.05,
an exit will be triggered if profit reaches 5%.
:param pair: Pair that's currently analyzed.
:param trade: trade object.
:param current_time: datetime object, containing the current datetime.
:param trade_duration: Current trade duration in minutes.
:param entry_tag: Optional entry_tag (buy_tag) if provided with the buy signal.
:param side: 'long' or 'short' - indicating the direction of the current trade.
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
:return float: New ROI value as a ratio, or None to fall back to minimal_roi logic.
"""
return 0.05 if side == "long" else 0.02
```
#### Custom ROI per pair
Use different ROI thresholds depending on the `pair`.
```python
# Default imports
class AwesomeStrategy(IStrategy):
use_custom_roi = True
# ... populate_* methods
def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int,
entry_tag: str | None, side: str, **kwargs) -> float | None:
stake = trade.stake_currency
roi_map = {
f"BTC/{stake}": 0.02, # 2% for BTC
f"ETH/{stake}": 0.03, # 3% for ETH
f"XRP/{stake}": 0.04, # 4% for XRP
}
return roi_map.get(pair, 0.01) # 1% for any other pair
```
#### Custom ROI per entry tag
Use different ROI thresholds depending on the `entry_tag` provided with the buy signal.
```python
# Default imports
class AwesomeStrategy(IStrategy):
use_custom_roi = True
# ... populate_* methods
def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int,
entry_tag: str | None, side: str, **kwargs) -> float | None:
roi_by_tag = {
"breakout": 0.08, # 8% if tag is "breakout"
"rsi_overbought": 0.05, # 5% if tag is "rsi_overbought"
"mean_reversion": 0.03, # 3% if tag is "mean_reversion"
}
return roi_by_tag.get(entry_tag, 0.01) # 1% if tag is unknown
```
#### Custom ROI based on ATR
ROI value may be derived from indicators stored in dataframe. This example uses the ATR ratio as ROI.
``` python
# Default imports
# <...>
import talib.abstract as ta
class AwesomeStrategy(IStrategy):
use_custom_roi = True
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# <...>
dataframe["atr"] = ta.ATR(dataframe, timeperiod=10)
def custom_roi(self, pair: str, trade: Trade, current_time: datetime, trade_duration: int,
entry_tag: str | None, side: str, **kwargs) -> float | None:
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
last_candle = dataframe.iloc[-1].squeeze()
atr_ratio = last_candle["atr"] / last_candle["close"]
return atr_ratio # Returns the ATR value as ratio
```
---
## Custom order price rules
By default, freqtrade use the orderbook to automatically set an order price([Relevant documentation](configuration.md#prices-used-for-orders)), you also have the option to create custom order prices based on your strategy.
@@ -1107,3 +1242,119 @@ class AwesomeStrategy(IStrategy):
return None
```
## Plot annotations callback
The plot annotations callback is called whenever freqUI requests data to display a chart.
This callback has no meaning in the trade cycle context and is only used for charting purposes.
The strategy can then return a list of `AnnotationType` objects to be displayed on the chart.
Depending on the content returned - the chart can display horizontal areas, vertical areas, or boxes.
The full object looks like this:
``` json
{
"type": "area", // Type of the annotation, currently only "area" is supported
"start": "2024-01-01 15:00:00", // Start date of the area
"end": "2024-01-01 16:00:00", // End date of the area
"y_start": 94000.2, // Price / y axis value
"y_end": 98000, // Price / y axis value
"color": "",
"label": "some label"
}
```
The below example will mark the chart with areas for the hours 8 and 15, with a grey color, highlighting the market open and close hours.
This is obviously a very basic example.
``` python
# Default imports
class AwesomeStrategy(IStrategy):
def plot_annotations(
self, pair: str, start_date: datetime, end_date: datetime, dataframe: DataFrame, **kwargs
) -> list[AnnotationType]:
"""
Retrieve area annotations for a chart.
Must be returned as array, with type, label, color, start, end, y_start, y_end.
All settings except for type are optional - though it usually makes sense to include either
"start and end" or "y_start and y_end" for either horizontal or vertical plots
(or all 4 for boxes).
:param pair: Pair that's currently analyzed
:param start_date: Start date of the chart data being requested
:param end_date: End date of the chart data being requested
:param dataframe: DataFrame with the analyzed data for the chart
:param **kwargs: Ensure to keep this here so updates to this won't break your strategy.
:return: List of AnnotationType objects
"""
annotations = []
while start_dt < end_date:
start_dt += timedelta(hours=1)
if start_dt.hour in (8, 15):
annotations.append(
{
"type": "area",
"label": "Trade open and close hours",
"start": start_dt,
"end": start_dt + timedelta(hours=1),
# Omitting y_start and y_end will result in a vertical area spanning the whole height of the main Chart
"color": "rgba(133, 133, 133, 0.4)",
}
)
return annotations
```
Entries will be validated, and won't be passed to the UI if they don't correspond to the expected schema and will log an error if they don't.
!!! Warning "Many annotations"
Using too many annotations can cause the UI to hang, especially when plotting large amounts of historic data.
Use the annotation feature with care.
### Plot annotations example
![FreqUI - plot Annotations](assets/freqUI-chart-annotations-dark.png#only-dark)
![FreqUI - plot Annotations](assets/freqUI-chart-annotations-light.png#only-light)
??? Info "Code used for the plot above"
This is an example code and should be treated as such.
``` python
# Default imports
class AwesomeStrategy(IStrategy):
def plot_annotations(
self, pair: str, start_date: datetime, end_date: datetime, dataframe: DataFrame, **kwargs
) -> list[AnnotationType]:
annotations = []
while start_dt < end_date:
start_dt += timedelta(hours=1)
if (start_dt.hour % 4) == 0:
mark_areas.append(
{
"type": "area",
"label": "4h",
"start": start_dt,
"end": start_dt + timedelta(hours=1),
"color": "rgba(133, 133, 133, 0.4)",
}
)
elif (start_dt.hour % 2) == 0:
price = dataframe.loc[dataframe["date"] == start_dt, ["close"]].mean()
mark_areas.append(
{
"type": "area",
"label": "2h",
"start": start_dt,
"end": start_dt + timedelta(hours=1),
"y_end": price * 1.01,
"y_start": price * 0.99,
"color": "rgba(0, 255, 0, 0.4)",
}
)
return annotations
```
+1 -1
View File
@@ -1068,7 +1068,7 @@ To verify if a pair is currently locked, use `self.is_pair_locked(pair)`.
``` python
from freqtrade.persistence import Trade
from datetime import timedelta, datetime, timezone
# Put the above lines a the top of the strategy file, next to all the other imports
# Put the above lines at the top of the strategy file, next to all the other imports
# --------
# Within populate indicators (or populate_entry_trend):
+28
View File
@@ -19,3 +19,31 @@
#available-endpoints ~ .md-typeset__scrollwrap .md-typeset__table th:first-of-type {
width: 35% !important;
}
.md-typeset .md-button--sm {
padding: 0.2em 1em;
font-size: 12px;
font-weight: 600;
background-color: #f6f8fa;
color: #24292f;
border: 1px solid #d0d7de;
border-radius: 0.25em;
text-decoration: none;
display: inline-block;
transition: all 0.2s ease;
cursor: pointer;
}
.md-typeset .md-button--sm:hover {
background-color: #e5eaee;
border-color: #d1d9e0;
text-decoration: none;
color: #24292f;
}
.md-typeset .md-button--sm:active {
background-color: #ebecf0;
border-color: #afb8c1;
box-shadow: inset 0 1px 0 rgba(175, 184, 193, 0.2);
}
+18 -32
View File
@@ -188,7 +188,7 @@ You can create your own keyboard in `config.json`:
!!! Note "Supported Commands"
Only the following commands are allowed. Command arguments are not supported!
`/start`, `/stop`, `/status`, `/status table`, `/trades`, `/profit`, `/performance`, `/daily`, `/stats`, `/count`, `/locks`, `/balance`, `/stopentry`, `/reload_config`, `/show_config`, `/logs`, `/whitelist`, `/blacklist`, `/edge`, `/help`, `/version`, `/marketdir`
`/start`, `/pause`, `/stop`, `/status`, `/status table`, `/trades`, `/profit`, `/performance`, `/daily`, `/stats`, `/count`, `/locks`, `/balance`, `/stopentry`, `/reload_config`, `/show_config`, `/logs`, `/whitelist`, `/blacklist`, `/help`, `/version`, `/marketdir`
## Telegram commands
@@ -200,8 +200,8 @@ official commands. You can ask at any moment for help with `/help`.
|----------|-------------|
| **System commands**
| `/start` | Starts the trader
| `/pause | /stopentry | /stopbuy` | Pause the trader. Gracefully handle open trades according to their rules. Do not enter new positions.
| `/stop` | Stops the trader
| `/stopbuy | /stopentry` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
| `/reload_config` | Reloads the configuration file
| `/show_config` | Shows part of the current configuration with relevant settings to operation
| `/logs [limit]` | Show last log messages.
@@ -240,7 +240,6 @@ official commands. You can ask at any moment for help with `/help`.
| `/entries` | Shows Wins / losses by Exit reason as well as Avg. holding durations for buys and sells
| `/whitelist [sorted] [baseonly]` | Show the current whitelist. Optionally display in alphabetical order and/or with just the base currency of each pairing.
| `/blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
| `/edge` | Show validated pairs by Edge if it is enabled.
## Telegram commands in action
@@ -250,25 +249,27 @@ Below, example of Telegram message you will receive for each command.
> **Status:** `running`
### /pause | /stopentry | /stopbuy
> **Status:** `paused, no more entries will occur from now. Run /start to enable entries.`
Prevents the bot from opening new trades by changing the state to `paused`.
Open trades will continue to be managed according to their regular rules (ROI/exit signals, stop-loss, etc.).
Note that position adjustment remains active, but only on the exit side — meaning that when the bot is `paused`, it can only reduce the position size of open trades.
After this, give the bot time to close off open trades (can be checked via `/status table`).
Once all positions are closed, run `/stop` to completely stop the bot.
Use `/start` to resume the bot to the `running` state, allowing it to open new positions.
!!! Warning
The pause/stopentry signal is ONLY active while the bot is running, and is not persisted anyway, so restarting the bot will cause this to reset.
### /stop
> `Stopping trader ...`
> **Status:** `stopped`
### /stopbuy
> **status:** `Setting max_open_trades to 0. Run /reload_config to reset.`
Prevents the bot from opening new trades by temporarily setting "max_open_trades" to 0. Open trades will be handled via their regular rules (ROI / Sell-signal, stoploss, ...).
After this, give the bot time to close off open trades (can be checked via `/status table`).
Once all positions are sold, run `/stop` to completely stop the bot.
`/reload_config` resets "max_open_trades" to the value set in the configuration and resets this command.
!!! Warning
The stop-buy signal is ONLY active while the bot is running, and is not persisted anyway, so restarting the bot will cause this to reset.
### /status
For each open trade, the bot will send you the following message.
@@ -449,21 +450,6 @@ Use `/reload_config` to reset the blacklist.
> Using blacklist `StaticPairList` with 2 pairs
>`DODGE/BTC`, `HOT/BTC`.
### /edge
Shows pairs validated by Edge along with their corresponding win-rate, expectancy and stoploss values.
> **Edge only validated following pairs:**
```
Pair Winrate Expectancy Stoploss
-------- --------- ------------ ----------
DOCK/ETH 0.522727 0.881821 -0.03
PHX/ETH 0.677419 0.560488 -0.03
HOT/ETH 0.733333 0.490492 -0.03
HC/ETH 0.588235 0.280988 -0.02
ARDR/ETH 0.366667 0.143059 -0.01
```
### /version
> **Version:** `0.14.3`
+8 -5
View File
@@ -25,6 +25,7 @@ The following attributes / properties are available for each individual trade -
| `close_date_utc` | datetime | Timestamp when trade was closed - in UTC. |
| `close_profit` | float | Relative profit at the time of trade closure. `0.01` == 1% |
| `close_profit_abs` | float | Absolute profit (in stake currency) at the time of trade closure. |
| `realized_profit` | float | Absolute already realized profit (in stake currency) while the trade is still open. |
| `leverage` | float | Leverage used for this trade - defaults to 1.0 in spot markets. |
| `enter_tag` | string | Tag provided on entry via the `enter_tag` column in the dataframe. |
| `is_short` | boolean | True for short trades, False otherwise. |
@@ -133,15 +134,17 @@ Most properties here can be None as they are dependent on the exchange response.
|------------|-------------|-------------|
| `trade` | Trade | Trade object this order is attached to |
| `ft_pair` | string | Pair this order is for |
| `ft_is_open` | boolean | is the order filled? |
| `ft_is_open` | boolean | is the order still open? |
| `order_type` | string | Order type as defined on the exchange - usually market, limit or stoploss |
| `status` | string | Status as defined by ccxt. Usually open, closed, expired or canceled |
| `side` | string | Buy or Sell |
| `status` | string | Status as defined by [ccxt's order structure](https://docs.ccxt.com/#/README?id=order-structure). Usually open, closed, expired, canceled or rejected |
| `side` | string | buy or sell |
| `price` | float | Price the order was placed at |
| `average` | float | Average price the order filled at |
| `amount` | float | Amount in base currency |
| `filled` | float | Filled amount (in base currency) |
| `remaining` | float | Remaining amount |
| `filled` | float | Filled amount (in base currency) (use `safe_filled` instead) |
| `safe_filled` | float | Filled amount (in base currency) - guaranteed to not be None |
| `remaining` | float | Remaining amount (use `safe_remaining` instead) |
| `safe_remaining` | float | Remaining amount - either taken from the exchange or calculated. |
| `cost` | float | Cost of the order - usually average * filled (*Exchange dependent 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.* |
| `stake_amount_filled` | float | Filled Stake amount used for this order. *Added in 2024.11.* |
+1 -1
View File
@@ -45,4 +45,4 @@ Please refer to the corresponding installation sections (common problems linked
Common problems and their solutions:
* [ta-lib update on windows](windows_installation.md#2-install-ta-lib)
* [ta-lib update on windows](windows_installation.md#install-ta-lib)
+1 -1
View File
@@ -1,6 +1,6 @@
# Utility Subcommands
Besides the Live-Trade and Dry-Run run modes, the `backtesting`, `edge` and `hyperopt` optimization subcommands, and the `download-data` subcommand which prepares historical data, the bot contains a number of utility subcommands. They are described in this section.
Besides the Live-Trade and Dry-Run run modes, the `backtesting` and `hyperopt` optimization subcommands, and the `download-data` subcommand which prepares historical data, the bot contains a number of utility subcommands. They are described in this section.
## Create userdir
+1 -1
View File
@@ -42,7 +42,7 @@ cd freqtrade
Install ta-lib according to the [ta-lib documentation](https://github.com/TA-Lib/ta-lib-python#windows).
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.10, 3.11 and 3.12) and for 64bit Windows.
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.10, 3.11, 3.12 and 3.13) and for 64bit Windows.
These Wheels are also used by CI running on windows, and are therefore tested together with freqtrade.
Other versions must be downloaded from the above link.
+2 -2
View File
@@ -1,12 +1,12 @@
"""Freqtrade bot"""
__version__ = "2025.3"
__version__ = "2025.6"
if "dev" in __version__:
from pathlib import Path
try:
import subprocess # noqa: S404
import subprocess # noqa: S404, RUF100
freqtrade_basedir = Path(__file__).parent
+16 -8
View File
@@ -21,6 +21,8 @@ ARGS_COMMON = [
"user_data_dir",
]
ARGS_MAIN = ["version_main"]
ARGS_STRATEGY = [
"strategy",
"strategy_path",
@@ -43,7 +45,8 @@ ARGS_COMMON_OPTIMIZE = [
"pairs",
]
ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + [
ARGS_BACKTEST = [
*ARGS_COMMON_OPTIMIZE,
"position_stacking",
"enable_protections",
"dry_run_wallet",
@@ -54,9 +57,11 @@ ARGS_BACKTEST = ARGS_COMMON_OPTIMIZE + [
"backtest_breakdown",
"backtest_cache",
"freqai_backtest_live_models",
"backtest_notes",
]
ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + [
ARGS_HYPEROPT = [
*ARGS_COMMON_OPTIMIZE,
"hyperopt",
"hyperopt_path",
"position_stacking",
@@ -74,9 +79,10 @@ ARGS_HYPEROPT = ARGS_COMMON_OPTIMIZE + [
"disableparamexport",
"hyperopt_ignore_missing_space",
"analyze_per_epoch",
"early_stop",
]
ARGS_EDGE = ARGS_COMMON_OPTIMIZE + ["stoploss_range"]
ARGS_EDGE = [*ARGS_COMMON_OPTIMIZE]
ARGS_LIST_STRATEGIES = [
"strategy_path",
@@ -125,7 +131,7 @@ ARGS_BUILD_STRATEGY = ["user_data_dir", "strategy", "strategy_path", "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",
@@ -191,7 +197,7 @@ ARGS_PLOT_PROFIT = [
ARGS_CONVERT_DB = ["db_url", "db_url_from"]
ARGS_INSTALL_UI = ["erase_ui_only", "ui_version"]
ARGS_INSTALL_UI = ["erase_ui_only", "ui_prerelease", "ui_version"]
ARGS_SHOW_TRADES = ["db_url", "trade_ids", "print_json"]
@@ -245,7 +251,7 @@ ARGS_STRATEGY_UPDATER = ["strategy_list", "strategy_path", "recursive_strategy_s
ARGS_LOOKAHEAD_ANALYSIS = [
a
for a in ARGS_BACKTEST
if a not in ("position_stacking", "backtest_cache", "backtest_breakdown")
if a not in ("position_stacking", "backtest_cache", "backtest_breakdown", "backtest_notes")
] + ["minimum_trade_amount", "targeted_trade_amount", "lookahead_analysis_exportfilename"]
ARGS_RECURSIVE_ANALYSIS = ["timeframe", "timerange", "dataformat_ohlcv", "pairs", "startup_candle"]
@@ -347,7 +353,7 @@ class Arguments:
self.parser = ArgumentParser(
prog="freqtrade", description="Free, open source crypto trading bot"
)
self._build_args(optionlist=["version_main"], parser=self.parser)
self._build_args(optionlist=ARGS_MAIN, parser=self.parser)
from freqtrade.commands import (
start_analysis_entries_exits,
@@ -500,7 +506,9 @@ class Arguments:
# Add edge subcommand
edge_cmd = subparsers.add_parser(
"edge", help="Edge module.", parents=[_common_parser, _strategy_parser]
"edge",
help="Edge module. No longer part of Freqtrade",
parents=[_common_parser, _strategy_parser],
)
edge_cmd.set_defaults(func=start_edge)
self._build_args(optionlist=ARGS_EDGE, parser=edge_cmd)
+24 -9
View File
@@ -83,7 +83,8 @@ AVAILABLE_CLI_OPTIONS = {
"-d",
"--datadir",
"--data-dir",
help="Path to directory with historical backtesting data.",
help="Path to the base directory of the exchange with historical backtesting data. "
"To see futures data, use trading-mode additionally.",
metavar="PATH",
),
"user_data_dir": Arg(
@@ -203,6 +204,11 @@ AVAILABLE_CLI_OPTIONS = {
help="Export backtest results (default: trades).",
choices=constants.EXPORT_OPTIONS,
),
"backtest_notes": Arg(
"--notes",
help="Add notes to the backtest results.",
metavar="TEXT",
),
"exportfilename": Arg(
"--export-filename",
"--backtest-filename",
@@ -234,13 +240,6 @@ AVAILABLE_CLI_OPTIONS = {
default=constants.BACKTEST_CACHE_DEFAULT,
choices=constants.BACKTEST_CACHE_AGE,
),
# Edge
"stoploss_range": Arg(
"--stoplosses",
help="Defines a range of stoploss values against which edge will assess the strategy. "
'The format is "min,max,step" (without any space). '
"Example: `--stoplosses=-0.01,-0.1,-0.001`",
),
# Hyperopt
"hyperopt": Arg(
"--hyperopt",
@@ -261,6 +260,13 @@ AVAILABLE_CLI_OPTIONS = {
metavar="INT",
default=constants.HYPEROPT_EPOCH,
),
"early_stop": Arg(
"--early-stop",
help="Early stop hyperopt if no improvement after (default: %(default)d) epochs.",
type=check_int_positive,
metavar="INT",
default=0, # 0 to disable by default
),
"spaces": Arg(
"--spaces",
help="Specify which parameters to hyperopt. Space-separated list.",
@@ -463,7 +469,7 @@ AVAILABLE_CLI_OPTIONS = {
"format_from_trades": Arg(
"--format-from",
help="Source format for data conversion.",
choices=constants.AVAILABLE_DATAHANDLERS + ["kraken_csv"],
choices=[*constants.AVAILABLE_DATAHANDLERS, "kraken_csv"],
required=True,
),
"format_from": Arg(
@@ -527,6 +533,15 @@ AVAILABLE_CLI_OPTIONS = {
),
type=str,
),
"ui_prerelease": Arg(
"--prerelease",
help=(
"Install the latest pre-release version of FreqUI. "
"This is not recommended for production use."
),
action="store_true",
default=False,
),
# Templating options
"template": Arg(
"--template",
+10 -8
View File
@@ -23,8 +23,8 @@ def start_create_userdir(args: dict[str, Any]) -> None:
"""
from freqtrade.configuration.directory_operations import copy_sample_files, create_userdata_dir
if "user_data_dir" in args and args["user_data_dir"]:
userdir = create_userdata_dir(args["user_data_dir"], create_dir=True)
if user_data_dir := args.get("user_data_dir"):
userdir = create_userdata_dir(user_data_dir, create_dir=True)
copy_sample_files(userdir, overwrite=args["reset"])
else:
logger.warning("`create-userdir` requires --userdir to be set.")
@@ -85,22 +85,22 @@ def start_new_strategy(args: dict[str, Any]) -> None:
config = setup_utils_configuration(args, RunMode.UTIL_NO_EXCHANGE)
if "strategy" in args and args["strategy"]:
if "strategy_path" in args and args["strategy_path"]:
strategy_dir = Path(args["strategy_path"])
if strategy := args.get("strategy"):
if strategy_path := args.get("strategy_path"):
strategy_dir = Path(strategy_path)
else:
strategy_dir = config["user_data_dir"] / USERPATH_STRATEGIES
if not strategy_dir.is_dir():
logger.info(f"Creating strategy directory {strategy_dir}")
strategy_dir.mkdir(parents=True)
new_path = strategy_dir / (args["strategy"] + ".py")
new_path = strategy_dir / (strategy + ".py")
if new_path.exists():
raise OperationalException(
f"`{new_path}` already exists. Please choose another Strategy Name."
)
deploy_new_strategy(args["strategy"], new_path, args["template"])
deploy_new_strategy(strategy, new_path, args["template"])
else:
raise ConfigurationError("`new-strategy` requires --strategy to be set.")
@@ -116,7 +116,9 @@ def start_install_ui(args: dict[str, Any]) -> None:
dest_folder = Path(__file__).parents[1] / "rpc/api_server/ui/installed/"
# First make sure the assets are removed.
dl_url, latest_version = get_ui_download_url(args.get("ui_version"))
dl_url, latest_version = get_ui_download_url(
args.get("ui_version"), args.get("ui_prerelease", False)
)
curr_version = read_ui_version(dest_folder)
if curr_version == latest_version and not args.get("erase_ui_only"):
+12 -8
View File
@@ -51,7 +51,7 @@ def download_and_install_ui(dest_folder: Path, dl_url: str, version: str):
f.write(version)
def get_ui_download_url(version: str | None = None) -> tuple[str, str]:
def get_ui_download_url(version: str | None, prerelease: bool) -> tuple[str, str]:
base_url = "https://api.github.com/repos/freqtrade/frequi/"
# Get base UI Repo path
@@ -61,14 +61,18 @@ def get_ui_download_url(version: str | None = None) -> tuple[str, str]:
if version:
tmp = [x for x in r if x["name"] == version]
if tmp:
latest_version = tmp[0]["name"]
assets = tmp[0].get("assets", [])
else:
raise ValueError("UI-Version not found.")
else:
latest_version = r[0]["name"]
assets = r[0].get("assets", [])
tmp = [x for x in r if prerelease or not x.get("prerelease")]
if tmp:
# Ensure we have the latest version
if version is None:
tmp.sort(key=lambda x: x["created_at"], reverse=True)
latest_version = tmp[0]["name"]
assets = tmp[0].get("assets", [])
else:
raise ValueError("UI-Version not found.")
dl_url = ""
if assets and len(assets) > 0:
dl_url = assets[0]["browser_download_url"]
+1 -1
View File
@@ -5,7 +5,6 @@ from typing import Any
from freqtrade.enums import RunMode
from freqtrade.exceptions import ConfigurationError, OperationalException
from freqtrade.ft_types import ValidExchangesType
logger = logging.getLogger(__name__)
@@ -21,6 +20,7 @@ def start_list_exchanges(args: dict[str, Any]) -> None:
from rich.text import Text
from freqtrade.exchange import list_available_exchanges
from freqtrade.ft_types import ValidExchangesType
from freqtrade.loggers.rich_console import get_rich_console
available_exchanges: list[ValidExchangesType] = list_available_exchanges(
+4 -9
View File
@@ -129,15 +129,10 @@ def start_edge(args: dict[str, Any]) -> None:
:param args: Cli args from Arguments()
:return: None
"""
from freqtrade.optimize.edge_cli import EdgeCli
# Initialize configuration
config = setup_optimize_configuration(args, RunMode.EDGE)
logger.info("Starting freqtrade in Edge mode")
# Initialize Edge object
edge_cli = EdgeCli(config)
edge_cli.start()
raise ConfigurationError(
"The Edge module has been deprecated in 2023.9 and removed in 2025.6. "
"All functionalities of edge have been removed."
)
def start_lookahead_analysis(args: dict[str, Any]) -> None:

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