Compare commits

...

1580 Commits

Author SHA1 Message Date
Matthias
7c8b934c1d Merge pull request #11307 from freqtrade/new_release
New release 2025.1
2025-01-31 06:22:51 +01:00
Matthias
10eef02e58 chore: bump version to 2025.1 2025-01-30 19:41:27 +01:00
Matthias
20380b616a Merge branch 'stable' into new_release 2025-01-30 19:41:09 +01:00
Matthias
94010287cc Merge pull request #11304 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-01-30 06:30:58 +01:00
xmatthias
24ebe1a205 chore: update pre-commit hooks 2025-01-30 03:02:38 +00:00
Matthias
63ca884dbe chore: remove unused import 2025-01-29 19:42:57 +01:00
Matthias
a6005fde28 feat: simplify traceback display
The Rich way to display is confusing and pretty verbose.
2025-01-29 18:21:07 +01:00
Matthias
486a4ed5c0 chore: remove unused fixture 2025-01-28 19:27:50 +01:00
Matthias
fd4cd11de2 test: simplify api_ws_test 2025-01-28 19:27:50 +01:00
Matthias
262cfedfc9 Merge pull request #11302 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-01-28 06:48:46 +01:00
Matthias
0e807d4a18 chore: fix typo as identified by codespell 2025-01-28 06:29:54 +01:00
xmatthias
de8b3a89fd chore: update pre-commit hooks 2025-01-28 03:03:24 +00:00
Matthias
62e3f408a6 chore: make some internal fetch-trades methods require since 2025-01-27 20:36:14 +01:00
Matthias
9b0beb0e6d Merge pull request #11300 from freqtrade/dependabot/pip/develop/prompt-toolkit-3.0.50
chore(deps): bump prompt-toolkit from 3.0.36 to 3.0.50
2025-01-27 19:13:43 +01:00
Matthias
939e3e4a53 Merge pull request #11299 from freqtrade/dependabot/pip/develop/cachetools-5.5.1
chore(deps): bump cachetools from 5.5.0 to 5.5.1
2025-01-27 08:12:44 +01:00
Matthias
e257589fdb Merge pull request #11298 from freqtrade/dependabot/pip/develop/ccxt-4.4.50
chore(deps): bump ccxt from 4.4.49 to 4.4.50
2025-01-27 08:12:07 +01:00
Matthias
4d00309717 Merge pull request #11297 from freqtrade/dependabot/pip/develop/pydantic-2.10.6
chore(deps): bump pydantic from 2.10.5 to 2.10.6
2025-01-27 08:10:38 +01:00
Matthias
41535bef1f Merge pull request #11296 from freqtrade/dependabot/pip/develop/pre-commit-4.1.0
chore(deps-dev): bump pre-commit from 4.0.1 to 4.1.0
2025-01-27 07:26:03 +01:00
Matthias
ddad3ba616 Merge pull request #11301 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.12.4
chore(deps): bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4
2025-01-27 07:05:52 +01:00
Matthias
d70a48970d Merge pull request #11295 from freqtrade/dependabot/pip/develop/filelock-3.17.0
chore(deps): bump filelock from 3.16.1 to 3.17.0
2025-01-27 07:03:14 +01:00
dependabot[bot]
b91deaa0cd chore(deps): bump pydantic from 2.10.5 to 2.10.6
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.10.5 to 2.10.6.
- [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.5...v2.10.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 05:31:26 +00:00
dependabot[bot]
152705bc62 chore(deps-dev): bump pre-commit from 4.0.1 to 4.1.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 4.0.1 to 4.1.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v4.0.1...v4.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 05:31:08 +00:00
Matthias
f288381a08 Merge pull request #11294 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.14.1
chore(deps): bump pymdown-extensions from 10.14 to 10.14.1
2025-01-27 06:30:35 +01:00
Matthias
cfbc6a524c Merge pull request #11293 from freqtrade/dependabot/pip/develop/fastapi-0.115.7
chore(deps): bump fastapi from 0.115.6 to 0.115.7
2025-01-27 06:30:16 +01:00
Matthias
1495a15563 Merge pull request #11292 from freqtrade/dependabot/pip/develop/ruff-0.9.3
chore(deps-dev): bump ruff from 0.9.2 to 0.9.3
2025-01-27 06:30:00 +01:00
dependabot[bot]
4a582e5ce5 chore(deps): bump pypa/gh-action-pypi-publish from 1.12.3 to 1.12.4
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.12.3 to 1.12.4.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.12.3...v1.12.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 04:09:13 +00:00
dependabot[bot]
5b06db2529 chore(deps): bump prompt-toolkit from 3.0.36 to 3.0.50
Bumps [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) from 3.0.36 to 3.0.50.
- [Release notes](https://github.com/prompt-toolkit/python-prompt-toolkit/releases)
- [Changelog](https://github.com/prompt-toolkit/python-prompt-toolkit/blob/master/CHANGELOG)
- [Commits](https://github.com/prompt-toolkit/python-prompt-toolkit/compare/3.0.36...3.0.50)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 03:37:10 +00:00
dependabot[bot]
8e357934ed chore(deps): bump cachetools from 5.5.0 to 5.5.1
Bumps [cachetools](https://github.com/tkem/cachetools) from 5.5.0 to 5.5.1.
- [Changelog](https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/tkem/cachetools/compare/v5.5.0...v5.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 03:37:05 +00:00
dependabot[bot]
223ea8acec chore(deps): bump ccxt from 4.4.49 to 4.4.50
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.49 to 4.4.50.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.49...4.4.50)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 03:36:58 +00:00
dependabot[bot]
567a4f9aad chore(deps): bump filelock from 3.16.1 to 3.17.0
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.16.1 to 3.17.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.16.1...3.17.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 03:36:41 +00:00
dependabot[bot]
997f914d56 chore(deps): bump pymdown-extensions from 10.14 to 10.14.1
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.14 to 10.14.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.14...10.14.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 03:36:32 +00:00
dependabot[bot]
4a9483c669 chore(deps): bump fastapi from 0.115.6 to 0.115.7
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.6 to 0.115.7.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.115.6...0.115.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 03:36:28 +00:00
dependabot[bot]
319ea1072d chore(deps-dev): bump ruff from 0.9.2 to 0.9.3
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.9.2 to 0.9.3.
- [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.9.2...0.9.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-27 03:36:22 +00:00
Matthias
33eaa4b53e chore: add bt note to _generic_performance_query 2025-01-26 23:23:45 +01:00
Matthias
cf563c1a56 test: update tests for new best-pair logic 2025-01-26 23:19:35 +01:00
Matthias
99b2857d3d fix: align profit calculations between best pair and /performance
part of #11236
2025-01-26 20:16:27 +01:00
Matthias
eb24d11259 chore: improve method docstring 2025-01-26 20:11:01 +01:00
Matthias
f9d4d38523 fix: only consider filled orders 2025-01-26 20:07:00 +01:00
Matthias
b01de10ab2 test: adjust further tests 2025-01-26 20:04:28 +01:00
Matthias
fa4a540f9e test: adjust tests for new performance calculation 2025-01-26 19:56:29 +01:00
Matthias
4ee875ce2a fix: use properly calculated relative ratio for /entries and /exits 2025-01-26 19:49:34 +01:00
Matthias
78c71cdf87 refactor: make performance_query work in a dynamic way 2025-01-26 19:43:39 +01:00
Matthias
1aac8dfa59 chore: align interface of get_overall_performance 2025-01-26 17:54:11 +01:00
Matthias
33549a6cef fix: add small offset to allow since to be slightly different 2025-01-26 12:57:12 +01:00
Matthias
a0bc3d968b refactor: simplify binance_public_data 2025-01-26 10:56:45 +01:00
Matthias
8aab8bc528 refactor: improve binance_vision method naming 2025-01-26 09:46:47 +01:00
Matthias
aa595ae8cb refactor: extract binance candle url_segment 2025-01-26 09:41:58 +01:00
Matthias
b657e349a2 chore: remove obsolete comment 2025-01-26 09:22:10 +01:00
Matthias
77e6b2a108 fix: remove potentially problematic call 2025-01-25 18:21:01 +01:00
Matthias
d3f6227d3f chore: improve ohlcvs interface 2025-01-25 18:13:11 +01:00
Matthias
2a370aecd8 chore: ws: make ccxt_object internal 2025-01-25 14:03:41 +01:00
Matthias
0cfb73b74b chore: add wrapper for ws ohlcvs
this avoids access to internal objects
2025-01-25 14:02:09 +01:00
Matthias
867020606c feat: simplify wallet by extracting log
disabling logging in backtesting can be done in one place
2025-01-25 13:52:54 +01:00
Matthias
222da034d1 chore: fix wrong config property in api_server verbosity 2025-01-25 12:51:43 +01:00
Matthias
63b72fb4eb chore: add help-text to --version 2025-01-24 20:01:10 +01:00
Matthias
7e08828537 chore: Remove unused import 2025-01-24 19:43:51 +01:00
Matthias
d843216343 test: update tests for new --version handling 2025-01-24 19:43:18 +01:00
Matthias
120194ff1e chore: improved formatting 2025-01-24 19:43:18 +01:00
Matthias
27a9cbf5e4 feat: print version info on "-V" calls
closes #11222
2025-01-24 19:43:07 +01:00
Matthias
08b18b7ff6 feat: add print_version_info function
part of #11222
2025-01-24 07:16:27 +01:00
Matthias
c3cc58a1af Merge pull request #11248 from xmatthias/fix/backtest_max_detail_2
Improved Backtest timeframe-detail execution logic
2025-01-24 06:39:36 +01:00
Matthias
713979d80c Merge pull request #11275 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-01-23 06:31:11 +01:00
xmatthias
3d28765238 chore: update pre-commit hooks 2025-01-23 03:03:23 +00:00
Matthias
9efa48f2a8 chore: ensure that logged message actually make sense 2025-01-22 19:03:40 +01:00
Matthias
4a7a51035d docs: improve doc formatting 2025-01-22 18:56:33 +01:00
Matthias
7f2e6966a6 fix: update total_volume calculation to actually reflect volume
closes #11268
2025-01-22 18:50:39 +01:00
Matthias
1d22cf98c8 feat: add cost to minimized order json output 2025-01-22 07:19:09 +01:00
Matthias
03a22186bb chore: have backtest exit orders account for fee 2025-01-22 07:12:54 +01:00
Matthias
f4bc956b1b chore: fix type declaration 2025-01-22 07:08:54 +01:00
Matthias
f8f21cfc9c fix: Improve error message for download-data edgecase
hyperliquid doesn't provide historic data, neither klines nor trades.
This made the error message missleading.

closes #11270
2025-01-22 06:58:22 +01:00
Matthias
2b915a76df Merge pull request #11264 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-01-21 06:42:34 +01:00
xmatthias
eb41cc3b00 chore: update pre-commit hooks 2025-01-21 03:03:18 +00:00
Matthias
c1d812c307 Merge pull request #11254 from freqtrade/dependabot/pip/develop/pyarrow-19.0.0
chore(deps): bump pyarrow from 18.1.0 to 19.0.0
2025-01-20 19:52:16 +01:00
Matthias
952a647c69 chore: add pre-built pyarrow wheels 2025-01-20 19:30:54 +01:00
dependabot[bot]
dff308062e chore(deps): bump pyarrow from 18.1.0 to 19.0.0
Bumps [pyarrow](https://github.com/apache/arrow) from 18.1.0 to 19.0.0.
- [Release notes](https://github.com/apache/arrow/releases)
- [Commits](https://github.com/apache/arrow/compare/apache-arrow-18.1.0...apache-arrow-19.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 19:30:53 +01:00
Matthias
81b4285d17 test: avoid potential odd timing issues in test 2025-01-20 19:23:04 +01:00
Matthias
822521136f docs: improve location of "many position adjustment" warning 2025-01-20 19:01:45 +01:00
Matthias
6f307e1e3d test: add more sleep 2025-01-20 19:00:35 +01:00
Matthias
588bf357a9 test: add more sleep 2025-01-20 18:26:57 +01:00
Matthias
9158a3d7d9 test: add small wait to reduce test flakyness 2025-01-20 10:25:27 +01:00
Matthias
47a86c3d54 Merge pull request #11253 from freqtrade/dependabot/pip/develop/mkdocs-2f8f3f13ab
chore(deps): bump mkdocs-material from 9.5.49 to 9.5.50 in the mkdocs group
2025-01-20 07:09:04 +01:00
Matthias
1e27c8af0a Merge pull request #11259 from freqtrade/dependabot/pip/develop/ccxt-4.4.49
chore(deps): bump ccxt from 4.4.48 to 4.4.49
2025-01-20 07:08:48 +01:00
Matthias
38bf71f02f Merge pull request #11257 from freqtrade/dependabot/pip/develop/websockets-14.2
chore(deps): bump websockets from 14.1 to 14.2
2025-01-20 07:02:44 +01:00
Matthias
ffef87f7d1 docs: improve FAQ entry 2025-01-20 06:57:11 +01:00
Matthias
fc1feb9abc chore: try fix random test failure 2025-01-20 06:45:27 +01:00
Matthias
a3b1428d28 Merge pull request #11256 from freqtrade/dependabot/pip/develop/orjson-3.10.15
chore(deps): bump orjson from 3.10.14 to 3.10.15
2025-01-20 06:34:51 +01:00
Matthias
63c63560dd Merge pull request #11260 from freqtrade/dependabot/pip/develop/ruff-0.9.2
chore(deps-dev): bump ruff from 0.9.1 to 0.9.2
2025-01-20 06:34:13 +01:00
dependabot[bot]
0358a4d23b chore(deps-dev): bump ruff from 0.9.1 to 0.9.2
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.9.1 to 0.9.2.
- [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.9.1...0.9.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 03:07:52 +00:00
dependabot[bot]
df71670e6d chore(deps): bump ccxt from 4.4.48 to 4.4.49
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.48 to 4.4.49.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.48...4.4.49)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 03:07:36 +00:00
dependabot[bot]
0a09c6cbd7 chore(deps): bump websockets from 14.1 to 14.2
Bumps [websockets](https://github.com/python-websockets/websockets) from 14.1 to 14.2.
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](https://github.com/python-websockets/websockets/compare/14.1...14.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 03:07:09 +00:00
dependabot[bot]
152358ee18 chore(deps): bump orjson from 3.10.14 to 3.10.15
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.14 to 3.10.15.
- [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.14...3.10.15)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-20 03:07:03 +00:00
dependabot[bot]
d710ea448f 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.5.49 to 9.5.50
- [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.5.49...9.5.50)

---
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-01-20 03:06:38 +00:00
Matthias
36e4842fe9 chore: remove unnecessary commented line 2025-01-19 13:57:27 +01:00
Matthias
141286a88c feat: have performance account for leverage correctly 2025-01-19 13:57:00 +01:00
Matthias
1e2450d5b9 docs: improved telegram performance docs 2025-01-18 20:13:51 +01:00
Matthias
f773905d8e test: adjust rpc tests for new calculation 2025-01-18 20:08:19 +01:00
Matthias
2044af24a3 feat: improve performance query reliability 2025-01-18 20:08:19 +01:00
Matthias
6bca604bf9 feat: Add more comprehensive Relative % to performance list
closes #11236
2025-01-18 20:08:03 +01:00
Matthias
5d3a056ae5 test: update api_performance test to USDT 2025-01-18 20:03:12 +01:00
Matthias
e9eee11b2e test: simplify api_performance test setup 2025-01-18 20:00:28 +01:00
Matthias
cf5b6e5e20 test: improve test resiliance 2025-01-18 19:49:23 +01:00
Matthias
13050f0d67 chore: bump version to 2024.12.1 2025-01-18 14:22:50 +01:00
Matthias
61e5b4755c chore: Bump ccxt to 4.4.48
fixes a critical issue with bybit
2025-01-18 14:22:28 +01:00
Matthias
5e0ea48011 test: improve test_exit_positions slightly 2025-01-18 14:01:12 +01:00
Matthias
aceb3ac764 Merge pull request #10062 from Axel-CH/feature/proceed-exit-while-open-order
Feature: Proceed exit while having open order, for backtesting and live
2025-01-18 08:10:33 +01:00
Matthias
6b1af9b9a2 chore: move docstring to the right place 2025-01-17 19:37:15 +01:00
Matthias
e350dbd552 refactor: simplify backtesting class 2025-01-17 19:18:28 +01:00
Matthias
f7f78ad2a4 test: fix test comment 2025-01-17 19:01:11 +01:00
Matthias
26983c637a docs: document timeframe-detail potential difference 2025-01-17 07:07:25 +01:00
Matthias
733cd22dee chore: remove bt_open_open_trade_count_candle
it's no longer necessary if we support in-candle entries
2025-01-17 06:48:01 +01:00
Matthias
1e61aea23b feat: allow in-candle entries 2025-01-17 06:45:56 +01:00
Matthias
419d5d9946 feat: add backtesting support for ignore_buying_expired_candle_after
this is only relevant for detail candles - otherwise entries will never happen within a candle.
2025-01-17 06:38:39 +01:00
Matthias
d02b4d4c3f test: Fix detail futures test 2025-01-17 06:38:39 +01:00
Matthias
5f89708be4 test: fix long_short switch test 2025-01-16 19:47:12 +01:00
Matthias
e80ddcabe7 Merge pull request #11242 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-01-16 06:26:20 +01:00
xmatthias
12e0dcd523 chore: update pre-commit hooks 2025-01-16 03:04:05 +00:00
Matthias
4a6027b43f test: update pair_detail_simplified test
parallel analysis should cover more detailed cases to prevent intra-candle parallelism
2025-01-15 18:15:15 +01:00
Matthias
e81489807d fix: prevent multiple intra-candle trades 2025-01-15 18:11:46 +01:00
Matthias
a6601ba7d2 refactor: mark time_generators private 2025-01-15 07:11:44 +01:00
Matthias
2b4d3b3f15 refactor: extract detail/pair loop to separate generator 2025-01-15 07:10:37 +01:00
Matthias
a326af830f chore: simplify backtest loop interface 2025-01-15 07:05:52 +01:00
Matthias
cbe38c6f41 fix: don't detail-loop pairs if a trade closed within the current candle. 2025-01-15 06:46:33 +01:00
Matthias
d54af598ac Merge pull request #11237 from koistya/koistya/upgrade-ccxt
chore(deps): upgrade CCXT from 4.4.47 to 4.4.48
2025-01-14 21:44:14 +01:00
Matthias
1e1b4239e7 chore: improve a few typings 2025-01-14 21:29:43 +01:00
Matthias
f5be8fc70a fix: switch backtest loop to have linear timing
By running with timeframe-detail first, then pair, we can
have linear timing
This will avoid odd bugs due to in-candle closures

closes #11217
2025-01-14 21:10:11 +01:00
Matthias
807fcffdae chore: move more logic to generator 2025-01-14 20:15:17 +01:00
Matthias
96cea99d4f refactor: move index-handling into generator 2025-01-14 20:13:51 +01:00
Matthias
14acc6609f chore: remove unused statement 2025-01-14 20:00:00 +01:00
Matthias
8029729ab1 refactor: move more stuff into generator 2025-01-14 19:38:05 +01:00
Matthias
b525ba85c8 refactor: extract backtest detail_data_spread to function 2025-01-14 19:25:05 +01:00
Konstantin Tarkus
6db42f5fbc chore(deps): upgrade CCXT from 4.4.47 to 4.4.48 2025-01-14 17:22:18 +01:00
Matthias
1f0b23c5fc chore: fix typo in dataprovider 2025-01-14 06:33:53 +01:00
Matthias
a13feaf49f test: Update tests for short-circuit behavior 2025-01-14 06:33:45 +01:00
Matthias
2697ac3581 chore: stop detail processing once a trade closed 2025-01-14 06:33:31 +01:00
Matthias
70d9ac09d1 Merge pull request #11230 from freqtrade/dependabot/pip/develop/ruff-0.9.1
chore(deps-dev): bump ruff from 0.8.6 to 0.9.1
2025-01-13 19:10:51 +01:00
Matthias
be2907acca chore: bump ruff pre-commit version 2025-01-13 18:12:21 +01:00
Matthias
5b555cca57 Merge pull request #11231 from freqtrade/dependabot/pip/develop/orjson-3.10.14
chore(deps): bump orjson from 3.10.13 to 3.10.14
2025-01-13 18:11:52 +01:00
Matthias
f1c5d4a970 chore: ruff format updates 2025-01-13 18:05:20 +01:00
Matthias
2e482fbb3a Merge pull request #11227 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.37
chore(deps): bump sqlalchemy from 2.0.36 to 2.0.37
2025-01-13 07:47:34 +01:00
Matthias
35f914afa3 Merge pull request #11229 from freqtrade/dependabot/pip/develop/scipy-1.15.1
chore(deps): bump scipy from 1.15.0 to 1.15.1
2025-01-13 07:37:38 +01:00
Matthias
5356fc3191 Merge pull request #11226 from freqtrade/dependabot/pip/develop/stable-baselines3-2.4.1
chore(deps): bump stable-baselines3 from 2.4.0 to 2.4.1
2025-01-13 07:37:16 +01:00
Matthias
16ef348222 chore: improve docstring 2025-01-13 07:10:54 +01:00
Matthias
01ce4e42c6 chore: update type file name 2025-01-13 07:10:42 +01:00
Matthias
6addab2eae chore: update sqlalchemy in pre-commit 2025-01-13 07:04:42 +01:00
dependabot[bot]
f428e81469 chore(deps): bump scipy from 1.15.0 to 1.15.1
Bumps [scipy](https://github.com/scipy/scipy) from 1.15.0 to 1.15.1.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.15.0...v1.15.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 06:02:14 +00:00
Matthias
039bffb0e6 Merge pull request #11232 from freqtrade/dependabot/pip/develop/ccxt-4.4.47
chore(deps): bump ccxt from 4.4.46 to 4.4.47
2025-01-13 07:01:21 +01:00
Matthias
ea649fbdbf Merge pull request #11234 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.14
chore(deps): bump pymdown-extensions from 10.13 to 10.14
2025-01-13 06:59:56 +01:00
Matthias
15a99b02bd Merge pull request #11228 from freqtrade/dependabot/pip/develop/pydantic-2.10.5
chore(deps): bump pydantic from 2.10.4 to 2.10.5
2025-01-13 06:59:34 +01:00
Matthias
f7c94f7e44 Merge pull request #11233 from freqtrade/dependabot/pip/develop/scikit-learn-1.6.1
chore(deps): bump scikit-learn from 1.6.0 to 1.6.1
2025-01-13 06:58:24 +01:00
dependabot[bot]
76ab888714 chore(deps-dev): bump ruff from 0.8.6 to 0.9.1
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.6 to 0.9.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.8.6...0.9.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 05:53:18 +00:00
Matthias
c52a07f2f1 Merge pull request #11225 from freqtrade/dependabot/pip/develop/pytest-43126348c1
chore(deps-dev): bump pytest-asyncio from 0.25.1 to 0.25.2 in the pytest group
2025-01-13 06:51:26 +01:00
dependabot[bot]
e987858109 chore(deps): bump pymdown-extensions from 10.13 to 10.14
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.13 to 10.14.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.13...10.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 03:19:24 +00:00
dependabot[bot]
a8dc5339ab chore(deps): bump scikit-learn from 1.6.0 to 1.6.1
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 1.6.0 to 1.6.1.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/1.6.0...1.6.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 03:19:20 +00:00
dependabot[bot]
fb09d4c534 chore(deps): bump ccxt from 4.4.46 to 4.4.47
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.46 to 4.4.47.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.46...4.4.47)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 03:19:14 +00:00
dependabot[bot]
538c8c9805 chore(deps): bump orjson from 3.10.13 to 3.10.14
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.13 to 3.10.14.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.10.13...3.10.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 03:19:03 +00:00
dependabot[bot]
0e5f072f6c chore(deps): bump pydantic from 2.10.4 to 2.10.5
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.10.4 to 2.10.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.10.4...v2.10.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 03:18:34 +00:00
dependabot[bot]
ca6153715a chore(deps): bump sqlalchemy from 2.0.36 to 2.0.37
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.36 to 2.0.37.
- [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-01-13 03:18:16 +00:00
dependabot[bot]
2a1144c827 chore(deps): bump stable-baselines3 from 2.4.0 to 2.4.1
Bumps [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/DLR-RM/stable-baselines3/releases)
- [Commits](https://github.com/DLR-RM/stable-baselines3/compare/v2.4.0...v2.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 03:18:02 +00:00
dependabot[bot]
ffaf648d5c 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.1 to 0.25.2
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.1...v0.25.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-13 03:17:49 +00:00
Matthias
b1c5e0458c chore: use uv pip for CI runs 2025-01-11 14:47:34 +01:00
Matthias
cf1e8934aa chore: Update CI to use uv 2025-01-11 14:45:01 +01:00
Matthias
153e2f9628 chore: use UV action venv setup 2025-01-11 14:06:41 +01:00
Matthias
1b28be974c test: update tests for new behavior 2025-01-11 08:12:27 +01:00
Matthias
5bfd503cd8 fix: allow setting verbosity via Environment variable 2025-01-11 08:12:19 +01:00
Matthias
c90cfa896c test: never have more than 1 open order at a time. 2025-01-10 07:19:57 +01:00
Matthias
1a59ecf98e docs: update callback docs for new behavior 2025-01-10 07:16:24 +01:00
Matthias
711e680198 chore: improve log on adjust_entry_price cancels 2025-01-09 20:05:34 +01:00
Matthias
e5d508a507 docs: update adjust-entry docs about partial fills
These are canceled and NOT replaced - this needs to be pointed out.

closes #11212
2025-01-09 20:05:23 +01:00
Matthias
75fb2a0c86 fix: catch error when getting the last candle fails
It's unknown when this actually happens - but this should be the safer bet than crashing completely.

closes #11213
2025-01-09 18:21:51 +01:00
Matthias
092a9ff5db chore: fix error if precision.price is None 2025-01-09 18:06:58 +01:00
Matthias
dc7246413b chore: add futures only exchange variants to "bad exchanges" 2025-01-09 07:13:08 +01:00
Matthias
fbad2d5c89 Merge pull request #11211 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-01-09 06:32:39 +01:00
xmatthias
a6e44c9e4a chore: update pre-commit hooks 2025-01-09 03:19:10 +00:00
Matthias
cb0fc9c1a9 fix: don't show "**" for /status table 2025-01-07 19:19:38 +01:00
Matthias
b57cedeab7 Merge pull request #11178 from TheJoeSchr/fix/orderflow_imbalance_list
Fix:orderflow returns a list for stacked imbalances
2025-01-07 19:10:14 +01:00
Matthias
b863c6830d Merge pull request #11200 from freqtrade/feat/remove_hdf5
Remove hdf5 support
2025-01-07 06:48:48 +01:00
Matthias
3a8aba13d9 Merge pull request #11204 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2025-01-07 05:59:55 +01:00
xmatthias
09c272515e chore: update pre-commit hooks 2025-01-07 03:08:22 +00:00
Matthias
c266490ee4 fix: Try fix api_log test error in unfortunate timing scenarios 2025-01-06 14:19:16 +01:00
Matthias
ecd2d013df chore: remove hdf5 from data comparison 2025-01-06 13:59:02 +01:00
Matthias
fa306b090e feat: Add create-command-partials to CI to ensure we remain aligned 2025-01-06 13:56:33 +01:00
Matthias
6ca5d42c89 chore: add Script to auto-export create_command_partials 2025-01-06 13:55:12 +01:00
Matthias
353e3da2f8 docs: add "main" commands section 2025-01-06 13:55:01 +01:00
Matthias
054bccf24e docs: update Readme.md command output 2025-01-06 13:54:48 +01:00
Matthias
96490b7b7a docs: use includes for command help output 2025-01-06 13:51:56 +01:00
Matthias
fc9ea6d153 docs: improve hdf5 deprecation message 2025-01-06 13:33:25 +01:00
Matthias
817707711d Remove binary hdf5 dependencies 2025-01-06 13:32:42 +01:00
Matthias
e2bdf2a97f tests: fix remaining hdf5 occurance 2025-01-06 13:31:29 +01:00
Matthias
5bb109884c test: remove hdf5 testdata 2025-01-06 13:31:21 +01:00
Matthias
64c2c6a524 Merge pull request #11195 from freqtrade/dependabot/pip/develop/scipy-1.15.0
chore(deps): bump scipy from 1.14.1 to 1.15.0
2025-01-06 13:28:30 +01:00
Matthias
6760d44761 tests: Update tests with removed hdf5 handler 2025-01-06 13:26:06 +01:00
Matthias
1f0d304190 chore: remove hdf5 from supported data handlers 2025-01-06 13:25:30 +01:00
Matthias
de2b8dcfdd feat: remove hdf5 dependencies and install logic 2025-01-06 13:21:16 +01:00
Matthias
0e5a88bf93 feat: remove hdf5 datahandler, raise exception when still configured 2025-01-06 13:20:18 +01:00
Matthias
a19872d640 chore: clean up running event loops after test 2025-01-06 13:10:02 +01:00
Matthias
ee63e51cc5 chore: remove deprecated sklearn function call 2025-01-06 13:08:50 +01:00
Matthias
82e3e3d66e Merge pull request #11188 from jerome-benoit/docs
docs(freqai): point link anchor to right section
2025-01-06 12:40:49 +01:00
Matthias
cb5fd6ea71 Merge pull request #11190 from freqtrade/dependabot/pip/develop/nbconvert-7.16.5
chore(deps-dev): bump nbconvert from 7.16.4 to 7.16.5
2025-01-06 12:16:37 +01:00
Matthias
d12d3ac0b3 Merge pull request #11194 from freqtrade/dependabot/pip/develop/ruff-0.8.6
chore(deps-dev): bump ruff from 0.8.4 to 0.8.6
2025-01-06 11:48:44 +01:00
dependabot[bot]
489440fbc3 chore(deps-dev): bump ruff from 0.8.4 to 0.8.6
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.4 to 0.8.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.8.4...0.8.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 07:34:46 +00:00
Matthias
5a3b7f8915 Merge pull request #11189 from freqtrade/dependabot/pip/develop/pytest-60ad21c7c8
chore(deps-dev): bump pytest-asyncio from 0.25.0 to 0.25.1 in the pytest group
2025-01-06 08:33:25 +01:00
Matthias
49ef2393fb Merge pull request #11191 from freqtrade/dependabot/pip/develop/ccxt-4.4.46
chore(deps): bump ccxt from 4.4.43 to 4.4.46
2025-01-06 08:30:00 +01:00
dependabot[bot]
af673f568d 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.0 to 0.25.1
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.25.0...v0.25.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 06:56:15 +00:00
Matthias
eed89d2749 Merge pull request #11197 from freqtrade/dependabot/pip/develop/mypy-1.14.1
chore(deps-dev): bump mypy from 1.14.0 to 1.14.1
2025-01-06 07:53:57 +01:00
Matthias
a883114c92 Merge pull request #11196 from freqtrade/dependabot/pip/develop/python-telegram-bot-21.10
chore(deps): bump python-telegram-bot from 21.9 to 21.10
2025-01-06 07:53:16 +01:00
dependabot[bot]
22905baf55 chore(deps-dev): bump mypy from 1.14.0 to 1.14.1
Bumps [mypy](https://github.com/python/mypy) from 1.14.0 to 1.14.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.14.0...v1.14.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 03:12:39 +00:00
dependabot[bot]
999fc2208a chore(deps): bump python-telegram-bot from 21.9 to 21.10
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 21.9 to 21.10.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v21.9...v21.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 03:12:21 +00:00
dependabot[bot]
767a145374 chore(deps): bump scipy from 1.14.1 to 1.15.0
Bumps [scipy](https://github.com/scipy/scipy) from 1.14.1 to 1.15.0.
- [Release notes](https://github.com/scipy/scipy/releases)
- [Commits](https://github.com/scipy/scipy/compare/v1.14.1...v1.15.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 03:12:17 +00:00
dependabot[bot]
4ef5a878d6 chore(deps): bump ccxt from 4.4.43 to 4.4.46
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.43 to 4.4.46.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.43...4.4.46)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 03:11:46 +00:00
dependabot[bot]
70a53d68a4 chore(deps-dev): bump nbconvert from 7.16.4 to 7.16.5
Bumps [nbconvert](https://github.com/jupyter/nbconvert) from 7.16.4 to 7.16.5.
- [Release notes](https://github.com/jupyter/nbconvert/releases)
- [Changelog](https://github.com/jupyter/nbconvert/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jupyter/nbconvert/compare/v7.16.4...v7.16.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2025-01-06 03:11:39 +00:00
Jérôme Benoit
4297c5830f docs(freqai): point link anchor to right section
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
2025-01-06 01:59:45 +01:00
Matthias
00d1f14bcc Merge pull request #11184 from jerome-benoit/docs
docs: reference stable freqai docker images
2025-01-05 19:35:47 +01:00
Jérôme Benoit
c100009b00 docs: reference stable freqai docker images
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
2025-01-05 16:58:48 +01:00
Matthias
93c2d6a7ad tests: Add test for get_ohlcv to ensure behavior is and stays correct 2025-01-05 13:13:51 +01:00
Matthias
649739b8e4 test: fix test failure due to missing commonCurrencies attr 2025-01-05 13:05:03 +01:00
Matthias
f109d08bd0 tests: add test for exchange_ws cleanup error 2025-01-05 13:00:57 +01:00
Matthias
6b96d4d145 test: improve exchange_ws tests 2025-01-05 13:00:47 +01:00
Matthias
98e49ab187 fix: add workaround for missing kraken balance mapping
closes #11118
2025-01-05 11:30:25 +01:00
Matthias
b70d02e46d test: add test for kraken balance problem
part of #11118
2025-01-05 11:29:15 +01:00
Matthias
4f1bf6a1f0 test: add test for kraken balance response parsing
part of #11118
2025-01-05 11:21:37 +01:00
Matthias
5f0df2c1de chore: Improve websocket behavior with unsynched time
closes #11139
2025-01-05 11:11:34 +01:00
Matthias
ece7b0d9f2 feat: add format_ms_time_detailed view 2025-01-05 10:49:53 +01:00
Matthias
e620f55cd6 chore: improve variable naming in exchange_ws 2025-01-05 10:13:20 +01:00
Matthias
08fa82dc53 test: adjust test for new value unit 2025-01-05 10:08:20 +01:00
Matthias
a9483edaac chore: convert _pairs_last_refresh_time to milliseconds 2025-01-05 10:06:27 +01:00
Matthias
2fe9ceab8d chore: improve variable naming 2025-01-05 09:55:17 +01:00
Matthias
f6bf6c52c5 chore: use dt_ts to convert timestamp 2025-01-05 09:54:59 +01:00
Joe Schr
5f5e51326f chore: modify orderflow docs re. stacked imbalance changes 2025-01-04 23:59:11 +01:00
Joe Schr
7c148a0123 fix: remove superfluous territory return statement 2025-01-04 23:48:55 +01:00
Matthias
452358541b refactor: simplify some date calculations 2025-01-04 17:40:51 +01:00
Matthias
37c10c9b06 Merge pull request #11182 from 14790897/fix-docs-link-error
fix: link error in strategy-customization
2025-01-04 17:14:33 +01:00
liuweiqing
3682fcba4d fix: link error in strategy-customization 2025-01-04 23:55:45 +08:00
Matthias
046e1534f3 chore: Improve exchange_ws debug logging 2025-01-04 14:18:25 +01:00
Joe Schr
fd7272ba63 chore: fix unterminated string literal in test runner 2025-01-03 19:01:59 +01:00
Joe Schr
12adbeb7f3 fix: don't sort stacked imbalances, return empty list if no found...
... also removes helper functions `stacked_imbalance_bid` & `stacked_imbalance_ask`
2025-01-03 18:42:00 +01:00
Joe Schr
11976f11b0 fix: Improve stacked imbalance detection in orderflow converter 2025-01-03 18:42:00 +01:00
Joe Schr
ea96abecd0 test: Add comprehensive test for stacked_imbalances with multiple price entries 2025-01-03 18:42:00 +01:00
Joe Schr
5589578872 test: Update tests for stacked imbalances returning lists 2025-01-03 18:42:00 +01:00
Joe Schr
fb4aae080b refactor: Modify stacked_imbalance to return list of prices instead of max price 2025-01-03 16:21:54 +01:00
Matthias
471df70f62 test: add test for improved safe_wrapper behavior 2025-01-03 15:29:01 +01:00
Matthias
90b1e15eb2 feat: Skip trade deepcopy if the callback isn't implemented
closes #10946
2025-01-03 15:28:41 +01:00
Matthias
9c825fb156 chore: remove unnecessary verbosity of offset filter 2025-01-03 14:43:45 +01:00
Matthias
676cdab9a9 docs: improve adjust_entry_price documentation
closes #11177
2025-01-03 13:23:12 +01:00
Matthias
c4b34ea60c fix: Improve MultiMetricHyperoptLoss
Capping expectancy_ratio makes sense - but must be done in a better way

closes #11174
2025-01-03 13:20:11 +01:00
Matthias
af0d719b2c chore: prevent error exiting when an order is already open and due for cancelation 2025-01-02 15:03:29 +01:00
Matthias
0866b8fdca chore: bump py_find_1st to 1.1.7 2025-01-02 12:57:32 +01:00
Matthias
32d966a8a6 Merge pull request #11173 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2025-01-02 07:52:08 +01:00
xmatthias
b6f6afa15e chore: update pre-commit hooks 2025-01-02 03:05:14 +00:00
Matthias
9f69b4f1b6 Merge pull request #11172 from froggleston/frog-docs-adjust-1
Clarify trade.stake_amount as combined stake for all adjusted orders
2025-01-01 17:08:34 +01:00
froggleston
d23c3120e6 Clarify trade.stake_amount as combined stake for all adjusted orders 2025-01-01 15:07:40 +00:00
Matthias
9beae3d164 fix: download-data progressbars should work properly 2024-12-31 10:01:02 +01:00
Matthias
503eb1e55d Merge pull request #11120 from freqtrade/feat/BNFCR
Add support for BNFCR
2024-12-30 17:31:47 +01:00
Matthias
0919d4c274 test: improve integration test case 2024-12-30 13:56:02 +01:00
Matthias
f4c004347e chore: backtesting should avoid unnecessary logging 2024-12-30 13:47:36 +01:00
Matthias
d2beb07eef Merge pull request #11164 from freqtrade/dependabot/pip/develop/orjson-3.10.13
chore(deps): bump orjson from 3.10.12 to 3.10.13
2024-12-30 07:00:44 +01:00
Matthias
466e834680 Merge pull request #11160 from freqtrade/new_release
New release 2024.12
2024-12-30 06:58:30 +01:00
Matthias
5266f74708 Merge pull request #11163 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.13
chore(deps): bump pymdown-extensions from 10.12 to 10.13
2024-12-30 06:47:49 +01:00
Matthias
243f219e22 Merge pull request #11162 from freqtrade/dependabot/pip/develop/questionary-2.1.0
chore(deps): bump questionary from 2.0.1 to 2.1.0
2024-12-30 06:47:27 +01:00
dependabot[bot]
0f5ef03dc9 chore(deps): bump orjson from 3.10.12 to 3.10.13
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.12 to 3.10.13.
- [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.12...3.10.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 03:30:51 +00:00
dependabot[bot]
c1e032a4f0 chore(deps): bump pymdown-extensions from 10.12 to 10.13
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.12 to 10.13.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.12...10.13)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 03:30:38 +00:00
dependabot[bot]
c460511574 chore(deps): bump questionary from 2.0.1 to 2.1.0
Bumps [questionary](https://github.com/tmbo/questionary) from 2.0.1 to 2.1.0.
- [Commits](https://github.com/tmbo/questionary/compare/2.0.1...2.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-30 03:30:22 +00:00
Matthias
8624a9c306 Revert "chore: windows CI -> -n logical"
This reverts commit 1f6a0dccd5.
2024-12-29 18:01:06 +01:00
Matthias
1f6a0dccd5 chore: windows CI -> -n logical 2024-12-29 17:20:34 +01:00
Matthias
99ba489874 chore(CI): run windows tests in parallel 2024-12-29 17:20:34 +01:00
Matthias
ea00260e79 chore: bump version to 2025.1-dev 2024-12-29 17:20:34 +01:00
Matthias
fcc7c5cf5c Merge pull request #11159 from xmatthias/rich_console
Add rich log handler
2024-12-29 15:45:56 +01:00
Matthias
4285602323 Merge pull request #11154 from freqtrade/feat/zip_backtest
Zip backtest results
2024-12-29 15:40:17 +01:00
Matthias
9e0b9962ce chore: bump version to 2024.12 2024-12-29 15:28:46 +01:00
Matthias
4d2863baf5 Merge branch 'stable' into new_release 2024-12-29 15:28:30 +01:00
Matthias
10969b7139 chore: improved error handling 2024-12-29 14:27:29 +01:00
Matthias
a4f3fe70c5 feat: add "no-color" argument to general arguments 2024-12-29 11:52:56 +01:00
Matthias
3903e4455c chore: remove unused variable in hyperopt 2024-12-29 11:49:49 +01:00
Matthias
0f2d3f2638 test: Update tests to use rich Handler 2024-12-29 11:47:51 +01:00
Matthias
3ed1454168 chore: reduce traceback verbosity 2024-12-29 11:44:21 +01:00
Matthias
b6867d956c feat: improve Rich traceback rendering 2024-12-29 11:42:36 +01:00
Matthias
392486bc17 feat: Add rich traceback output 2024-12-29 11:32:28 +01:00
Matthias
dfcf4ba7fd chore: Improved types for rich_handler 2024-12-29 10:57:57 +01:00
Matthias
0f4330a6bb feat: properly set color_system 2024-12-29 10:50:05 +01:00
Matthias
e5da4d4be1 chore: move print_colorized to transfer to config before logging setup 2024-12-29 10:49:19 +01:00
Matthias
44d9cb85a0 chore: don't change time color for improved readability 2024-12-29 10:45:22 +01:00
Matthias
59f3d88c58 feat: allow disabling color output 2024-12-29 10:42:19 +01:00
Matthias
3e5ab8549f feat: add ftRichColorHandler 2024-12-29 10:11:10 +01:00
Matthias
af28656138 Add rich as loghandler instead of stdout 2024-12-29 08:53:31 +01:00
Matthias
0032f9a960 chore: bump ccxt to 4.4.43
this adds support for myokx, the OKX EAA subsidiary.
2024-12-28 12:49:55 +01:00
Matthias
5ca31508fb chore: remove "former huobi" terminology 2024-12-28 12:46:57 +01:00
Matthias
a58fde367c chore: remove "former OKEX" terminology 2024-12-28 12:46:35 +01:00
Matthias
3f41910eb4 docs: add myokx special case documentation 2024-12-28 12:10:25 +01:00
Matthias
9a201566f2 chore: fix typo in telegram help message 2024-12-28 12:05:55 +01:00
Matthias
a180cb95dc chore: Improve list-exchanges output 2024-12-28 12:05:02 +01:00
Matthias
fbb757fa2f chore: may myokx to okx - it's just an alias for european users 2024-12-28 12:03:37 +01:00
Matthias
6ee38adbb5 fix: round open_rate to tradable precisionThis prevents odd display issues with 16 decimals in case of multiple entries. 2024-12-27 19:18:10 +01:00
Matthias
6f3dca44a3 fix: apply hyperliquid market rate fix to fetch_orders 2024-12-27 18:16:37 +01:00
Matthias
a4ae5b74a4 chore: add log_response after average modification 2024-12-27 18:04:29 +01:00
Matthias
fc970a1af4 chore: Remove pin of matplotlib 2024-12-27 13:39:13 +01:00
Matthias
10063b205c chore: refresh liquidation prices at regular intervals 2024-12-26 16:55:54 +01:00
Matthias
6c94b75172 chore: improve zip loading errorhandling 2024-12-26 15:29:25 +01:00
Matthias
7a619594f6 chore: improve zip file loading interface 2024-12-26 15:29:25 +01:00
Matthias
0682d12fe3 feat: get_backtest_market_change should support zip files 2024-12-26 14:57:37 +01:00
Matthias
1119ee1cdd chore: load zip reusability 2024-12-26 14:57:37 +01:00
Matthias
8fe1f3cb95 feat: load backtest data via API from both zip and json 2024-12-26 14:57:37 +01:00
Matthias
6121fb30a9 chore: improved error-message when exportfilename wasn't found 2024-12-26 14:57:37 +01:00
Matthias
a40b2816a1 chore: greatly simplify analyze_commands 2024-12-26 14:57:37 +01:00
Matthias
bb372e380d test: clean up optimize_report tests 2024-12-26 14:57:37 +01:00
Matthias
aa99baf268 test: update a few tests 2024-12-26 14:57:37 +01:00
Matthias
606013a697 chore: import ZipFile directly 2024-12-26 14:57:37 +01:00
Matthias
a88675b693 test: improve test_metadata_filename test 2024-12-26 14:57:37 +01:00
Matthias
b08a93a287 feat: Detect both .json and .zip backtest results 2024-12-26 14:57:37 +01:00
Matthias
2768155e7d fix: use .json metadata file 2024-12-26 14:57:37 +01:00
Matthias
9f2142135e refactor: move load-analysis-data logic to btanalysis file 2024-12-26 14:57:37 +01:00
Matthias
258b85a860 feat: load backtest-analysis-data files from zipfile 2024-12-26 14:57:37 +01:00
Matthias
b1bf56cfab chore: use exception logging for exceptions 2024-12-26 14:57:37 +01:00
Matthias
d2d6c6fa81 feat: load backtest-results from either file or zip file 2024-12-26 14:57:37 +01:00
Matthias
b1fc271a7e chore: Update storage to store backtest results as zip file
this will enable further additions to files without polluting the filesystem further.
2024-12-26 14:57:37 +01:00
Matthias
37bbb0e0e0 refactor: move joblib_writer to use file interface 2024-12-26 14:57:37 +01:00
Matthias
2a9a3e020c chore: move joblib export to bt_storage function 2024-12-26 14:57:37 +01:00
Matthias
cd2520603a refactor: move json file dumping to separate method 2024-12-26 14:57:37 +01:00
Matthias
b5748fee6e docs: add FAQ about resetting a bot's database 2024-12-26 13:54:21 +01:00
Matthias
b092dfa2c9 Merge pull request #11149 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-12-26 12:10:19 +01:00
xmatthias
2ad1fbd771 chore: update pre-commit hooks 2024-12-26 03:06:05 +00:00
Matthias
1ca594bbcb chore: show "total" profit if necessary 2024-12-25 18:04:17 +01:00
Matthias
e66611c965 chore: fix 2 minor potential bugs 2024-12-25 17:53:12 +01:00
Matthias
c5a95dc682 refactor: reuse logic from get-status for get status-table 2024-12-25 17:40:02 +01:00
Matthias
d7ccbfef20 test: improve test accuracy 2024-12-25 17:37:21 +01:00
Matthias
79f35bb553 chore: add docstring to rpc_status_table 2024-12-25 16:30:52 +01:00
Matthias
9e30e5c34c Merge pull request #11144 from freqtrade/deprecate/hdf5
Deprecate hdf5
2024-12-25 08:09:57 +01:00
Matthias
4963a9668f chore: fix typo 2024-12-24 15:35:34 +01:00
Matthias
e59bd71c17 Merge pull request #11143 from freqtrade/feat/telegram_group_topics
Support Telegram group topics, add /tg_info command
2024-12-24 15:29:33 +01:00
Matthias
5750d05891 feat: deprecate hdf5 as data storage 2024-12-24 15:19:22 +01:00
Matthias
1810a911d4 chore: update chatID to be identical throughout docs. 2024-12-24 14:42:39 +01:00
Matthias
51ae0f0377 chore: check for update.message being present 2024-12-24 14:05:17 +01:00
Matthias
215b648edf Merge pull request #11141 from andrasmining/develop
Adding drawdown information for hyperopt-list --export-csv command & small fix stake currency source
2024-12-24 13:55:23 +01:00
Matthias
d73f01701e chore: reduce verbosity for topic_id wrong check 2024-12-24 13:52:51 +01:00
Matthias
010b282679 docs: document /tg_info command 2024-12-24 13:46:29 +01:00
Matthias
6ef8291b2e test: add test for tg_info, update chat_id to be not 0 2024-12-24 13:38:34 +01:00
Andras Kovacs
b820810afe hyperopt-list --export-csv command stake currency fix
Take stake currency from hyperopt result file instead of config
2024-12-24 13:33:58 +01:00
Matthias
cef21860eb feat: add _tg_info endpoint for easier information gathering 2024-12-24 13:27:15 +01:00
Andras Kovacs
0c08656965 Merge branch 'develop' of https://github.com/andrasmining/freqtrade into develop 2024-12-24 12:54:21 +01:00
Andras Kovacs
59b1460e30 Adding drawdown information for hyperopt-list --export-csv command 2024-12-24 12:52:35 +01:00
Matthias
b75ac1243a docs: document group-topic-id 2024-12-24 12:17:15 +01:00
Matthias
93af2b7b1d Merge pull request #11138 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-12-24 08:18:17 +01:00
xmatthias
7092edfe4c chore: update pre-commit hooks 2024-12-24 03:06:46 +00:00
Matthias
0663335011 chore: update config_schema with topic_id attribute 2024-12-23 20:12:21 +01:00
Matthias
6cc0c2be91 feat: add support for "topic_id" in telegram notifications 2024-12-23 20:11:24 +01:00
Matthias
4a256ed7ca chore: failed messages shouldn't return the wrapper but None 2024-12-23 19:57:44 +01:00
Matthias
2a526a815e fix: don't over-state stake-amount on first entry
closes #11135
2024-12-23 17:53:44 +01:00
Matthias
0a81658881 test: add test to confirm behavior in #11135 2024-12-23 17:53:44 +01:00
Matthias
5ac95a0507 test: close mock order for funding-fee test 2024-12-23 13:47:33 +01:00
Matthias
cefacf4a6d chore: fix typo causing double negation 2024-12-23 12:51:41 +01:00
Matthias
c9aa202be8 test: add additional Test case 2024-12-23 12:37:21 +01:00
Matthias
77e36ed313 Merge pull request #11125 from freqtrade/dependabot/pip/develop/technical-1.5.0
chore(deps): bump technical from 1.4.4 to 1.5.0
2024-12-23 11:16:12 +01:00
Matthias
52933e977b Merge pull request #11128 from freqtrade/dependabot/pip/develop/mypy-1.14.0
chore(deps-dev): bump mypy from 1.13.0 to 1.14.0
2024-12-23 09:06:20 +01:00
dependabot[bot]
cf4c29a57f chore(deps): bump technical from 1.4.4 to 1.5.0
Bumps [technical](https://github.com/freqtrade/technical) from 1.4.4 to 1.5.0.
- [Release notes](https://github.com/freqtrade/technical/releases)
- [Commits](https://github.com/freqtrade/technical/compare/1.4.4...1.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 07:43:41 +00:00
Matthias
90cd381efa Merge pull request #11129 from freqtrade/dependabot/pip/develop/jinja2-3.1.5
chore(deps): bump jinja2 from 3.1.4 to 3.1.5
2024-12-23 08:42:28 +01:00
dependabot[bot]
9405f415d0 chore(deps-dev): bump mypy from 1.13.0 to 1.14.0
Bumps [mypy](https://github.com/python/mypy) from 1.13.0 to 1.14.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.13.0...v1.14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 07:10:13 +00:00
Matthias
3dcc130903 Merge pull request #11131 from freqtrade/dependabot/pip/develop/ccxt-4.4.42
chore(deps): bump ccxt from 4.4.40 to 4.4.42
2024-12-23 08:09:13 +01:00
dependabot[bot]
9d022180e7 chore(deps): bump jinja2 from 3.1.4 to 3.1.5
Bumps [jinja2](https://github.com/pallets/jinja) from 3.1.4 to 3.1.5.
- [Release notes](https://github.com/pallets/jinja/releases)
- [Changelog](https://github.com/pallets/jinja/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/jinja/compare/3.1.4...3.1.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 07:04:05 +00:00
Matthias
ba42d8d8c6 Merge pull request #11133 from freqtrade/dependabot/pip/develop/ruff-0.8.4
chore(deps-dev): bump ruff from 0.8.3 to 0.8.4
2024-12-23 08:03:01 +01:00
Matthias
117887ff3a Merge pull request #11122 from freqtrade/dependabot/github_actions/develop/astral-sh/setup-uv-5
chore(deps): bump astral-sh/setup-uv from 4 to 5
2024-12-23 08:01:42 +01:00
Matthias
b62fa8190b Merge pull request #11123 from freqtrade/dependabot/pip/develop/mkdocs-c52ef7e6a7
chore(deps): bump mkdocs-material from 9.5.48 to 9.5.49 in the mkdocs group
2024-12-23 08:01:33 +01:00
Matthias
eadd4a7bb2 Merge pull request #11127 from freqtrade/dependabot/pip/develop/psutil-6.1.1
chore(deps): bump psutil from 6.1.0 to 6.1.1
2024-12-23 08:01:19 +01:00
Matthias
a93a1b8b48 Merge pull request #11130 from freqtrade/dependabot/pip/develop/urllib3-2.3.0
chore(deps): bump urllib3 from 2.2.3 to 2.3.0
2024-12-23 08:01:04 +01:00
Matthias
12cbe70371 Merge pull request #11126 from freqtrade/dependabot/pip/develop/pydantic-2.10.4
chore(deps): bump pydantic from 2.10.3 to 2.10.4
2024-12-23 08:00:44 +01:00
dependabot[bot]
ed3367244c chore(deps-dev): bump ruff from 0.8.3 to 0.8.4
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.3 to 0.8.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.8.3...0.8.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 03:47:30 +00:00
dependabot[bot]
b8b69eecb8 chore(deps): bump ccxt from 4.4.40 to 4.4.42
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.40 to 4.4.42.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.40...4.4.42)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 03:47:08 +00:00
dependabot[bot]
65acd5d827 chore(deps): bump urllib3 from 2.2.3 to 2.3.0
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.3 to 2.3.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.2.3...2.3.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 03:47:00 +00:00
dependabot[bot]
4d6732cd19 chore(deps): bump psutil from 6.1.0 to 6.1.1
Bumps [psutil](https://github.com/giampaolo/psutil) from 6.1.0 to 6.1.1.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-6.1.0...release-6.1.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 03:46:39 +00:00
dependabot[bot]
dc5942115d chore(deps): bump pydantic from 2.10.3 to 2.10.4
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.10.3 to 2.10.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.10.3...v2.10.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 03:46:33 +00:00
dependabot[bot]
c14492a6cf 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.5.48 to 9.5.49
- [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.5.48...9.5.49)

---
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>
2024-12-23 03:46:01 +00:00
dependabot[bot]
07682c396e chore(deps): bump astral-sh/setup-uv from 4 to 5
Bumps [astral-sh/setup-uv](https://github.com/astral-sh/setup-uv) from 4 to 5.
- [Release notes](https://github.com/astral-sh/setup-uv/releases)
- [Commits](https://github.com/astral-sh/setup-uv/compare/v4...v5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-23 03:31:33 +00:00
Matthias
84e5a9521d chore: improve left open trades handling 2024-12-22 20:11:32 +01:00
Matthias
48b0ffac06 chore: fix using non-existing attribute 2024-12-22 18:15:59 +01:00
Matthias
5c42c89505 Merge branch 'develop' into pr/Axel-CH/10062 2024-12-22 18:07:32 +01:00
Matthias
d37e23f68e feat: implement order replacement for backtesting 2024-12-22 18:07:07 +01:00
Matthias
9953903193 test: close mock order for funding-fee test 2024-12-22 18:06:07 +01:00
Matthias
48506f2945 fix: always cancel al open orders if the order ain't identical 2024-12-22 18:03:04 +01:00
Matthias
503305cbdb fix: properly pass timerange to data-download 2024-12-22 16:02:49 +01:00
Matthias
0a27a7ad38 docs: fix typo 2024-12-21 20:21:08 +01:00
Matthias
32f592444a Merge pull request #11119 from AchmadFathoni/fix_notebook
Fix KeyError: 'max_drawdown' in jupyter notebook
2024-12-21 19:52:03 +01:00
Matthias
daf655cd24 docs: add documentation for BNFCR futures 2024-12-21 19:50:07 +01:00
Achmad Fathoni
04813e452c Change unavailable "max_drawdown" key 2024-12-22 00:28:21 +07:00
Achmad Fathoni
b50d9f5c59 Fix KeyError: 'max_drawdown' in jupyter notebook 2024-12-22 00:14:07 +07:00
Matthias
44c29aa998 test: update tests for new calculate_fee_rate logic 2024-12-21 15:06:04 +01:00
Matthias
2a45ff08e4 fix: update "calculate_fee_rate" to use get_conversation_rate 2024-12-21 15:06:04 +01:00
Matthias
7b1ea81a27 chore: use safe_value_fallback to get currency rate 2024-12-21 15:06:04 +01:00
Matthias
d559572718 fix: exclude balances matching trades in futures mode 2024-12-21 15:06:04 +01:00
Matthias
2c1400a9ff test: update trading mode test for binance cross support 2024-12-21 15:06:04 +01:00
Matthias
85af1c91a2 feat: enable cross futures on binance 2024-12-21 15:06:04 +01:00
Matthias
dcc8c8800f feat: conversion_rate should map both sides 2024-12-21 15:06:04 +01:00
Matthias
5a24292d34 chore: update config_schema 2024-12-21 15:06:04 +01:00
Matthias
c492dcc7ba feat: make proxy_coin dynamic (config setting) 2024-12-21 15:06:04 +01:00
Matthias
c5f89f34fd tests: improve rpc_handle test 2024-12-21 15:06:04 +01:00
Matthias
1ef4b063ea test: adjust test to reflect that futures uses "free", not "total" 2024-12-21 15:06:04 +01:00
Matthias
d05cae10f7 test: remove duplicate test assertion 2024-12-21 15:06:04 +01:00
Matthias
478387531d feat: Updates for proxy coin functionalities 2024-12-21 15:06:04 +01:00
Matthias
0b9cca27e2 feat: add "get_proxy_coin" method
used for BNFCR mode
2024-12-21 15:06:04 +01:00
Matthias
ca9589b2e8 chore: reduce pointless verbosity of cross liquidation update 2024-12-21 15:06:04 +01:00
Matthias
e7b1a7e493 test: add test for proxy coin conversion 2024-12-21 15:05:37 +01:00
Matthias
c112b84d0f feat: support dynamic proxy coin conversion 2024-12-21 15:05:37 +01:00
Matthias
40cb70fca1 fix: one-side pairlocks not showing in UI 2024-12-21 14:30:47 +01:00
Matthias
0b0bbd4c42 chore: improve comment wording 2024-12-20 18:18:44 +01:00
Matthias
4704f2b08e chore: fix blosc version selectors 2024-12-20 06:38:15 +01:00
Matthias
f9bd11f6fb chore: blosc2 only supports python 3.11+ 2024-12-20 06:29:42 +01:00
Matthias
0d73e961a4 chore: pin blosc2 for raspberry builds 2024-12-20 06:26:45 +01:00
Matthias
e1f759e70e Merge pull request #11112 from froggleston/frog-docs-api-2
Add params to REST API table description, fix first column width
2024-12-19 21:06:03 +01:00
Robert Davey
66380566c8 Update docs/stylesheets/ft.extra.css
Co-authored-by: Matthias <xmatthias@outlook.com>
2024-12-19 19:35:28 +00:00
Matthias
8cb69e4d5a test: Update test for new liquidation price precision rounding 2024-12-19 19:37:55 +01:00
Matthias
8ee2c849b4 fix: round liquidation price to precision in a different spot
closes #11110
2024-12-19 19:37:35 +01:00
Matthias
564d874869 chore: improve typing 2024-12-19 19:25:00 +01:00
froggleston
d38fcd2db4 Fix missing EOL 2024-12-19 16:24:07 +00:00
froggleston
06e20b38b5 Add params to REST API table description, fix first column width 2024-12-19 16:18:30 +00:00
Matthias
c8b7449b25 Merge pull request #11111 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-12-19 08:10:34 +01:00
Matthias
6edfebdfed Merge pull request #11102 from froggleston/frog-docs-api-1
Add more detail to the REST API endpoint docs
2024-12-19 08:10:01 +01:00
Matthias
c4b39a4fb1 docs: add suggestion to prefix all urls with base url. 2024-12-19 06:50:36 +01:00
xmatthias
cdcca3da1c chore: update pre-commit hooks 2024-12-19 03:12:44 +00:00
Matthias
44d1f169c3 chore: type rpc._freqtradebot for improved DX 2024-12-17 20:39:04 +01:00
Matthias
d805ee6f3d chore: improve type safety 2024-12-17 20:38:46 +01:00
Matthias
ed2427852b test: adapt starting capital tests for tradable_balance_ratio 2024-12-17 20:32:11 +01:00
Matthias
5af894047e fix: starting balance should include tradable_balance_ratio 2024-12-17 20:08:40 +01:00
Matthias
fced0c4952 Merge pull request #11105 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-12-17 06:30:46 +01:00
xmatthias
609893f7ec chore: update pre-commit hooks 2024-12-17 03:15:40 +00:00
Matthias
3f795a8918 chore: improve logic for live wallet update 2024-12-16 20:57:44 +01:00
Matthias
a5907db5d8 chore: update pip-install command for windows ci 2024-12-16 19:02:21 +01:00
froggleston
ad7b70a354 Add more detail to the REST API endpoint docs 2024-12-16 15:15:57 +00:00
Matthias
d992772492 Merge pull request #11097 from freqtrade/dependabot/pip/develop/scikit-learn-1.6.0
chore(deps): bump scikit-learn from 1.5.2 to 1.6.0
2024-12-16 06:33:25 +01:00
Matthias
7ba879c441 Merge pull request #11096 from freqtrade/dependabot/pip/develop/matplotlib-3.10.0
chore(deps): bump matplotlib from 3.9.3 to 3.10.0
2024-12-16 06:32:08 +01:00
Matthias
3fa2238e9c Merge pull request #11095 from freqtrade/dependabot/pip/develop/pytest-c02b329de1
chore(deps-dev): bump pytest-asyncio from 0.24.0 to 0.25.0 in the pytest group
2024-12-16 06:31:41 +01:00
Matthias
274136dacb Merge pull request #11094 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.12.3
chore(deps): bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3
2024-12-16 06:31:12 +01:00
Matthias
d5d65cfd56 Merge pull request #11098 from freqtrade/dependabot/pip/develop/uvicorn-0.34.0
chore(deps): bump uvicorn from 0.32.1 to 0.34.0
2024-12-16 06:30:42 +01:00
Matthias
17c11d09fc Merge pull request #11099 from freqtrade/dependabot/pip/develop/janus-2.0.0
chore(deps): bump janus from 1.1.0 to 2.0.0
2024-12-16 06:30:16 +01:00
Matthias
6bf42173a1 Merge pull request #11100 from freqtrade/dependabot/pip/develop/ruff-0.8.3
chore(deps-dev): bump ruff from 0.8.2 to 0.8.3
2024-12-16 06:29:22 +01:00
dependabot[bot]
c8649a77d2 chore(deps-dev): bump ruff from 0.8.2 to 0.8.3
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.2 to 0.8.3.
- [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.8.2...0.8.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 03:26:36 +00:00
dependabot[bot]
d780d56b9a chore(deps): bump janus from 1.1.0 to 2.0.0
Bumps [janus](https://github.com/aio-libs/janus) from 1.1.0 to 2.0.0.
- [Release notes](https://github.com/aio-libs/janus/releases)
- [Changelog](https://github.com/aio-libs/janus/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/janus/compare/v1.1.0...v2.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 03:26:25 +00:00
dependabot[bot]
2587b549a0 chore(deps): bump uvicorn from 0.32.1 to 0.34.0
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.32.1 to 0.34.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.32.1...0.34.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 03:26:10 +00:00
dependabot[bot]
dd805c4c25 chore(deps): bump scikit-learn from 1.5.2 to 1.6.0
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 1.5.2 to 1.6.0.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/1.5.2...1.6.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 03:26:01 +00:00
dependabot[bot]
5cd1892dee chore(deps): bump matplotlib from 3.9.3 to 3.10.0
Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.9.3 to 3.10.0.
- [Release notes](https://github.com/matplotlib/matplotlib/releases)
- [Commits](https://github.com/matplotlib/matplotlib/compare/v3.9.3...v3.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 03:25:53 +00:00
dependabot[bot]
f575e56e46 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.24.0 to 0.25.0
- [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases)
- [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.24.0...v0.25.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>
2024-12-16 03:25:42 +00:00
dependabot[bot]
af7974adda chore(deps): bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.3
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.12.2 to 1.12.3.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.12.2...v1.12.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-16 03:25:38 +00:00
Matthias
685811ef63 feat: update backtest_api with new storage interface 2024-12-15 15:10:06 +01:00
Matthias
12ae36e99e test: use tmp_path instead of testdatadir for writing 2024-12-15 15:02:35 +01:00
Matthias
abfe683763 test: fix tests data pollution 2024-12-15 15:02:16 +01:00
Matthias
a1ab8de593 test: Update tests for new bt storage method 2024-12-15 13:20:25 +01:00
Matthias
b04c5aec88 refactor: move backtest "storage" logic to storage file 2024-12-15 13:18:25 +01:00
Matthias
b862927c8c chore: don't exclude tests from pyright 2024-12-15 13:07:39 +01:00
Matthias
5744e16a07 refactor: use 1 structure to save analysis signals 2024-12-14 19:50:59 +01:00
Matthias
11f0a59031 docs: slightly improve position adjust doc wording 2024-12-14 18:20:47 +01:00
Matthias
8dfbf342fd Merge pull request #11086 from freqtrade/fix-docs
add warning about loose logic
2024-12-14 14:13:11 +01:00
Matthias
5f947a86c7 docs: improve ordering in adjust trade position callback docs 2024-12-14 13:47:14 +01:00
Matthias
0f18e78bb4 Merge pull request #11084 from freqtrade/improve/orderflow_times
Improve orderflow execution times
2024-12-14 13:43:55 +01:00
Matthias
d0c5d614f7 docs: add note about incompatibility between orderflow and freqAI 2024-12-14 13:08:13 +01:00
Matthias
e2e1c610d8 Merge pull request #11087 from freqtrade/bump/ccxt
Bump ccxt to 4.4.40
2024-12-14 12:52:04 +01:00
Matthias
1e74aa3087 chore: bump ccxt to 4.4.40 2024-12-14 08:04:29 +01:00
Stefano Ariestasia
f54a141918 fix typo 2024-12-14 14:41:32 +09:00
Stefano Ariestasia
b54d8c53a7 add warning about loose logic 2024-12-14 14:37:16 +09:00
Matthias
23d6c362c4 feat: cancel orders of both sides in one go 2024-12-13 15:51:01 +01:00
Matthias
41a548d625 chore: move logging to "handle_similar_open_order" 2024-12-13 15:28:22 +01:00
Matthias
016cabb7b2 chore: simplify imports 2024-12-13 14:59:35 +01:00
Matthias
9129266f54 feat: greatly improve performance of orderflow by not using apply 2024-12-13 14:28:26 +01:00
Matthias
e8376d5b79 feat: add timeframe_to_DateOffset 2024-12-13 14:27:54 +01:00
Matthias
cc7b1a5642 chore: clean up install_windows call 2024-12-13 14:24:27 +01:00
Matthias
f11fe14cdd chore: remove system mode, set path globally 2024-12-13 14:24:27 +01:00
Matthias
219e6b420e chore: Try using uv venv creation 2024-12-13 14:24:27 +01:00
Matthias
3a6ef8c34b chore: use link mode for UV installs 2024-12-13 14:24:27 +01:00
Matthias
4f318a5981 chore: uv - different caching 2024-12-13 14:24:27 +01:00
Matthias
f978a5c754 chore: uv - different caching 2024-12-13 14:24:27 +01:00
Matthias
f378e10752 chore: link mode copy 2024-12-13 14:24:27 +01:00
Matthias
30909d13ba chore: uv: glob 2024-12-13 14:24:27 +01:00
Matthias
8cd03c9624 chore: uv - enable cache 2024-12-13 14:24:27 +01:00
Matthias
8f617d01d4 chore: further uv tests 2024-12-13 14:24:27 +01:00
Matthias
569ac2bc5b chore: move uv work 2024-12-13 14:24:27 +01:00
Matthias
c1be014499 chore: package name lowercase ?? 2024-12-13 14:24:27 +01:00
Matthias
7d1ac0248b chore: only binary ... 2024-12-13 14:24:27 +01:00
Matthias
aa8e504ef7 chore: remove non-existing UV argument 2024-12-13 14:24:27 +01:00
Matthias
6963141eb8 chore: fix aliasing 2024-12-13 14:24:27 +01:00
Matthias
3295b1c8de chore: try using UV for windows runs 2024-12-13 14:24:27 +01:00
Matthias
0159d25e48 chore: add missing dev-deps to pyproject.toml 2024-12-13 14:24:27 +01:00
Matthias
abbfe04642 Merge pull request #11080 from stash86/docs-dca
add more explanation regarding reducing position partially
2024-12-12 20:11:39 +01:00
Matthias
8cf3c7b826 chore: use FtPrecise for stake_amount_filled calculation
closes #11073
2024-12-12 20:08:35 +01:00
Matthias
0fb927e709 Merge pull request #11081 from freqtrade/frog-docs-state-1
Add initial_state option to FAQ
2024-12-12 16:43:08 +01:00
Robert Davey
c00b248d1a Add initial_state option to FAQ 2024-12-12 13:17:52 +00:00
Stefano
d2b4d1e183 add more explanation regarding reducing position partially 2024-12-12 11:45:40 +00:00
Matthias
8fb9140c21 Merge pull request #11046 from freqtrade/fix/orderflow_cache
Fix orderflow cache
2024-12-12 06:49:58 +01:00
Matthias
cb9d828ba0 Merge pull request #11079 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-12-12 06:28:12 +01:00
xmatthias
467c0dfffa chore: update pre-commit hooks 2024-12-12 03:16:05 +00:00
Matthias
d887a4aa4a Merge branch 'develop' into fix/orderflow_cache 2024-12-11 19:28:06 +01:00
Matthias
34835752f8 chore: improve typing in percentChange Pairlist 2024-12-11 07:25:07 +01:00
Matthias
b9aa78b987 fix: crash in PercentChange pairlist
Could happen if pairs were removed due to empty Ticker when the pairlist is not a generator.

closes #11074
2024-12-11 07:12:50 +01:00
Matthias
d8fa782f13 test: Add test with faulty behavior
part of #11074
2024-12-11 07:07:47 +01:00
Matthias
f3d7b249be test: Improve wallet tests 2024-12-10 21:05:05 +01:00
Matthias
097836d193 feat: improve logic for liquidation price calc 2024-12-10 21:05:04 +01:00
Matthias
7552ad5edb Merge pull request #11070 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-12-10 06:31:30 +01:00
xmatthias
e9cf0a71d8 chore: update pre-commit hooks 2024-12-10 05:05:39 +00:00
Matthias
cf731d7296 Merge pull request #11057 from freqtrade/dependabot/pip/develop/types-e0d1a7aad6
chore(deps-dev): bump the types group with 2 updates
2024-12-09 07:20:55 +01:00
Matthias
946e6fd4c2 Merge pull request #11066 from freqtrade/dependabot/pip/develop/pydantic-2.10.3
chore(deps): bump pydantic from 2.10.2 to 2.10.3
2024-12-09 07:10:14 +01:00
Matthias
fe9d1a053e chore: bump pre-commit dependencies 2024-12-09 06:40:49 +01:00
Matthias
6b1ac499ba tests: more tests for cross wallet 2024-12-09 06:39:54 +01:00
Matthias
0fc0b2a1be test: add test for cross balance logic 2024-12-09 06:39:54 +01:00
Matthias
6887ed4bf7 feat: add cross margin balance logic 2024-12-09 06:39:54 +01:00
Matthias
8cb82df055 chore: simplify dry_wallets call 2024-12-09 06:39:54 +01:00
dependabot[bot]
6788214671 chore(deps): bump pydantic from 2.10.2 to 2.10.3
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.10.2 to 2.10.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.10.2...v2.10.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 05:32:50 +00:00
Matthias
4c2488ff65 Merge pull request #11065 from freqtrade/dependabot/pip/develop/fastapi-0.115.6
chore(deps): bump fastapi from 0.115.5 to 0.115.6
2024-12-09 06:31:58 +01:00
Matthias
05b101b612 Merge pull request #11064 from freqtrade/dependabot/pip/develop/ccxt-4.4.37
chore(deps): bump ccxt from 4.4.35 to 4.4.37
2024-12-09 06:29:55 +01:00
Matthias
65ab47dc63 Merge pull request #11063 from freqtrade/dependabot/pip/develop/python-telegram-bot-21.9
chore(deps): bump python-telegram-bot from 21.8 to 21.9
2024-12-09 06:29:21 +01:00
Matthias
23579df8da Merge pull request #11058 from freqtrade/dependabot/pip/develop/mkdocs-3ba6cc2ae5
chore(deps): bump mkdocs-material from 9.5.47 to 9.5.48 in the mkdocs group
2024-12-09 06:29:05 +01:00
Matthias
2b91be6237 Merge pull request #11061 from freqtrade/dependabot/pip/develop/ruff-0.8.2
chore(deps-dev): bump ruff from 0.8.1 to 0.8.2
2024-12-09 06:26:55 +01:00
dependabot[bot]
f1fabb07bf chore(deps): bump fastapi from 0.115.5 to 0.115.6
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.5 to 0.115.6.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.115.5...0.115.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 03:47:54 +00:00
dependabot[bot]
8aea015452 chore(deps): bump ccxt from 4.4.35 to 4.4.37
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.35 to 4.4.37.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.35...4.4.37)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 03:47:48 +00:00
dependabot[bot]
83471228e7 chore(deps): bump python-telegram-bot from 21.8 to 21.9
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 21.8 to 21.9.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v21.8...v21.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 03:47:37 +00:00
dependabot[bot]
e97a647b54 chore(deps-dev): bump ruff from 0.8.1 to 0.8.2
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.1 to 0.8.2.
- [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.8.1...0.8.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 03:47:13 +00:00
dependabot[bot]
f5dceb0b09 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.5.47 to 9.5.48
- [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.5.47...9.5.48)

---
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>
2024-12-09 03:46:15 +00:00
dependabot[bot]
d4fbdeee94 chore(deps-dev): bump the types group with 2 updates
Bumps the types group with 2 updates: [types-tabulate](https://github.com/python/typeshed) and [types-python-dateutil](https://github.com/python/typeshed).


Updates `types-tabulate` from 0.9.0.20240106 to 0.9.0.20241207
- [Commits](https://github.com/python/typeshed/commits)

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

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-09 03:45:29 +00:00
Matthias
f529cfe8cf chore: fix wrong return typing 2024-12-08 16:58:31 +01:00
Matthias
4d36aaff39 feat: convert get_valid_pair_combination to generator 2024-12-08 16:54:17 +01:00
Matthias
f07aec457a chore: remove unnecessary imports 2024-12-08 16:50:10 +01:00
Matthias
d898c80e65 test: Add test for get_conversion_rate 2024-12-08 16:40:56 +01:00
Matthias
2ff0abc6e7 refactor: conversation rate retrieval to exchange class
for better reusability across the bot.
2024-12-08 15:44:46 +01:00
Matthias
0276e65f39 test: update rpc test for new behavior 2024-12-08 15:29:23 +01:00
Matthias
4cd8e6b444 chore: simplify rpc_balance method by relying on exchange cache 2024-12-08 15:22:40 +01:00
Matthias
58357a0746 chore: calculate total_stake only once 2024-12-08 14:41:26 +01:00
Matthias
d0223e6f48 chore: simplify dry-run wallet update 2024-12-08 14:41:26 +01:00
Matthias
142ea68dce chore: fix oddity of price_to_precision 2024-12-08 14:41:26 +01:00
Matthias
654d2ab63d fix: Round stoploss_dist to price_precision 2024-12-08 14:41:26 +01:00
Matthias
a30f281478 Merge pull request #11023 from freqtrade/dependabot/pip/develop/xgboost-2.1.3
chore(deps): bump xgboost from 2.0.3 to 2.1.3
2024-12-08 13:46:58 +01:00
Matthias
ae1baf5789 test: mock price_to_precision for liquidation calculations 2024-12-08 13:35:46 +01:00
Matthias
3c88bdc60c fix: round liquidation price to price precision 2024-12-08 13:35:46 +01:00
Matthias
6d698e584b chore: return 0 total balances
total may be 0, while still having "free" balance (cross futures scenarios)
2024-12-08 13:35:46 +01:00
Matthias
193b989342 chore: Be more precise with binance account limitation 2024-12-08 13:35:46 +01:00
Matthias
8dc322d7f2 chore: don't allow negative stake amounts 2024-12-08 13:35:46 +01:00
Matthias
eee5d710e7 chore: patch torch all the time -
"list"tests do load the modules as well - so they
need the same patch.
2024-12-08 10:06:23 +01:00
Matthias
489db37bbd Merge pull request #10979 from amalysh/develop
allow json in environment variables
2024-12-08 08:55:21 +01:00
Matthias
10b5d5e56b docs: add "list parsing" logic to documentation 2024-12-08 08:35:13 +01:00
Matthias
934bcf253e test: add tests for list parsing 2024-12-08 08:34:54 +01:00
Matthias
0683ba3a54 feat: limit environment-variable json parsing to lists 2024-12-08 08:30:45 +01:00
Matthias
a85f200450 Merge pull request #11000 from freqtrade/feat/multi_wallet
Dry-run multi-wallet support
2024-12-07 17:49:32 +01:00
Matthias
98e0a5f101 chore: remove unused arguments in loss functions 2024-12-07 15:52:14 +01:00
Matthias
fb9e11b7b5 chore: improve type safety 2024-12-07 13:21:18 +01:00
Matthias
e77ca024d7 chore: improve naming, don't duplicate column list 2024-12-06 20:16:46 +01:00
Matthias
63f8217cd5 chore: ensure exif-data is removed from images 2024-12-06 20:11:46 +01:00
Matthias
9f5cb3a07e chore: add exif-stripper to ensure exif data is removed 2024-12-06 20:11:09 +01:00
Matthias
e09d1b42f2 chore: eliminate duplicate trades data grouping 2024-12-06 20:09:43 +01:00
Matthias
267d9333a1 chore: remove pointless, very noisy log message. 2024-12-06 20:09:07 +01:00
Matthias
ab39ac29e8 fix: ensure data type is maintained when data comes from cache. 2024-12-06 20:05:33 +01:00
Matthias
6c25feabf2 tests: assert type of orderflow object 2024-12-06 20:05:07 +01:00
Matthias
171157c100 chore: further simplify orderflow code 2024-12-06 07:03:24 +01:00
Matthias
3137d7cf2c chore: remove unnecessary config alias 2024-12-06 06:43:01 +01:00
Matthias
6ab528748e tests: Update orderflow tests 2024-12-06 06:40:15 +01:00
Matthias
621dfc136e fix: Improved caching
closes #11008
2024-12-06 06:38:49 +01:00
Matthias
9d07f5dc2e chore: reduce orderflow code duplication 2024-12-05 19:37:36 +01:00
Matthias
48dd86bd9b chore: use .at for assignments 2024-12-05 19:33:49 +01:00
Matthias
4879582896 feat: use dataframe.at directly to avoid intermediate series 2024-12-05 19:32:40 +01:00
Matthias
6584f86bce test: add Spy to improve test 2024-12-05 19:19:17 +01:00
Matthias
82d517fcbb test: improve orderflow test 2024-12-05 07:12:35 +01:00
Matthias
ff371c43e0 tests: add test to ensure caching works
part of #11008
2024-12-05 07:11:58 +01:00
Matthias
0bf0e1808c chore: add todo for future cleanup 2024-12-05 06:58:25 +01:00
Matthias
6be5947f69 chore: Move local Import out of the loop 2024-12-05 06:37:19 +01:00
Matthias
b1d7d7304d Merge pull request #11041 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-12-05 06:29:25 +01:00
xmatthias
1d0702e143 chore: update pre-commit hooks 2024-12-05 03:16:51 +00:00
Matthias
298ce335b9 chore: eliminate duplicate trades data grouping 2024-12-04 19:56:26 +01:00
Matthias
e04f630f41 chore: further improve typing in orderflow 2024-12-04 07:10:53 +01:00
Matthias
7dfee16e25 chore: improved logic ordering in orderflow method 2024-12-04 07:09:09 +01:00
Matthias
d6c21e2af6 chore: orderflow: better typing 2024-12-03 20:13:25 +01:00
Matthias
ebae0a7248 chore: improve typing of new functionality 2024-12-03 19:44:26 +01:00
Matthias
fe834f00a2 fix: import causing long startup time 2024-12-03 19:37:14 +01:00
Robert Caulk
3855d44bf5 Merge pull request #11005 from freqtrade/fix/freqai_bug
freqAI bug causing failures on 2nd backtest
2024-12-03 19:18:43 +01:00
Matthias
ad8f621287 tests: Improve hyperopt loss tests 2024-12-03 19:17:01 +01:00
Matthias
18305a5bf6 docs: update hyperopt docs to include new argument 2024-12-03 19:16:48 +01:00
Matthias
b0b73bf166 feat: add starting_balance as argument to hyperopt_loss_function 2024-12-03 19:15:57 +01:00
Matthias
7a8971b9b6 feat: use get_dry_run_wallet helper 2024-12-03 07:27:45 +01:00
Matthias
c082e5f6a6 feat: add dry_run_wallet helper 2024-12-03 07:26:47 +01:00
Matthias
ef0703f209 fix: Set timeframe for api calls
closes #11009
2024-12-03 06:53:39 +01:00
Matthias
196c122e0a Merge pull request #11031 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-12-03 06:30:30 +01:00
xmatthias
57d5a55ca0 chore: update pre-commit hooks 2024-12-03 03:17:35 +00:00
Matthias
94e09f9fa0 Merge pull request #11028 from xzmeng/fix-none
fix: check if days is None before conversion
2024-12-02 20:11:00 +01:00
Matthias
2f4bd6a0c9 chore: split pypi and pypi test jobs to enable proper attestation
Related: https://github.com/pypa/gh-action-pypi-publish/issues/283
2024-12-02 20:03:53 +01:00
Matthias
58d3555102 Merge pull request #11027 from xzmeng/fix-cond
fix: invert API download condition from `and` to `or`
2024-12-02 18:22:58 +01:00
Matthias
b032c329e3 Merge pull request #11017 from freqtrade/dependabot/pip/develop/pyarrow-18.1.0
chore(deps): bump pyarrow from 18.0.0 to 18.1.0
2024-12-02 18:19:43 +01:00
Meng Xiangzhuo
73f00d2bc3 fix: check if days is None before conversion 2024-12-03 00:31:34 +08:00
Meng Xiangzhuo
cf896bbb52 chore: add the missing space in log 2024-12-03 00:04:56 +08:00
Meng Xiangzhuo
ba162e35c4 fix: invert logic and to or 2024-12-02 23:56:59 +08:00
Matthias
00e9178d5f chore: bump pyarrow wheel 2024-12-02 16:04:23 +01:00
Matthias
62b0995f6a Merge pull request #11020 from freqtrade/dependabot/pip/develop/ruff-0.8.1
chore(deps-dev): bump ruff from 0.8.0 to 0.8.1
2024-12-02 07:38:15 +01:00
Matthias
4107e5cc9a Merge pull request #11021 from freqtrade/dependabot/pip/develop/cryptography-44.0.0
chore(deps): bump cryptography from 43.0.3 to 44.0.0
2024-12-02 07:26:15 +01:00
Matthias
c841146968 chore: Remove non-suppored callback from XGBRFRegressor
According to the XGBoost docs, this probably never worked
as it was never supported - but is now raising an error for user clarity.
2024-12-02 07:12:30 +01:00
dependabot[bot]
6c9e6cc198 chore(deps): bump xgboost from 2.0.3 to 2.1.3
Bumps [xgboost](https://github.com/dmlc/xgboost) from 2.0.3 to 2.1.3.
- [Release notes](https://github.com/dmlc/xgboost/releases)
- [Changelog](https://github.com/dmlc/xgboost/blob/master/NEWS.md)
- [Commits](https://github.com/dmlc/xgboost/compare/v2.0.3...v2.1.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 06:00:19 +00:00
dependabot[bot]
980bfddd8a chore(deps-dev): bump ruff from 0.8.0 to 0.8.1
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.8.0 to 0.8.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.8.0...0.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 05:37:46 +00:00
dependabot[bot]
06327e8f04 chore(deps): bump cryptography from 42.0.8 to 44.0.0
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.8 to 44.0.0.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.8...44.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 05:37:30 +00:00
Matthias
2290b44f82 Merge pull request #11018 from freqtrade/dependabot/pip/develop/matplotlib-3.9.3
chore(deps): bump matplotlib from 3.9.2 to 3.9.3
2024-12-02 06:37:00 +01:00
Matthias
c0cec2b9de Merge pull request #11015 from freqtrade/dependabot/pip/develop/python-telegram-bot-21.8
chore(deps): bump python-telegram-bot from 21.7 to 21.8
2024-12-02 06:36:46 +01:00
Matthias
e376889f3d Merge pull request #11013 from freqtrade/dependabot/pip/develop/pytest-e05860fc06
chore(deps-dev): bump pytest from 8.3.3 to 8.3.4 in the pytest group
2024-12-02 06:36:33 +01:00
Matthias
8584cacb6e Merge pull request #11016 from freqtrade/dependabot/pip/develop/pydantic-2.10.2
chore(deps): bump pydantic from 2.10.1 to 2.10.2
2024-12-02 06:34:33 +01:00
Matthias
3ff19babf5 Merge pull request #11019 from freqtrade/dependabot/pip/develop/pyjwt-2.10.1
chore(deps): bump pyjwt from 2.10.0 to 2.10.1
2024-12-02 06:34:23 +01:00
Matthias
8b5aa08c57 Merge pull request #11014 from freqtrade/dependabot/pip/develop/mkdocs-16f9823690
chore(deps): bump mkdocs-material from 9.5.45 to 9.5.47 in the mkdocs group
2024-12-02 06:33:38 +01:00
dependabot[bot]
cffcb2b985 chore(deps): bump pyjwt from 2.10.0 to 2.10.1
Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.10.0 to 2.10.1.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jpadilla/pyjwt/compare/2.10.0...2.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 03:19:54 +00:00
dependabot[bot]
1da8b68906 chore(deps): bump matplotlib from 3.9.2 to 3.9.3
Bumps [matplotlib](https://github.com/matplotlib/matplotlib) from 3.9.2 to 3.9.3.
- [Release notes](https://github.com/matplotlib/matplotlib/releases)
- [Commits](https://github.com/matplotlib/matplotlib/compare/v3.9.2...v3.9.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 03:19:49 +00:00
dependabot[bot]
d53f4fb81b chore(deps): bump pyarrow from 18.0.0 to 18.1.0
Bumps [pyarrow](https://github.com/apache/arrow) from 18.0.0 to 18.1.0.
- [Release notes](https://github.com/apache/arrow/releases)
- [Commits](https://github.com/apache/arrow/compare/apache-arrow-18.0.0...apache-arrow-18.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 03:19:42 +00:00
dependabot[bot]
02fcd3b489 chore(deps): bump pydantic from 2.10.1 to 2.10.2
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.10.1 to 2.10.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.10.1...v2.10.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 03:19:25 +00:00
dependabot[bot]
7b70a7a68a chore(deps): bump python-telegram-bot from 21.7 to 21.8
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 21.7 to 21.8.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v21.7...v21.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 03:19:08 +00:00
dependabot[bot]
5060725ef5 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.5.45 to 9.5.47
- [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.5.45...9.5.47)

---
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>
2024-12-02 03:19:00 +00:00
dependabot[bot]
6bf3218665 chore(deps-dev): bump pytest from 8.3.3 to 8.3.4 in the pytest group
Bumps the pytest group with 1 update: [pytest](https://github.com/pytest-dev/pytest).


Updates `pytest` from 8.3.3 to 8.3.4
- [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.3...8.3.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-02 03:18:44 +00:00
Matthias
ab42f84daa Merge pull request #11011 from freqtrade/new_release
New release 2024.11
2024-12-01 20:11:57 +01:00
Matthias
29f86afaf4 Merge pull request #10858 from xzmeng/binance-public-data
Improve binance historic OHLCV download speed
2024-12-01 19:41:40 +01:00
Matthias
ac5a3b9217 Merge pull request #11010 from freqtrade/bump/ta-lib
Bump ta lib to 0.4.34
2024-12-01 19:39:40 +01:00
Matthias
d7d73364e9 chore: version bump 2024.12-dev 2024-12-01 19:38:37 +01:00
Matthias
f83a57ae5c chore: version bump to 2024.11 2024-12-01 19:35:02 +01:00
Matthias
56d747818d Merge branch 'stable' into new_release 2024-12-01 19:34:50 +01:00
Axel-CH
309adb2ffd Merge branch 'develop' into feature/proceed-exit-while-open-order 2024-12-01 11:36:10 -04:00
Matthias
64b50d13fa chore: Add typehint for consolidated method 2024-12-01 16:25:00 +01:00
Axel-CH
16d2dbc9d7 on backtesting try to create exit orders also if there is open order without position yet, to allow entry order adjustment 2024-12-01 11:13:59 -04:00
Axel-CH
73d53579d9 remove Optinal property of replacing param in cancel_open_orders_of_trade 2024-12-01 11:05:38 -04:00
Axel-CH
fbd6a58e3d Merge branch 'develop' into feature/proceed-exit-while-open-order 2024-12-01 10:51:41 -04:00
Axel-CH
4717f716de fix test_dca_exiting 2024-12-01 10:41:41 -04:00
Axel-CH
02a089cb64 fix test_dca_order_adjust_entry_replace_fails 2024-12-01 10:36:49 -04:00
Matthias
0ada6fbd46 test: Add test case for kraken balance rewards 2024-12-01 15:34:36 +01:00
Matthias
2c8840b7e0 fix(kraken): consolidate balances from "rewards"
These currencies show up as <currency>.F -
but can be traded normally - hence we should count them as "tradable" balance.

closes #11007
closes #10925
2024-12-01 15:33:53 +01:00
Axel-CH
8f15bce680 fix test_check_and_call_adjust_trade_position 2024-12-01 10:32:04 -04:00
Matthias
1510c5517b chore: update ta-lib wheels for 0.4.34 2024-12-01 15:28:48 +01:00
Matthias
f6e2fcbf15 chore: bump ta-lib to 0.4.34 2024-12-01 15:28:37 +01:00
Matthias
55247b4e12 chore: bump ccxt to 4.4.35 2024-12-01 15:19:45 +01:00
Matthias
f31b26b1ab tests: Improve sample_order online testing 2024-11-30 18:12:32 +01:00
Matthias
2b350eb872 tests: improve assert accuracy 2024-11-30 13:50:12 +01:00
Matthias
88d77658f8 tests: extract strategy_safe_wrapper tests 2024-11-30 13:49:04 +01:00
Matthias
cbbc386170 docs: update Hyperliquid docs to guide users to use API Wallets 2024-11-30 07:05:19 +01:00
Matthias
7f9226861a docs: slight formatting improvement 2024-11-30 07:04:19 +01:00
Matthias
162c79029f chore: slightly reorganize test file layout 2024-11-29 07:12:54 +01:00
Matthias
5f363f5c9d chore: properly remove ccxt reference 2024-11-29 07:00:42 +01:00
Matthias
bd5877ad49 chore: add space in log message 2024-11-29 06:55:33 +01:00
Matthias
71cf7aedb5 chore: remove unnecessary test-file
that test is flaky for new pairs - and wouldn't run in production anyway.
2024-11-29 06:48:39 +01:00
Matthias
fa1e0af19f chore: remove direct exchange connection 2024-11-29 06:46:55 +01:00
Axel-CH
0a51006da2 update process_open_trade_positions to handle position adjustment for initial entry order (before filling) 2024-11-28 22:27:07 -04:00
Axel-CH
4c365f6afc update test_dca_handle_similar_open_order 2024-11-28 22:25:58 -04:00
Axel-CH
a49b0a922a enhance check_and_call_adjust_trade_position logging 2024-11-28 22:17:53 -04:00
Matthias
a6199680cd fix: freqAI bug causing failures on 2nd backtest 2024-11-28 19:53:41 +01:00
Matthias
9ff4298475 docs: update documentation for expanding pairs
This needs quoting otherwise zsh tries to expand the command,
causing failures.

closes #10996
2024-11-28 19:22:08 +01:00
Matthias
5793216d5c properly account for fee when assigning order.cost in backtesting
(although it's not relevant for operations, it shouldn't be obivously wrong).

closes #11003
2024-11-28 18:15:55 +01:00
Matthias
d1710826e6 chore: improved naming 2024-11-28 07:27:29 +01:00
Matthias
675b996f57 chore: improved naming in test case 2024-11-28 07:20:32 +01:00
Matthias
21777a5804 chore: do more pinpointed imports 2024-11-28 07:09:57 +01:00
Matthias
b1ca00b037 chore: don't shadow pandas builtin methods 2024-11-28 07:04:28 +01:00
Matthias
e2a09f272a chore: Improve naming, remove unnecessary method 2024-11-28 06:55:15 +01:00
Matthias
cf9c9fe278 Merge pull request #11001 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-11-28 06:53:38 +01:00
Matthias
0e77c89d79 chore: simplify code structure by moving conditional to parent method 2024-11-28 06:43:51 +01:00
xmatthias
7571ae19a0 chore: update pre-commit hooks 2024-11-28 03:14:33 +00:00
Matthias
69c1de7e4a chore: move fallback param to config directly 2024-11-27 18:20:44 +01:00
Matthias
09308e568d fix: increase code reliability by not relying on stake-currency to be in the dict 2024-11-27 07:24:11 +01:00
Matthias
671821aeb3 docs: Add documentation for dry-run-wallet as dict 2024-11-27 06:48:07 +01:00
Matthias
7369331e2d tests: add test for multi-pair dry-run wallets 2024-11-27 06:41:54 +01:00
Matthias
e6e193f252 test: assert tickers is called a 2nd time if necessary 2024-11-27 06:41:54 +01:00
Matthias
2bb111605c feat: update rpc_balance to fetch spot tickers
Happens if there is no market for the given pair
2024-11-27 06:41:54 +01:00
Matthias
37aba6f7d5 feat: Allow fetch_tickers from different marketsegment 2024-11-27 06:41:54 +01:00
Matthias
3fc259bb9b feat: add non-trading balance to wallet 2024-11-27 06:41:54 +01:00
Matthias
15c1a8ee0b chore: reduce dict lookups, reuse attribute 2024-11-27 06:41:54 +01:00
Matthias
b4b6de4e0d test: update test ... 2024-11-27 06:41:54 +01:00
Matthias
5b0be7e1a9 feat: support dict like dry_run_wallet 2024-11-27 06:41:54 +01:00
Matthias
92e64927b0 feat: allow object as dry-run balance 2024-11-27 06:41:54 +01:00
Matthias
58cde3253d docs: Fix rendering of $ signs 2024-11-27 06:41:45 +01:00
Matthias
47262b9350 docs: align character used for lists 2024-11-27 06:41:39 +01:00
Matthias
183909f474 chore: kwonly for cached arguments 2024-11-26 18:29:33 +01:00
Matthias
06bb43b13e chore: add missing docstring 2024-11-26 18:29:28 +01:00
Matthias
2ed8e1639f chore: move comment to where it belongs 2024-11-26 18:29:21 +01:00
Matthias
e78d5b7787 chore: improved typing of rpc class 2024-11-26 18:29:17 +01:00
Matthias
e0c6cc1563 feat: add log_responses to /balance endpoint
part of #10994
2024-11-26 10:23:03 +01:00
Matthias
472132c236 tests: update test for renamed prop 2024-11-26 07:08:55 +01:00
Matthias
1262aa19ec chore: make start_cap in wallets private 2024-11-26 06:37:35 +01:00
Matthias
e9e3f7ef16 Merge pull request #10992 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-11-26 06:01:23 +01:00
xmatthias
d9d4c478cc chore: update pre-commit hooks 2024-11-26 03:13:21 +00:00
Axel-CH
0c79c32b0d add test_dca_handle_similar_open_order (wip) 2024-11-25 19:25:54 -04:00
Matthias
db56fc158f test: update test market 2024-11-25 19:35:25 +01:00
Matthias
af8d2490e2 feat: improve is_futures market check 2024-11-25 19:35:25 +01:00
Matthias
fdc77bfd5b Merge pull request #10986 from freqtrade/dependabot/pip/develop/ruff-0.8.0
chore(deps-dev): bump ruff from 0.7.4 to 0.8.0
2024-11-25 07:55:15 +01:00
Matthias
5572d37c7f Merge pull request #10985 from freqtrade/dependabot/pip/develop/stable-baselines3-2.4.0
chore(deps): bump stable-baselines3 from 2.3.2 to 2.4.0
2024-11-25 07:39:01 +01:00
Matthias
57f2ab2f67 Merge pull request #10983 from freqtrade/dependabot/pip/develop/pydantic-2.10.1
chore(deps): bump pydantic from 2.9.2 to 2.10.1
2024-11-25 07:22:20 +01:00
Matthias
1cab52f555 Merge pull request #10988 from freqtrade/dependabot/pip/develop/numexpr-2.10.2
chore(deps): bump numexpr from 2.10.1 to 2.10.2
2024-11-25 07:07:41 +01:00
Matthias
748233ca70 chore: update imports to prevent shadowing internal exceptions 2024-11-25 06:39:18 +01:00
dependabot[bot]
f76108c5b5 chore(deps): bump pydantic from 2.9.2 to 2.10.1
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.9.2 to 2.10.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.9.2...v2.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 05:31:31 +00:00
dependabot[bot]
09f94f7b56 chore(deps): bump stable-baselines3 from 2.3.2 to 2.4.0
Bumps [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) from 2.3.2 to 2.4.0.
- [Release notes](https://github.com/DLR-RM/stable-baselines3/releases)
- [Commits](https://github.com/DLR-RM/stable-baselines3/compare/v2.3.2...v2.4.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 05:31:16 +00:00
Matthias
a85b8d6edc Merge pull request #10984 from freqtrade/dependabot/pip/develop/uvicorn-0.32.1
chore(deps): bump uvicorn from 0.32.0 to 0.32.1
2024-11-25 06:30:54 +01:00
Matthias
52c9761e5b Merge pull request #10980 from freqtrade/dependabot/pip/develop/mkdocs-f608445ecc
chore(deps): bump mkdocs-material from 9.5.44 to 9.5.45 in the mkdocs group
2024-11-25 06:30:41 +01:00
Matthias
c2dbb9cb43 Merge pull request #10981 from freqtrade/dependabot/pip/develop/tqdm-4.67.1
chore(deps): bump tqdm from 4.67.0 to 4.67.1
2024-11-25 06:30:26 +01:00
Matthias
59c3743f77 Merge pull request #10982 from freqtrade/dependabot/pip/develop/orjson-3.10.12
chore(deps): bump orjson from 3.10.11 to 3.10.12
2024-11-25 06:30:09 +01:00
dependabot[bot]
98422f8476 chore(deps): bump numexpr from 2.10.1 to 2.10.2
Bumps [numexpr](https://github.com/pydata/numexpr) from 2.10.1 to 2.10.2.
- [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.1...v2.10.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 03:46:25 +00:00
dependabot[bot]
8c6283a687 chore(deps-dev): bump ruff from 0.7.4 to 0.8.0
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.7.4 to 0.8.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.7.4...0.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 03:45:45 +00:00
dependabot[bot]
1fd492d838 chore(deps): bump uvicorn from 0.32.0 to 0.32.1
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.32.0 to 0.32.1.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.32.0...0.32.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 03:45:25 +00:00
dependabot[bot]
fc63a713fd chore(deps): bump orjson from 3.10.11 to 3.10.12
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.11 to 3.10.12.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.10.11...3.10.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 03:45:09 +00:00
dependabot[bot]
e97b9820a4 chore(deps): bump tqdm from 4.67.0 to 4.67.1
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.67.0 to 4.67.1.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.67.0...v4.67.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-25 03:45:01 +00:00
dependabot[bot]
52f24af701 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.5.44 to 9.5.45
- [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.5.44...9.5.45)

---
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>
2024-11-25 03:44:56 +00:00
Alexander Malysh
c3032feaf7 * allow json in env variables 2024-11-24 14:23:04 +01:00
Matthias
b30c1523e3 chore: don't use e if not used 2024-11-24 10:36:31 +01:00
Matthias
6e1c4c2efd test: add test-case for improved error-handling 2024-11-24 10:36:09 +01:00
Matthias
3b542ea008 fix: add better error-handling for dataloading
closes #10978
2024-11-24 10:36:02 +01:00
Matthias
5841b56f2d chore: NotRequired from typing_extensions 2024-11-23 14:18:05 +01:00
Matthias
85ea29c93c fix: pydantic - typing_extensions type-dict 2024-11-23 14:05:52 +01:00
Matthias
f7e979141b chore: simplify imports 2024-11-23 13:09:17 +01:00
Matthias
e0bdc68a9e feat: support all parameters 2024-11-23 12:55:54 +01:00
Matthias
e6cfde211b feat: enhance api_download capabilities 2024-11-22 16:18:28 +01:00
Matthias
978aaa5c4b chore: improve API server cleanup 2024-11-22 16:17:26 +01:00
Matthias
b67beaa35a chore: simplify progress-tracker typing 2024-11-22 15:24:52 +01:00
Matthias
19f23106e7 tests: add test for download_data api method 2024-11-22 15:06:58 +01:00
Matthias
d8a2c59b04 chore: Add proper typing to jobContainer response 2024-11-22 15:06:58 +01:00
Matthias
dea785f562 feat: add progress_tasks to /background endpoint 2024-11-22 15:06:58 +01:00
Matthias
ca42f86900 feat: set progressTasks in Callback correctly 2024-11-22 15:06:58 +01:00
Matthias
de9294d1f4 feat: return progressTasks in API 2024-11-22 15:06:58 +01:00
Matthias
91b83519f5 feat: update types to support multiple progressbars 2024-11-22 15:06:58 +01:00
Matthias
3eb7f296aa fix: callback must be called after parent call 2024-11-22 15:06:58 +01:00
Matthias
f3b0e404f0 chore: update to new syntax 2024-11-22 15:06:58 +01:00
Matthias
3ba3d7ffcf feat: increment api_version 2024-11-22 15:06:58 +01:00
Matthias
832fa88f08 feat: api-download-data shouldn't require stake-currency 2024-11-22 15:06:58 +01:00
Matthias
6e9d349ceb feat: api progressbar handling 2024-11-22 15:06:57 +01:00
Matthias
8bd1524abc feat: pass progressbar into download-data functions 2024-11-22 15:06:57 +01:00
Matthias
72f5633061 feat: add ProgressLike protocol 2024-11-22 15:06:57 +01:00
Matthias
3b25bdc1cb feat(data-dl): Simplify download-data calls 2024-11-22 15:06:57 +01:00
Matthias
3690609519 feat: simplify api_download_data code duplication 2024-11-22 15:06:57 +01:00
Matthias
43c9d14ac2 refactor: extract exchangeInit from download-data main 2024-11-22 15:06:57 +01:00
Matthias
83122fa58b feat: add initial download-data api endpoints 2024-11-22 15:06:57 +01:00
Matthias
f23da7ea75 feat: Add initial data-download api schema 2024-11-22 15:06:57 +01:00
Matthias
7ef93e92e6 feat: Log if user has a Gate unified account 2024-11-21 20:57:20 +01:00
Matthias
945f9f8c47 docs: update unfilledtimeout.entry comment to remove false statement
closes #10966
2024-11-21 20:38:38 +01:00
Matthias
29b40d27e7 fix: hyperliquid doesn't provide "average" in fetch_order
therefore this needs to be filled from trades to have a good price
 for market orders
2024-11-21 20:31:56 +01:00
Matthias
cd83ed699c chore: add rejected to canceled order states 2024-11-21 20:04:52 +01:00
Matthias
02fcded368 chore: bump ccxt to 4.4.33
closes #10942
2024-11-21 18:17:14 +01:00
Matthias
18b0dfe28c fix: add stop_price_prop for hyperliquid
temporary workaround for #10960
2024-11-21 06:45:03 +01:00
Matthias
69be62f1e6 Merge pull request #10965 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-11-21 06:28:15 +01:00
xmatthias
7136c5b414 chore: update pre-commit hooks 2024-11-21 03:10:53 +00:00
Matthias
b637e7dde4 docs: add "impossible to load" FAQ entry 2024-11-20 07:00:29 +01:00
Matthias
f545274a0e test: add test for bybit classic account behavior
related: #10872
2024-11-19 18:19:27 +01:00
Matthias
e8c122d5ed fix: bybit classic market buy orders require price
closes #10872
2024-11-19 18:18:47 +01:00
Matthias
9457f63e01 Merge pull request #10954 from freqtrade/dependabot/pip/aiohttp-3.10.11
chore(deps): bump aiohttp from 3.10.10 to 3.10.11
2024-11-19 06:28:51 +01:00
Matthias
df004a2c7a Merge pull request #10955 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-11-19 06:26:43 +01:00
xmatthias
a698ee8bc8 chore: update pre-commit hooks 2024-11-19 03:12:02 +00:00
dependabot[bot]
1228ffe109 chore(deps): bump aiohttp from 3.10.10 to 3.10.11
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.10 to 3.10.11.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.10...v3.10.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 21:04:54 +00:00
Matthias
076a10887b Merge pull request #10947 from freqtrade/dependabot/pip/develop/pycoingecko-3.2.0
chore(deps): bump pycoingecko from 3.1.0 to 3.2.0
2024-11-18 07:48:22 +01:00
Matthias
fc3db2d29c chore: force pycoingecko to be > 3.2.0
that's the first version supporting demo API keys
2024-11-18 07:13:21 +01:00
Matthias
971cdbb918 chore: Simplify coingecko wrapper after update 2024-11-18 07:13:21 +01:00
dependabot[bot]
73adbe9e0c chore(deps): bump pycoingecko from 3.1.0 to 3.2.0
Bumps [pycoingecko](https://github.com/man-c/pycoingecko) from 3.1.0 to 3.2.0.
- [Changelog](https://github.com/man-c/pycoingecko/blob/master/CHANGELOG.md)
- [Commits](https://github.com/man-c/pycoingecko/compare/3.1.0...3.2.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 07:13:02 +01:00
Matthias
8363609637 chore: fix typo in comment 2024-11-18 07:05:13 +01:00
Matthias
705c3a408a Merge pull request #10953 from freqtrade/dependabot/pip/develop/fastapi-0.115.5
chore(deps): bump fastapi from 0.115.4 to 0.115.5
2024-11-18 06:35:26 +01:00
Matthias
228fc5ce73 Merge pull request #10949 from freqtrade/dependabot/pip/develop/pyjwt-2.10.0
chore(deps): bump pyjwt from 2.9.0 to 2.10.0
2024-11-18 06:35:04 +01:00
Matthias
09885535ac Merge pull request #10950 from freqtrade/dependabot/pip/develop/ruff-0.7.4
chore(deps-dev): bump ruff from 0.7.3 to 0.7.4
2024-11-18 06:34:42 +01:00
Matthias
de139af5a5 Merge pull request #10951 from freqtrade/dependabot/pip/develop/websockets-14.1
chore(deps): bump websockets from 14.0 to 14.1
2024-11-18 06:33:56 +01:00
dependabot[bot]
d9c7790e82 chore(deps): bump fastapi from 0.115.4 to 0.115.5
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.4 to 0.115.5.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.115.4...0.115.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 03:58:03 +00:00
dependabot[bot]
aa03b7d9a0 chore(deps): bump websockets from 14.0 to 14.1
Bumps [websockets](https://github.com/python-websockets/websockets) from 14.0 to 14.1.
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](https://github.com/python-websockets/websockets/compare/14.0...14.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 03:57:52 +00:00
dependabot[bot]
8f9d0019e6 chore(deps-dev): bump ruff from 0.7.3 to 0.7.4
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.7.3 to 0.7.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.7.3...0.7.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 03:57:42 +00:00
dependabot[bot]
9e3fae1991 chore(deps): bump pyjwt from 2.9.0 to 2.10.0
Bumps [pyjwt](https://github.com/jpadilla/pyjwt) from 2.9.0 to 2.10.0.
- [Release notes](https://github.com/jpadilla/pyjwt/releases)
- [Changelog](https://github.com/jpadilla/pyjwt/blob/master/CHANGELOG.rst)
- [Commits](https://github.com/jpadilla/pyjwt/compare/2.9.0...2.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 03:57:19 +00:00
Matthias
5dcb239253 Merge pull request #10944 from smith558/patch-1
Fix typo
2024-11-17 09:04:38 +01:00
Stanislav (Stanley) Modrak
9fcdea14d7 Fix typo 2024-11-16 20:52:31 +00:00
Matthias
85dbe83154 Merge pull request #10943 from emmanuel-ferdman/develop
docs: update `VolumePairList` reference
2024-11-16 17:07:16 +01:00
Matthias
ee48da2a0a docs: slightly reword data message 2024-11-16 15:51:33 +01:00
Emmanuel Ferdman
f477389159 docs: update VolumePairList reference
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-11-16 06:26:56 -08:00
Matthias
3bb7f78255 chore: fix import sorting 2024-11-16 13:25:54 +01:00
Matthias
25aecfa9b2 docs: slightly update download-data docs 2024-11-16 13:07:23 +01:00
Matthias
f821e504c3 tests: update test for new behavior 2024-11-16 12:58:31 +01:00
Matthias
d66381863e feat: don't force-redownload all data
If the given timerange starts prior to the available data,
the bot shouldn't force-download everything unless forced via `--erase`
or via `--prepend`.
2024-11-16 12:58:23 +01:00
Matthias
68712c884e chore: fix line length 2024-11-16 12:51:13 +01:00
Matthias
db9b31cb85 chore: don't use unsupported syntax 2024-11-16 12:40:03 +01:00
Matthias
7090d4e5ba fix: override gate funding fee limit to 90
(seems to be the new limit)
2024-11-16 11:56:05 +01:00
Matthias
b2423fa390 chore: remove explicit ohlcv_candle_limit in favor of config option 2024-11-16 11:54:54 +01:00
Matthias
83b87cb812 feat: add explicit funding_fee_candle_limit for simplified overriding 2024-11-16 11:54:28 +01:00
Matthias
44dcb4cc78 Merge pull request #10839 from gaardiolor/hyperliquid
Hyperliquid
2024-11-16 11:18:03 +01:00
Matthias
64803a735d tests: update commands tests to early fail approach 2024-11-16 11:07:19 +01:00
Matthias
20e77bb5d9 test: update tests to recognize early failing 2024-11-16 11:02:22 +01:00
Matthias
f11e5128ad tests: update tests for new dl-trades behavior 2024-11-16 10:58:25 +01:00
Matthias
bbe13cafcb tests: Remove pointless test 2024-11-16 10:46:48 +01:00
Matthias
1acca87fbf chore: early-exit when no pairs are available 2024-11-16 10:46:23 +01:00
Matthias
2012bb7c53 chore: improve logging sequence 2024-11-16 10:43:01 +01:00
Matthias
14d384a30a feat: don't auto-delete trades data due to invalid timerange
trades-data is already slow enough to download
2024-11-16 10:34:24 +01:00
Matthias
927f5e2c8b tests: enhanced test for get_trade_history on binance 2024-11-16 10:10:30 +01:00
Matthias
d59bedf977 feat: download-trades-data on binance has limited history
with from=0, we can get the initial data available.

closes #10941
2024-11-16 10:02:22 +01:00
Matthias
c61a71a36e fix: percent_change from candle must provide percentage, not ratio
closes #10937
2024-11-16 08:50:41 +01:00
Matthias
46f2e693bc chore: bump ccxt to 4.4.31 2024-11-15 21:57:58 +01:00
Matthias
cbc4bb5420 chore: use __all__ for hyperopt main export 2024-11-15 07:24:46 +01:00
Matthias
49e85e0680 docs: update migration docs to new syntax
only update the "after" parts.
No changs to highlighting, as the actual syntax used is not relevant for the strategy.
2024-11-15 07:21:22 +01:00
Matthias
e8d724680a chore: improved log msg wording 2024-11-15 07:19:05 +01:00
Matthias
6d9ab5e9ff docs: update more typing wordings 2024-11-15 07:18:41 +01:00
Matthias
a6d513a0e6 docs: update callback docs to new syntax 2024-11-15 07:15:31 +01:00
Matthias
d565c40f4b docs: Updated syntax 2024-11-15 07:11:54 +01:00
Matthias
52b4ae5eae Docs: Align to 3.10 syntax 2024-11-15 07:10:31 +01:00
Meng Xiangzhuo
0f53dc1b7b chore: improve log level to warning when falling back to API 2024-11-15 12:08:50 +08:00
Matthias
5c4b9e59d1 chore: add Hyperliquid as supported exchange to docs 2024-11-14 07:08:27 +01:00
Matthias
a02f63dcc3 chore: add hyperliquid to supported exchange list 2024-11-14 07:06:43 +01:00
Matthias
a3a94e6ea4 chore: reorder hyperliquid docs, add note about order types 2024-11-14 07:06:09 +01:00
Matthias
c039a45def fix: hyperliquid market orders don't exist and always require price 2024-11-14 07:04:39 +01:00
Matthias
3276dd6b94 Merge pull request #10931 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-11-14 06:34:32 +01:00
xmatthias
de306de78b chore: update pre-commit hooks 2024-11-14 03:06:23 +00:00
xzmeng
19f96d60e3 refactor: streamline error handling by raising instead of returning 2024-11-14 09:47:23 +08:00
xzmeng
bfdbf0248c refactor: rename asset_type to asset_type_url_segment 2024-11-14 07:51:58 +08:00
xzmeng
660863392b refactor: rename fetch_ohlcv to download_archive_ohlcv 2024-11-14 07:29:37 +08:00
xzmeng
8baa0f7310 chore: add user friendly warnings 2024-11-14 06:06:15 +08:00
xzmeng
6b18c4f24c feat: cancel uncompleted tasks before return 2024-11-14 05:24:31 +08:00
xzmeng
40f70a1cc0 chore: warning when fall back to rest API 2024-11-14 04:36:24 +08:00
Meng Xiangzhuo
c869dfea3f chore: add more docstrings 2024-11-13 17:32:25 +08:00
Meng Xiangzhuo
39b4263b8b chore: improve comments 2024-11-13 17:14:49 +08:00
Meng Xiangzhuo
cf7016b36d chore: remove unused code 2024-11-13 16:09:02 +08:00
Meng Xiangzhuo
1893ac7ed6 tests: patch thirty party libs from imported location 2024-11-13 13:08:29 +08:00
Meng Xiangzhuo
a748d105ed chore: remove performance compare script 2024-11-13 12:45:46 +08:00
Meng Xiangzhuo
fc307bcf5b tests: fix 2024-11-13 12:44:27 +08:00
Meng Xiangzhuo
03033a0684 refactor: use exchange.markets to avoid loading ccxt markets 2024-11-13 12:36:18 +08:00
Meng Xiangzhuo
7ca39a5c38 Merge branch 'develop' into binance-public-data 2024-11-13 12:14:50 +08:00
Meng Xiangzhuo
d7555e1f29 feat: support proxy from environment variables 2024-11-13 12:03:41 +08:00
Meng Xiangzhuo
37726fba58 refactor: use CCXT for pair to symbol conversion 2024-11-13 11:55:10 +08:00
Meng Xiangzhuo
c4cf582c9d refacotr: default to stop on 404 2024-11-13 11:18:32 +08:00
Meng Xiangzhuo
acc53065e5 refactor: strip fast download logic into a method 2024-11-13 10:16:06 +08:00
Matthias
9360c109a9 docs: fix spelling 2024-11-12 19:32:42 +01:00
Matthias
5d9af5a7da test: update tests with new formatting 2024-11-12 19:27:17 +01:00
Matthias
88e0fed4c4 fix: Consistently format pair rate between entry and exit messages
closes #10922
2024-11-12 19:27:17 +01:00
Matthias
98dcc08c6d feat: add fmt_coin2 2024-11-12 19:27:17 +01:00
gaardiolor
702b50e7e9 Update exchanges.md - less details on the private key conversion 2024-11-12 18:22:19 +01:00
gaardiolor
8f946ea1b2 Update exchanges.md - further clarify private key best practices 2024-11-12 18:13:31 +01:00
Matthias
4e5ae0af84 Merge pull request #10919 from freqtrade/refactor/hyperopt
Restore hyperopt logging, refactor hyperopt layout
2024-11-12 18:13:02 +01:00
Matthias
ca00871362 chore: adopt hyperopt class to new ruff formatting 2024-11-12 18:05:51 +01:00
Matthias
a1d8658297 Merge branch 'develop' into pr/gaardiolor/10839 2024-11-12 18:05:25 +01:00
gaardiolor
31814e8bf9 Update docs/stoploss.md - clarify that stoploss_on_exchange is only supported for hyperliquid futures
Co-authored-by: Matthias <xmatthias@outlook.com>
2024-11-12 17:55:12 +01:00
Matthias
0028df2564 feat(hyperliquid): fix a few settings to make spot work properly 2024-11-12 06:58:21 +01:00
Matthias
9b3764212f chore: fix bad import 2024-11-12 06:30:55 +01:00
Matthias
8128b85706 Merge pull request #10921 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-11-12 06:24:15 +01:00
xmatthias
d7c88a38fc chore: update pre-commit hooks 2024-11-12 03:04:16 +00:00
Matthias
0b0b221c02 chore: update advanced template to new formatting 2024-11-11 20:25:15 +01:00
Matthias
d9b8f46282 docs: update doc samples to use lowercased tuple and dict 2024-11-11 20:24:01 +01:00
Matthias
fbb64db3ae define log_queue globally 2024-11-11 20:14:37 +01:00
Matthias
33d8e67a87 docs: add note about logging 2024-11-11 20:12:31 +01:00
Matthias
f05f173d23 chore: improved docstring for logging_mp_handle 2024-11-11 19:53:59 +01:00
Matthias
81a622a9fa chore: remove unnecessary log messages 2024-11-11 19:53:26 +01:00
Matthias
67415dd7e2 chore: improved module docstring 2024-11-11 19:53:04 +01:00
Matthias
e8cd6b3be3 Merge pull request #10910 from freqtrade/dependabot/pip/develop/websockets-14.0
chore(deps): bump websockets from 13.1 to 14.0
2024-11-11 19:48:05 +01:00
Matthias
7e96e7af83 feat: add hyperopt log handlers to allow for multiprocessing logging 2024-11-11 19:43:37 +01:00
Matthias
119b73ead2 chore: improtve method sorting 2024-11-11 19:43:37 +01:00
Matthias
365c454da1 chore: Improve import comments 2024-11-11 19:43:37 +01:00
Matthias
b6d1f9f754 test: update hyperopt tests for new structure 2024-11-11 19:43:37 +01:00
Matthias
6719d9670d feat: split hyperopt class
this ensures it's clear which parts are passed to workers
2024-11-11 19:43:37 +01:00
Matthias
62234878a1 test: update mocks for new layout 2024-11-11 19:43:37 +01:00
Matthias
851a9a7620 refactor: move hyperopt-auto 2024-11-11 19:43:37 +01:00
Matthias
61d9002cb1 refactor: move hyperopt-output 2024-11-11 19:43:37 +01:00
Matthias
84fc5dfcf7 refactor: move hyperopt-loss interface 2024-11-11 19:43:37 +01:00
Matthias
e1b3ae208d chore: move hyperopt to it's own module 2024-11-11 19:43:37 +01:00
Matthias
60ec9739c2 chore: update websocket implementation to new asyncio api 2024-11-11 19:21:45 +01:00
Matthias
c9fb3dfb1d chore: Update websocket imports to use "legacy" client
temporary - must be updated to the new implementation
2024-11-11 07:09:13 +01:00
Matthias
8230d1b515 Merge pull request #10913 from freqtrade/dependabot/pip/develop/ccxt-4.4.29
chore(deps): bump ccxt from 4.4.26 to 4.4.29
2024-11-11 06:29:59 +01:00
dependabot[bot]
838b4f4e52 chore(deps): bump websockets from 13.1 to 14.0
Bumps [websockets](https://github.com/python-websockets/websockets) from 13.1 to 14.0.
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](https://github.com/python-websockets/websockets/compare/13.1...14.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 05:29:17 +00:00
Matthias
eae5b154c9 Merge pull request #10908 from freqtrade/dependabot/pip/develop/mkdocs-54fce57b69
chore(deps): bump mkdocs-material from 9.5.43 to 9.5.44 in the mkdocs group
2024-11-11 06:28:51 +01:00
Matthias
ebc870d2d4 Merge pull request #10911 from freqtrade/dependabot/pip/develop/packaging-24.2
chore(deps): bump packaging from 24.1 to 24.2
2024-11-11 06:28:15 +01:00
Matthias
986b1aadbf Merge pull request #10912 from freqtrade/dependabot/pip/develop/tqdm-4.67.0
chore(deps): bump tqdm from 4.66.6 to 4.67.0
2024-11-11 06:27:16 +01:00
Matthias
9ced73bf19 Merge pull request #10914 from freqtrade/dependabot/pip/develop/ruff-0.7.3
chore(deps-dev): bump ruff from 0.7.2 to 0.7.3
2024-11-11 06:26:38 +01:00
Matthias
f0428d5c99 Merge pull request #10915 from freqtrade/dependabot/pip/develop/python-telegram-bot-21.7
chore(deps): bump python-telegram-bot from 21.6 to 21.7
2024-11-11 06:26:11 +01:00
Matthias
486a0d2c6e Merge pull request #10916 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.12.2
chore(deps): bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2
2024-11-11 06:25:47 +01:00
dependabot[bot]
13cf6a1007 chore(deps): bump pypa/gh-action-pypi-publish from 1.11.0 to 1.12.2
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.11.0 to 1.12.2.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.11.0...v1.12.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 03:54:30 +00:00
dependabot[bot]
4c59bcc1bb chore(deps): bump python-telegram-bot from 21.6 to 21.7
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 21.6 to 21.7.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v21.6...v21.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 03:11:15 +00:00
dependabot[bot]
057bb31d94 chore(deps-dev): bump ruff from 0.7.2 to 0.7.3
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.7.2 to 0.7.3.
- [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.7.2...0.7.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 03:11:00 +00:00
dependabot[bot]
6258c0671b chore(deps): bump ccxt from 4.4.26 to 4.4.29
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.26 to 4.4.29.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.26...4.4.29)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 03:10:48 +00:00
dependabot[bot]
b3b45458f6 chore(deps): bump tqdm from 4.66.6 to 4.67.0
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.66.6 to 4.67.0.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.66.6...v4.67.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 03:10:40 +00:00
dependabot[bot]
54047a98b3 chore(deps): bump packaging from 24.1 to 24.2
Bumps [packaging](https://github.com/pypa/packaging) from 24.1 to 24.2.
- [Release notes](https://github.com/pypa/packaging/releases)
- [Changelog](https://github.com/pypa/packaging/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pypa/packaging/compare/24.1...24.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-11 03:10:35 +00:00
dependabot[bot]
6411dcbf72 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.5.43 to 9.5.44
- [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.5.43...9.5.44)

---
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>
2024-11-11 03:10:03 +00:00
Matthias
1818215fee feat: add MultiMetricLoss to "builtin hyperopt loss" list 2024-11-10 10:11:15 +01:00
Matthias
1ffceef9f0 tests: Improve test further 2024-11-10 09:27:10 +01:00
Matthias
be1426a5f6 feat: create strategy-dir if it doesn't exist 2024-11-10 09:18:56 +01:00
Matthias
3ebb819ba3 tests: update new-strategy test to use tmpdir 2024-11-10 09:18:56 +01:00
Matthias
5f16e534ee feat: add support for --strategy-path to new-strategy 2024-11-10 09:18:56 +01:00
Matthias
8f8e6f16b4 chore: remove unused mock imports 2024-11-10 09:18:56 +01:00
Matthias
b5592b88fa Merge pull request #10898 from xzmeng/ruff310
chore: bump ruff target-version to 3.10
2024-11-10 09:06:28 +01:00
Matthias
ba06269ed7 chore: update commented type 2024-11-10 08:47:24 +01:00
Matthias
e450baeac4 Merge pull request #10902 from 14790897/develop
feat: enhance data fetching logic with pagination to increase market …
2024-11-09 18:39:47 +01:00
Matthias
3a81b6a08f chore: improve warning wording 2024-11-09 18:18:54 +01:00
Matthias
b7a2efcd6a docs: update docs with new marketcaplist behavior 2024-11-09 18:12:48 +01:00
Meng Xiangzhuo
a605d50d69 chore: revert minimum python version check 2024-11-10 00:22:32 +08:00
liuweiqing
27d894b8e9 chore: remove warnings 2024-11-09 18:40:32 +08:00
liuweiqing
14f1ef8e30 Merge branch 'develop' of https://github.com/freqtrade/freqtrade into develop 2024-11-09 18:23:30 +08:00
liuweiqing
7b471d59c5 chore: add warning when max_rank exceeds 250 in MarketCapPairList 2024-11-09 18:23:27 +08:00
Matthias
5ca102ffee Merge pull request #10901 from freqtrade/remove_brew
Attempt Remove brew hdf5 installs
2024-11-09 09:02:15 +01:00
Matthias
0e04f79b6d docs: add macos libomp to docs
closes #10900
2024-11-09 08:30:19 +01:00
Matthias
c141b873c3 docs: Update install docs 2024-11-09 08:24:37 +01:00
Matthias
3cc97690a4 tests: add hyperliquid lev_prep test 2024-11-09 08:11:23 +01:00
Matthias
5b7f08137f tests: improve hyperliquid tests 2024-11-09 08:09:57 +01:00
liuweiqing
00318be59f chore: Convert page number to string to ensure type compatibility 2024-11-09 11:25:31 +08:00
Matthias
37c00d4eeb chore: keep libomp brew install 2024-11-08 07:59:47 +01:00
liuweiqing
3300d25e57 feat: enhance data fetching logic with pagination to increase market cap rank limit 2024-11-08 14:50:21 +08:00
Matthias
f443b1426f chore: try removing all brew install steps
(hdf5 provides proper wheels now)
2024-11-08 07:03:03 +01:00
Matthias
96354ee1d8 docs: fix hyperliquid docs formatting 2024-11-08 06:45:45 +01:00
Meng Xiangzhuo
41b725714f chore: bump ruff target-version to 3.10 2024-11-08 04:37:33 +08:00
Matthias
12560e983c docs: Add note about custom-stoploss exit reasons 2024-11-07 19:57:41 +01:00
Matthias
44ff6d50ec docs: further clarify telegram docs 2024-11-07 07:22:54 +01:00
Matthias
29c1cca990 chore: don't modify original dict when initializing ccxt 2024-11-07 07:03:01 +01:00
Matthias
979f7ba78c docs: improved wording on telegram docs 2024-11-07 06:38:22 +01:00
Matthias
b6dfe01628 chore: improve loudness call structure 2024-11-07 06:32:23 +01:00
Matthias
d4cd5ba231 chore: Add loudness docstring 2024-11-07 06:29:23 +01:00
Matthias
e7cf1e34cf docs: update docs to better explain options for telegram settings
closes #10895
2024-11-07 06:29:23 +01:00
Matthias
c9718de24c feat: Update config_schema with support for exit_fill 2024-11-07 06:29:23 +01:00
Matthias
c58b1f0fd2 feat: add "*" to define custom default for non-defined exit reasons 2024-11-07 06:29:23 +01:00
Matthias
b720ae5d75 feat: Support individual exits for both exit-fill and exit messages 2024-11-07 06:29:23 +01:00
Matthias
3cea1a99b7 tests: add explicit notification enablement test 2024-11-07 06:29:23 +01:00
Matthias
03eb079a5e chore: slightly refactor telegram loudness control 2024-11-07 06:29:23 +01:00
Matthias
899db2de78 docs: improve formatting of telegram docs page 2024-11-07 06:29:23 +01:00
Matthias
22338d7058 Merge pull request #10896 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-11-07 06:29:11 +01:00
xmatthias
db6d7714a4 chore: update pre-commit hooks 2024-11-07 03:07:11 +00:00
gaardiolor
2de4f425ff Update stoploss.md - add hyperliquid 2024-11-06 21:41:59 +01:00
gaardiolor
a71ab6e2ae Update exchanges.md - add hyperliquid stoploss_on_exchange note 2024-11-06 21:39:56 +01:00
gaardiolor
0b6bf701ef Update exchanges.md - typo 2024-11-06 10:29:23 +01:00
gaardiolor
38eb4eed97 Reverted changes related to create_order_has_all_data 2024-11-05 22:37:12 +01:00
gaardiolor
bdb54f56d9 Update exchanges.md - add Hyperliquid 2024-11-05 21:21:11 +01:00
Matthias
3eb2981fb4 chore: add explaining comment for "not fill" branch 2024-11-05 20:45:58 +01:00
Matthias
835269825d fix: improve stake-amount in order "created" message 2024-11-05 20:35:59 +01:00
Matthias
12ab1cb2c4 tests: add explicit test for stake_amount_filled 2024-11-05 07:19:49 +01:00
Matthias
07f0e3803a docs: add stake_amount_filled documentation 2024-11-05 07:19:39 +01:00
Matthias
3d307fe8ff feat: add stake_amount_filled order attribute 2024-11-05 07:19:09 +01:00
Matthias
5cb4a65cbd fix: use order.safe_amount for "order created" entry message 2024-11-05 07:06:07 +01:00
Matthias
84ce065f76 Merge pull request #10890 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-11-05 06:24:12 +01:00
xmatthias
6398d7ff23 chore: update pre-commit hooks 2024-11-05 03:05:06 +00:00
Matthias
7e3f8ad012 tests: update test to not test for non-existing property 2024-11-04 20:14:30 +01:00
Matthias
8703c87880 chore: improve a few more types 2024-11-04 19:40:11 +01:00
Matthias
7e010c88b9 chore: Improve type safety 2024-11-04 19:32:46 +01:00
Matthias
dad921bf5b chore: use CcxtOrder in more places 2024-11-04 19:30:51 +01:00
Matthias
e020bafc38 chore: simplify calculation by reducing dict lookups 2024-11-04 18:22:20 +01:00
Matthias
ecf5e1ce6b chore: first step to improved ccxtOrder Typing 2024-11-04 18:16:00 +01:00
Matthias
31bcee1a13 Merge pull request #10887 from freqtrade/dependabot/pip/develop/pyarrow-18.0.0
chore(deps): bump pyarrow from 17.0.0 to 18.0.0
2024-11-04 09:55:54 +01:00
Matthias
6245127ce1 chore: update pyarrow armhf prebuilt wheel 2024-11-04 09:27:51 +01:00
Matthias
d1a4b9ad85 Merge pull request #10885 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.12
chore(deps): bump pymdown-extensions from 10.11.2 to 10.12
2024-11-04 07:48:05 +01:00
Matthias
167e615f67 Merge pull request #10886 from freqtrade/dependabot/pip/develop/ccxt-4.4.26
chore(deps): bump ccxt from 4.4.24 to 4.4.26
2024-11-04 07:37:56 +01:00
Matthias
9c1b0471ca Merge pull request #10884 from freqtrade/dependabot/pip/develop/torch-2.5.1
chore(deps): bump torch from 2.5.0 to 2.5.1
2024-11-04 07:25:27 +01:00
Matthias
96a8a94309 Merge pull request #10883 from freqtrade/dependabot/pip/develop/orjson-3.10.11
chore(deps): bump orjson from 3.10.10 to 3.10.11
2024-11-04 07:15:13 +01:00
Matthias
d2960aae3c Merge pull request #10882 from freqtrade/dependabot/pip/develop/ruff-0.7.2
chore(deps-dev): bump ruff from 0.7.1 to 0.7.2
2024-11-04 07:11:01 +01:00
Matthias
3f1a23615a Merge pull request #10881 from freqtrade/dependabot/pip/develop/janus-1.1.0
chore(deps): bump janus from 1.0.0 to 1.1.0
2024-11-04 07:10:33 +01:00
dependabot[bot]
78de0f3167 chore(deps): bump pyarrow from 17.0.0 to 18.0.0
Bumps [pyarrow](https://github.com/apache/arrow) from 17.0.0 to 18.0.0.
- [Release notes](https://github.com/apache/arrow/releases)
- [Commits](https://github.com/apache/arrow/compare/go/v17.0.0...apache-arrow-18.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 05:40:36 +00:00
Matthias
718e900a39 Merge pull request #10879 from freqtrade/dependabot/pip/develop/rich-13.9.4
chore(deps): bump rich from 13.9.3 to 13.9.4
2024-11-04 06:39:56 +01:00
Matthias
eff2a857c0 Merge pull request #10878 from freqtrade/dependabot/pip/develop/tqdm-4.66.6
chore(deps): bump tqdm from 4.66.5 to 4.66.6
2024-11-04 06:39:42 +01:00
Matthias
cf2b5cc24d Merge pull request #10876 from freqtrade/dependabot/pip/develop/pytest-01f0e07c3f
chore(deps-dev): bump pytest-cov from 5.0.0 to 6.0.0 in the pytest group
2024-11-04 06:39:14 +01:00
dependabot[bot]
7859fadf6b chore(deps): bump pymdown-extensions from 10.11.2 to 10.12
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.11.2 to 10.12.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.11.2...10.12)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 05:27:37 +00:00
Matthias
34588b7dc0 Merge pull request #10875 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.11.0
chore(deps): bump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0
2024-11-04 06:26:39 +01:00
Matthias
f6999898d5 Merge pull request #10877 from freqtrade/dependabot/pip/develop/mkdocs-0610082a93
chore(deps): bump mkdocs-material from 9.5.42 to 9.5.43 in the mkdocs group
2024-11-04 06:26:25 +01:00
dependabot[bot]
821243ce7c chore(deps): bump ccxt from 4.4.24 to 4.4.26
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.24 to 4.4.26.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.24...4.4.26)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:35:00 +00:00
dependabot[bot]
44d0abb111 chore(deps): bump torch from 2.2.2 to 2.5.1
Bumps [torch](https://github.com/pytorch/pytorch) from 2.2.2 to 2.5.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.2.2...v2.5.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:34:44 +00:00
dependabot[bot]
10fd2b291e chore(deps): bump orjson from 3.10.10 to 3.10.11
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.10 to 3.10.11.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.10.10...3.10.11)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:34:35 +00:00
dependabot[bot]
5034c7c312 chore(deps-dev): bump ruff from 0.7.1 to 0.7.2
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.7.1 to 0.7.2.
- [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.7.1...0.7.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:34:25 +00:00
dependabot[bot]
ff36ba7742 chore(deps): bump janus from 1.0.0 to 1.1.0
Bumps [janus](https://github.com/aio-libs/janus) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/aio-libs/janus/releases)
- [Changelog](https://github.com/aio-libs/janus/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/janus/compare/v1.0.0...v1.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:34:10 +00:00
dependabot[bot]
9b2fabfb3e chore(deps): bump rich from 13.9.3 to 13.9.4
Bumps [rich](https://github.com/Textualize/rich) from 13.9.3 to 13.9.4.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.9.3...v13.9.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:33:48 +00:00
dependabot[bot]
4008eb20a3 chore(deps): bump tqdm from 4.66.5 to 4.66.6
Bumps [tqdm](https://github.com/tqdm/tqdm) from 4.66.5 to 4.66.6.
- [Release notes](https://github.com/tqdm/tqdm/releases)
- [Commits](https://github.com/tqdm/tqdm/compare/v4.66.5...v4.66.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:33:44 +00:00
dependabot[bot]
e224ee8277 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.5.42 to 9.5.43
- [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.5.42...9.5.43)

---
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>
2024-11-04 03:33:34 +00:00
dependabot[bot]
d236f97605 chore(deps-dev): bump pytest-cov from 5.0.0 to 6.0.0 in the pytest group
Bumps the pytest group with 1 update: [pytest-cov](https://github.com/pytest-dev/pytest-cov).


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

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:33:20 +00:00
dependabot[bot]
0efb966b68 chore(deps): bump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.10.3 to 1.11.0.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.10.3...v1.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-04 03:04:18 +00:00
Matthias
63dfa52ea8 chore: Fix missing space in log message 2024-11-03 13:43:30 +01:00
Matthias
74507e9981 docs: remove more --dmmp docs 2024-11-02 17:24:31 +01:00
Matthias
d24bef7883 tests: remove --dmmp from tests 2024-11-02 16:54:54 +01:00
Matthias
59bf0c080a docs: update docs about removed --dmmp option 2024-11-02 16:54:45 +01:00
Matthias
e8553cfac0 docs: Update documentation about dmmp 2024-11-02 16:50:20 +01:00
Matthias
baadf62fc3 chore: remove --dmmp option 2024-11-02 16:49:26 +01:00
Meng Xiangzhuo
cf0f232635 refactor: move download klines count message 2024-11-02 06:00:37 +08:00
Meng Xiangzhuo
e2ee7f7b2f feat: fall back to rest API by catching all exceptions 2024-11-02 05:25:05 +08:00
Meng Xiangzhuo
76187d31cf feat: more binance fast download timeframes 2024-11-02 04:12:57 +08:00
Meng Xiangzhuo
c3bbedbc56 refactor: create coroutines on demand
to avoid "coroutine was never awaited" warnings
2024-11-02 04:10:46 +08:00
gaardiolor
c4312fbb31 _lev_prep: fixed typo. dry_run_liquidation_price: use wallet_balance instead of stake_amount 2024-11-01 19:14:37 +01:00
Matthias
1bf71b47df docs: add gate documentation about new permissions 2024-11-01 17:49:00 +01:00
Matthias
67f26fa1ac Merge pull request #10782 from freqtrade/feat/bt_reverse
Enable future positions to reverse their position
2024-11-01 09:29:35 +01:00
Matthias
dafabd5b99 Merge pull request #10860 from xzmeng/fix-test-download-data-timerange
tests: fix failure when local timezone is not utc
2024-11-01 09:19:39 +01:00
Matthias
878adfb0c0 tests: expand tests to cover several times and timezones 2024-11-01 08:57:03 +01:00
Matthias
3da9f6d0e3 Merge pull request #10857 from freqtrade/ci_mypy_cache
Improved caching
2024-11-01 08:44:13 +01:00
Matthias
f5fdd8a6ab Merge pull request #10866 from xzmeng/fix-strategy101-link
docs: fix strategy 101 link
2024-10-31 15:47:02 +01:00
Meng Xiangzhuo
47e4599fe2 docs: fix strategy 101 link 2024-10-31 22:20:45 +08:00
Matthias
81b432dc0e chore: bump dev-version to 2024.11-dev 2024-10-31 08:08:02 +01:00
Matthias
87c5668b14 Merge pull request #10863 from freqtrade/new_release
New release 2024.10
2024-10-31 08:04:45 +01:00
Matthias
84da133e95 chore: bump version to 2024.10 2024-10-31 07:14:12 +01:00
Matthias
80e254d46b Merge branch 'stable' into new_release 2024-10-31 07:13:50 +01:00
Matthias
7bce16f811 Merge pull request #10861 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-10-31 06:43:24 +01:00
xmatthias
0d430be1fa chore: update pre-commit hooks 2024-10-31 03:08:41 +00:00
Meng Xiangzhuo
3c76af9dab tests: fix windows 2024-10-31 04:18:37 +08:00
Meng Xiangzhuo
ad12a9eb99 tests: setup windows asyncio loop 2024-10-31 03:29:21 +08:00
Axel-CH
12424aef69 improve handle_similar_open_order description 2024-10-30 15:19:29 -04:00
Axel-CH
091fe6be88 improve handle_similar_open_order log message 2024-10-30 14:38:54 -04:00
Axel-CH
9432865bcd updated test_dca_order_adjust: if an exit order is open, a new one with same price, amount and side can't be created. 2024-10-30 14:27:33 -04:00
Meng Xiangzhuo
45bf046645 tests: add performance comparison 2024-10-31 01:51:54 +08:00
Meng Xiangzhuo
a8516ff0f5 tests: fix failure when local timezone is not utc 2024-10-31 01:37:24 +08:00
Meng Xiangzhuo
2ceda2987c feat: add binance 1s ohlcv fast download 2024-10-30 23:51:25 +08:00
Matthias
e99adc339e chore: re-use 3.12 cache for online tests 2024-10-30 15:55:50 +01:00
Meng Xiangzhuo
1aa863a92f tests: fix 2024-10-30 22:11:37 +08:00
Axel-CH
c0754587bf add handle_similar_open_order for execute_trade_exit 2024-10-29 23:30:36 -04:00
Meng Xiangzhuo
a417698fcd tests: fix test and improve coverage 2024-10-30 11:30:12 +08:00
Axel-CH
7ecf1b18c1 consider price in handle_similar_open_order 2024-10-29 22:05:42 -04:00
Axel-CH
9b8e485f00 fix handle_similar_open_order operator 2024-10-29 21:20:44 -04:00
Meng Xiangzhuo
e49b5b03db feat: stop on 404 to prevent missing data 2024-10-30 07:59:06 +08:00
Meng Xiangzhuo
b5f503dbbb tests: binance compare data.binance.vision to rest API 2024-10-30 07:30:03 +08:00
Meng Xiangzhuo
04d3633545 feat: implement fetch data from data.binance.vision 2024-10-30 07:29:52 +08:00
Meng Xiangzhuo
4e585c5c34 feat: implement Binance.get_historic_ohlcv detail 2024-10-30 07:29:38 +08:00
Meng Xiangzhuo
867aae868d refactor: move is_new_pair logic to Binance.get_historic_ohlcv 2024-10-30 07:29:19 +08:00
Matthias
1f237db2b5 Merge pull request #10856 from freqtrade/fix/bt_parallel
Fix backtest parallelism with timeframe-detail
2024-10-29 20:27:14 +01:00
Matthias
04e8c3ceea chore: try improve caching 2024-10-29 19:31:08 +01:00
Matthias
592848ad03 test: re-add excluded assert 2024-10-29 19:27:03 +01:00
Matthias
22318eb80e chore: fix bad usage of variables 2024-10-29 18:14:53 +01:00
Matthias
c03f8afca1 docs: document new behavior 2024-10-29 07:15:47 +01:00
Matthias
88f8e0b8b1 test: improve test for long/short switch 2024-10-29 07:15:47 +01:00
Matthias
8f6b831512 tests: adjust test_locked_pairs for new auto-lock 2024-10-29 07:15:47 +01:00
Matthias
85a2c12768 feat: Lock pairs in direction of the trade only 2024-10-29 07:15:47 +01:00
Matthias
1b8fd63853 tests: BT Detail tests should cover position switch 2024-10-29 07:15:47 +01:00
Matthias
ae325ff124 tests: fix test based on changed behavior 2024-10-29 07:15:47 +01:00
Matthias
1698d96883 feat: Allow Backtesting to reverse position 2024-10-29 07:15:47 +01:00
Matthias
e35f5c9fde tests: update test to account for newly added prop 2024-10-29 07:13:36 +01:00
Matthias
26a59e2cc5 fix: Don't allow backtesting to exceed max_open_trades in odd edge-cases
closes #10853
2024-10-29 07:13:02 +01:00
Matthias
56df7ad9fc chore: remove unnecessary commented log statement 2024-10-29 06:57:52 +01:00
Matthias
52ae7c3615 Merge pull request #10854 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-10-29 06:39:42 +01:00
xmatthias
c9e56ab04b chore: update pre-commit hooks 2024-10-29 03:08:45 +00:00
gaardiolor
cfa527e9af added tests for hyperliquid 2024-10-28 20:34:24 +01:00
Matthias
6cb17caf91 tests: Add test showing behavior from #10853 2024-10-28 20:28:26 +01:00
gaardiolor
67a0040732 added hyperliquid to conftest 2024-10-28 19:32:43 +01:00
gaardiolor
3913b450b6 check for tickers_have_bid_ask 2024-10-28 19:30:59 +01:00
Matthias
13d61e15f4 Merge pull request #10846 from freqtrade/dependabot/pip/develop/fastapi-0.115.4
chore(deps): bump fastapi from 0.115.2 to 0.115.4
2024-10-28 07:25:53 +01:00
Matthias
7d46236900 Merge pull request #10849 from freqtrade/dependabot/pip/develop/ruff-0.7.1
chore(deps-dev): bump ruff from 0.7.0 to 0.7.1
2024-10-28 07:15:44 +01:00
Matthias
a7e54967c3 Merge pull request #10847 from freqtrade/dependabot/pip/develop/rich-13.9.3
chore(deps): bump rich from 13.9.2 to 13.9.3
2024-10-28 06:41:13 +01:00
Matthias
a440e4ef79 Merge pull request #10843 from freqtrade/dependabot/pip/develop/ccxt-4.4.24
chore(deps): bump ccxt from 4.4.20 to 4.4.24
2024-10-28 06:39:15 +01:00
dependabot[bot]
b5a52129fb chore(deps-dev): bump ruff from 0.7.0 to 0.7.1
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.7.0 to 0.7.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.7.0...0.7.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 05:39:02 +00:00
Matthias
8e72e0ec07 Merge pull request #10842 from freqtrade/dependabot/pip/develop/orjson-3.10.10
chore(deps): bump orjson from 3.10.9 to 3.10.10
2024-10-28 06:38:08 +01:00
Matthias
8204ecc131 Merge pull request #10844 from freqtrade/dependabot/pip/develop/mypy-1.13.0
chore(deps-dev): bump mypy from 1.12.1 to 1.13.0
2024-10-28 06:37:28 +01:00
dependabot[bot]
beaf5215b7 chore(deps): bump rich from 13.9.2 to 13.9.3
Bumps [rich](https://github.com/Textualize/rich) from 13.9.2 to 13.9.3.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.9.2...v13.9.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 03:33:21 +00:00
dependabot[bot]
b3fa997bea chore(deps): bump fastapi from 0.115.2 to 0.115.4
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.2 to 0.115.4.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.115.2...0.115.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 03:32:56 +00:00
dependabot[bot]
eab5bfb475 chore(deps-dev): bump mypy from 1.12.1 to 1.13.0
Bumps [mypy](https://github.com/python/mypy) from 1.12.1 to 1.13.0.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.12.1...v1.13.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 03:32:38 +00:00
dependabot[bot]
9f5d4dd67f chore(deps): bump ccxt from 4.4.20 to 4.4.24
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.20 to 4.4.24.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.20...4.4.24)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 03:32:33 +00:00
dependabot[bot]
fc757f6cf7 chore(deps): bump orjson from 3.10.9 to 3.10.10
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.9 to 3.10.10.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.10.9...3.10.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-28 03:32:23 +00:00
gaardiolor
fd619de1d3 typo 2024-10-27 22:00:52 +01:00
Matthias
4c0341b232 Merge pull request #10827 from freqtrade/fix/freqai-zeros
fix: guarantee crash resiliency, as long as users reload bot gracefully
2024-10-27 21:51:07 +01:00
Matthias
a3bcc9d91e chore: schema.json updated 2024-10-27 21:28:36 +01:00
Robert Caulk
d215e3ca68 chore: add documentation and add wait_for_training to config schema 2024-10-27 19:20:19 +01:00
gaardiolor
493fa8541b fixes related to ruff and mypy 2024-10-27 17:06:56 +01:00
Matthias
930b5e07f8 tests: adapt tests for improved createMarketBuyOrderRequiresPrice validation 2024-10-27 13:56:46 +01:00
Matthias
5174717ca9 fix: ensure createMarketBuyOrderRequiresPrice is only applied to buys
closes #10833
2024-10-27 13:56:38 +01:00
gaardiolor
a7681fc712 revert ccxt version bump 2024-10-27 12:27:54 +01:00
gaardiolor
7d1976ad05 fix ohlcv_candle_limit funding_rate candles
Co-authored-by: Matthias <xmatthias@outlook.com>
2024-10-27 12:09:20 +01:00
Matthias
d317f33f4e chore: improve potentially erroneous comparison 2024-10-27 09:53:51 +01:00
Matthias
9e53b0742c docs: update documentation code to align with comment
closes #10838
2024-10-27 07:57:52 +01:00
gaardiolor
4c78b8c6d1 updated dry_run_liquidation_price to match new signature
fixed comment
2024-10-26 14:13:57 +02:00
gaardiolor
b88db55db3 Initial implementation of hyperliquid.
- Spot
- Swap (long, short, leverage, stoploss_on_exchange)
- dry_run_liquidation_price()
2024-10-25 17:47:53 +02:00
Matthias
b8f8d1d4b1 Merge pull request #10831 from xzmeng/fix-log
feat: auto-create logs dir if it's absent
2024-10-25 07:38:53 +02:00
Matthias
c4cbf6de3b tests: reset permissions on tmp-path
to facilitate cleanup
2024-10-25 07:22:11 +02:00
Matthias
e7b0e3293d feat: Exit with exception, not with exit1
this aligns to how other parts of the code work - leaving "exit" to the outermost caller.
2024-10-25 06:34:46 +02:00
Meng Xiangzhuo
87c8e85068 feat: add user friendly message on permission error 2024-10-25 00:01:41 +08:00
Matthias
c9ae5e1e9f Merge pull request #10834 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-10-24 09:29:03 +02:00
xmatthias
3d9514d266 chore: update pre-commit hooks 2024-10-24 06:07:00 +02:00
Matthias
3d9cbf52b9 chore: improve import sorting 2024-10-24 06:06:31 +02:00
Matthias
5b4043db85 chore: use Class for parse_timerange 2024-10-24 06:06:31 +02:00
Matthias
661d36614f Merge pull request #10824 from freqtrade/dependabot/pip/develop/torch-2.5.0
chore(deps): bump torch from 2.2.2 to 2.5.0
2024-10-23 18:06:09 +02:00
Matthias
11cef55c03 test: update mock to new pairlist location 2024-10-23 17:59:34 +02:00
Matthias
667d08d003 refactor: extract pairlist_api from background_tasks file 2024-10-23 17:57:36 +02:00
Meng Xiangzhuo
ba780276a2 feat: auto-create logs dir if it's absent 2024-10-23 00:22:23 +08:00
Matthias
46db0bc08c feat: rename endpoint to be better aligned 2024-10-22 06:40:01 +02:00
Matthias
0de3c6945b test: add test for api/hyperopt-loss 2024-10-22 06:39:55 +02:00
Matthias
0bf30aaa6b feat: add hyperopt-loss api endpoint 2024-10-22 06:39:43 +02:00
Matthias
faac205464 tests: add test for list-hyperoptloss 2024-10-22 06:39:30 +02:00
Matthias
1d5d7048d6 chore: improve test imports 2024-10-22 06:38:20 +02:00
Matthias
033643c4ca docs: add documentation for list-hyperoptloss 2024-10-22 06:38:20 +02:00
Matthias
8b8b5cfac4 feat: add list-hyperoptloss subcommand 2024-10-22 06:38:20 +02:00
Matthias
9ad32fd846 fix: improved defaultHyperoptLoss alias
this gives the class it's proper name.
2024-10-22 06:38:20 +02:00
Matthias
d9766bfd7e Merge pull request #10829 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-10-22 06:35:18 +02:00
xmatthias
186f2a8392 chore: update pre-commit hooks 2024-10-22 03:08:05 +00:00
Matthias
c6a43b0d0c Merge pull request #10820 from freqtrade/dependabot/pip/develop/mypy-1.12.1
chore(deps-dev): bump mypy from 1.11.2 to 1.12.1
2024-10-21 11:46:41 +02:00
Robert Caulk
a1513b7c7c fix: allow user to break training 2024-10-21 11:40:46 +02:00
Robert Caulk
6571ef4e45 fix: guarantee crash resiliency, as long as users reload bot gracefully 2024-10-21 11:14:28 +02:00
Matthias
a3f8a4f45e Merge pull request #10817 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.36
chore(deps): bump sqlalchemy from 2.0.35 to 2.0.36
2024-10-21 10:46:07 +02:00
Matthias
336111fbd4 chore: update sqlalchemy pre-commit 2024-10-21 10:19:27 +02:00
Matthias
f100ad12e0 chore: fix whitespace error after merge 2024-10-21 10:18:01 +02:00
Matthias
7adc505a00 Merge branch 'develop' into dependabot/pip/develop/mypy-1.12.1 2024-10-21 10:17:19 +02:00
Matthias
d781ee0596 Merge pull request #10814 from freqtrade/dependabot/pip/develop/types-9987b1e203
chore(deps-dev): bump types-requests from 2.32.0.20240914 to 2.32.0.20241016 in the types group
2024-10-21 09:44:14 +02:00
Matthias
0ea9240226 Merge pull request #10822 from freqtrade/dependabot/pip/develop/ccxt-4.4.20
chore(deps): bump ccxt from 4.4.17 to 4.4.20
2024-10-21 09:24:59 +02:00
Matthias
dbbdb7cd7e Merge pull request #10818 from freqtrade/dependabot/pip/develop/psutil-6.1.0
chore(deps): bump psutil from 6.0.0 to 6.1.0
2024-10-21 08:56:25 +02:00
Matthias
2f98d2a781 Merge pull request #10825 from freqtrade/dependabot/pip/develop/orjson-3.10.9
chore(deps): bump orjson from 3.10.7 to 3.10.9
2024-10-21 08:32:40 +02:00
dependabot[bot]
d9ea89857c chore(deps): bump sqlalchemy from 2.0.35 to 2.0.36
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.35 to 2.0.36.
- [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>
2024-10-21 06:05:10 +00:00
dependabot[bot]
a29a697012 chore(deps): bump ccxt from 4.4.17 to 4.4.20
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.17 to 4.4.20.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.17...4.4.20)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 06:05:02 +00:00
Matthias
430706529a Merge pull request #10823 from freqtrade/dependabot/pip/develop/cryptography-43.0.3
chore(deps): bump cryptography from 42.0.8 to 43.0.3
2024-10-21 08:04:08 +02:00
Matthias
9b1999bc02 Merge pull request #10821 from freqtrade/dependabot/pip/develop/ruff-0.7.0
chore(deps-dev): bump ruff from 0.6.9 to 0.7.0
2024-10-21 07:53:50 +02:00
Matthias
196e82d3ab Merge pull request #10819 from freqtrade/dependabot/pip/develop/bottleneck-1.4.2
chore(deps): bump bottleneck from 1.4.1 to 1.4.2
2024-10-21 07:53:40 +02:00
dependabot[bot]
1761d0e65c chore(deps): bump psutil from 6.0.0 to 6.1.0
Bumps [psutil](https://github.com/giampaolo/psutil) from 6.0.0 to 6.1.0.
- [Changelog](https://github.com/giampaolo/psutil/blob/master/HISTORY.rst)
- [Commits](https://github.com/giampaolo/psutil/compare/release-6.0.0...release-6.1.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 05:33:28 +00:00
Matthias
9465723026 Merge pull request #10816 from freqtrade/dependabot/pip/develop/uvicorn-0.32.0
chore(deps): bump uvicorn from 0.31.1 to 0.32.0
2024-10-21 07:32:37 +02:00
Matthias
c9246bf946 Merge pull request #10815 from freqtrade/dependabot/pip/develop/mkdocs-d0ead33a76
chore(deps): bump mkdocs-material from 9.5.40 to 9.5.42 in the mkdocs group
2024-10-21 07:32:10 +02:00
Matthias
4f0380bb2c Merge pull request #10779 from froggleston/frog-strat101-docs-1
Improve strategy development documentation
2024-10-21 06:41:59 +02:00
Matthias
41a4c7c39f chore: improve type safety 2024-10-21 06:39:55 +02:00
Matthias
e3bdf89cab chore: bump pre-commit types-requests 2024-10-21 06:33:55 +02:00
dependabot[bot]
0843f09c86 chore(deps): bump orjson from 3.10.7 to 3.10.9
Bumps [orjson](https://github.com/ijl/orjson) from 3.10.7 to 3.10.9.
- [Release notes](https://github.com/ijl/orjson/releases)
- [Changelog](https://github.com/ijl/orjson/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ijl/orjson/compare/3.10.7...3.10.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 03:18:32 +00:00
dependabot[bot]
93afe00205 chore(deps): bump torch from 2.2.2 to 2.5.0
Bumps [torch](https://github.com/pytorch/pytorch) from 2.2.2 to 2.5.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.2.2...v2.5.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 03:18:20 +00:00
dependabot[bot]
0f978bbcc7 chore(deps): bump cryptography from 42.0.8 to 43.0.3
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.8 to 43.0.3.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.8...43.0.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 03:18:10 +00:00
dependabot[bot]
88c49a9f7c chore(deps-dev): bump ruff from 0.6.9 to 0.7.0
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.9 to 0.7.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.6.9...0.7.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 03:17:52 +00:00
dependabot[bot]
83f285c913 chore(deps-dev): bump mypy from 1.11.2 to 1.12.1
Bumps [mypy](https://github.com/python/mypy) from 1.11.2 to 1.12.1.
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](https://github.com/python/mypy/compare/v1.11.2...v1.12.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 03:17:35 +00:00
dependabot[bot]
24499c5ea9 chore(deps): bump bottleneck from 1.4.1 to 1.4.2
Bumps [bottleneck](https://github.com/pydata/bottleneck) from 1.4.1 to 1.4.2.
- [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.1...v1.4.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 03:17:23 +00:00
dependabot[bot]
d02b1f04e2 chore(deps): bump uvicorn from 0.31.1 to 0.32.0
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.31.1 to 0.32.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.31.1...0.32.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-21 03:16:42 +00:00
dependabot[bot]
c818003399 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.5.40 to 9.5.42
- [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.5.40...9.5.42)

---
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>
2024-10-21 03:16:38 +00:00
dependabot[bot]
306db6d026 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.20240914 to 2.32.0.20241016
- [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>
2024-10-21 03:15:50 +00:00
froggleston
b75ff4bdf5 Adjust docs based on review 2024-10-20 21:53:12 +01:00
Matthias
60439c7d8e chore: enhanced pyright configuration
this should get rid of most errors in recent pylance versions
by disabling them all.
2024-10-20 15:29:37 +02:00
Matthias
3518a4167c chore: minor typing fix 2024-10-20 15:24:45 +02:00
Matthias
51dd7fa58e chore: ensure empty leverage tiers files don't cause an exception 2024-10-20 15:22:50 +02:00
Matthias
0a5549ebc9 docs: add canonical_version 2024-10-20 12:35:26 +02:00
Matthias
607167ebe7 fix: improve resilience of ft_rest_client 2024-10-20 11:52:29 +02:00
Matthias
1183517c3a chore: remove non-needed type_checking import 2024-10-20 11:45:39 +02:00
Matthias
6d169784ed chore: remove mypy override for telegram module
it's no longer necessary.
2024-10-20 10:41:19 +02:00
Matthias
9b16cc6266 Merge pull request #10810 from xzmeng/delete-market-change
fix: delete market change file when deleting backtest result
2024-10-19 13:37:43 +02:00
Matthias
d56f46e1b1 Merge pull request #10805 from bearvar/ComplexHyperOptLoss
Add new hyperopt loss function
2024-10-19 13:32:46 +02:00
Matthias
6a5feacd38 tests: Skip binanceus websocket tests
binance.us volume is currently too low for this test to run reliably.
2024-10-19 13:32:27 +02:00
Matthias
0a91189e6a chore: remove unused kwargs 2024-10-19 13:10:40 +02:00
Matthias
e9d9ebf156 docs: Update documentation for MultiMetricHyperOptLoss 2024-10-19 13:05:59 +02:00
Matthias
1a85dc9b99 chore: Update to new code standard 2024-10-19 13:02:45 +02:00
Matthias
660af7ec70 chore: Fix test failure, sort imports 2024-10-19 13:02:27 +02:00
Matthias
102d44a7b8 chore: improve lbank comment message 2024-10-19 12:35:23 +02:00
Matthias
549b0f8ef4 feat: delete all files when deleting a backtest result 2024-10-19 12:33:42 +02:00
Matthias
c6fe8ae70c feat: add lbank candle limit parameters 2024-10-19 11:51:25 +02:00
Meng Xiangzhuo
9e1af0db63 delete market change when deleting backtest result 2024-10-19 10:55:24 +08:00
Matthias
43b6cb9bff docs: Update 101 docs 2024-10-18 18:21:27 +02:00
Matthias
9b7acf33c6 docs: rename file to strategy-101 2024-10-18 18:16:29 +02:00
Matthias
3914abda20 Merge pull request #10808 from freqtrade/update_macos_images
ci: update macos version to new images
2024-10-18 07:29:20 +02:00
Matthias
e47042d1cb Merge pull request #10773 from freqtrade/fix/freqai_m3
fix: Support mps device where available
2024-10-18 07:07:23 +02:00
Matthias
a40a2f96b5 chore: attempt to speed up CI
Coveralls is only needed by one matrix run ...
2024-10-18 06:26:36 +02:00
Matthias
efc689a937 chore: update macos version to new images 2024-10-17 20:40:13 +02:00
bearvar
78bf40eaa9 Edit EXPECTANCY_CONST to show it can be decimal. 2024-10-17 22:09:00 +05:00
bearvar
578604619a Edit PF_CONST to show it can be decimal. 2024-10-17 22:07:32 +05:00
bearvar
6eac798d91 Rename ComplexHyperOptLoss to MultiMetricHyperOptLoss. Add it to test_loss_functions_better_profits. 2024-10-17 21:54:25 +05:00
Alex
121bdbad84 Update and rename hyperopt_loss_complex.py to hyperopt_loss_multi_metric.py 2024-10-17 21:42:34 +05:00
Matthias
aaeaa02406 Merge pull request #10807 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-10-17 06:24:20 +02:00
xmatthias
5b2b2d1a5c chore: update pre-commit hooks 2024-10-17 03:06:56 +00:00
bearvar
9209d11084 Add new hyperopt loss function 2024-10-16 21:52:42 +05:00
froggleston
60f54f1bc9 Improve 101 docs 2024-10-15 12:37:55 +01:00
Robert Davey
8b1de5d9b5 Update docs/freqtrade-101.md
Co-authored-by: Matthias <xmatthias@outlook.com>
2024-10-15 11:54:26 +01:00
Matthias
b2095481b3 Merge pull request #10783 from xzmeng/remove-setuppy
Remove setup.py
2024-10-15 06:39:29 +02:00
froggleston
a8e8517364 Minor typo 2024-10-15 00:11:16 +01:00
Matthias
c9b31c62cd docs: improved wording for developer docs 2024-10-14 19:10:49 +02:00
froggleston
c72cf64c8a Americanize *sigh* 2024-10-14 17:36:43 +01:00
froggleston
8c2f841972 Update 101 and customisation docs 2024-10-14 17:33:55 +01:00
Meng Xiangzhuo
0c1c750005 Add and dependency groups 2024-10-14 19:51:04 +08:00
Axel-CH
5c9ec37609 abort execute_entry if similar_open_order found 2024-10-14 05:52:38 -04:00
Axel-CH
4dc20effb8 fix codespell 2024-10-14 05:40:21 -04:00
Axel-CH
084d951ffd mypy fix for handle_similar_open_order 2024-10-14 05:34:01 -04:00
Axel-CH
092fbe25b8 enhancement on cancel_open_orders_of_trade 2024-10-14 05:23:05 -04:00
Axel-CH
7d5d84763f add handling of simital open order 2024-10-14 05:12:03 -04:00
Matthias
33d98dfe8c Merge pull request #10791 from freqtrade/dependabot/pip/develop/ccxt-4.4.17
chore(deps): bump ccxt from 4.4.14 to 4.4.17
2024-10-14 08:55:13 +02:00
Matthias
256815e148 Merge pull request #10793 from freqtrade/dependabot/pip/develop/fastapi-0.115.2
chore(deps): bump fastapi from 0.115.0 to 0.115.2
2024-10-14 08:32:01 +02:00
dependabot[bot]
cdbfbb5504 chore(deps): bump ccxt from 4.4.14 to 4.4.17
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.14 to 4.4.17.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.14...4.4.17)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 06:13:50 +00:00
Matthias
753a88c409 Merge pull request #10797 from freqtrade/dependabot/pip/develop/aiohttp-3.10.10
chore(deps): bump aiohttp from 3.10.9 to 3.10.10
2024-10-14 08:13:00 +02:00
Matthias
eef6966a85 Merge pull request #10796 from freqtrade/dependabot/pip/develop/bottleneck-1.4.1
chore(deps): bump bottleneck from 1.4.0 to 1.4.1
2024-10-14 07:58:00 +02:00
Matthias
d1d6a30884 Merge pull request #10795 from freqtrade/dependabot/pip/develop/pre-commit-4.0.1
chore(deps-dev): bump pre-commit from 4.0.0 to 4.0.1
2024-10-14 07:39:14 +02:00
dependabot[bot]
3a190a1c37 chore(deps): bump fastapi from 0.115.0 to 0.115.2
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.115.0 to 0.115.2.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.115.0...0.115.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 05:15:21 +00:00
Matthias
ae70902921 Merge pull request #10792 from freqtrade/dependabot/pip/develop/time-machine-2.16.0
chore(deps-dev): bump time-machine from 2.15.0 to 2.16.0
2024-10-14 07:14:59 +02:00
Matthias
5418237919 Merge pull request #10790 from freqtrade/dependabot/pip/develop/uvicorn-0.31.1
chore(deps): bump uvicorn from 0.31.0 to 0.31.1
2024-10-14 07:14:31 +02:00
Matthias
42fcdb33a1 Merge pull request #10789 from freqtrade/dependabot/pip/develop/mkdocs-2fa875aea2
chore(deps): bump mkdocs-material from 9.5.39 to 9.5.40 in the mkdocs group
2024-10-14 07:12:14 +02:00
dependabot[bot]
2098e69fb4 chore(deps): bump aiohttp from 3.10.9 to 3.10.10
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.9 to 3.10.10.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.9...v3.10.10)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 03:48:48 +00:00
dependabot[bot]
2415275e90 chore(deps): bump bottleneck from 1.4.0 to 1.4.1
Bumps [bottleneck](https://github.com/pydata/bottleneck) from 1.4.0 to 1.4.1.
- [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.0...v1.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 03:48:29 +00:00
dependabot[bot]
83fcc92f75 chore(deps-dev): bump pre-commit from 4.0.0 to 4.0.1
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v4.0.0...v4.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 03:48:21 +00:00
dependabot[bot]
64a7ab6e2e chore(deps-dev): bump time-machine from 2.15.0 to 2.16.0
Bumps [time-machine](https://github.com/adamchainz/time-machine) from 2.15.0 to 2.16.0.
- [Changelog](https://github.com/adamchainz/time-machine/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/adamchainz/time-machine/compare/2.15.0...2.16.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 03:48:01 +00:00
dependabot[bot]
a772e1f9ca chore(deps): bump uvicorn from 0.31.0 to 0.31.1
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.31.0 to 0.31.1.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.31.0...0.31.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-14 03:47:30 +00:00
dependabot[bot]
7bbed1705c 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.5.39 to 9.5.40
- [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.5.39...9.5.40)

---
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>
2024-10-14 03:47:26 +00:00
Meng Xiangzhuo
4cd4660357 Remove setup.py 2024-10-13 23:22:10 +08:00
Matthias
d503724bda chore: improve backtest comment 2024-10-12 13:04:09 +02:00
Matthias
2756a1f1a0 chore: improve statement sequence for improved short circuiting 2024-10-12 11:44:29 +02:00
Matthias
883122a98b refactor: Simplify backtest code slightly
This should also slighly improve performance for detail backtests
as it removes one comparison
2024-10-12 11:34:13 +02:00
Matthias
bd7f0383d1 chore: improve clarity of argument name 2024-10-12 11:25:15 +02:00
Matthias
aa8cefc110 fix: minor missing statement in detail backtest fallback 2024-10-12 11:06:13 +02:00
Matthias
48740f5032 docs: add new document to index 2024-10-12 08:41:03 +02:00
froggleston
35b81a2f38 Initial work on strategy dev docs 2024-10-11 23:00:09 +01:00
Matthias
4b582b9d7e fix(bybit): Override fetchOrder to false for spot markets
closes #10777
2024-10-10 19:48:30 +02:00
Matthias
d72f45a94b Merge pull request #10776 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-10-10 06:28:32 +02:00
xmatthias
a71ed3ec5a chore: update pre-commit hooks 2024-10-10 03:06:38 +00:00
Axel-CH
95f709ae14 fix formating 2024-10-08 01:40:56 -04:00
Axel-CH
43b2ec1e3f replace existing entry order before placing new one in execute_entry 2024-10-08 01:31:47 -04:00
Matthias
92b2a6fa24 fix: Support mps device where available 2024-10-08 07:20:49 +02:00
Axel-CH
acb3941776 fix typo for list type 2024-10-08 00:57:06 -04:00
Axel CH
f8807cf659 Merge branch 'develop' into feature/proceed-exit-while-open-order 2024-10-08 00:51:30 -04:00
Matthias
ddeb64964d Merge pull request #10770 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-10-08 06:36:12 +02:00
xmatthias
b2d6c5b6a7 chore: update pre-commit hooks 2024-10-08 03:09:02 +00:00
Axel-CH
c01996d1d1 fix tests related to position adjustment 2024-10-07 15:31:26 -04:00
Matthias
271375d171 Merge pull request #10758 from stash86/recursive-str
add is_number check to make sure we skip non-number columns
2024-10-07 21:09:58 +02:00
Matthias
5693039f0d tests: Add test-column to ensure string columns won't regress 2024-10-07 20:33:12 +02:00
Matthias
52304b37a2 feat: Allow strategies to not define enter_long 2024-10-07 20:28:29 +02:00
Axel-CH
3d6e186b30 allow position ajustment if position open 2024-10-07 12:35:09 -04:00
Matthias
fe8eabda37 Merge pull request #10759 from freqtrade/dependabot/pip/develop/types-9d35b667ff
chore(deps-dev): bump types-python-dateutil from 2.9.0.20240906 to 2.9.0.20241003 in the types group
2024-10-07 08:27:26 +02:00
Matthias
a00032de53 Merge pull request #10768 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.10.3
chore(deps): bump pypa/gh-action-pypi-publish from 1.10.2 to 1.10.3
2024-10-07 08:01:39 +02:00
Matthias
b320358dc4 Merge pull request #10766 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.11.2
chore(deps): bump pymdown-extensions from 10.11.1 to 10.11.2
2024-10-07 07:50:40 +02:00
Matthias
f81ab8e4d4 Merge pull request #10765 from freqtrade/dependabot/pip/develop/rich-13.9.2
chore(deps): bump rich from 13.8.1 to 13.9.2
2024-10-07 07:24:49 +02:00
Matthias
9a537248a4 Merge pull request #10764 from freqtrade/dependabot/pip/develop/humanize-4.11.0
chore(deps): bump humanize from 4.10.0 to 4.11.0
2024-10-07 07:07:49 +02:00
Matthias
eeed65b354 chore: Bump pre-commit types-python-dateutil 2024-10-07 07:07:25 +02:00
Matthias
3c6711c590 Merge pull request #10763 from freqtrade/dependabot/pip/develop/aiohttp-3.10.9
chore(deps): bump aiohttp from 3.10.8 to 3.10.9
2024-10-07 06:53:44 +02:00
Matthias
90d8dfcf12 Merge pull request #10762 from freqtrade/dependabot/pip/develop/pre-commit-4.0.0
chore(deps-dev): bump pre-commit from 3.8.0 to 4.0.0
2024-10-07 06:53:18 +02:00
Matthias
03b76f3c8a Merge pull request #10761 from freqtrade/dependabot/pip/develop/ccxt-4.4.14
chore(deps): bump ccxt from 4.4.9 to 4.4.14
2024-10-07 06:53:04 +02:00
Matthias
b9caed4392 Merge pull request #10760 from freqtrade/dependabot/pip/develop/ruff-0.6.9
chore(deps-dev): bump ruff from 0.6.8 to 0.6.9
2024-10-07 06:52:56 +02:00
dependabot[bot]
6993a650b0 chore(deps): bump pypa/gh-action-pypi-publish from 1.10.2 to 1.10.3
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.10.2 to 1.10.3.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.10.2...v1.10.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:45:40 +00:00
dependabot[bot]
4000794af6 chore(deps): bump pymdown-extensions from 10.11.1 to 10.11.2
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.11.1 to 10.11.2.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.11.1...10.11.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:17:55 +00:00
dependabot[bot]
7c9e6779c6 chore(deps): bump rich from 13.8.1 to 13.9.2
Bumps [rich](https://github.com/Textualize/rich) from 13.8.1 to 13.9.2.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.8.1...v13.9.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:17:51 +00:00
dependabot[bot]
ec6d9ec7de chore(deps): bump humanize from 4.10.0 to 4.11.0
Bumps [humanize](https://github.com/python-humanize/humanize) from 4.10.0 to 4.11.0.
- [Release notes](https://github.com/python-humanize/humanize/releases)
- [Commits](https://github.com/python-humanize/humanize/compare/4.10.0...4.11.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:17:48 +00:00
dependabot[bot]
58fccadf08 chore(deps): bump aiohttp from 3.10.8 to 3.10.9
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.8 to 3.10.9.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.8...v3.10.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:17:45 +00:00
dependabot[bot]
34e7362132 chore(deps-dev): bump pre-commit from 3.8.0 to 4.0.0
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 3.8.0 to 4.0.0.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v3.8.0...v4.0.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:17:30 +00:00
dependabot[bot]
fca39a7809 chore(deps): bump ccxt from 4.4.9 to 4.4.14
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.9 to 4.4.14.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.9...4.4.14)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:17:24 +00:00
dependabot[bot]
278404f47c chore(deps-dev): bump ruff from 0.6.8 to 0.6.9
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.8 to 0.6.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.6.8...0.6.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:17:11 +00:00
dependabot[bot]
64612712a5 chore(deps-dev): bump types-python-dateutil in the types group
Bumps the types group with 1 update: [types-python-dateutil](https://github.com/python/typeshed).


Updates `types-python-dateutil` from 2.9.0.20240906 to 2.9.0.20241003
- [Commits](https://github.com/python/typeshed/commits)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-07 03:15:59 +00:00
Stefano Ariestasia
9ffd0ad982 add is_number check 2024-10-07 11:17:15 +09:00
Matthias
e703fec3af Merge pull request #10748 from freqtrade/maint/bump_ruff_minpython
Bump ruff target version to 3.9
2024-10-06 08:56:50 +02:00
Matthias
78e9eac64a chore: Fix remaining violations after merge 2024-10-06 08:28:55 +02:00
Matthias
2b1fc8725e Merge branch 'develop' into maint/bump_ruff_minpython 2024-10-06 08:28:09 +02:00
Matthias
b885c3dda3 Merge pull request #10746 from xzmeng/startup-time
Postpone imports on demand
2024-10-06 08:21:54 +02:00
Matthias
aa2c1501da chore: fix missed dependencies for deploy_ui 2024-10-05 13:20:43 +02:00
Matthias
ed5c929b23 chore: remove rapidjson from "default" imports 2024-10-05 13:17:35 +02:00
Matthias
672a23dbcd chore: revert changes to btanalysis - they have no impact 2024-10-05 13:09:30 +02:00
Matthias
24c09d0319 refactor: move ui deployment to it's own file 2024-10-05 13:06:19 +02:00
Matthias
092275a981 refactor: move config deployment to it's own file 2024-10-05 13:00:11 +02:00
Matthias
3fe97e1709 chore: Remove __futures__ import and corresponding ruff skips 2024-10-05 11:43:28 +02:00
Matthias
1ad4f0c9b5 chore: re-export from system module 2024-10-05 11:30:17 +02:00
Matthias
27a327402b chore: improve behavior by validating earlier
(and with exception handling)
2024-10-05 11:09:39 +02:00
Matthias
e2adfe9eab Merge pull request #10749 from xzmeng/fix-setuppy
Fix setup.py
2024-10-04 13:00:21 +02:00
Meng Xiangzhuo
67690c9e8e Fix setup.py 2024-10-04 18:11:36 +08:00
Matthias
4c3c2eaa3b chore: update ruff target version to 3.9 2024-10-04 07:11:06 +02:00
Matthias
cf6c41f9db chore: remove no longer required imports 2024-10-04 07:10:49 +02:00
Matthias
2e0a597ee4 chore: update tests to modern typing syntax 2024-10-04 07:09:51 +02:00
Matthias
628983d123 chore: update ft_client to modern typing syntax 2024-10-04 07:08:56 +02:00
Matthias
8ec5dd6def chore: update to modern typing syntax 2024-10-04 07:08:30 +02:00
Matthias
acc40c73f3 chore: update strategy to modern typing syntax 2024-10-04 07:07:32 +02:00
Matthias
1d4658e978 chore: update rpc to modern typing syntax 2024-10-04 07:06:27 +02:00
Matthias
b8bbf3b69e chore: update resolvers to modern typing syntax 2024-10-04 07:02:57 +02:00
Matthias
d8e41fa8b1 chore: update plugins to modern typing syntax 2024-10-04 07:02:20 +02:00
Matthias
e9a6ba03f9 chore: update persistence to modern typing syntax 2024-10-04 06:55:05 +02:00
Matthias
2e69e38adb chore: update optimize to modern typing syntax 2024-10-04 06:53:50 +02:00
Matthias
c5ed876c09 chore: update types config to modern typing syntax 2024-10-04 06:50:53 +02:00
Matthias
96f737f13e chore: update freqai to modern typing syntax 2024-10-04 06:50:34 +02:00
Matthias
f369151e8e chore: update exchange config to modern typing syntax 2024-10-04 06:46:45 +02:00
Matthias
d1b9990e4e chore: update edge config to modern typing syntax 2024-10-04 06:42:29 +02:00
Matthias
ed7eb01d1b chore: update data to modern typing syntax 2024-10-04 06:42:04 +02:00
Matthias
6601127693 chore: update config to modern typing syntax 2024-10-04 06:39:58 +02:00
Matthias
43236c1cc4 chore: update config to modern typing syntax 2024-10-04 06:39:20 +02:00
Matthias
65bbf7b2a2 chore: update commands to modern typing syntax 2024-10-04 06:38:06 +02:00
Matthias
74b8dca63e chore: update to modern typing syntax 2024-10-04 06:36:00 +02:00
Matthias
7db0e3ac3f chore: remove obsolete version check 2024-10-04 06:31:19 +02:00
Meng Xiangzhuo
f889c24497 Fix test 2024-10-04 11:56:38 +08:00
Meng Xiangzhuo
852a1900b4 Fix test 2024-10-04 11:52:07 +08:00
Meng Xiangzhuo
30a273c946 Revert lazy import requests 2024-10-04 11:36:51 +08:00
Meng Xiangzhuo
903614140a Eliminate unnecessary lazy import 2024-10-04 11:22:47 +08:00
Meng Xiangzhuo
0fe772efa8 Eliminate unnecessary TYPE_CHECKING 2024-10-04 11:10:39 +08:00
Meng Xiangzhuo
e6dedee56f Split freqtrade.system into a package 2024-10-04 11:05:49 +08:00
Meng Xiangzhuo
66605e91aa Merge branch 'develop' into startup-time 2024-10-04 08:38:55 +08:00
Matthias
137db2c86c Merge pull request #10745 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-10-03 06:45:16 +02:00
Meng Xiangzhuo
9c28a6ff4a Add test 2024-10-03 12:07:03 +08:00
Meng Xiangzhuo
48a8d7de1c Postpone imports on demand 2024-10-03 11:33:52 +08:00
xmatthias
5fa96c944d chore: update pre-commit hooks 2024-10-03 03:07:14 +00:00
Matthias
fe270bd9ae Merge pull request #10741 from freqtrade/feat/improve_liquidation_logic
Improved liquidation price logic
2024-10-02 19:49:03 +02:00
Matthias
a0912ad6b4 tests: update ccxt compat test 2024-10-02 18:10:28 +02:00
Matthias
9ba0c54295 chore: cleanup test code 2024-10-02 07:05:00 +02:00
Matthias
86721b88ce chore: improve import logic 2024-10-02 07:05:00 +02:00
Matthias
9bdee1b82d feat: improve typing of fetch_funding_rates 2024-10-02 07:05:00 +02:00
Matthias
abe01f8f48 feat: implement liquidation price update on all order fills 2024-10-02 07:05:00 +02:00
Matthias
c5525d356e feat: support backtesting with cross configuration 2024-10-02 07:05:00 +02:00
Matthias
36ae564d26 feat: update liquidation price on startup 2024-10-02 07:05:00 +02:00
Matthias
cba6bd6ef5 fix: use t.leverage, not trade.leverage for cross liq calculations 2024-10-02 07:05:00 +02:00
Matthias
4d40ffedff fix: allow setting 0 as liquidation price 2024-10-02 07:05:00 +02:00
Matthias
319e8d746f feat: use proper trade objects for liquidation calc 2024-10-02 07:05:00 +02:00
Matthias
fe7a88362b feat: add method to fetch binance funding fees
which is necessary to calculate accurate liquidation prices
2024-10-02 07:05:00 +02:00
Matthias
8bf314202f chore: simplify call to liquidation price for cross futures 2024-10-02 07:05:00 +02:00
Matthias
ac8bc7dec2 fix: use "other trades" logic for binance cross calc 2024-10-02 07:05:00 +02:00
Matthias
0d5919392e test: update binance test 2024-10-02 07:05:00 +02:00
Matthias
1473abf19a refactor: rename dry-liquidation parameter
passing all open trades will be more flexible for the future.
2024-10-02 07:05:00 +02:00
Matthias
45e75f3d09 chore: improve arguments to get_liquidation_price 2024-10-02 07:05:00 +02:00
Matthias
5358f2fb9e feat: allow liquidation-price update without trades for cross mode 2024-10-02 07:05:00 +02:00
Matthias
c316d27444 refactor: move exception handler into helper function 2024-10-02 07:05:00 +02:00
Matthias
0c0bb29f83 chore: add other_trades param to liquidation_price calls 2024-10-02 07:05:00 +02:00
Matthias
82bc3270e7 test: Update binance test for new approach 2024-10-02 07:05:00 +02:00
Matthias
ec79b0b17b feat: update dry-run calculation params to be more generic 2024-10-02 07:05:00 +02:00
Matthias
0560567058 test: add test for liquidation_price update function 2024-10-02 07:05:00 +02:00
Matthias
3de740b35f feat: create shared method for liquidation price update 2024-10-02 07:05:00 +02:00
Matthias
b69f598e51 refactor: move more code into cross conditional 2024-10-02 07:05:00 +02:00
Matthias
1ad177fca7 feat: add liquidation_price update support for cross mode 2024-10-02 07:05:00 +02:00
Matthias
c3ad3ff348 Merge pull request #10737 from xzmeng/fix-doc
Correct admonition indent
2024-10-02 07:03:23 +02:00
Matthias
ad578bb171 Merge pull request #10739 from freqtrade/dependabot/docker/python-3.12.7-slim-bookworm
chore(deps): bump python from 3.12.6-slim-bookworm to 3.12.7-slim-bookworm
2024-10-02 06:23:44 +02:00
dependabot[bot]
9538c49ac8 chore(deps): bump python
Bumps python from 3.12.6-slim-bookworm to 3.12.7-slim-bookworm.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-10-02 03:28:37 +00:00
Meng Xiangzhuo
84d43db500 Correct admonition indent 2024-10-02 05:12:24 +08:00
Matthias
584bbd93e0 tests: fix test to expected call count 2024-10-01 20:55:58 +02:00
Matthias
7e2d55743e Merge branch 'develop' into pr/Axel-CH/10062 2024-10-01 20:51:39 +02:00
Matthias
bf2d0468f9 tests: fix test-data setup for btc test trades 2024-10-01 20:48:43 +02:00
Matthias
d2bc47cfe8 tests: fix test-data setup for usdt trades 2024-10-01 20:31:02 +02:00
Matthias
a194ef0b78 tests: revert accidental removal of leverage test case 2024-10-01 20:04:54 +02:00
Matthias
476960b5b7 tests: have apply different fix to exit_positions test 2024-10-01 20:01:49 +02:00
Matthias
d8c6c766b9 Merge pull request #10735 from freqtrade/maint/3.9_removal
Remove support for python 3.9
2024-10-01 19:46:31 +02:00
Matthias
98f4bf2f65 chore: remove Ta-lib binaries for 3.9 2024-10-01 18:18:46 +02:00
Matthias
f9c8b7f4ab chore: fix ps syntax error 2024-10-01 08:16:13 +02:00
Matthias
a92532c0c9 chore: Remove now pointless helper function 2024-10-01 07:11:10 +02:00
Matthias
bede81632d chore: remove conditional requirements 2024-10-01 07:04:25 +02:00
Matthias
e975062e0e chore: don't run CI on 3.9 2024-10-01 07:03:48 +02:00
Matthias
0cd051cee2 chore: update conditional check for python version 2024-10-01 06:44:49 +02:00
Matthias
682980be49 chore: drop 3.9 support from setup.ps1 2024-10-01 06:44:27 +02:00
Matthias
878043ea3d chore: drop 3.9 support from setup.sh 2024-10-01 06:44:19 +02:00
Matthias
757ae65189 chore: remove pointless conditional (we can't hit this point) 2024-10-01 06:41:58 +02:00
Matthias
cd63abba5b chore: update documentation to mention 3.10+ compat 2024-10-01 06:41:05 +02:00
Matthias
a0f00d0c83 Merge pull request #10734 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-10-01 06:28:22 +02:00
xmatthias
915591c6d6 chore: update pre-commit hooks 2024-10-01 03:13:31 +00:00
Matthias
157cb7d982 Merge pull request #10725 from freqtrade/new_release
New release 2024.9
2024-09-30 11:25:43 +02:00
Matthias
cdcb21b841 Merge pull request #10730 from freqtrade/dependabot/pip/develop/aiohttp-3.10.8
chore(deps): bump aiohttp from 3.10.5 to 3.10.8
2024-09-30 09:26:31 +02:00
Matthias
2bf79a5298 Merge pull request #10729 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.11.1
chore(deps): bump pymdown-extensions from 10.10.1 to 10.11.1
2024-09-30 09:05:30 +02:00
Matthias
ebefefa0eb Merge pull request #10733 from freqtrade/dependabot/pip/develop/ruff-0.6.8
chore(deps-dev): bump ruff from 0.6.7 to 0.6.8
2024-09-30 08:49:46 +02:00
dependabot[bot]
a740883c8d chore(deps): bump aiohttp from 3.10.5 to 3.10.8
Bumps [aiohttp](https://github.com/aio-libs/aiohttp) from 3.10.5 to 3.10.8.
- [Release notes](https://github.com/aio-libs/aiohttp/releases)
- [Changelog](https://github.com/aio-libs/aiohttp/blob/master/CHANGES.rst)
- [Commits](https://github.com/aio-libs/aiohttp/compare/v3.10.5...v3.10.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 06:21:31 +00:00
Matthias
da760075d2 Merge pull request #10732 from freqtrade/dependabot/pip/develop/ccxt-4.4.9
chore(deps): bump ccxt from 4.4.6 to 4.4.9
2024-09-30 08:20:09 +02:00
Matthias
b8833772a3 Merge pull request #10731 from freqtrade/dependabot/pip/develop/uvicorn-0.31.0
chore(deps): bump uvicorn from 0.30.6 to 0.31.0
2024-09-30 08:06:09 +02:00
Matthias
131c6e761e Merge pull request #10727 from freqtrade/dependabot/pip/develop/tensorboard-2.18.0
chore(deps): bump tensorboard from 2.17.1 to 2.18.0
2024-09-30 07:30:54 +02:00
dependabot[bot]
1fb0f2f048 chore(deps): bump pymdown-extensions from 10.10.1 to 10.11.1
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.10.1 to 10.11.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.10.1...10.11.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 05:25:20 +00:00
Matthias
2a25ac9d1f Merge pull request #10726 from freqtrade/dependabot/pip/develop/mkdocs-5d708111c2
chore(deps): bump mkdocs-material from 9.5.36 to 9.5.39 in the mkdocs group
2024-09-30 07:24:31 +02:00
Matthias
773bf765ad feat(hyperliquid): Remove precision override
part of #10377
2024-09-30 07:06:16 +02:00
Matthias
b0b866eec5 Merge pull request #10723 from freqtrade/remove/deprecated_protection-setting
Remove long deprecated protections from config setting
2024-09-30 06:41:22 +02:00
dependabot[bot]
8cc928c841 chore(deps-dev): bump ruff from 0.6.7 to 0.6.8
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.7 to 0.6.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.6.7...0.6.8)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 03:42:21 +00:00
dependabot[bot]
4180420765 chore(deps): bump ccxt from 4.4.6 to 4.4.9
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.6 to 4.4.9.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.6...4.4.9)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 03:42:05 +00:00
dependabot[bot]
30945dc240 chore(deps): bump uvicorn from 0.30.6 to 0.31.0
Bumps [uvicorn](https://github.com/encode/uvicorn) from 0.30.6 to 0.31.0.
- [Release notes](https://github.com/encode/uvicorn/releases)
- [Changelog](https://github.com/encode/uvicorn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/encode/uvicorn/compare/0.30.6...0.31.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 03:41:58 +00:00
dependabot[bot]
4ef87e3419 chore(deps): bump tensorboard from 2.17.1 to 2.18.0
Bumps [tensorboard](https://github.com/tensorflow/tensorboard) from 2.17.1 to 2.18.0.
- [Release notes](https://github.com/tensorflow/tensorboard/releases)
- [Changelog](https://github.com/tensorflow/tensorboard/blob/master/RELEASE.md)
- [Commits](https://github.com/tensorflow/tensorboard/compare/2.17.1...2.18.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-30 03:41:22 +00:00
dependabot[bot]
4785194527 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.5.36 to 9.5.39
- [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.5.36...9.5.39)

---
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>
2024-09-30 03:41:18 +00:00
Matthias
8a742ce3ec chore: bump version to 2024.10-dev 2024-09-29 20:01:11 +02:00
Matthias
27af9455f5 chore: bump version to 2024.9 2024-09-29 19:53:20 +02:00
Matthias
98ff572afe Merge branch 'stable' into new_release 2024-09-29 19:53:03 +02:00
Matthias
f77fedbea4 chore: move available_protections constant to test file (it's only used there) 2024-09-29 15:08:57 +02:00
Matthias
39c582dac2 tests: move protection-validation test to protection test file 2024-09-29 15:06:43 +02:00
Matthias
8736728478 chore: remove unused import 2024-09-29 15:06:22 +02:00
Matthias
23cf9f47b0 chore: move protection validation to protectionManager 2024-09-29 15:06:15 +02:00
Matthias
b8feefc541 tests: update protection tests 2024-09-29 09:44:07 +02:00
Matthias
e3a6c71087 chore: Remove protections from config logic 2024-09-29 09:41:02 +02:00
Matthias
d6cc88fa99 chore: remove schema syntax highlighting for protections 2024-09-29 09:27:40 +02:00
Matthias
428d451e55 chore: remove long-deprecated setting 2024-09-29 09:07:43 +02:00
Matthias
aa67abad94 docs: simplify protections intro
this had way too many consecutive "boxes"
2024-09-29 08:38:07 +02:00
Matthias
415b8354f4 fix: if coingecko when no pair returned
fails to return valid pairs, the pairlist should be empty
2024-09-28 19:45:01 +02:00
Matthias
51c596a21f chore: add test for "no pair from coingecko" case
this should return an empty list
2024-09-28 19:44:38 +02:00
Matthias
5816a594fd Merge pull request #10671 from jakubikan/category-for-market-cap-pairlist
Category for market cap pairlist
2024-09-28 11:51:42 +02:00
Matthias
f4d76aa360 chore: improved wording 2024-09-28 10:18:59 +02:00
Matthias
56835f5f09 chore: manually check for symlink 2024-09-28 10:17:52 +02:00
Matthias
255ad7cac5 tests: test invalid category in list 2024-09-28 10:14:31 +02:00
Matthias
8c097a81ea tests: enhance test for marketcappairlist 2024-09-28 10:10:07 +02:00
Matthias
3dc92b42fe fix: Check if sub-directories are actually directories and fail otherwise.
This will explicitly fail if a file (or an invalid symlink) is present.
Freqtrade requires these files to be valid files - so failing here is correct behavior.

closes #10720
2024-09-28 09:54:49 +02:00
Jakub W.
1ed5a37280 Update freqtrade/plugins/pairlist/IPairList.py
Co-authored-by: Matthias <xmatthias@outlook.com>
2024-09-26 23:38:17 +02:00
Matthias
cb36f2844e chore: Improve "wrong category" error. 2024-09-26 20:21:27 +02:00
Matthias
7b93b55b78 docs: rephrase categories docs and add performance warning 2024-09-26 20:07:41 +02:00
Matthias
6837196e44 fix: treat marketcap as optional parameter 2024-09-26 19:59:23 +02:00
Matthias
31680f3b59 chore: Improve UI wording 2024-09-26 19:31:43 +02:00
Matthias
91d9c9b4d5 Merge pull request #10711 from freqtrade/fix/pytorch-scaling
fix: Update BasePyTorchRegressor.py
2024-09-26 18:53:14 +02:00
Robert Caulk
d18d8cf0ea freqai_info -> ft_params 2024-09-26 17:54:14 +02:00
Robert Caulk
123909cdac fix: Update BasePyTorchRegressor.py 2024-09-26 16:31:43 +02:00
Matthias
f0eaccc6ac Merge pull request #10709 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-09-26 06:20:14 +02:00
xmatthias
1d66ef2f2d chore: update pre-commit hooks 2024-09-26 03:17:36 +00:00
Jakub Werner (jakubikan)
8aefae3aff format 2024-09-25 21:22:40 +02:00
Jakub Werner (jakubikan)
514558796b double quotes 2024-09-25 21:21:56 +02:00
Jakub Werner (jakubikan)
b00ca54707 adding docu 2024-09-25 21:20:35 +02:00
Jakub Werner (jakubikan)
0dbe507b26 making list of categories available 2024-09-25 21:11:52 +02:00
Matthias
4b70bea21f chore: reset params for emulated call 2024-09-25 19:11:12 +02:00
Matthias
096a051b99 test: update test 2024-09-25 19:03:03 +02:00
Matthias
a3ca1ff1e9 fix: send acknoledged to bybit fetch_order calls 2024-09-25 19:02:32 +02:00
Matthias
28eabfe477 tests: update test for retryable okx behavior 2024-09-25 06:20:49 +02:00
Matthias
0a68b0515c chore: reduce retry count for stop orders 2024-09-24 20:20:33 +02:00
Matthias
566c0c8f72 refactor: split okx fetch stop fallback 2024-09-24 20:20:33 +02:00
Axel-CH
69f0ea5199 remove unused import 2024-09-24 13:53:16 -04:00
Axel-CH
3fea958faf test cleanup 2024-09-24 13:47:28 -04:00
Matthias
333f2cb472 fix: Improve error handling for OKX stop orders
closes #10704
2024-09-24 19:38:36 +02:00
Matthias
3d1acc65af tests: add test for #10704 2024-09-24 19:38:11 +02:00
Axel-CH
5efc2a09e5 restore not having open order check before trying to retreive an exchange order 2024-09-24 13:00:59 -04:00
Axel-CH
9dd887f2ff update exit_positions, add trade.has_open_position check before trade handling, update comment 2024-09-24 12:39:16 -04:00
Axel-CH
bfaf9e690d add trade.has_open_position check to stoploss on exchange handling, remove deprecated comment 2024-09-24 12:26:36 -04:00
Axel-CH
beebc1743a simplify has_open_position property, restore process_open_trades_positions comment 2024-09-24 12:17:11 -04:00
Axel-CH
5ba592ff47 Merge remote-tracking branch 'origin/develop' into feature/proceed-exit-while-open-order 2024-09-24 11:58:15 -04:00
Axel-CH
bb4db022f0 remove unused properties 2024-09-24 11:11:42 -04:00
Matthias
5907de90c1 Merge pull request #10687 from freqtrade/refactor/trade_init_0
Initialize Trade objects with amount=0
2024-09-24 06:30:24 +02:00
Matthias
25d8a9d1f8 Merge pull request #10701 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-09-24 06:30:09 +02:00
xmatthias
b44e8199b5 chore: update pre-commit hooks 2024-09-24 03:06:51 +00:00
Matthias
91449d0c8b Merge pull request #10699 from freqtrade/dependabot/pip/develop/ccxt-4.4.6
chore(deps): bump ccxt from 4.4.5 to 4.4.6
2024-09-23 13:05:49 +02:00
dependabot[bot]
b228f177f3 chore(deps): bump ccxt from 4.4.5 to 4.4.6
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.4.5 to 4.4.6.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.4.5...4.4.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 09:57:20 +00:00
Matthias
9a40a2d4f2 Merge pull request #10695 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.35
chore(deps): bump sqlalchemy from 2.0.34 to 2.0.35
2024-09-23 11:56:28 +02:00
Matthias
cdc3dabba1 Merge pull request #10693 from freqtrade/dependabot/pip/develop/fastapi-0.115.0
chore(deps): bump fastapi from 0.114.2 to 0.115.0
2024-09-23 11:30:26 +02:00
Matthias
40ba2cbe79 Merge pull request #10690 from freqtrade/dependabot/pip/develop/pymdown-extensions-10.10.1
chore(deps): bump pymdown-extensions from 10.9 to 10.10.1
2024-09-23 11:03:54 +02:00
Matthias
7ede8af193 Merge branch 'develop' into dependabot/pip/develop/sqlalchemy-2.0.35 2024-09-23 10:52:07 +02:00
Matthias
a835b8cc8f Merge pull request #10698 from freqtrade/dependabot/pip/develop/filelock-3.16.1
chore(deps): bump filelock from 3.16.0 to 3.16.1
2024-09-23 09:44:11 +02:00
Matthias
e54b47b857 Merge pull request #10697 from freqtrade/dependabot/pip/develop/python-telegram-bot-21.6
chore(deps): bump python-telegram-bot from 21.5 to 21.6
2024-09-23 09:28:28 +02:00
Matthias
c93c25829b Merge pull request #10696 from freqtrade/dependabot/pip/develop/ruff-0.6.7
chore(deps-dev): bump ruff from 0.6.5 to 0.6.7
2024-09-23 09:24:19 +02:00
dependabot[bot]
1cdf8b29a5 chore(deps): bump fastapi from 0.114.2 to 0.115.0
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.114.2 to 0.115.0.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.114.2...0.115.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 06:38:27 +00:00
Matthias
b6eacf0771 Merge pull request #10694 from freqtrade/dependabot/pip/develop/pandas-2.2.3
chore(deps): bump pandas from 2.2.2 to 2.2.3
2024-09-23 08:37:49 +02:00
Matthias
4ea23c1bd8 Merge pull request #10692 from freqtrade/dependabot/pip/develop/websockets-13.1
chore(deps): bump websockets from 13.0.1 to 13.1
2024-09-23 08:37:01 +02:00
Matthias
70398820c0 Merge pull request #10691 from freqtrade/dependabot/pip/develop/pydantic-2.9.2
chore(deps): bump pydantic from 2.9.1 to 2.9.2
2024-09-23 08:36:21 +02:00
dependabot[bot]
04abc4d12f chore(deps): bump pymdown-extensions from 10.9 to 10.10.1
Bumps [pymdown-extensions](https://github.com/facelessuser/pymdown-extensions) from 10.9 to 10.10.1.
- [Release notes](https://github.com/facelessuser/pymdown-extensions/releases)
- [Commits](https://github.com/facelessuser/pymdown-extensions/compare/10.9...10.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 06:24:37 +00:00
Matthias
8491f46045 Merge pull request #10689 from freqtrade/dependabot/pip/develop/mkdocs-73612938eb
chore(deps): bump mkdocs-material from 9.5.34 to 9.5.36 in the mkdocs group
2024-09-23 08:23:40 +02:00
Matthias
4aa909e587 Merge pull request #10688 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.10.2
chore(deps): bump pypa/gh-action-pypi-publish from 1.10.1 to 1.10.2
2024-09-23 08:23:22 +02:00
Matthias
9f5e4b5812 chore: update sqlalchemy in pre-commit config 2024-09-23 06:34:12 +02:00
dependabot[bot]
06eb5abf11 chore(deps): bump filelock from 3.16.0 to 3.16.1
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.16.0 to 3.16.1.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.16.0...3.16.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 03:48:44 +00:00
dependabot[bot]
29e6e3b374 chore(deps): bump python-telegram-bot from 21.5 to 21.6
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 21.5 to 21.6.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v21.5...v21.6)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 03:48:38 +00:00
dependabot[bot]
2fc97f83f4 chore(deps-dev): bump ruff from 0.6.5 to 0.6.7
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.5 to 0.6.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.6.5...0.6.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 03:48:26 +00:00
dependabot[bot]
1e761b4c7d chore(deps): bump sqlalchemy from 2.0.34 to 2.0.35
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.34 to 2.0.35.
- [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>
2024-09-23 03:48:12 +00:00
dependabot[bot]
a2ca136f1f chore(deps): bump pandas from 2.2.2 to 2.2.3
Bumps [pandas](https://github.com/pandas-dev/pandas) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](https://github.com/pandas-dev/pandas/compare/v2.2.2...v2.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 03:47:58 +00:00
dependabot[bot]
94322664f2 chore(deps): bump websockets from 13.0.1 to 13.1
Bumps [websockets](https://github.com/python-websockets/websockets) from 13.0.1 to 13.1.
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](https://github.com/python-websockets/websockets/compare/13.0.1...13.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 03:47:39 +00:00
dependabot[bot]
cbd5c6d3e9 chore(deps): bump pydantic from 2.9.1 to 2.9.2
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.9.1 to 2.9.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.9.1...v2.9.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 03:47:32 +00:00
dependabot[bot]
0428dc8381 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.5.34 to 9.5.36
- [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.5.34...9.5.36)

---
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>
2024-09-23 03:47:22 +00:00
dependabot[bot]
01e7b0da46 chore(deps): bump pypa/gh-action-pypi-publish from 1.10.1 to 1.10.2
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.10.1 to 1.10.2.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.10.1...v1.10.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-23 03:22:42 +00:00
Matthias
b37dadcc05 tests: dry-wallets test update 2024-09-22 13:22:37 +02:00
Matthias
8e6151fe65 fix: properly consider open order values as "tied up" stake. 2024-09-22 13:17:27 +02:00
Matthias
9b346c0937 docs: add hint about amount being 0 2024-09-22 09:20:49 +02:00
Matthias
b09f80ca30 tests: improve create_trade test 2024-09-22 08:47:52 +02:00
Matthias
0e0af82290 fix: odd calculation in calc_profit_ratio 2024-09-22 08:47:52 +02:00
Matthias
c69b09cbff tests: fix amount=0 test 2024-09-22 08:47:52 +02:00
Matthias
b8ba6cd970 tests: update rpc_status 2024-09-22 08:47:52 +02:00
Matthias
004e30d6be tests: update force_sell test to not use empty amount column 2024-09-22 08:47:52 +02:00
Matthias
b084efdd06 feat: initialize trade objects with 0 amount
This way, it'll represent the owned amount
which will be updated once the order fills
2024-09-22 08:47:52 +02:00
Matthias
d377d8462f fix: improve resiliance of order parsing
closes #10676
2024-09-22 08:28:29 +02:00
Matthias
2bbec9f9b1 tests: fix random test failure by reading time only once 2024-09-21 16:59:02 +02:00
Matthias
b326908487 tests: Improve test resiliance 2024-09-21 16:40:00 +02:00
Matthias
b21156a886 tests: improve stoploss test 2024-09-21 16:34:58 +02:00
Matthias
85138b0bc8 tests: Have exchange test get_historic_ohlcv properly 2024-09-21 09:06:26 +02:00
Axel-CH
418356f383 fix codespell 2024-09-20 19:23:30 -04:00
Axel-CH
c6d7ae9d27 fix ruff format 2024-09-20 19:10:52 -04:00
Axel-CH
0d3ab37eb7 fix test_trade_custom_data and test_backtest_results 2024-09-20 18:44:58 -04:00
Matthias
e0df0257d1 tests: Update history tests for new response 2024-09-20 07:26:45 +02:00
Matthias
d23c1e8f92 refactor: Move dataframe parsing into get_historic_ohlcv 2024-09-20 07:23:52 +02:00
Matthias
670a40e67b chore: remove no longer valid todo 2024-09-20 07:06:21 +02:00
Matthias
3bbc6cbab1 chore: bump ccxt to 4.4.5
closes #10677
2024-09-19 20:41:32 +02:00
Matthias
15de53a22d chore: bump ccxt to 4.4.5
closes #10677
2024-09-19 20:36:56 +02:00
Matthias
59a44d6973 Merge pull request #10679 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-09-19 06:29:02 +02:00
xmatthias
7561692352 chore: update pre-commit hooks 2024-09-19 03:15:32 +00:00
Matthias
f50a633f87 docs: order table formatting 2024-09-18 07:11:12 +02:00
Jakub Werner (jakubikan)
50f07e7b11 only doing this if the category is set 2024-09-17 23:03:51 +02:00
Jakub Werner (jakubikan)
660623181a adding category list if the category is not from the category 2024-09-17 22:36:21 +02:00
Jakub Werner (jakubikan)
03ee3aaf40 adding category list if the category is not from the category 2024-09-17 22:35:00 +02:00
Matthias
ad295946c0 fix: use precise calculation for decrease adjustment calculations 2024-09-17 20:19:22 +02:00
Matthias
c28446dad0 Merge pull request #10672 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-09-17 06:28:16 +02:00
xmatthias
ff9d1f2728 chore: update pre-commit hooks 2024-09-17 03:03:39 +00:00
Jakub Werner (jakubikan)
0b7cb2a1a8 cleanup 2024-09-16 22:52:26 +02:00
Jakub Werner (jakubikan)
92af01b0cb adding category for MarketCapPairList.py 2024-09-16 22:51:42 +02:00
Jakub Werner (jakubikan)
dc26d0d7ba adding category for MarketCapPairList.py 2024-09-16 22:50:08 +02:00
Matthias
2fe67edab3 chore: update link to okx liquidation formula 2024-09-16 19:05:00 +02:00
Matthias
167e43cbef Merge pull request #10655 from freqtrade/dependabot/pip/develop/types-dda07fe7e8
chore(deps-dev): bump types-requests from 2.32.0.20240907 to 2.32.0.20240914 in the types group
2024-09-16 11:12:07 +02:00
Matthias
d8cb407c25 Merge pull request #10666 from freqtrade/dependabot/pip/develop/pydantic-2.9.1
chore(deps): bump pydantic from 2.9.0 to 2.9.1
2024-09-16 10:56:51 +02:00
Matthias
9452afe3f7 Merge pull request #10660 from freqtrade/dependabot/pip/develop/ruff-0.6.5
chore(deps-dev): bump ruff from 0.6.4 to 0.6.5
2024-09-16 10:21:12 +02:00
Matthias
8dc6d9ce7d Merge pull request #10665 from freqtrade/dependabot/pip/develop/rich-13.8.1
chore(deps): bump rich from 13.8.0 to 13.8.1
2024-09-16 09:45:01 +02:00
Matthias
bf4b8a318d Merge pull request #10661 from freqtrade/dependabot/pip/develop/scikit-learn-1.5.2
chore(deps): bump scikit-learn from 1.5.1 to 1.5.2
2024-09-16 09:44:31 +02:00
Matthias
20f6022050 Merge pull request #10663 from freqtrade/dependabot/pip/develop/ccxt-4.4.3
chore(deps): bump ccxt from 4.3.98 to 4.4.3
2024-09-16 09:33:16 +02:00
dependabot[bot]
65e6c737cd chore(deps): bump pydantic from 2.9.0 to 2.9.1
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.9.0 to 2.9.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.9.0...v2.9.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 07:07:06 +00:00
Matthias
6d2572e347 Merge pull request #10662 from freqtrade/dependabot/pip/develop/fastapi-0.114.2
chore(deps): bump fastapi from 0.114.0 to 0.114.2
2024-09-16 09:06:12 +02:00
Matthias
52a35197c7 Merge pull request #10659 from freqtrade/dependabot/pip/develop/pytz-2024.2
chore(deps): bump pytz from 2024.1 to 2024.2
2024-09-16 08:33:08 +02:00
Matthias
2b3a41db3e Merge pull request #10658 from freqtrade/dependabot/pip/develop/urllib3-2.2.3
chore(deps): bump urllib3 from 2.2.2 to 2.2.3
2024-09-16 08:32:52 +02:00
dependabot[bot]
09c1459411 chore(deps-dev): bump ruff from 0.6.4 to 0.6.5
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.4 to 0.6.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.6.4...0.6.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 06:17:40 +00:00
Matthias
98f18b89da Merge pull request #10657 from freqtrade/dependabot/pip/develop/plotly-5.24.1
chore(deps): bump plotly from 5.24.0 to 5.24.1
2024-09-16 08:16:56 +02:00
Matthias
4249db4330 Merge pull request #10656 from freqtrade/dependabot/pip/develop/pytest-baa91b6655
chore(deps-dev): bump pytest from 8.3.2 to 8.3.3 in the pytest group
2024-09-16 08:16:43 +02:00
Matthias
a7f46500ed chore: bump types-requests in pre-commit 2024-09-16 06:38:45 +02:00
dependabot[bot]
c73fa2b0eb chore(deps): bump rich from 13.8.0 to 13.8.1
Bumps [rich](https://github.com/Textualize/rich) from 13.8.0 to 13.8.1.
- [Release notes](https://github.com/Textualize/rich/releases)
- [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Textualize/rich/compare/v13.8.0...v13.8.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:18:09 +00:00
dependabot[bot]
db4c4b971a chore(deps): bump ccxt from 4.3.98 to 4.4.3
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.3.98 to 4.4.3.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.3.98...4.4.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:17:58 +00:00
dependabot[bot]
e9ccc98ada chore(deps): bump fastapi from 0.114.0 to 0.114.2
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.114.0 to 0.114.2.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.114.0...0.114.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:17:46 +00:00
dependabot[bot]
11d6ec33b3 chore(deps): bump scikit-learn from 1.5.1 to 1.5.2
Bumps [scikit-learn](https://github.com/scikit-learn/scikit-learn) from 1.5.1 to 1.5.2.
- [Release notes](https://github.com/scikit-learn/scikit-learn/releases)
- [Commits](https://github.com/scikit-learn/scikit-learn/compare/1.5.1...1.5.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:17:39 +00:00
dependabot[bot]
c3b6f4ca85 chore(deps): bump pytz from 2024.1 to 2024.2
Bumps [pytz](https://github.com/stub42/pytz) from 2024.1 to 2024.2.
- [Release notes](https://github.com/stub42/pytz/releases)
- [Commits](https://github.com/stub42/pytz/compare/release_2024.1...release_2024.2)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:17:21 +00:00
dependabot[bot]
d37405a307 chore(deps): bump urllib3 from 2.2.2 to 2.2.3
Bumps [urllib3](https://github.com/urllib3/urllib3) from 2.2.2 to 2.2.3.
- [Release notes](https://github.com/urllib3/urllib3/releases)
- [Changelog](https://github.com/urllib3/urllib3/blob/main/CHANGES.rst)
- [Commits](https://github.com/urllib3/urllib3/compare/2.2.2...2.2.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:17:05 +00:00
dependabot[bot]
d7a9841328 chore(deps): bump plotly from 5.24.0 to 5.24.1
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.24.0 to 5.24.1.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v5.24.0...v5.24.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:17:01 +00:00
dependabot[bot]
cf3af42477 chore(deps-dev): bump pytest from 8.3.2 to 8.3.3 in the pytest group
Bumps the pytest group with 1 update: [pytest](https://github.com/pytest-dev/pytest).


Updates `pytest` from 8.3.2 to 8.3.3
- [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.2...8.3.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-16 03:16:39 +00:00
dependabot[bot]
ad8e6e7d67 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.20240907 to 2.32.0.20240914
- [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>
2024-09-16 03:15:58 +00:00
Matthias
ae41ab101a docs: remove skip_pair_validation - it's no longer used. 2024-09-15 11:28:57 +02:00
Matthias
f4881e7c6f tests: Adjust tests for removed validate_pairlist functionality 2024-09-15 11:28:57 +02:00
Matthias
94ef4380d4 chore: remove validate_pairs from exchange class
Invalid pairs were filtered out before this was called in most cases.
in cases where it's not - regular pairlist-filtering provides proper warnings.
2024-09-15 11:28:57 +02:00
Matthias
7ebe1b8c14 chore: remove pointless validation
pairs are validated through expand_pairlist.
If they're not in markets, they'll no longer be in the
pairlist once this function function is hit.
2024-09-15 11:02:49 +02:00
Matthias
79020bba28 chore: Remove "prohibitedIn" check
it's only been used for bitrex, which does no longer exist.
apparently this was forgotten when decomissioning bittrex.
2024-09-15 10:49:26 +02:00
Matthias
95c250ebcc chore: add explaining comment 2024-09-15 10:37:28 +02:00
Matthias
bfb14614cc chore: enhance change with comment 2024-09-15 09:48:44 +02:00
Matthias
12299d4810 feat: staticPairlist to warn for invalid pairs
Warnings about invalid pairs were "covered" by the implicit
filtering of `expand_pairlist()`
2024-09-15 09:46:47 +02:00
Matthias
c67a9d4e84 docs: update pairlist creation docs 2024-09-15 09:29:45 +02:00
Matthias
af422c7cd4 Merge pull request #10645 from dxbstyle/develop
added check for Kraken exchange
2024-09-14 10:44:23 +02:00
Matthias
51bdecea53 Improve check to cover more potential api oddities 2024-09-14 10:09:15 +02:00
Matthias
0f505c6d7b Improve check to cover more potential api oddities 2024-09-14 10:04:28 +02:00
Matthias
ae72f10448 Merge pull request #10619 from KingND/pixel/feat/freqai_labels_are_okay_in_lookahead_analysis
feat: include lookahead-analysis table caption when biased_indicator is likely from FreqAI target
2024-09-14 09:51:38 +02:00
Matthias
9f34153c84 chore: update typing for reload function 2024-09-13 19:45:30 +02:00
Matthias
c04cf6c5cb test: Improve test coverage of retry/fail logic 2024-09-13 07:24:08 +02:00
Matthias
5112736385 feat: Simplify reload_markets logic 2024-09-13 07:24:08 +02:00
Matthias
11eaa6d77c test: Add tests for new behavior 2024-09-13 07:24:08 +02:00
Matthias
6024903bde feat: conditionally apply retrier to market-reload
closes #10641
2024-09-13 07:23:58 +02:00
Matthias
e96928588e Merge pull request #10639 from jainanuj94/backtesting
Add entry-only and exit-only filters to --indicator-list in backtesting analysis
2024-09-12 06:43:24 +02:00
Matthias
94e38d4cdd Merge pull request #10646 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-09-12 06:36:11 +02:00
xmatthias
d15921b3f2 chore: update pre-commit hooks 2024-09-12 03:12:54 +00:00
Axel-CH
6b8ca7217b flake8 fix and cleanup 2024-09-11 21:48:48 -04:00
Axel-CH
2811a470aa handle pre existing open order cancelation on trade exit 2024-09-11 21:11:20 -04:00
Axel-CH
1fccdd8cda fix test_exit_positions 2024-09-11 18:59:29 -04:00
Axel-CH
33b421014d remove irrelevant trade.has_open_orders conditions 2024-09-11 18:42:51 -04:00
Matthias
3c6e2b89a4 Merge pull request #10640 from TheJoeSchr/fix/plot-orderflow-data-missing
fix: orderflow data was missing for plotting
2024-09-11 19:11:55 +02:00
Joe Schr
439658fcf1 fix: remove tests for orderflow data missing of other runmodes 2024-09-11 17:12:35 +02:00
Joe Schr
c9acb1466c fix: orderflow data missing for plotting and other runmodes 2024-09-11 17:12:35 +02:00
Anuj Jain
addd27faf8 Update tests and docs 2024-09-11 15:33:26 +05:30
Matthias
5605bdc7a3 Merge pull request #10644 from iridescentGray/develop
chore: remove redundant method
2024-09-11 06:40:53 +02:00
colorfulgray0
f1df7e9bdc chore: remove redundant method 2024-09-11 11:33:38 +08:00
Anuj Jain
4765656f87 Add filter for entry and exit only parameter 2024-09-10 15:21:56 +05:30
Matthias
c3a00b93c2 Merge pull request #10637 from freqtrade/dependabot/docker/docker/python-3.12.6-slim-bookworm
chore(deps): bump python from 3.11.9-slim-bookworm to 3.11.10-slim-bookworm in /docker
2024-09-10 07:20:36 +02:00
Matthias
e5d2ba7835 Merge pull request #10636 from freqtrade/dependabot/docker/python-3.12.6-slim-bookworm
chore(deps): bump python from 3.12.5-slim-bookworm to 3.12.6-slim-bookworm
2024-09-10 06:53:17 +02:00
Matthias
8c1b119e84 chore: rpi image should remain on 3.11 series 2024-09-10 06:25:17 +02:00
Matthias
593a54e6cb Merge pull request #10635 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-09-10 06:23:20 +02:00
dependabot[bot]
95fa7083a9 chore(deps): bump python in /docker
Bumps python from 3.11.9-slim-bookworm to 3.12.6-slim-bookworm.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-10 04:07:33 +00:00
dependabot[bot]
98e08df807 chore(deps): bump python
Bumps python from 3.12.5-slim-bookworm to 3.12.6-slim-bookworm.

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-10 04:07:26 +00:00
xmatthias
01da36f984 chore: update pre-commit hooks 2024-09-10 03:03:23 +00:00
Axel-CH
730bef2920 add comments and logs for failing test, create untied_assets propertyto Trade 2024-09-09 19:28:04 -04:00
dxbstyle
ae155c78c2 added check 2024-09-09 21:29:49 +02:00
Axel-CH
79ce1ddaef rollback on process_open_trade_positions. Adjust position only if there is no open order, change will be made on other PR 2024-09-09 13:30:07 -04:00
Axel-CH
714822c93c add ETC/BTC pair to conftest get_markets 2024-09-09 13:15:17 -04:00
Matthias
9742216479 chore: run ruff-format on pre-commit 2024-09-09 18:23:07 +02:00
Axel-CH
fb3787173f fix test_exit_positions_exception 2024-09-09 12:07:50 -04:00
Matthias
f720183281 Merge pull request #10630 from freqtrade/dependabot/pip/develop/sqlalchemy-2.0.34
chore(deps): bump sqlalchemy from 2.0.32 to 2.0.34
2024-09-09 14:54:33 +02:00
Matthias
4bc84acac6 Merge branch 'develop' into dependabot/pip/develop/sqlalchemy-2.0.34 2024-09-09 13:37:43 +02:00
Matthias
14a8086677 Merge pull request #10631 from freqtrade/dependabot/pip/develop/fastapi-0.114.0
chore(deps): bump fastapi from 0.112.2 to 0.114.0
2024-09-09 13:37:09 +02:00
Matthias
686b96222e Merge pull request #10621 from freqtrade/dependabot/pip/develop/types-a674cee9e2
chore(deps-dev): bump the types group with 2 updates
2024-09-09 10:57:28 +02:00
Matthias
0962f37f55 Merge pull request #10632 from freqtrade/dependabot/github_actions/develop/peter-evans/create-pull-request-7
chore(deps): bump peter-evans/create-pull-request from 6 to 7
2024-09-09 10:43:52 +02:00
Matthias
2c17551b27 chore: bump sqlalchemy in mypy additional deps 2024-09-09 10:15:18 +02:00
Matthias
3f5a5e35c2 Merge pull request #10633 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.10.1
chore(deps): bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1
2024-09-09 09:56:28 +02:00
Matthias
07c6d37ff0 Merge pull request #10628 from freqtrade/dependabot/pip/develop/ccxt-4.3.98
chore(deps): bump ccxt from 4.3.93 to 4.3.98
2024-09-09 09:12:56 +02:00
Matthias
916ea7acc0 Merge pull request #10627 from freqtrade/dependabot/pip/develop/ruff-0.6.4
chore(deps-dev): bump ruff from 0.6.3 to 0.6.4
2024-09-09 09:12:28 +02:00
Matthias
eae7e865a5 Merge pull request #10626 from freqtrade/dependabot/pip/develop/filelock-3.16.0
chore(deps): bump filelock from 3.15.4 to 3.16.0
2024-09-09 09:10:55 +02:00
Matthias
776e5054aa Merge pull request #10624 from freqtrade/dependabot/pip/develop/torch-2.4.1
chore(deps): bump torch from 2.2.2 to 2.4.1
2024-09-09 09:10:27 +02:00
Matthias
bf2b8b280e Merge pull request #10623 from freqtrade/dependabot/pip/develop/catboost-1.2.7
chore(deps): bump catboost from 1.2.5 to 1.2.7
2024-09-09 09:10:15 +02:00
dependabot[bot]
7aa7027a34 chore(deps): bump fastapi from 0.112.2 to 0.114.0
Bumps [fastapi](https://github.com/fastapi/fastapi) from 0.112.2 to 0.114.0.
- [Release notes](https://github.com/fastapi/fastapi/releases)
- [Commits](https://github.com/fastapi/fastapi/compare/0.112.2...0.114.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 06:55:07 +00:00
Matthias
d4713b2091 Merge pull request #10622 from freqtrade/dependabot/pip/develop/pydantic-2.9.0
chore(deps): bump pydantic from 2.8.2 to 2.9.0
2024-09-09 08:54:14 +02:00
Matthias
9b97be4aa4 Bump pre-commit dependencies 2024-09-09 06:44:35 +02:00
dependabot[bot]
621be11395 chore(deps): bump pypa/gh-action-pypi-publish from 1.10.0 to 1.10.1
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.10.0 to 1.10.1.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.10.0...v1.10.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:59:34 +00:00
dependabot[bot]
05af6df536 chore(deps): bump peter-evans/create-pull-request from 6 to 7
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6 to 7.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v6...v7)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:59:29 +00:00
dependabot[bot]
b7bda2355d chore(deps): bump sqlalchemy from 2.0.32 to 2.0.34
Bumps [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) from 2.0.32 to 2.0.34.
- [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>
2024-09-09 03:46:24 +00:00
dependabot[bot]
b0976031ae chore(deps): bump ccxt from 4.3.93 to 4.3.98
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.3.93 to 4.3.98.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.3.93...4.3.98)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:46:05 +00:00
dependabot[bot]
d099f30a34 chore(deps-dev): bump ruff from 0.6.3 to 0.6.4
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.3 to 0.6.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.6.3...0.6.4)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:45:51 +00:00
dependabot[bot]
699be03bb7 chore(deps): bump filelock from 3.15.4 to 3.16.0
Bumps [filelock](https://github.com/tox-dev/py-filelock) from 3.15.4 to 3.16.0.
- [Release notes](https://github.com/tox-dev/py-filelock/releases)
- [Changelog](https://github.com/tox-dev/filelock/blob/main/docs/changelog.rst)
- [Commits](https://github.com/tox-dev/py-filelock/compare/3.15.4...3.16.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:45:29 +00:00
dependabot[bot]
ccf93cfdcd chore(deps): bump torch from 2.2.2 to 2.4.1
Bumps [torch](https://github.com/pytorch/pytorch) from 2.2.2 to 2.4.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.2.2...v2.4.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:45:14 +00:00
dependabot[bot]
47358a8229 chore(deps): bump catboost from 1.2.5 to 1.2.7
Bumps [catboost](https://github.com/catboost/catboost) from 1.2.5 to 1.2.7.
- [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.5...v1.2.7)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:45:03 +00:00
dependabot[bot]
9856c2cfc4 chore(deps): bump pydantic from 2.8.2 to 2.9.0
Bumps [pydantic](https://github.com/pydantic/pydantic) from 2.8.2 to 2.9.0.
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:44:57 +00:00
dependabot[bot]
df9669ba2c chore(deps-dev): bump the types group with 2 updates
Bumps the types group with 2 updates: [types-requests](https://github.com/python/typeshed) and [types-python-dateutil](https://github.com/python/typeshed).


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

Updates `types-python-dateutil` from 2.9.0.20240821 to 2.9.0.20240906
- [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
- dependency-name: types-python-dateutil
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: types
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-09 03:43:50 +00:00
KingND
f970454cb4 chore: ruff format 2024-09-08 13:57:48 -04:00
KingND
69678574d4 fix: support python 3.9 union type hinting 2024-09-08 12:04:58 -04:00
KingND
53cab5074b chore: refactor and cleanup tests 2024-09-08 12:04:58 -04:00
KingND
c6c65b1799 chore: flake8 2024-09-08 12:04:58 -04:00
KingND
bb9f64027a chore: improve language in docs 2024-09-08 12:04:58 -04:00
KingND
5f52fc4338 feat: update lookahead-analysis doc caveats to include info regarding the false positive on FreqAI targets 2024-09-08 12:04:58 -04:00
KingND
82e30c8519 feat: if a biased_indicator starting with & appears in a lookahead-analysis, caption the table with a note that freqai targets appearing here can be ignored 2024-09-08 12:04:58 -04:00
Matthias
6e2aa6b4b8 tests: remove unused imports 2024-09-08 08:28:40 +02:00
Matthias
a1681cdd63 chore: improve typing 2024-09-08 08:28:40 +02:00
Matthias
611a3ce138 Merge pull request #10485 from jainanuj94/feature/8902
Add exit signals to export in backtesting
2024-09-07 20:12:05 +02:00
Matthias
396d933e34 feat(bybit): add support for unified Accounts 2024-09-07 18:28:56 +02:00
Matthias
0858e0a21e Minor update to docs 2024-09-07 15:29:23 +02:00
Matthias
704e32b0dc feat: properly parse marginmode on startup 2024-09-07 09:28:35 +02:00
Matthias
f95cc960e1 test: tests should consider additional ff-update call 2024-09-07 09:25:20 +02:00
Matthias
1b00f512c1 fix: call order_filled callback for left open trades 2024-09-07 09:24:21 +02:00
Matthias
d9ec66695c docs: update backtesting docs with new row 2024-09-07 08:49:30 +02:00
Matthias
1a2578a4b7 feat: Add margin/Trading mode output to bt-output 2024-09-07 08:47:45 +02:00
Axel-CH
e9ba0d2ce8 Merge remote-tracking branch 'origin/develop' into feature/proceed-exit-while-open-order 2024-09-06 17:29:07 -04:00
Matthias
f714e306da test: add margin and trading mode to test config 2024-09-06 21:15:10 +02:00
Matthias
6a4b641250 feat: implement __str__ for marign and tradingmode enums 2024-09-06 20:58:54 +02:00
Anuj Jain
8d96844312 use BT_DATA_COLUMNS for trade wide indicators 2024-09-06 12:28:02 +05:30
Anuj Jain
b7145debfb handle trade wide indicators 2024-09-05 21:52:09 +05:30
Matthias
990dbb6c06 Merge pull request #10616 from freqtrade/update/binance-leverage-tiers
Update Binance Leverage Tiers
2024-09-05 05:57:37 +02:00
xmatthias
c6a66a8fac chore: update pre-commit hooks 2024-09-05 03:12:48 +00:00
Matthias
65ba67dedc chore: re-add analytics. 2024-09-04 21:08:34 +02:00
Matthias
824db78234 chore: update site_url again 2024-09-04 21:07:16 +02:00
Matthias
2fdf108198 chore: update site_url to work correctly 2024-09-04 21:04:39 +02:00
Matthias
63092d7d1a chore: re-add analytics to docs page 2024-09-04 20:44:18 +02:00
Matthias
964d437c7a chore: type _ft_has 2024-09-04 07:15:17 +02:00
Matthias
d49c556291 chore: rename ft_has setting from ws.enabled to ws_enabled 2024-09-04 06:57:13 +02:00
Matthias
d6b2748293 chore: rename types to ft_types 2024-09-04 06:44:48 +02:00
Matthias
e3a5831d64 refactor: rename exchange.types 2024-09-04 06:42:51 +02:00
Anuj Jain
08d5174d02 update documentation and add default values 2024-09-04 09:56:12 +05:30
Matthias
dacb926db5 Merge pull request #10614 from freqtrade/dependabot/pip/cryptography-43.0.1
chore(deps): bump cryptography from 42.0.8 to 43.0.1
2024-09-04 06:11:59 +02:00
dependabot[bot]
c0e9173c9b chore(deps): bump cryptography from 42.0.8 to 43.0.1
Bumps [cryptography](https://github.com/pyca/cryptography) from 42.0.8 to 43.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/42.0.8...43.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-04 00:25:37 +00:00
Matthias
f46308bbdb Merge pull request #10612 from freqtrade/update/pre-commit-hooks
Update pre-commit hooks
2024-09-03 06:18:55 +02:00
xmatthias
331db99a4e chore: update pre-commit hooks 2024-09-03 03:02:47 +00:00
Matthias
d84f32f27d Merge pull request #10607 from freqtrade/dependabot/pip/develop/ccxt-4.3.93
chore(deps): bump ccxt from 4.3.88 to 4.3.93
2024-09-02 08:33:44 +02:00
Matthias
ac28a44b92 Merge pull request #10609 from freqtrade/dependabot/github_actions/develop/pypa/gh-action-pypi-publish-1.10.0
chore(deps): bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0
2024-09-02 08:13:28 +02:00
Matthias
003a41b920 Merge pull request #10608 from freqtrade/dependabot/pip/develop/python-telegram-bot-21.5
chore(deps): bump python-telegram-bot from 21.4 to 21.5
2024-09-02 07:49:17 +02:00
dependabot[bot]
bc4c693525 chore(deps): bump ccxt from 4.3.88 to 4.3.93
Bumps [ccxt](https://github.com/ccxt/ccxt) from 4.3.88 to 4.3.93.
- [Release notes](https://github.com/ccxt/ccxt/releases)
- [Changelog](https://github.com/ccxt/ccxt/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ccxt/ccxt/compare/4.3.88...4.3.93)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 05:08:37 +00:00
Matthias
d4ba837641 chore: mark Bybit as supported exchange 2024-09-02 07:03:04 +02:00
Matthias
4a1592dd92 feat: initialize hyperliquid in spot mode by default 2024-09-02 07:03:04 +02:00
Matthias
ac145a0b65 Merge pull request #10606 from freqtrade/dependabot/pip/develop/websockets-13.0.1
chore(deps): bump websockets from 13.0 to 13.0.1
2024-09-02 06:58:04 +02:00
Matthias
50c00dcae6 Merge pull request #10605 from freqtrade/dependabot/pip/develop/plotly-5.24.0
chore(deps): bump plotly from 5.23.0 to 5.24.0
2024-09-02 06:57:47 +02:00
Matthias
95d964140b Merge pull request #10604 from freqtrade/dependabot/pip/develop/rich-13.8.0
chore(deps): bump rich from 13.7.1 to 13.8.0
2024-09-02 06:57:34 +02:00
Matthias
0a73a7eb52 Merge pull request #10603 from freqtrade/dependabot/pip/develop/ruff-0.6.3
chore(deps-dev): bump ruff from 0.6.2 to 0.6.3
2024-09-02 06:57:25 +02:00
Matthias
0aecb24930 Merge pull request #10602 from freqtrade/dependabot/pip/develop/mkdocs-4a19445461
chore(deps): bump the mkdocs group with 2 updates
2024-09-02 06:57:03 +02:00
dependabot[bot]
904f5303a6 chore(deps): bump pypa/gh-action-pypi-publish from 1.9.0 to 1.10.0
Bumps [pypa/gh-action-pypi-publish](https://github.com/pypa/gh-action-pypi-publish) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/pypa/gh-action-pypi-publish/releases)
- [Commits](https://github.com/pypa/gh-action-pypi-publish/compare/v1.9.0...v1.10.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 03:05:58 +00:00
dependabot[bot]
585761e931 chore(deps): bump python-telegram-bot from 21.4 to 21.5
Bumps [python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot) from 21.4 to 21.5.
- [Release notes](https://github.com/python-telegram-bot/python-telegram-bot/releases)
- [Changelog](https://github.com/python-telegram-bot/python-telegram-bot/blob/master/CHANGES.rst)
- [Commits](https://github.com/python-telegram-bot/python-telegram-bot/compare/v21.4...v21.5)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 03:05:45 +00:00
dependabot[bot]
4d53797cba chore(deps): bump websockets from 13.0 to 13.0.1
Bumps [websockets](https://github.com/python-websockets/websockets) from 13.0 to 13.0.1.
- [Release notes](https://github.com/python-websockets/websockets/releases)
- [Commits](https://github.com/python-websockets/websockets/compare/13.0...13.0.1)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 03:05:21 +00:00
dependabot[bot]
803677e884 chore(deps): bump plotly from 5.23.0 to 5.24.0
Bumps [plotly](https://github.com/plotly/plotly.py) from 5.23.0 to 5.24.0.
- [Release notes](https://github.com/plotly/plotly.py/releases)
- [Changelog](https://github.com/plotly/plotly.py/blob/master/CHANGELOG.md)
- [Commits](https://github.com/plotly/plotly.py/compare/v5.23.0...v5.24.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 03:05:14 +00:00
dependabot[bot]
17617c58d7 chore(deps): bump rich from 13.7.1 to 13.8.0
Bumps [rich](https://github.com/Textualize/rich) from 13.7.1 to 13.8.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.7.1...v13.8.0)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 03:05:10 +00:00
dependabot[bot]
96d03ec13d chore(deps-dev): bump ruff from 0.6.2 to 0.6.3
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.6.2 to 0.6.3.
- [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.6.2...0.6.3)

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

Signed-off-by: dependabot[bot] <support@github.com>
2024-09-02 03:05:06 +00:00
dependabot[bot]
4726afbebf chore(deps): bump the mkdocs group with 2 updates
Bumps the mkdocs group with 2 updates: [mkdocs](https://github.com/mkdocs/mkdocs) and [mkdocs-material](https://github.com/squidfunk/mkdocs-material).


Updates `mkdocs` from 1.6.0 to 1.6.1
- [Release notes](https://github.com/mkdocs/mkdocs/releases)
- [Commits](https://github.com/mkdocs/mkdocs/compare/1.6.0...1.6.1)

Updates `mkdocs-material` from 9.5.33 to 9.5.34
- [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.5.33...9.5.34)

---
updated-dependencies:
- dependency-name: mkdocs
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: mkdocs
- 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>
2024-09-02 03:04:55 +00:00
Matthias
97c937e554 chore: add Bugbear Ruff checking 2024-09-01 08:32:42 +02:00
Matthias
b25520cf18 chore: improve rhci_progress typing, remove mutable arguments 2024-09-01 08:27:53 +02:00
Matthias
c6b46d75cb chore: fix B018 violation 2024-09-01 08:24:47 +02:00
Matthias
a554352ae0 test: remove unused mutable argument 2024-09-01 08:24:21 +02:00
Matthias
a7fd03f1b7 chore: improve ccxt test 2024-09-01 08:22:58 +02:00
Matthias
ef96116c3f docs: add note about freqUI support of dp.current_whitelist
closes #10600
2024-08-31 20:34:02 +02:00
Matthias
7edc50865f docs: improve release documentation 2024-08-31 08:34:48 +02:00
Matthias
a881d3fd81 chore: bump version to 2024.9-dev 2024-08-31 08:31:42 +02:00
jainanuj94
268683f8ea update documentation 2024-08-19 12:50:54 +05:30
jainanuj94
b6702d1d32 simplify merging logic 2024-08-18 23:22:20 +05:30
jainanuj94
c3679910a4 remove additional argument 2024-08-18 23:14:21 +05:30
jainanuj94
19a2e06c0b #000 | Anuj | Merge Dfs for entry and exit in one table 2024-08-18 18:41:04 +05:30
jainanuj94
8085e24dcd update tests 2024-08-06 20:00:05 +05:30
jainanuj94
d351ed0173 refactor: change analyse_on variable name to date_col 2024-08-06 15:16:30 +05:30
jainanuj94
3ebc5b136c review comments and update test for exit signals 2024-08-06 12:55:48 +05:30
jainanuj94
103991746b chore: type safety and refactoring 2024-08-05 23:57:24 +05:30
jainanuj94
7f0e5dd335 Refactor and add documentation 2024-08-05 23:19:38 +05:30
jainanuj94
ecf9c173c4 Add test for backtesitng-analysis 2024-08-02 20:46:19 +05:30
jainanuj94
b0e863dbbb Introduce --exit-signals flag to backtesting-analysis command 2024-08-02 20:09:56 +05:30
jainanuj94
8f8859a5f5 Initial commit - create a different file for signals 2024-08-02 15:54:03 +05:30
jainanuj94
2ad921f99e Merge remote-tracking branch 'upstream/develop' into develop 2024-08-01 23:55:01 +05:30
jainanuj94
3a481df45d Merge remote-tracking branch 'upstream/develop' into develop 2024-07-28 22:26:00 +05:30
Axel-CH
6a580176ea Merge branch 'develop' into feature/proceed-exit-while-open-order 2024-07-01 17:49:40 -04:00
Axel-CH
910b3ad536 allow adjust trade position, even if there is an open order 2024-04-15 15:40:57 -04:00
Axel-CH
05cf4cab8e add has_open_entry_orders property to trade 2024-04-15 15:18:39 -04:00
Axel-CH
6752c3e288 add has_untied_assets, replace one has_open_orders condition by has_untied_assets in exit_positions 2024-04-15 14:43:40 -04:00
Axel-CH
faeda2a166 fix mypy error on has_open_position function 2024-04-14 00:40:12 -04:00
Axel-CH
3d67e0893a edit backtest_loop to check exit if trade has open position 2024-04-14 00:25:40 -04:00
435 changed files with 43314 additions and 16760 deletions

View File

@@ -32,7 +32,7 @@ jobs:
run: python build_helpers/binance_update_lev_tiers.py run: python build_helpers/binance_update_lev_tiers.py
- uses: peter-evans/create-pull-request@v6 - uses: peter-evans/create-pull-request@v7
with: with:
token: ${{ secrets.REPO_SCOPED_TOKEN }} token: ${{ secrets.REPO_SCOPED_TOKEN }}
add-paths: freqtrade/exchange/binance_leverage_tiers.json add-paths: freqtrade/exchange/binance_leverage_tiers.json

View File

@@ -25,7 +25,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ "ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04" ] os: [ "ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04" ]
python-version: ["3.9", "3.10", "3.11", "3.12"] python-version: ["3.10", "3.11", "3.12"]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -35,6 +35,15 @@ jobs:
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
cache-dependency-glob: "requirements**.txt"
cache-suffix: "${{ matrix.python-version }}"
prune-cache: false
- name: Cache_dependencies - name: Cache_dependencies
uses: actions/cache@v4 uses: actions/cache@v4
id: cache id: cache
@@ -42,12 +51,6 @@ jobs:
path: ~/dependencies/ path: ~/dependencies/
key: ${{ runner.os }}-dependencies key: ${{ runner.os }}-dependencies
- name: pip cache (linux)
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip
- name: TA binary *nix - name: TA binary *nix
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
run: | run: |
@@ -55,24 +58,30 @@ jobs:
- name: Installation - *nix - name: Installation - *nix
run: | run: |
python -m pip install --upgrade pip wheel uv pip install --upgrade wheel
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
export TA_LIBRARY_PATH=${HOME}/dependencies/lib export TA_LIBRARY_PATH=${HOME}/dependencies/lib
export TA_INCLUDE_PATH=${HOME}/dependencies/include export TA_INCLUDE_PATH=${HOME}/dependencies/include
pip install -r requirements-dev.txt uv pip install -r requirements-dev.txt
pip install -e ft_client/ uv pip install -e ft_client/
pip install -e . uv pip install -e .
- name: Check for version alignment - name: Check for version alignment
run: | run: |
python build_helpers/freqtrade_client_version_align.py python build_helpers/freqtrade_client_version_align.py
- name: Tests - name: Tests
if: (!(runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-22.04'))
run: |
pytest --random-order
- name: Tests with Coveralls
if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-22.04')
run: | run: |
pytest --random-order --cov=freqtrade --cov=freqtrade_client --cov-config=.coveragerc pytest --random-order --cov=freqtrade --cov=freqtrade_client --cov-config=.coveragerc
- name: Coveralls - name: Coveralls
if: (runner.os == 'Linux' && matrix.python-version == '3.10' && matrix.os == 'ubuntu-22.04') if: (runner.os == 'Linux' && matrix.python-version == '3.12' && matrix.os == 'ubuntu-22.04')
env: env:
# Coveralls token. Not used as secret due to github not providing secrets to forked repositories # Coveralls token. Not used as secret due to github not providing secrets to forked repositories
COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu COVERALLS_REPO_TOKEN: 6D1m0xupS3FgutfuGao8keFf9Hc0FpIXu
@@ -85,6 +94,11 @@ jobs:
run: | run: |
python build_helpers/extract_config_json_schema.py python build_helpers/extract_config_json_schema.py
- name: Run command docs partials extract
# This should be kept before the repository check to ensure that the docs are up-to-date
run: |
python build_helpers/create_command_partials.py
- name: Check for repository changes - name: Check for repository changes
run: | run: |
if [ -n "$(git status --porcelain)" ]; then if [ -n "$(git status --porcelain)" ]; then
@@ -138,11 +152,8 @@ jobs:
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
matrix: matrix:
os: [ "macos-12", "macos-13", "macos-14" ] os: [ "macos-13", "macos-14", "macos-15" ]
python-version: ["3.9", "3.10", "3.11", "3.12"] python-version: ["3.10", "3.11", "3.12"]
exclude:
- os: "macos-14"
python-version: "3.9"
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -153,6 +164,15 @@ jobs:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
check-latest: true check-latest: true
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
cache-dependency-glob: "requirements**.txt"
cache-suffix: "${{ matrix.python-version }}"
prune-cache: false
- name: Cache_dependencies - name: Cache_dependencies
uses: actions/cache@v4 uses: actions/cache@v4
id: cache id: cache
@@ -160,12 +180,6 @@ jobs:
path: ~/dependencies/ path: ~/dependencies/
key: ${{ matrix.os }}-dependencies key: ${{ matrix.os }}-dependencies
- name: pip cache (macOS)
uses: actions/cache@v4
with:
path: ~/Library/Caches/pip
key: ${{ matrix.os }}-${{ matrix.python-version }}-pip
- name: TA binary *nix - name: TA binary *nix
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
run: | run: |
@@ -193,17 +207,17 @@ jobs:
rm /usr/local/bin/python3.11-config || true rm /usr/local/bin/python3.11-config || true
rm /usr/local/bin/python3.12-config || true rm /usr/local/bin/python3.12-config || true
brew install hdf5 c-blosc libomp brew install libomp
- name: Installation (python) - name: Installation (python)
run: | run: |
python -m pip install --upgrade pip wheel uv pip install wheel
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
export TA_LIBRARY_PATH=${HOME}/dependencies/lib export TA_LIBRARY_PATH=${HOME}/dependencies/lib
export TA_INCLUDE_PATH=${HOME}/dependencies/include export TA_INCLUDE_PATH=${HOME}/dependencies/include
pip install -r requirements-dev.txt uv pip install -r requirements-dev.txt
pip install -e ft_client/ uv pip install -e ft_client/
pip install -e . uv pip install -e .
- name: Tests - name: Tests
run: | run: |
@@ -263,7 +277,7 @@ jobs:
strategy: strategy:
matrix: matrix:
os: [ windows-latest ] os: [ windows-latest ]
python-version: ["3.9", "3.10", "3.11", "3.12"] python-version: ["3.10", "3.11", "3.12"]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -273,19 +287,25 @@ jobs:
with: with:
python-version: ${{ matrix.python-version }} python-version: ${{ matrix.python-version }}
- name: Pip cache (Windows) - name: Install uv
uses: actions/cache@v4 uses: astral-sh/setup-uv@v5
with: with:
path: ~\AppData\Local\pip\Cache enable-cache: true
key: ${{ matrix.os }}-${{ matrix.python-version }}-pip python-version: ${{ matrix.python-version }}
cache-dependency-glob: "requirements**.txt"
cache-suffix: "${{ matrix.python-version }}"
prune-cache: false
- name: Installation - name: Installation
run: | run: |
function uvpipFunction { uv pip $args }
Set-Alias -name pip -value uvpipFunction
./build_helpers/install_windows.ps1 ./build_helpers/install_windows.ps1
- name: Tests - name: Tests
run: | run: |
pytest --random-order pytest --random-order --durations 20 -n auto
- name: Check for repository changes - name: Check for repository changes
run: | run: |
@@ -406,6 +426,15 @@ jobs:
with: with:
python-version: "3.12" python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: "3.12"
cache-dependency-glob: "requirements**.txt"
cache-suffix: "3.12"
prune-cache: false
- name: Cache_dependencies - name: Cache_dependencies
uses: actions/cache@v4 uses: actions/cache@v4
id: cache id: cache
@@ -413,11 +442,6 @@ jobs:
path: ~/dependencies/ path: ~/dependencies/
key: ${{ runner.os }}-dependencies key: ${{ runner.os }}-dependencies
- name: pip cache (linux)
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: test-${{ matrix.os }}-${{ matrix.python-version }}-pip
- name: TA binary *nix - name: TA binary *nix
if: steps.cache.outputs.cache-hit != 'true' if: steps.cache.outputs.cache-hit != 'true'
@@ -426,13 +450,13 @@ jobs:
- name: Installation - *nix - name: Installation - *nix
run: | run: |
python -m pip install --upgrade pip wheel uv pip install --upgrade wheel
export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH=${HOME}/dependencies/lib:$LD_LIBRARY_PATH
export TA_LIBRARY_PATH=${HOME}/dependencies/lib export TA_LIBRARY_PATH=${HOME}/dependencies/lib
export TA_INCLUDE_PATH=${HOME}/dependencies/include export TA_INCLUDE_PATH=${HOME}/dependencies/include
pip install -r requirements-dev.txt uv pip install -r requirements-dev.txt
pip install -e ft_client/ uv pip install -e ft_client/
pip install -e . uv pip install -e .
- name: Tests incl. ccxt compatibility tests - name: Tests incl. ccxt compatibility tests
env: env:
@@ -514,13 +538,40 @@ jobs:
ft_client/dist ft_client/dist
retention-days: 10 retention-days: 10
deploy-pypi: deploy-test-pypi:
name: "Deploy to PyPI" name: "Publish Python 🐍 distribution 📦 to TestPyPI"
needs: [ build ] needs: [ build ]
runs-on: ubuntu-22.04 runs-on: ubuntu-22.04
if: (github.event_name == 'release') if: (github.event_name == 'release')
environment: environment:
name: release name: testpypi
url: https://test.pypi.org/p/freqtrade
permissions:
id-token: write
steps:
- uses: actions/checkout@v4
- name: Download artifact 📦
uses: actions/download-artifact@v4
with:
pattern: freqtrade*-build
path: dist
merge-multiple: true
- name: Publish to PyPI (Test)
uses: pypa/gh-action-pypi-publish@v1.12.4
with:
repository-url: https://test.pypi.org/legacy/
deploy-pypi:
name: "Publish Python 🐍 distribution 📦 to PyPI"
needs: [ build ]
runs-on: ubuntu-22.04
if: (github.event_name == 'release')
environment:
name: pypi
url: https://pypi.org/p/freqtrade url: https://pypi.org/p/freqtrade
permissions: permissions:
id-token: write id-token: write
@@ -535,14 +586,8 @@ jobs:
path: dist path: dist
merge-multiple: true merge-multiple: true
- name: Publish to PyPI (Test)
uses: pypa/gh-action-pypi-publish@v1.9.0
with:
repository-url: https://test.pypi.org/legacy/
- name: Publish to PyPI - name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@v1.9.0 uses: pypa/gh-action-pypi-publish@v1.12.4
deploy-docker: deploy-docker:

View File

@@ -26,7 +26,7 @@ jobs:
- name: Run auto-update - name: Run auto-update
run: pre-commit autoupdate run: pre-commit autoupdate
- uses: peter-evans/create-pull-request@v6 - uses: peter-evans/create-pull-request@v7
with: with:
token: ${{ secrets.REPO_SCOPED_TOKEN }} token: ${{ secrets.REPO_SCOPED_TOKEN }}
add-paths: .pre-commit-config.yaml add-paths: .pre-commit-config.yaml

View File

@@ -9,21 +9,21 @@ repos:
# stages: [push] # stages: [push]
- repo: https://github.com/pre-commit/mirrors-mypy - repo: https://github.com/pre-commit/mirrors-mypy
rev: "v1.11.2" rev: "v1.14.1"
hooks: hooks:
- id: mypy - id: mypy
exclude: build_helpers exclude: build_helpers
additional_dependencies: additional_dependencies:
- types-cachetools==5.5.0.20240820 - types-cachetools==5.5.0.20240820
- types-filelock==3.2.7 - types-filelock==3.2.7
- types-requests==2.32.0.20240712 - types-requests==2.32.0.20241016
- types-tabulate==0.9.0.20240106 - types-tabulate==0.9.0.20241207
- types-python-dateutil==2.9.0.20240821 - types-python-dateutil==2.9.0.20241206
- SQLAlchemy==2.0.32 - SQLAlchemy==2.0.37
# stages: [push] # stages: [push]
- repo: https://github.com/pycqa/isort - repo: https://github.com/pycqa/isort
rev: "5.13.2" rev: "6.0.0"
hooks: hooks:
- id: isort - id: isort
name: isort (python) name: isort (python)
@@ -31,12 +31,13 @@ repos:
- repo: https://github.com/charliermarsh/ruff-pre-commit - repo: https://github.com/charliermarsh/ruff-pre-commit
# Ruff version. # Ruff version.
rev: 'v0.6.2' rev: 'v0.9.3'
hooks: hooks:
- id: ruff - id: ruff
- id: ruff-format
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.6.0 rev: v5.0.0
hooks: hooks:
- id: end-of-file-fixer - id: end-of-file-fixer
exclude: | exclude: |
@@ -55,8 +56,13 @@ repos:
.*\.md .*\.md
)$ )$
- repo: https://github.com/stefmolin/exif-stripper
rev: 0.6.1
hooks:
- id: strip-exif
- repo: https://github.com/codespell-project/codespell - repo: https://github.com/codespell-project/codespell
rev: v2.3.0 rev: v2.4.0
hooks: hooks:
- id: codespell - id: codespell
additional_dependencies: additional_dependencies:

View File

@@ -1,4 +1,4 @@
FROM python:3.12.5-slim-bookworm as base FROM python:3.12.7-slim-bookworm as base
# Setup env # Setup env
ENV LANG C.UTF-8 ENV LANG C.UTF-8
@@ -11,7 +11,7 @@ ENV FT_APP_ENV="docker"
# Prepare environment # Prepare environment
RUN mkdir /freqtrade \ RUN mkdir /freqtrade \
&& apt-get update \ && apt-get update \
&& apt-get -y install sudo libatlas3-base curl sqlite3 libhdf5-serial-dev libgomp1 \ && apt-get -y install sudo libatlas3-base curl sqlite3 libgomp1 \
&& apt-get clean \ && apt-get clean \
&& useradd -u 1000 -G sudo -U -m -s /bin/bash ftuser \ && useradd -u 1000 -G sudo -U -m -s /bin/bash ftuser \
&& chown ftuser:ftuser /freqtrade \ && chown ftuser:ftuser /freqtrade \

View File

@@ -30,16 +30,20 @@ Please read the [exchange specific notes](docs/exchanges.md) to learn about even
- [X] [Binance](https://www.binance.com/) - [X] [Binance](https://www.binance.com/)
- [X] [Bitmart](https://bitmart.com/) - [X] [Bitmart](https://bitmart.com/)
- [X] [BingX](https://bingx.com/invite/0EM9RX) - [X] [BingX](https://bingx.com/invite/0EM9RX)
- [X] [Bybit](https://bybit.com/)
- [X] [Gate.io](https://www.gate.io/ref/6266643) - [X] [Gate.io](https://www.gate.io/ref/6266643)
- [X] [HTX](https://www.htx.com/) (Former Huobi) - [X] [HTX](https://www.htx.com/)
- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)
- [X] [Kraken](https://kraken.com/) - [X] [Kraken](https://kraken.com/)
- [X] [OKX](https://okx.com/) (Former OKEX) - [X] [OKX](https://okx.com/)
- [X] [MyOKX](https://okx.com/) (OKX EEA)
- [ ] [potentially many others](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_ - [ ] [potentially many others](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_
### Supported Futures Exchanges (experimental) ### Supported Futures Exchanges (experimental)
- [X] [Binance](https://www.binance.com/) - [X] [Binance](https://www.binance.com/)
- [X] [Gate.io](https://www.gate.io/ref/6266643) - [X] [Gate.io](https://www.gate.io/ref/6266643)
- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)
- [X] [OKX](https://okx.com/) - [X] [OKX](https://okx.com/)
- [X] [Bybit](https://bybit.com/) - [X] [Bybit](https://bybit.com/)
@@ -60,7 +64,7 @@ Please find the complete documentation on the [freqtrade website](https://www.fr
## Features ## Features
- [x] **Based on Python 3.9+**: For botting on any operating system - Windows, macOS and Linux. - [x] **Based on Python 3.10+**: For botting on any operating system - Windows, macOS and Linux.
- [x] **Persistence**: Persistence is achieved through sqlite. - [x] **Persistence**: Persistence is achieved through sqlite.
- [x] **Dry-run**: Run the bot without paying money. - [x] **Dry-run**: Run the bot without paying money.
- [x] **Backtesting**: Run a simulation of your buy/sell strategy. - [x] **Backtesting**: Run a simulation of your buy/sell strategy.
@@ -86,13 +90,13 @@ For further (native) installation methods, please refer to the [Installation doc
``` ```
usage: freqtrade [-h] [-V] usage: freqtrade [-h] [-V]
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis} {trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
... ...
Free, open source crypto trading bot Free, open source crypto trading bot
positional arguments: positional arguments:
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis} {trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
trade Trade module. trade Trade module.
create-userdir Create user-data directory. create-userdir Create user-data directory.
new-config Create new config new-config Create new config
@@ -116,6 +120,7 @@ positional arguments:
list-markets Print markets on exchange. list-markets Print markets on exchange.
list-pairs Print pairs on exchange. list-pairs Print pairs on exchange.
list-strategies Print available strategies. list-strategies Print available strategies.
list-hyperoptloss Print available hyperopt loss functions.
list-freqaimodels Print available freqAI models. list-freqaimodels Print available freqAI models.
list-timeframes Print available timeframes for the exchange. list-timeframes Print available timeframes for the exchange.
show-trades Show trades. show-trades Show trades.
@@ -132,7 +137,6 @@ positional arguments:
options: options:
-h, --help show this help message and exit -h, --help show this help message and exit
-V, --version show program's version number and exit -V, --version show program's version number and exit
``` ```
### Telegram RPC commands ### Telegram RPC commands
@@ -217,7 +221,7 @@ To run this bot we recommend you a cloud instance with a minimum of:
### Software requirements ### Software requirements
- [Python >= 3.9](http://docs.python-guide.org/en/latest/starting/installation/) - [Python >= 3.10](http://docs.python-guide.org/en/latest/starting/installation/)
- [pip](https://pip.pypa.io/en/stable/installing/) - [pip](https://pip.pypa.io/en/stable/installing/)
- [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [TA-Lib](https://ta-lib.github.io/ta-lib-python/) - [TA-Lib](https://ta-lib.github.io/ta-lib-python/)

View File

@@ -0,0 +1,53 @@
import subprocess
from pathlib import Path
subcommands = [
"trade",
"create-userdir",
"new-config",
"show-config",
"new-strategy",
"download-data",
"convert-data",
"convert-trade-data",
"trades-to-ohlcv",
"list-data",
"backtesting",
"backtesting-show",
"backtesting-analysis",
"edge",
"hyperopt",
"hyperopt-list",
"hyperopt-show",
"list-exchanges",
"list-markets",
"list-pairs",
"list-strategies",
"list-hyperoptloss",
"list-freqaimodels",
"list-timeframes",
"show-trades",
"test-pairlist",
"convert-db",
"install-ui",
"plot-dataframe",
"plot-profit",
"webserver",
"strategy-updater",
"lookahead-analysis",
"recursive-analysis",
]
result = subprocess.run(["freqtrade", "--help"], capture_output=True, text=True)
with Path("docs/commands/main.md").open("w") as f:
f.write(f"```\n{result.stdout}\n```\n")
for command in subcommands:
print(f"Running for {command}")
result = subprocess.run(["freqtrade", command, "--help"], capture_output=True, text=True)
with Path(f"docs/commands/{command}.md").open("w") as f:
f.write(f"```\n{result.stdout}\n```\n")

View File

@@ -1,11 +1,10 @@
# vendored Wheels compiled via https://github.com/xmatthias/ta-lib-python/tree/ta_bundled_040 # vendored Wheels compiled via https://github.com/xmatthias/ta-lib-python/tree/ta_bundled_040
python -m pip install --upgrade pip wheel python -m pip install --upgrade pip
python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')"
$pyv = python -c "import sys; print(f'{sys.version_info.major}.{sys.version_info.minor}')" pip install -U wheel "numpy<2"
pip install --only-binary ta-lib --find-links=build_helpers\ ta-lib
pip install --find-links=build_helpers\ --prefer-binary TA-Lib
pip install -r requirements-dev.txt pip install -r requirements-dev.txt
pip install -e . pip install -e .

View File

@@ -13,6 +13,10 @@
"description": "The timeframe to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). \nUsually specified in the strategy and missing in the configuration.", "description": "The timeframe to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). \nUsually specified in the strategy and missing in the configuration.",
"type": "string" "type": "string"
}, },
"proxy_coin": {
"description": "Proxy coin - must be used for specific futures modes (e.g. BNFCR)",
"type": "string"
},
"stake_currency": { "stake_currency": {
"description": "Currency used for staking.", "description": "Currency used for staking.",
"type": "string" "type": "string"
@@ -102,8 +106,17 @@
}, },
"dry_run_wallet": { "dry_run_wallet": {
"description": "Initial wallet balance for dry run mode.", "description": "Initial wallet balance for dry run mode.",
"type": "number", "type": [
"default": 1000 "number",
"object"
],
"default": 1000,
"patternProperties": {
"^[a-zA-Z0-9]+$": {
"type": "number"
}
},
"additionalProperties": false
}, },
"cancel_open_orders_on_exit": { "cancel_open_orders_on_exit": {
"description": "Cancel open orders when exiting.", "description": "Cancel open orders when exiting.",
@@ -579,57 +592,6 @@
] ]
} }
}, },
"protections": {
"description": "Configuration for various protections.",
"type": "array",
"items": {
"type": "object",
"properties": {
"method": {
"description": "Method used for the protection.",
"type": "string",
"enum": [
"CooldownPeriod",
"LowProfitPairs",
"MaxDrawdown",
"StoplossGuard"
]
},
"stop_duration": {
"description": "Duration to lock the pair after a protection is triggered, in minutes.",
"type": "number",
"minimum": 0.0
},
"stop_duration_candles": {
"description": "Duration to lock the pair after a protection is triggered, in number of candles.",
"type": "number",
"minimum": 0
},
"unlock_at": {
"description": "Time when trading will be unlocked regularly. Format: HH:MM",
"type": "string"
},
"trade_limit": {
"description": "Minimum number of trades required during lookback period.",
"type": "number",
"minimum": 1
},
"lookback_period": {
"description": "Period to look back for protection checks, in minutes.",
"type": "number",
"minimum": 1
},
"lookback_period_candles": {
"description": "Period to look back for protection checks, in number of candles.",
"type": "number",
"minimum": 1
}
},
"required": [
"method"
]
}
},
"telegram": { "telegram": {
"description": "Telegram settings.", "description": "Telegram settings.",
"type": "object", "type": "object",
@@ -643,7 +605,11 @@
"type": "string" "type": "string"
}, },
"chat_id": { "chat_id": {
"description": "Telegram chat ID", "description": "Telegram chat or group ID",
"type": "string"
},
"topic_id": {
"description": "Telegram topic ID - only applicable for group chats",
"type": "string" "type": "string"
}, },
"allow_custom_messages": { "allow_custom_messages": {
@@ -733,12 +699,18 @@
}, },
"exit_fill": { "exit_fill": {
"description": "Telegram setting for exit fill signals.", "description": "Telegram setting for exit fill signals.",
"type": [
"string",
"object"
],
"additionalProperties": {
"type": "string", "type": "string",
"enum": [ "enum": [
"on", "on",
"off", "off",
"silent" "silent"
], ]
},
"default": "on" "default": "on"
}, },
"exit_cancel": { "exit_cancel": {
@@ -1007,7 +979,7 @@
"type": "string" "type": "string"
} }
}, },
"x": { "verbosity": {
"description": "Logging verbosity level.", "description": "Logging verbosity level.",
"type": "string", "type": "string",
"enum": [ "enum": [
@@ -1083,7 +1055,6 @@
"enum": [ "enum": [
"json", "json",
"jsongz", "jsongz",
"hdf5",
"feather", "feather",
"parquet" "parquet"
], ],
@@ -1095,7 +1066,6 @@
"enum": [ "enum": [
"json", "json",
"jsongz", "jsongz",
"hdf5",
"feather", "feather",
"parquet" "parquet"
], ],
@@ -1434,6 +1404,11 @@
"type": "string", "type": "string",
"default": "example" "default": "example"
}, },
"wait_for_training_iteration_on_reload": {
"description": "Wait for the next training iteration to complete after /reload or ctrl+c.",
"type": "boolean",
"default": true
},
"feature_parameters": { "feature_parameters": {
"description": "The parameters used to engineer the feature set", "description": "The parameters used to engineer the feature set",
"type": "object", "type": "object",

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
FROM python:3.11.9-slim-bookworm as base FROM python:3.11.10-slim-bookworm as base
# Setup env # Setup env
ENV LANG C.UTF-8 ENV LANG C.UTF-8
@@ -11,7 +11,7 @@ ENV FT_APP_ENV="docker"
# Prepare environment # Prepare environment
RUN mkdir /freqtrade \ RUN mkdir /freqtrade \
&& apt-get update \ && apt-get update \
&& apt-get -y install sudo libatlas3-base libopenblas-dev curl sqlite3 libhdf5-dev libutf8proc-dev libsnappy-dev \ && apt-get -y install sudo libatlas3-base libopenblas-dev curl sqlite3 libutf8proc-dev libsnappy-dev \
&& apt-get clean \ && apt-get clean \
&& useradd -u 1000 -G sudo -U -m ftuser \ && useradd -u 1000 -G sudo -U -m ftuser \
&& chown ftuser:ftuser /freqtrade \ && chown ftuser:ftuser /freqtrade \

View File

@@ -18,15 +18,13 @@ freqtrade backtesting -c <config.json> --timeframe <tf> --strategy <strategy_nam
``` ```
This will tell freqtrade to output a pickled dictionary of strategy, pairs and corresponding This will tell freqtrade to output a pickled dictionary of strategy, pairs and corresponding
DataFrame of the candles that resulted in buy signals. Depending on how many buys your strategy DataFrame of the candles that resulted in entry and exit signals.
makes, this file may get quite large, so periodically check your `user_data/backtest_results` Depending on how many entries your strategy makes, this file may get quite large, so periodically check your `user_data/backtest_results` folder to delete old exports.
folder to delete old exports.
Before running your next backtest, make sure you either delete your old backtest results or run Before running your next backtest, make sure you either delete your old backtest results or run
backtesting with the `--cache none` option to make sure no cached results are used. backtesting with the `--cache none` option to make sure no cached results are used.
If all goes well, you should now see a `backtest-result-{timestamp}_signals.pkl` file in the If all goes well, you should now see a `backtest-result-{timestamp}_signals.pkl` and `backtest-result-{timestamp}_exited.pkl` files in the `user_data/backtest_results` folder.
`user_data/backtest_results` folder.
To analyze the entry/exit tags, we now need to use the `freqtrade backtesting-analysis` command To analyze the entry/exit tags, we now need to use the `freqtrade backtesting-analysis` command
with `--analysis-groups` option provided with space-separated arguments: with `--analysis-groups` option provided with space-separated arguments:
@@ -103,6 +101,10 @@ The indicators have to be present in your strategy's main DataFrame (either for
timeframe or for informative timeframes) otherwise they will simply be ignored in the script timeframe or for informative timeframes) otherwise they will simply be ignored in the script
output. output.
!!! Note "Indicator List"
The indicator values will be displayed for both entry and exit points. If `--indicator-list all` is specified,
only the indicators at the entry point will be shown to avoid excessively large lists, which could occur depending on the strategy.
There are a range of candle and trade-related fields that are included in the analysis so are There are a range of candle and trade-related fields that are included in the analysis so are
automatically accessible by including them on the indicator-list, and these include: automatically accessible by including them on the indicator-list, and these include:
@@ -118,6 +120,53 @@ automatically accessible by including them on the indicator-list, and these incl
- **profit_ratio :** trade profit ratio - **profit_ratio :** trade profit ratio
- **profit_abs :** absolute profit return of the trade - **profit_abs :** absolute profit return of the trade
#### Sample Output for Indicator Values
```bash
freqtrade backtesting-analysis -c user_data/config.json --analysis-groups 0 --indicator-list chikou_span tenkan_sen
```
In this example,
we aim to display the `chikou_span` and `tenkan_sen` indicator values at both the entry and exit points of trades.
A sample output for indicators might look like this:
| pair | open_date | enter_reason | exit_reason | chikou_span (entry) | tenkan_sen (entry) | chikou_span (exit) | tenkan_sen (exit) |
|-----------|---------------------------|--------------|-------------|---------------------|--------------------|--------------------|-------------------|
| DOGE/USDT | 2024-07-06 00:35:00+00:00 | | exit_signal | 0.105 | 0.106 | 0.105 | 0.107 |
| BTC/USDT | 2024-08-05 14:20:00+00:00 | | roi | 54643.440 | 51696.400 | 54386.000 | 52072.010 |
As shown in the table, `chikou_span (entry)` represents the indicator value at the time of trade entry,
while `chikou_span (exit)` reflects its value at the time of exit.
This detailed view of indicator values enhances the analysis.
The `(entry)` and `(exit)` suffixes are added to indicators
to distinguish the values at the entry and exit points of the trade.
!!! Note "Trade-wide Indicators"
Certain trade-wide indicators do not have the `(entry)` or `(exit)` suffix. These indicators include: `pair`, `stake_amount`,
`max_stake_amount`, `amount`, `open_date`, `close_date`, `open_rate`, `close_rate`, `fee_open`, `fee_close`, `trade_duration`,
`profit_ratio`, `profit_abs`, `exit_reason`,`initial_stop_loss_abs`, `initial_stop_loss_ratio`, `stop_loss_abs`, `stop_loss_ratio`,
`min_rate`, `max_rate`, `is_open`, `enter_tag`, `leverage`, `is_short`, `open_timestamp`, `close_timestamp` and `orders`
#### Filtering Indicators Based on Entry or Exit Signals
The `--indicator-list` option, by default, displays indicator values for both entry and exit signals. To filter the indicator values exclusively for entry signals, you can use the `--entry-only` argument. Similarly, to display indicator values only at exit signals, use the `--exit-only` argument.
Example: Display indicator values at entry signals:
```bash
freqtrade backtesting-analysis -c user_data/config.json --analysis-groups 0 --indicator-list chikou_span tenkan_sen --entry-only
```
Example: Display indicator values at exit signals:
```bash
freqtrade backtesting-analysis -c user_data/config.json --analysis-groups 0 --indicator-list chikou_span tenkan_sen --exit-only
```
!!! note
When using these filters, the indicator names will not be suffixed with `(entry)` or `(exit)`.
### Filtering the trade output by date ### Filtering the trade output by date

View File

@@ -37,8 +37,9 @@ class SuperDuperHyperOptLoss(IHyperOptLoss):
min_date: datetime, min_date: datetime,
max_date: datetime, max_date: datetime,
config: Config, config: Config,
processed: Dict[str, DataFrame], processed: dict[str, DataFrame],
backtest_stats: Dict[str, Any], backtest_stats: dict[str, Any],
starting_balance: float,
**kwargs, **kwargs,
) -> float: ) -> float:
""" """
@@ -70,6 +71,7 @@ Currently, the arguments are:
* `config`: Config object used (Note: Not all strategy-related parameters will be updated here if they are part of a hyperopt space). * `config`: Config object used (Note: Not all strategy-related parameters will be updated here if they are part of a hyperopt space).
* `processed`: Dict of Dataframes with the pair as keys containing the data used for backtesting. * `processed`: Dict of Dataframes with the pair as keys containing the data used for backtesting.
* `backtest_stats`: Backtesting statistics using the same format as the backtesting file "strategy" substructure. Available fields can be seen in `generate_strategy_stats()` in `optimize_reports.py`. * `backtest_stats`: Backtesting statistics using the same format as the backtesting file "strategy" substructure. Available fields can be seen in `generate_strategy_stats()` in `optimize_reports.py`.
* `starting_balance`: Starting balance used for backtesting.
This function needs to return a floating point number (`float`). Smaller numbers will be interpreted as better results. The parameters and balancing for this is up to you. This function needs to return a floating point number (`float`). Smaller numbers will be interpreted as better results. The parameters and balancing for this is up to you.
@@ -103,7 +105,7 @@ class MyAwesomeStrategy(IStrategy):
SKDecimal(0.01, 0.20, decimals=3, name='roi_p3'), SKDecimal(0.01, 0.20, decimals=3, name='roi_p3'),
] ]
def generate_roi_table(params: Dict) -> Dict[int, float]: def generate_roi_table(params: Dict) -> dict[int, float]:
roi_table = {} roi_table = {}
roi_table[0] = params['roi_p1'] + params['roi_p2'] + params['roi_p3'] roi_table[0] = params['roi_p1'] + params['roi_p2'] + params['roi_p3']

View File

@@ -4,6 +4,7 @@ This guide walks you through utilizing public trade data for advanced orderflow
!!! Warning "Experimental Feature" !!! Warning "Experimental Feature"
The orderflow feature is currently in beta and may be subject to changes in future releases. Please report any issues or feedback on the [Freqtrade GitHub repository](https://github.com/freqtrade/freqtrade/issues). The orderflow feature is currently in beta and may be subject to changes in future releases. Please report any issues or feedback on the [Freqtrade GitHub repository](https://github.com/freqtrade/freqtrade/issues).
It's also currently not been tested with freqAI - and combining these two features is considered out of scope at this point.
!!! Warning "Performance" !!! Warning "Performance"
Orderflow requires raw trades data. This data is rather large, and can cause a slow initial startup, when freqtrade needs to download the trades data for the last X candles. Additionally, enabling this feature will cause increased memory usage. Please ensure to have sufficient resources available. Orderflow requires raw trades data. This data is rather large, and can cause a slow initial startup, when freqtrade needs to download the trades data for the last X candles. Additionally, enabling this feature will cause increased memory usage. Please ensure to have sufficient resources available.
@@ -69,8 +70,8 @@ dataframe["delta"] # Difference between ask and bid volume.
dataframe["min_delta"] # Minimum delta within the candle dataframe["min_delta"] # Minimum delta within the candle
dataframe["max_delta"] # Maximum delta within the candle dataframe["max_delta"] # Maximum delta within the candle
dataframe["total_trades"] # Total number of trades dataframe["total_trades"] # Total number of trades
dataframe["stacked_imbalances_bid"] # Price level of stacked bid imbalance dataframe["stacked_imbalances_bid"] # List of price levels of stacked bid imbalance range beginnings
dataframe["stacked_imbalances_ask"] # Price level of stacked ask imbalance dataframe["stacked_imbalances_ask"] # List of price levels of stacked ask imbalance range beginnings
``` ```
You can access these columns in your strategy code for further analysis. Here's an example: You can access these columns in your strategy code for further analysis. Here's an example:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -7,103 +7,7 @@ To learn how to get data for the pairs and exchange you're interested in, head o
## Backtesting command reference ## Backtesting command reference
``` --8<-- "commands/backtesting.md"
usage: freqtrade backtesting [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,hdf5}]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
[-p PAIRS [PAIRS ...]] [--eps] [--dmmp]
[--enable-protections]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--export {none,trades,signals}]
[--export-filename PATH]
[--breakdown {day,week,month} [{day,week,month} ...]]
[--cache {none,day,week,month}]
optional arguments:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking).
--dmmp, --disable-max-market-positions
Disable applying `max_open_trades` during backtest
(same as setting `max_open_trades` to a very high
number).
--enable-protections, --enableprotections
Enable protections for backtesting.Will slow
backtesting down by a considerable amount, but will
include configured protections
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
Starting balance, used for backtesting / hyperopt and
dry-runs.
--timeframe-detail TIMEFRAME_DETAIL
Specify detail timeframe for backtesting (`1m`, `5m`,
`30m`, `1h`, `1d`).
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a space-separated list of strategies to
backtest. Please note that timeframe needs to be set
either in config or via command line. When using this
together with `--export trades`, the strategy-name is
injected into the filename (so `backtest-data.json`
becomes `backtest-data-SampleStrategy.json`
--export {none,trades,signals}
Export backtest results (default: trades).
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--breakdown {day,week,month} [{day,week,month} ...]
Show backtesting breakdown per [day, week, month].
--cache {none,day,week,month}
Load a cached backtest result no older than specified
age (default: day).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
## Test your strategy with Backtesting ## Test your strategy with Backtesting
@@ -293,6 +197,7 @@ A backtesting result will look like that:
|-----------------------------+---------------------| |-----------------------------+---------------------|
| Backtesting from | 2019-01-01 00:00:00 | | Backtesting from | 2019-01-01 00:00:00 |
| Backtesting to | 2019-05-01 00:00:00 | | Backtesting to | 2019-05-01 00:00:00 |
| Trading Mode | Spot |
| Max open trades | 3 | | Max open trades | 3 |
| | | | | |
| Total/Daily Avg Trades | 429 / 3.575 | | Total/Daily Avg Trades | 429 / 3.575 |
@@ -398,6 +303,7 @@ It contains some useful key metrics about performance of your strategy on backte
|-----------------------------+---------------------| |-----------------------------+---------------------|
| Backtesting from | 2019-01-01 00:00:00 | | Backtesting from | 2019-01-01 00:00:00 |
| Backtesting to | 2019-05-01 00:00:00 | | Backtesting to | 2019-05-01 00:00:00 |
| Trading Mode | Spot |
| Max open trades | 3 | | Max open trades | 3 |
| | | | | |
| Total/Daily Avg Trades | 429 / 3.575 | | Total/Daily Avg Trades | 429 / 3.575 |
@@ -452,6 +358,7 @@ It contains some useful key metrics about performance of your strategy on backte
- `Backtesting from` / `Backtesting to`: Backtesting range (usually defined with the `--timerange` option). - `Backtesting from` / `Backtesting to`: Backtesting range (usually defined with the `--timerange` option).
- `Max open trades`: Setting of `max_open_trades` (or `--max-open-trades`) - or number of pairs in the pairlist (whatever is lower). - `Max open trades`: Setting of `max_open_trades` (or `--max-open-trades`) - or number of pairs in the pairlist (whatever is lower).
- `Trading Mode`: Spot or Futures trading.
- `Total/Daily Avg Trades`: Identical to the total trades of the backtest output table / Total trades divided by the backtesting duration in days (this will give you information about how many trades to expect from the strategy). - `Total/Daily Avg Trades`: Identical to the total trades of the backtest output table / Total trades divided by the backtesting duration in days (this will give you information about how many trades to expect from the strategy).
- `Starting balance`: Start balance - as given by dry-run-wallet (config or command line). - `Starting balance`: Start balance - as given by dry-run-wallet (config or command line).
- `Final balance`: Final balance - starting balance + absolute profit. - `Final balance`: Final balance - starting balance + absolute profit.
@@ -555,6 +462,7 @@ Since backtesting lacks some detailed information about what happens within a ca
- Stoploss - Stoploss
- ROI - ROI
- Trailing stoploss - Trailing stoploss
- Position reversals (futures only) happen if an entry signal in the other direction than the closing trade triggers at the candle the existing trade closes.
Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode. Taking these assumptions, backtesting tries to mirror real trading as closely as possible. However, backtesting will **never** replace running a strategy in dry-run mode.
Also, keep in mind that past results don't guarantee future success. Also, keep in mind that past results don't guarantee future success.
@@ -569,7 +477,7 @@ These limits are usually listed in the exchange documentation as "trading rules"
Backtesting (as well as live and dry-run) does honor these limits, and will ensure that a stoploss can be placed below this value - so the value will be slightly higher than what the exchange specifies. Backtesting (as well as live and dry-run) does honor these limits, and will ensure that a stoploss can be placed below this value - so the value will be slightly higher than what the exchange specifies.
Freqtrade has however no information about historic limits. Freqtrade has however no information about historic limits.
This can lead to situations where trading-limits are inflated by using a historic price, resulting in minimum amounts > 50$. This can lead to situations where trading-limits are inflated by using a historic price, resulting in minimum amounts > 50\$.
For example: For example:
@@ -600,7 +508,12 @@ To utilize this, you can append `--timeframe-detail 5m` to your regular backtest
freqtrade backtesting --strategy AwesomeStrategy --timeframe 1h --timeframe-detail 5m freqtrade backtesting --strategy AwesomeStrategy --timeframe 1h --timeframe-detail 5m
``` ```
This will load 1h data as well as 5m data for the timeframe. The strategy will be analyzed with the 1h timeframe, and Entry orders will only be placed at the main timeframe, however Order fills and exit signals will be evaluated at the 5m candle, simulating intra-candle movements. This will load 1h data (the main timeframe) as well as 5m data (detail timeframe) for the selected timerange.
The strategy will be analyzed with the 1h timeframe.
Candles where activity may take place (there's an active signal, the pair is in a trade) are evaluated at the 5m timeframe.
This will allow for a more accurate simulation of intra-candle movements - and can lead to different results, especially on higher timeframes.
Entries will generally still happen at the main candle's open, however freed trade slots may be freed earlier (if the exit signal is triggered on the 5m candle), which can then be used for a new trade of a different pair.
All callback functions (`custom_exit()`, `custom_stoploss()`, ... ) will be running for each 5m candle once the trade is opened (so 12 times in the above example of 1h timeframe, and 5m detailed timeframe). All callback functions (`custom_exit()`, `custom_stoploss()`, ... ) will be running for each 5m candle once the trade is opened (so 12 times in the above example of 1h timeframe, and 5m detailed timeframe).
@@ -612,6 +525,27 @@ Also, data must be available / downloaded already.
!!! Tip !!! Tip
You can use this function as the last part of strategy development, to ensure your strategy is not exploiting one of the [backtesting assumptions](#assumptions-made-by-backtesting). Strategies that perform similarly well with this mode have a good chance to perform well in dry/live modes too (although only forward-testing (dry-mode) can really confirm a strategy). You can use this function as the last part of strategy development, to ensure your strategy is not exploiting one of the [backtesting assumptions](#assumptions-made-by-backtesting). Strategies that perform similarly well with this mode have a good chance to perform well in dry/live modes too (although only forward-testing (dry-mode) can really confirm a strategy).
??? Sample "Extreme Difference Example"
Using `--timeframe-detail` on an extreme example (all below pairs have the 10:00 candle with an entry signal) may lead to the following backtesting Trade sequence with 1 max_open_trades:
| Pair | Entry Time | Exit Time | Duration |
|------|------------|-----------| -------- |
| BTC/USDT | 2024-01-01 10:00:00 | 2021-01-01 10:05:00 | 5m |
| ETH/USDT | 2024-01-01 10:05:00 | 2021-01-01 10:15:00 | 10m |
| XRP/USDT | 2024-01-01 10:15:00 | 2021-01-01 10:30:00 | 15m |
| SOL/USDT | 2024-01-01 10:15:00 | 2021-01-01 11:05:00 | 50m |
| BTC/USDT | 2024-01-01 11:05:00 | 2021-01-01 12:00:00 | 55m |
Without timeframe-detail, this would look like:
| Pair | Entry Time | Exit Time | Duration |
|------|------------|-----------| -------- |
| BTC/USDT | 2024-01-01 10:00:00 | 2021-01-01 11:00:00 | 1h |
| BTC/USDT | 2024-01-01 11:00:00 | 2021-01-01 12:00:00 | 1h |
The difference is significant, as without detail data, only the first `max_open_trades` signals per candle are evaluated, and the trade slots are only freed at the end of the candle, allowing for a new trade to be opened at the next candle.
## Backtesting multiple strategies ## Backtesting multiple strategies
To compare multiple strategies, a list of Strategies can be provided to backtesting. To compare multiple strategies, a list of Strategies can be provided to backtesting.

View File

@@ -10,101 +10,11 @@ This page explains the different parameters of the bot and how to run it.
## Bot commands ## Bot commands
``` --8<-- "commands/main.md"
usage: freqtrade [-h] [-V]
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
...
Free, open source crypto trading bot
positional arguments:
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
trade Trade module.
create-userdir Create user-data directory.
new-config Create new config
show-config Show resolved config
new-strategy Create new strategy
download-data Download backtesting data.
convert-data Convert candle (OHLCV) data from one format to
another.
convert-trade-data Convert trade data from one format to another.
trades-to-ohlcv Convert trade data to OHLCV data.
list-data List downloaded data.
backtesting Backtesting module.
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
list-exchanges Print available exchanges.
list-markets Print markets on exchange.
list-pairs Print pairs on exchange.
list-strategies Print available strategies.
list-freqaimodels Print available freqAI models.
list-timeframes Print available timeframes for the exchange.
show-trades Show trades.
test-pairlist Test your pairlist configuration.
convert-db Migrate database to different system
install-ui Install FreqUI
plot-dataframe Plot candles with indicators.
plot-profit Generate plot showing profits.
webserver Webserver module.
strategy-updater updates outdated strategy files to the current version
lookahead-analysis Check for potential look ahead bias.
recursive-analysis Check for potential recursive formula issue.
options:
-h, --help show this help message and exit
-V, --version show program's version number and exit
```
### Bot trading commands ### Bot trading commands
``` --8<-- "commands/trade.md"
usage: freqtrade trade [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [-s NAME] [--strategy-path PATH]
[--db-url PATH] [--sd-notify] [--dry-run]
[--dry-run-wallet DRY_RUN_WALLET]
optional arguments:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--sd-notify Notify systemd service manager.
--dry-run Enforce dry-run for trading (removes Exchange secrets
and simulates trades).
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
Starting balance, used for backtesting / hyperopt and
dry-runs.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
### How to specify which configuration file be used? ### How to specify which configuration file be used?

View File

@@ -0,0 +1,66 @@
```
usage: freqtrade backtesting-analysis [-h] [-v] [--no-color] [--logfile FILE]
[-V] [-c PATH] [-d PATH]
[--userdir PATH]
[--export-filename PATH]
[--analysis-groups {0,1,2,3,4,5} [{0,1,2,3,4,5} ...]]
[--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]]
[--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]]
[--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]]
[--entry-only] [--exit-only]
[--timerange TIMERANGE]
[--rejected-signals] [--analysis-to-csv]
[--analysis-csv-path ANALYSIS_CSV_PATH]
options:
-h, --help show this help message and exit
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--analysis-groups {0,1,2,3,4,5} [{0,1,2,3,4,5} ...]
grouping output - 0: simple wins/losses by enter tag,
1: by enter_tag, 2: by enter_tag and exit_tag, 3: by
pair and enter_tag, 4: by pair, enter_ and exit_tag
(this can get quite large), 5: by exit_tag
--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]
Space separated list of entry signals to analyse.
Default: all. e.g. 'entry_tag_a entry_tag_b'
--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]
Space separated list of exit signals to analyse.
Default: all. e.g. 'exit_tag_a roi stop_loss
trailing_stop_loss'
--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]
Space separated list of indicators to analyse. e.g.
'close rsi bb_lowerband profit_abs'
--entry-only Only analyze entry signals.
--exit-only Only analyze exit signals.
--timerange TIMERANGE
Specify what timerange of data to use.
--rejected-signals Analyse rejected signals
--analysis-to-csv Save selected analysis tables to individual CSVs
--analysis-csv-path ANALYSIS_CSV_PATH
Specify a path to save the analysis CSVs if
--analysis-to-csv is enabled. Default:
user_data/basktesting_results/
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,36 @@
```
usage: freqtrade backtesting-show [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--export-filename PATH] [--show-pair-list]
[--breakdown {day,week,month} [{day,week,month} ...]]
options:
-h, --help show this help message and exit
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--show-pair-list Show backtesting pairlist sorted by profit.
--breakdown {day,week,month} [{day,week,month} ...]
Show backtesting breakdown per [day, week, month].
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,107 @@
```
usage: freqtrade backtesting [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME] [--freqaimodel-path PATH]
[-i TIMEFRAME] [--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
[-p PAIRS [PAIRS ...]] [--eps]
[--enable-protections]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--export {none,trades,signals}]
[--export-filename PATH]
[--breakdown {day,week,month} [{day,week,month} ...]]
[--cache {none,day,week,month}]
[--freqai-backtest-live-models]
options:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking).
--enable-protections, --enableprotections
Enable protections for backtesting.Will slow
backtesting down by a considerable amount, but will
include configured protections
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
Starting balance, used for backtesting / hyperopt and
dry-runs.
--timeframe-detail TIMEFRAME_DETAIL
Specify detail timeframe for backtesting (`1m`, `5m`,
`30m`, `1h`, `1d`).
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a space-separated list of strategies to
backtest. Please note that timeframe needs to be set
either in config or via command line. When using this
together with `--export trades`, the strategy-name is
injected into the filename (so `backtest-data.json`
becomes `backtest-data-SampleStrategy.json`
--export {none,trades,signals}
Export backtest results (default: trades).
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--breakdown {day,week,month} [{day,week,month} ...]
Show backtesting breakdown per [day, week, month].
--cache {none,day,week,month}
Load a cached backtest result no older than specified
age (default: day).
--freqai-backtest-live-models
Run backtest with ready models.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

View File

@@ -0,0 +1,52 @@
```
usage: freqtrade convert-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] --format-from
{json,jsongz,feather,parquet} --format-to
{json,jsongz,feather,parquet} [--erase]
[--exchange EXCHANGE]
[-t TIMEFRAMES [TIMEFRAMES ...]]
[--trading-mode {spot,margin,futures}]
[--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--format-from {json,jsongz,feather,parquet}
Source format for data conversion.
--format-to {json,jsongz,feather,parquet}
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]
Select candle type to convert. Defaults to all
available types.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,12 @@
```
usage: freqtrade convert-db [-h] [--db-url PATH] [--db-url-from PATH]
options:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--db-url-from PATH Source db url to use when migrating a database.
```

View File

@@ -0,0 +1,41 @@
```
usage: freqtrade convert-trade-data [-h] [-v] [--no-color] [--logfile FILE]
[-V] [-c PATH] [-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] --format-from
{json,jsongz,feather,parquet,kraken_csv}
--format-to {json,jsongz,feather,parquet}
[--erase] [--exchange EXCHANGE]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--format-from {json,jsongz,feather,parquet,kraken_csv}
Source format for data conversion.
--format-to {json,jsongz,feather,parquet}
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,10 @@
```
usage: freqtrade create-userdir [-h] [--userdir PATH] [--reset]
options:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
--reset Reset sample files to their original state.
```

View File

@@ -0,0 +1,70 @@
```
usage: freqtrade download-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] [--pairs-file FILE]
[--days INT] [--new-pairs-days INT]
[--include-inactive-pairs]
[--timerange TIMERANGE] [--dl-trades]
[--convert] [--exchange EXCHANGE]
[-t TIMEFRAMES [TIMEFRAMES ...]] [--erase]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[--data-format-trades {json,jsongz,feather,parquet}]
[--trading-mode {spot,margin,futures}]
[--prepend]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--pairs-file FILE File containing a list of pairs. Takes precedence over
--pairs or pairs configured in the configuration.
--days INT Download data for given number of days.
--new-pairs-days INT Download data of new pairs for given number of days.
Default: `None`.
--include-inactive-pairs
Also download data from inactive pairs.
--timerange TIMERANGE
Specify what timerange of data to use.
--dl-trades Download trades instead of OHLCV data.
--convert Convert downloaded trades to OHLCV data. Only
applicable in combination with `--dl-trades`. Will be
automatic for exchanges which don't have historic
OHLCV (e.g. Kraken). If not provided, use `trades-to-
ohlcv` to convert trades data to OHLCV data.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--data-format-trades {json,jsongz,feather,parquet}
Storage format for downloaded trades data. (default:
`feather`).
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--prepend Allow data prepending. (Data-appending is disabled)
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

69
docs/commands/edge.md Normal file
View File

@@ -0,0 +1,69 @@
```
usage: freqtrade edge [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [--recursive-strategy-search]
[--freqaimodel NAME] [--freqaimodel-path PATH]
[-i TIMEFRAME] [--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,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
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
-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).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

View File

@@ -0,0 +1,62 @@
```
usage: freqtrade hyperopt-list [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH] [--best]
[--profitable] [--min-trades INT]
[--max-trades INT] [--min-avg-time FLOAT]
[--max-avg-time FLOAT] [--min-avg-profit FLOAT]
[--max-avg-profit FLOAT]
[--min-total-profit FLOAT]
[--max-total-profit FLOAT]
[--min-objective FLOAT] [--max-objective FLOAT]
[--print-json] [--no-details]
[--hyperopt-filename FILENAME]
[--export-csv FILE]
options:
-h, --help show this help message and exit
--best Select only best epochs.
--profitable Select only profitable epochs.
--min-trades INT Select epochs with more than INT trades.
--max-trades INT Select epochs with less than INT trades.
--min-avg-time FLOAT Select epochs above average time.
--max-avg-time FLOAT Select epochs below average time.
--min-avg-profit FLOAT
Select epochs above average profit.
--max-avg-profit FLOAT
Select epochs below average profit.
--min-total-profit FLOAT
Select epochs above total profit.
--max-total-profit FLOAT
Select epochs below total profit.
--min-objective FLOAT
Select epochs above objective.
--max-objective FLOAT
Select epochs below objective.
--print-json Print output in JSON format.
--no-details Do not print best epoch details.
--hyperopt-filename FILENAME
Hyperopt result filename.Example: `--hyperopt-
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
--export-csv FILE Export to CSV-File. This will disable table print.
Example: --export-csv hyperopt.csv
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,43 @@
```
usage: freqtrade hyperopt-show [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH] [--best]
[--profitable] [-n INT] [--print-json]
[--hyperopt-filename FILENAME] [--no-header]
[--disable-param-export]
[--breakdown {day,week,month} [{day,week,month} ...]]
options:
-h, --help show this help message and exit
--best Select only best epochs.
--profitable Select only profitable epochs.
-n INT, --index INT Specify the index of the epoch to print details for.
--print-json Print output in JSON format.
--hyperopt-filename FILENAME
Hyperopt result filename.Example: `--hyperopt-
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
--no-header Do not print epoch details header.
--disable-param-export
Disable automatic hyperopt parameter export.
--breakdown {day,week,month} [{day,week,month} ...]
Show backtesting breakdown per [day, week, month].
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

121
docs/commands/hyperopt.md Normal file
View File

@@ -0,0 +1,121 @@
```
usage: freqtrade hyperopt [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [--recursive-strategy-search]
[--freqaimodel NAME] [--freqaimodel-path PATH]
[-i TIMEFRAME] [--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
[-p PAIRS [PAIRS ...]] [--hyperopt-path PATH]
[--eps] [--enable-protections]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL] [-e INT]
[--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]]
[--print-all] [--print-json] [-j JOBS]
[--random-state INT] [--min-trades INT]
[--hyperopt-loss NAME] [--disable-param-export]
[--ignore-missing-spaces] [--analyze-per-epoch]
options:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--hyperopt-path PATH Specify additional lookup path for Hyperopt Loss
functions.
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking).
--enable-protections, --enableprotections
Enable protections for backtesting.Will slow
backtesting down by a considerable amount, but will
include configured protections
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
Starting balance, used for backtesting / hyperopt and
dry-runs.
--timeframe-detail TIMEFRAME_DETAIL
Specify detail timeframe for backtesting (`1m`, `5m`,
`30m`, `1h`, `1d`).
-e INT, --epochs INT Specify number of epochs (default: 100).
--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]
Specify which parameters to hyperopt. Space-separated
list.
--print-all Print all results, not only the best ones.
--print-json Print output in JSON format.
-j JOBS, --job-workers JOBS
The number of concurrently running jobs for
hyperoptimization (hyperopt worker processes). If -1
(default), all CPUs are used, for -2, all CPUs but one
are used, etc. If 1 is given, no parallel computing
code is used at all.
--random-state INT Set random state to some positive integer for
reproducible hyperopt results.
--min-trades INT Set minimal desired number of trades for evaluations
in the hyperopt optimization path (default: 1).
--hyperopt-loss NAME, --hyperoptloss NAME
Specify the class name of the hyperopt loss function
class (IHyperOptLoss). Different functions can
generate completely different results, since the
target for optimization is different. Built-in
Hyperopt-loss-functions are:
ShortTradeDurHyperOptLoss, OnlyProfitHyperOptLoss,
SharpeHyperOptLoss, SharpeHyperOptLossDaily,
SortinoHyperOptLoss, SortinoHyperOptLossDaily,
CalmarHyperOptLoss, MaxDrawDownHyperOptLoss,
MaxDrawDownRelativeHyperOptLoss,
ProfitDrawDownHyperOptLoss, MultiMetricHyperOptLoss
--disable-param-export
Disable automatic hyperopt parameter export.
--ignore-missing-spaces, --ignore-unparameterized-spaces
Suppress errors for any requested Hyperopt spaces that
do not contain any parameters.
--analyze-per-epoch Run populate_indicators once per epoch.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

View File

@@ -0,0 +1,11 @@
```
usage: freqtrade install-ui [-h] [--erase] [--ui-version UI_VERSION]
options:
-h, --help show this help message and exit
--erase Clean UI folder, don't download new version.
--ui-version UI_VERSION
Specify a specific version of FreqUI to install. Not
specifying this installs the latest version.
```

View File

@@ -0,0 +1,48 @@
```
usage: freqtrade list-data [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--exchange EXCHANGE]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[--data-format-trades {json,jsongz,feather,parquet}]
[--trades] [-p PAIRS [PAIRS ...]]
[--trading-mode {spot,margin,futures}]
[--show-timerange]
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--data-format-trades {json,jsongz,feather,parquet}
Storage format for downloaded trades data. (default:
`feather`).
--trades Work on trades data instead of OHLCV data.
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--show-timerange Show timerange available for available data. (May take
a while to calculate).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,29 @@
```
usage: freqtrade list-exchanges [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH] [-1] [-a]
options:
-h, --help show this help message and exit
-1, --one-column Print output in one column.
-a, --all Print all exchanges known to the ccxt library.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,31 @@
```
usage: freqtrade list-freqaimodels [-h] [-v] [--no-color] [--logfile FILE]
[-V] [-c PATH] [-d PATH] [--userdir PATH]
[--freqaimodel-path PATH] [-1]
options:
-h, --help show this help message and exit
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
-1, --one-column Print output in one column.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,31 @@
```
usage: freqtrade list-hyperoptloss [-h] [-v] [--no-color] [--logfile FILE]
[-V] [-c PATH] [-d PATH] [--userdir PATH]
[--hyperopt-path PATH] [-1]
options:
-h, --help show this help message and exit
--hyperopt-path PATH Specify additional lookup path for Hyperopt Loss
functions.
-1, --one-column Print output in one column.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,46 @@
```
usage: freqtrade list-markets [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--exchange EXCHANGE] [--print-list]
[--print-json] [-1] [--print-csv]
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
[-a] [--trading-mode {spot,margin,futures}]
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--print-list Print list of pairs or market symbols. By default data
is printed in the tabular format.
--print-json Print list of pairs or market symbols in JSON format.
-1, --one-column Print output in one column.
--print-csv Print exchange pair or market data in the csv format.
--base BASE_CURRENCY [BASE_CURRENCY ...]
Specify base currency(-ies). Space-separated list.
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
Specify quote currency(-ies). Space-separated list.
-a, --all Print all pairs or market symbols. By default only
active ones are shown.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,46 @@
```
usage: freqtrade list-pairs [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--exchange EXCHANGE] [--print-list]
[--print-json] [-1] [--print-csv]
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a]
[--trading-mode {spot,margin,futures}]
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--print-list Print list of pairs or market symbols. By default data
is printed in the tabular format.
--print-json Print list of pairs or market symbols in JSON format.
-1, --one-column Print output in one column.
--print-csv Print exchange pair or market data in the csv format.
--base BASE_CURRENCY [BASE_CURRENCY ...]
Specify base currency(-ies). Space-separated list.
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
Specify quote currency(-ies). Space-separated list.
-a, --all Print all pairs or market symbols. By default only
active ones are shown.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,34 @@
```
usage: freqtrade list-strategies [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--strategy-path PATH] [-1]
[--recursive-strategy-search]
options:
-h, --help show this help message and exit
--strategy-path PATH Specify additional strategy lookup path.
-1, --one-column Print output in one column.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,30 @@
```
usage: freqtrade list-timeframes [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--exchange EXCHANGE] [-1]
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-1, --one-column Print output in one column.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,108 @@
```
usage: freqtrade lookahead-analysis [-h] [-v] [--no-color] [--logfile FILE]
[-V] [-c PATH] [-d PATH] [--userdir PATH]
[-s NAME] [--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME]
[--freqaimodel-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT]
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
[--enable-protections]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--export {none,trades,signals}]
[--export-filename PATH]
[--freqai-backtest-live-models]
[--minimum-trade-amount INT]
[--targeted-trade-amount INT]
[--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME]
options:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--enable-protections, --enableprotections
Enable protections for backtesting.Will slow
backtesting down by a considerable amount, but will
include configured protections
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
Starting balance, used for backtesting / hyperopt and
dry-runs.
--timeframe-detail TIMEFRAME_DETAIL
Specify detail timeframe for backtesting (`1m`, `5m`,
`30m`, `1h`, `1d`).
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a space-separated list of strategies to
backtest. Please note that timeframe needs to be set
either in config or via command line. When using this
together with `--export trades`, the strategy-name is
injected into the filename (so `backtest-data.json`
becomes `backtest-data-SampleStrategy.json`
--export {none,trades,signals}
Export backtest results (default: trades).
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--freqai-backtest-live-models
Run backtest with ready models.
--minimum-trade-amount INT
Minimum trade amount for lookahead-analysis
--targeted-trade-amount INT
Targeted trade amount for lookahead analysis
--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME
Use this csv-filename to store lookahead-analysis-
results
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

51
docs/commands/main.md Normal file
View File

@@ -0,0 +1,51 @@
```
usage: freqtrade [-h] [-V]
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
...
Free, open source crypto trading bot
positional arguments:
{trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-hyperoptloss,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
trade Trade module.
create-userdir Create user-data directory.
new-config Create new config
show-config Show resolved config
new-strategy Create new strategy
download-data Download backtesting data.
convert-data Convert candle (OHLCV) data from one format to
another.
convert-trade-data Convert trade data from one format to another.
trades-to-ohlcv Convert trade data to OHLCV data.
list-data List downloaded data.
backtesting Backtesting module.
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
list-exchanges Print available exchanges.
list-markets Print markets on exchange.
list-pairs Print pairs on exchange.
list-strategies Print available strategies.
list-hyperoptloss Print available hyperopt loss functions.
list-freqaimodels Print available freqAI models.
list-timeframes Print available timeframes for the exchange.
show-trades Show trades.
test-pairlist Test your pairlist configuration.
convert-db Migrate database to different system
install-ui Install FreqUI
plot-dataframe Plot candles with indicators.
plot-profit Generate plot showing profits.
webserver Webserver module.
strategy-updater updates outdated strategy files to the current version
lookahead-analysis Check for potential look ahead bias.
recursive-analysis Check for potential recursive formula issue.
options:
-h, --help show this help message and exit
-V, --version show program's version number and exit
```

View File

@@ -0,0 +1,12 @@
```
usage: freqtrade new-config [-h] [-c PATH]
options:
-h, --help show this help message and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
```

View File

@@ -0,0 +1,19 @@
```
usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME]
[--strategy-path PATH]
[--template {full,minimal,advanced}]
options:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--template {full,minimal,advanced}
Use a template which is either `minimal`, `full`
(containing multiple sample indicators) or `advanced`.
Default: `full`.
```

View File

@@ -0,0 +1,82 @@
```
usage: freqtrade plot-dataframe [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME] [--freqaimodel-path PATH]
[-p PAIRS [PAIRS ...]]
[--indicators1 INDICATORS1 [INDICATORS1 ...]]
[--indicators2 INDICATORS2 [INDICATORS2 ...]]
[--plot-limit INT] [--db-url PATH]
[--trade-source {DB,file}]
[--export {none,trades,signals}]
[--export-filename PATH]
[--timerange TIMERANGE] [-i TIMEFRAME]
[--no-trades]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--indicators1 INDICATORS1 [INDICATORS1 ...]
Set indicators from your strategy you want in the
first row of the graph. Space-separated list. Example:
`ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.
--indicators2 INDICATORS2 [INDICATORS2 ...]
Set indicators from your strategy you want in the
third row of the graph. Space-separated list. Example:
`fastd fastk`. Default: `['macd', 'macdsignal']`.
--plot-limit INT Specify tick limit for plotting. Notice: too high
values cause huge files. Default: 750.
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-source {DB,file}
Specify the source for trades (Can be DB or file
(backtest file)) Default: file
--export {none,trades,signals}
Export backtest results (default: trades).
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--timerange TIMERANGE
Specify what timerange of data to use.
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--no-trades Skip using trades from backtesting file and DB.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

View File

@@ -0,0 +1,68 @@
```
usage: freqtrade plot-profit [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME] [--freqaimodel-path PATH]
[-p PAIRS [PAIRS ...]] [--timerange TIMERANGE]
[--export {none,trades,signals}]
[--export-filename PATH] [--db-url PATH]
[--trade-source {DB,file}] [-i TIMEFRAME]
[--auto-open]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--timerange TIMERANGE
Specify what timerange of data to use.
--export {none,trades,signals}
Export backtest results (default: trades).
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-source {DB,file}
Specify the source for trades (Can be DB or file
(backtest file)) Default: file
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--auto-open Automatically open generated plot.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

View File

@@ -0,0 +1,60 @@
```
usage: freqtrade recursive-analysis [-h] [-v] [--no-color] [--logfile FILE]
[-V] [-c PATH] [-d PATH] [--userdir PATH]
[-s NAME] [--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME]
[--freqaimodel-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[-p PAIRS [PAIRS ...]]
[--startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...]]
options:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...]
Specify startup candles to be checked (`199`, `499`,
`999`, `1999`).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

View File

@@ -0,0 +1,16 @@
```
usage: freqtrade show-config [-h] [--userdir PATH] [-c PATH]
[--show-sensitive]
options:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
--show-sensitive Show secrets in the output.
```

View File

@@ -0,0 +1,37 @@
```
usage: freqtrade show-trades [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--db-url PATH]
[--trade-ids TRADE_IDS [TRADE_IDS ...]]
[--print-json]
options:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-ids TRADE_IDS [TRADE_IDS ...]
Specify the list of trade ids.
--print-json Print output in JSON format.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,41 @@
```
usage: freqtrade strategy-updater [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--strategy-path PATH]
[--recursive-strategy-search]
options:
-h, --help show this help message and exit
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a space-separated list of strategies to
backtest. Please note that timeframe needs to be set
either in config or via command line. When using this
together with `--export trades`, the strategy-name is
injected into the filename (so `backtest-data.json`
becomes `backtest-data-SampleStrategy.json`
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,22 @@
```
usage: freqtrade test-pairlist [-h] [--userdir PATH] [-v] [-c PATH]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
[-1] [--print-json] [--exchange EXCHANGE]
options:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
Specify quote currency(-ies). Space-separated list.
-1, --one-column Print output in one column.
--print-json Print list of pairs or market symbols in JSON format.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
```

55
docs/commands/trade.md Normal file
View File

@@ -0,0 +1,55 @@
```
usage: freqtrade trade [-h] [-v] [--no-color] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [--recursive-strategy-search]
[--freqaimodel NAME] [--freqaimodel-path PATH]
[--db-url PATH] [--sd-notify] [--dry-run]
[--dry-run-wallet DRY_RUN_WALLET] [--fee FLOAT]
options:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--sd-notify Notify systemd service manager.
--dry-run Enforce dry-run for trading (removes Exchange secrets
and simulates trades).
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
Starting balance, used for backtesting / hyperopt and
dry-runs.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```

View File

@@ -0,0 +1,48 @@
```
usage: freqtrade trades-to-ohlcv [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]]
[-t TIMEFRAMES [TIMEFRAMES ...]]
[--exchange EXCHANGE]
[--data-format-ohlcv {json,jsongz,feather,parquet}]
[--data-format-trades {json,jsongz,feather,parquet}]
[--trading-mode {spot,margin,futures}]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--data-format-ohlcv {json,jsongz,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--data-format-trades {json,jsongz,feather,parquet}
Storage format for downloaded trades data. (default:
`feather`).
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -0,0 +1,27 @@
```
usage: freqtrade webserver [-h] [-v] [--no-color] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
options:
-h, --help show this help message and exit
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -39,13 +39,19 @@ Please note that Environment variables will overwrite corresponding settings in
Common example: Common example:
``` ``` bash
FREQTRADE__TELEGRAM__CHAT_ID=<telegramchatid> FREQTRADE__TELEGRAM__CHAT_ID=<telegramchatid>
FREQTRADE__TELEGRAM__TOKEN=<telegramToken> FREQTRADE__TELEGRAM__TOKEN=<telegramToken>
FREQTRADE__EXCHANGE__KEY=<yourExchangeKey> FREQTRADE__EXCHANGE__KEY=<yourExchangeKey>
FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret> FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret>
``` ```
Json lists are parsed as json - so you can use the following to set a list of pairs:
``` bash
export FREQTRADE__EXCHANGE__PAIR_WHITELIST='["BTC/USDT", "ETH/USDT"]'
```
!!! Note !!! Note
Environment variables detected are logged at startup - so if you can't find why a value is not what you think it should be based on the configuration, make sure it's not loaded from an environment variable. Environment variables detected are logged at startup - so if you can't find why a value is not what you think it should be based on the configuration, make sure it's not loaded from an environment variable.
@@ -54,7 +60,7 @@ FREQTRADE__EXCHANGE__SECRET=<yourExchangeSecret>
??? Warning "Loading sequence" ??? Warning "Loading sequence"
Environment variables are loaded after the initial configuration. As such, you cannot provide the path to the configuration through environment variables. Please use `--config path/to/config.json` for that. Environment variables are loaded after the initial configuration. As such, you cannot provide the path to the configuration through environment variables. Please use `--config path/to/config.json` for that.
This also applies to user_dir to some degree. while the user directory can be set through environment variables - the configuration will **not** be loaded from that location. This also applies to `user_dir` to some degree. while the user directory can be set through environment variables - the configuration will **not** be loaded from that location.
### Multiple configuration files ### Multiple configuration files
@@ -146,10 +152,10 @@ Freqtrade can also load many options via command line (CLI) arguments (check out
The prevalence for all Options is as follows: The prevalence for all Options is as follows:
- CLI arguments override any other option * CLI arguments override any other option
- [Environment Variables](#environment-variables) * [Environment Variables](#environment-variables)
- Configuration files are used in sequence (the last file wins) and override Strategy configurations. * Configuration files are used in sequence (the last file wins) and override Strategy configurations.
- Strategy configurations are only used if they are not set via configuration or command-line arguments. These options are marked with [Strategy Override](#parameters-in-the-strategy) in the below table. * Strategy configurations are only used if they are not set via configuration or command-line arguments. These options are marked with [Strategy Override](#parameters-in-the-strategy) in the below table.
### Parameters table ### Parameters table
@@ -168,7 +174,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `timeframe` | The timeframe to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). Usually missing in configuration, and specified in the strategy. [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** String | `timeframe` | The timeframe to use (e.g `1m`, `5m`, `15m`, `30m`, `1h` ...). Usually missing in configuration, and specified in the strategy. [Strategy Override](#parameters-in-the-strategy). <br> **Datatype:** String
| `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency). <br> **Datatype:** String | `fiat_display_currency` | Fiat currency used to show your profits. [More information below](#what-values-can-be-used-for-fiat_display_currency). <br> **Datatype:** String
| `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode. <br>*Defaults to `true`.* <br> **Datatype:** Boolean | `dry_run` | **Required.** Define if the bot must be in Dry Run or production mode. <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in Dry Run mode.<br>*Defaults to `1000`.* <br> **Datatype:** Float | `dry_run_wallet` | Define the starting amount in stake currency for the simulated wallet used by the bot running in Dry Run mode. [More information below](#dry-run-wallet)<br>*Defaults to `1000`.* <br> **Datatype:** Float or Dict
| `cancel_open_orders_on_exit` | Cancel open orders when the `/stop` RPC command is issued, `Ctrl+C` is pressed or the bot dies unexpectedly. When set to `true`, this allows you to use `/stop` to cancel unfilled and partially filled orders in the event of a market crash. It does not impact open positions. <br>*Defaults to `false`.* <br> **Datatype:** Boolean | `cancel_open_orders_on_exit` | Cancel open orders when the `/stop` RPC command is issued, `Ctrl+C` is pressed or the bot dies unexpectedly. When set to `true`, this allows you to use `/stop` to cancel unfilled and partially filled orders in the event of a market crash. It does not impact open positions. <br>*Defaults to `false`.* <br> **Datatype:** Boolean
| `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean | `process_only_new_candles` | Enable processing of indicators only when new candles arrive. If false each loop populates the indicators, this will mean the same candle is processed many times creating system load but can be useful of your strategy depends on tick data not only candle. [Strategy Override](#parameters-in-the-strategy). <br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `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 | `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
@@ -183,7 +189,7 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `margin_mode` | When trading with leverage, this determines if the collateral owned by the trader will be shared or isolated to each trading pair [leverage documentation](leverage.md). <br> **Datatype:** String | `margin_mode` | When trading with leverage, this determines if the collateral owned by the trader will be shared or isolated to each trading pair [leverage documentation](leverage.md). <br> **Datatype:** String
| `liquidation_buffer` | A ratio specifying how large of a safety net to place between the liquidation price and the stoploss to prevent a position from reaching the liquidation price [leverage documentation](leverage.md). <br>*Defaults to `0.05`.* <br> **Datatype:** Float | `liquidation_buffer` | A ratio specifying how large of a safety net to place between the liquidation price and the stoploss to prevent a position from reaching the liquidation price [leverage documentation](leverage.md). <br>*Defaults to `0.05`.* <br> **Datatype:** Float
| | **Unfilled timeout** | | **Unfilled timeout**
| `unfilledtimeout.entry` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled entry order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer | `unfilledtimeout.entry` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled entry order to complete, after which the order will be cancelled. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
| `unfilledtimeout.exit` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled exit order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer | `unfilledtimeout.exit` | **Required.** How long (in minutes or seconds) the bot will wait for an unfilled exit order to complete, after which the order will be cancelled and repeated at current (new) price, as long as there is a signal. [Strategy Override](#parameters-in-the-strategy).<br> **Datatype:** Integer
| `unfilledtimeout.unit` | Unit to use in unfilledtimeout setting. Note: If you set unfilledtimeout.unit to "seconds", "internals.process_throttle_secs" must be inferior or equal to timeout [Strategy Override](#parameters-in-the-strategy). <br> *Defaults to `"minutes"`.* <br> **Datatype:** String | `unfilledtimeout.unit` | Unit to use in unfilledtimeout setting. Note: If you set unfilledtimeout.unit to "seconds", "internals.process_throttle_secs" must be inferior or equal to timeout [Strategy Override](#parameters-in-the-strategy). <br> *Defaults to `"minutes"`.* <br> **Datatype:** String
| `unfilledtimeout.exit_timeout_count` | How many times can exit orders time out. Once this number of timeouts is reached, an emergency exit is triggered. 0 to disable and allow unlimited order cancels. [Strategy Override](#parameters-in-the-strategy).<br>*Defaults to `0`.* <br> **Datatype:** Integer | `unfilledtimeout.exit_timeout_count` | How many times can exit orders time out. Once this number of timeouts is reached, an emergency exit is triggered. 0 to disable and allow unlimited order cancels. [Strategy Override](#parameters-in-the-strategy).<br>*Defaults to `0`.* <br> **Datatype:** Integer
@@ -222,15 +228,14 @@ Mandatory parameters are marked as **Required**, which means that they are requi
| `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://docs.ccxt.com/#/README?id=overriding-exchange-properties-upon-instantiation) <br> **Datatype:** Dict | `exchange.ccxt_async_config` | Additional CCXT parameters passed to the async ccxt instance. Parameters may differ from exchange to exchange and are documented in the [ccxt documentation](https://docs.ccxt.com/#/README?id=overriding-exchange-properties-upon-instantiation) <br> **Datatype:** Dict
| `exchange.enable_ws` | Enable the usage of Websockets for the exchange. <br>[More information](#consuming-exchange-websockets).<br>*Defaults to `true`.* <br> **Datatype:** Boolean | `exchange.enable_ws` | Enable the usage of Websockets for the exchange. <br>[More information](#consuming-exchange-websockets).<br>*Defaults to `true`.* <br> **Datatype:** Boolean
| `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded. <br>*Defaults to `60` minutes.* <br> **Datatype:** Positive Integer | `exchange.markets_refresh_interval` | The interval in minutes in which markets are reloaded. <br>*Defaults to `60` minutes.* <br> **Datatype:** Positive Integer
| `exchange.skip_pair_validation` | Skip pairlist validation on startup.<br>*Defaults to `false`*<br> **Datatype:** Boolean
| `exchange.skip_open_order_update` | Skips open order updates on startup should the exchange cause problems. Only relevant in live conditions.<br>*Defaults to `false`*<br> **Datatype:** Boolean | `exchange.skip_open_order_update` | Skips open order updates on startup should the exchange cause problems. Only relevant in live conditions.<br>*Defaults to `false`*<br> **Datatype:** Boolean
| `exchange.unknown_fee_rate` | Fallback value to use when calculating trading fees. This can be useful for exchanges which have fees in non-tradable currencies. The value provided here will be multiplied with the "fee cost".<br>*Defaults to `None`<br> **Datatype:** float | `exchange.unknown_fee_rate` | Fallback value to use when calculating trading fees. This can be useful for exchanges which have fees in non-tradable currencies. The value provided here will be multiplied with the "fee cost".<br>*Defaults to `None`<br> **Datatype:** float
| `exchange.log_responses` | Log relevant exchange responses. For debug mode only - use with care.<br>*Defaults to `false`*<br> **Datatype:** Boolean | `exchange.log_responses` | Log relevant exchange responses. For debug mode only - use with care.<br>*Defaults to `false`*<br> **Datatype:** Boolean
| `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 | `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** | | **Plugins**
| `edge.*` | Please refer to [edge configuration document](edge.md) for detailed explanation of all possible configuration options. | `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 | `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
| `protections` | Define one or more protections to be used. [More information](plugins.md#protections). <br> **Datatype:** List of Dicts
| | **Telegram** | | **Telegram**
| `telegram.enabled` | Enable the usage of Telegram. <br> **Datatype:** Boolean | `telegram.enabled` | Enable the usage of Telegram. <br> **Datatype:** Boolean
| `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. <br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String | `telegram.token` | Your Telegram bot token. Only required if `telegram.enabled` is `true`. <br>**Keep it in secret, do not disclose publicly.** <br> **Datatype:** String
@@ -297,10 +302,10 @@ Values set in the configuration file always overwrite values set in the strategy
* `order_time_in_force` * `order_time_in_force`
* `unfilledtimeout` * `unfilledtimeout`
* `disable_dataframe_checks` * `disable_dataframe_checks`
- `use_exit_signal` * `use_exit_signal`
* `exit_profit_only` * `exit_profit_only`
- `exit_profit_offset` * `exit_profit_offset`
- `ignore_roi_if_entry_signal` * `ignore_roi_if_entry_signal`
* `ignore_buying_expired_candle_after` * `ignore_buying_expired_candle_after`
* `position_adjustment_enable` * `position_adjustment_enable`
* `max_entry_position_adjustment` * `max_entry_position_adjustment`
@@ -313,18 +318,37 @@ There are several methods to configure how much of the stake currency the bot wi
The minimum stake amount will depend on exchange and pair and is usually listed in the exchange support pages. The minimum stake amount will depend on exchange and pair and is usually listed in the exchange support pages.
Assuming the minimum tradable amount for XRP/USD is 20 XRP (given by the exchange), and the price is 0.6$, the minimum stake amount to buy this pair is `20 * 0.6 ~= 12`. Assuming the minimum tradable amount for XRP/USD is 20 XRP (given by the exchange), and the price is 0.6\$, the minimum stake amount to buy this pair is `20 * 0.6 ~= 12`.
This exchange has also a limit on USD - where all orders must be > 10$ - which however does not apply in this case. This exchange has also a limit on USD - where all orders must be > 10\$ - which however does not apply in this case.
To guarantee safe execution, freqtrade will not allow buying with a stake-amount of 10.1$, instead, it'll make sure that there's enough space to place a stoploss below the pair (+ an offset, defined by `amount_reserve_percent`, which defaults to 5%). To guarantee safe execution, freqtrade will not allow buying with a stake-amount of 10.1\$, instead, it'll make sure that there's enough space to place a stoploss below the pair (+ an offset, defined by `amount_reserve_percent`, which defaults to 5%).
With a reserve of 5%, the minimum stake amount would be ~12.6$ (`12 * (1 + 0.05)`). If we take into account a stoploss of 10% on top of that - we'd end up with a value of ~14$ (`12.6 / (1 - 0.1)`). With a reserve of 5%, the minimum stake amount would be ~12.6\$ (`12 * (1 + 0.05)`). If we take into account a stoploss of 10% on top of that - we'd end up with a value of ~14\$ (`12.6 / (1 - 0.1)`).
To limit this calculation in case of large stoploss values, the calculated minimum stake-limit will never be more than 50% above the real limit. To limit this calculation in case of large stoploss values, the calculated minimum stake-limit will never be more than 50% above the real limit.
!!! Warning !!! Warning
Since the limits on exchanges are usually stable and are not updated often, some pairs can show pretty high minimum limits, simply because the price increased a lot since the last limit adjustment by the exchange. Freqtrade adjusts the stake-amount to this value, unless it's > 30% more than the calculated/desired stake-amount - in which case the trade is rejected. Since the limits on exchanges are usually stable and are not updated often, some pairs can show pretty high minimum limits, simply because the price increased a lot since the last limit adjustment by the exchange. Freqtrade adjusts the stake-amount to this value, unless it's > 30% more than the calculated/desired stake-amount - in which case the trade is rejected.
#### Dry-run wallet
When running in dry-run mode, the bot will use a simulated wallet to execute trades. The starting balance of this wallet is defined by `dry_run_wallet` (defaults to 1000).
For more complex scenarios, you can also assign a dictionary to `dry_run_wallet` to define the starting balance for each currency.
```json
"dry_run_wallet": {
"BTC": 0.01,
"ETH": 2,
"USDT": 1000
}
```
Command line options (`--dry-run-wallet`) can be used to override the configuration value, but only for the float value, not for the dictionary. If you'd like to use the dictionary, please adjust the configuration file.
!!! Note
Balances not in stake-currency will not be used for trading, but are shown as part of the wallet balance.
On Cross-margin exchanges, the wallet balance may be used to calculate the available collateral for trading.
#### Tradable balance #### Tradable balance
By default, the bot assumes that the `complete amount - 1%` is at it's disposal, and when using [dynamic stake amount](#dynamic-stake-amount), it will split the complete balance into `max_open_trades` buckets per trade. By default, the bot assumes that the `complete amount - 1%` is at it's disposal, and when using [dynamic stake amount](#dynamic-stake-amount), it will split the complete balance into `max_open_trades` buckets per trade.
@@ -364,9 +388,9 @@ To overcome this, the option `amend_last_stake_amount` can be set to `True`, whi
In the example above this would mean: In the example above this would mean:
- Trade1: 400 USDT * Trade1: 400 USDT
- Trade2: 400 USDT * Trade2: 400 USDT
- Trade3: 200 USDT * Trade3: 200 USDT
!!! Note !!! Note
This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly. This option only applies with [Static stake amount](#static-stake-amount) - since [Dynamic stake amount](#dynamic-stake-amount) divides the balances evenly.

View File

@@ -11,86 +11,16 @@ Without provided configuration, `--exchange` becomes mandatory.
You can use a relative timerange (`--days 20`) or an absolute starting point (`--timerange 20200101-`). For incremental downloads, the relative approach should be used. You can use a relative timerange (`--days 20`) or an absolute starting point (`--timerange 20200101-`). For incremental downloads, the relative approach should be used.
!!! Tip "Tip: Updating existing data" !!! Tip "Tip: Updating existing data"
If you already have backtesting data available in your data-directory and would like to refresh this data up to today, freqtrade will automatically calculate the data missing for the existing pairs and the download will occur from the latest available point until "now", neither --days or --timerange parameters are required. Freqtrade will keep the available data and only download the missing data. If you already have backtesting data available in your data-directory and would like to refresh this data up to today, freqtrade will automatically calculate the missing timerange for the existing pairs and the download will occur from the latest available point until "now", neither `--days` or `--timerange` parameters are required. Freqtrade will keep the available data and only download the missing data.
If you are updating existing data after inserting new pairs that you have no data for, use `--new-pairs-days xx` parameter. Specified number of days will be downloaded for new pairs while old pairs will be updated with missing data only. If you are updating existing data after inserting new pairs that you have no data for, use the `--new-pairs-days xx` parameter. Specified number of days will be downloaded for new pairs while old pairs will be updated with missing data only.
If you use `--days xx` parameter alone - data for specified number of days will be downloaded for _all_ pairs. Be careful, if specified number of days is smaller than gap between now and last downloaded candle - freqtrade will delete all existing data to avoid gaps in candle data.
### Usage ### Usage
``` --8<-- "commands/download-data.md"
usage: freqtrade download-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] [--pairs-file FILE]
[--days INT] [--new-pairs-days INT]
[--include-inactive-pairs]
[--timerange TIMERANGE] [--dl-trades]
[--convert] [--exchange EXCHANGE]
[-t TIMEFRAMES [TIMEFRAMES ...]] [--erase]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[--data-format-trades {json,jsongz,hdf5,feather,parquet}]
[--trading-mode {spot,margin,futures}]
[--prepend]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--pairs-file FILE File containing a list of pairs. Takes precedence over
--pairs or pairs configured in the configuration.
--days INT Download data for given number of days.
--new-pairs-days INT Download data of new pairs for given number of days.
Default: `None`.
--include-inactive-pairs
Also download data from inactive pairs.
--timerange TIMERANGE
Specify what timerange of data to use.
--dl-trades Download trades instead of OHLCV data. The bot will
resample trades to the desired timeframe as specified
as --timeframes/-t.
--convert Convert downloaded trades to OHLCV data. Only
applicable in combination with `--dl-trades`. Will be
automatic for exchanges which don't have historic
OHLCV (e.g. Kraken). If not provided, use `trades-to-
ohlcv` to convert trades data to OHLCV data.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--data-format-trades {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded trades data. (default:
`feather`).
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--prepend Allow data prepending. (Data-appending is disabled)
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Tip "Downloading all data for one quote currency" !!! Tip "Downloading all data for one quote currency"
Often, you'll want to download data for all pairs of a specific quote-currency. In such cases, you can use the following shorthand: Often, you'll want to download data for all pairs of a specific quote-currency. In such cases, you can use the following shorthand:
`freqtrade download-data --exchange binance --pairs .*/USDT <...>`. The provided "pairs" string will be expanded to contain all active pairs on the exchange. `freqtrade download-data --exchange binance --pairs ".*/USDT" <...>`. The provided "pairs" string will be expanded to contain all active pairs on the exchange.
To also download data for inactive (delisted) pairs, add `--include-inactive-pairs` to the command. To also download data for inactive (delisted) pairs, add `--include-inactive-pairs` to the command.
!!! Note "Startup period" !!! Note "Startup period"
@@ -117,16 +47,17 @@ freqtrade download-data --exchange binance --pairs ETH/USDT XRP/USDT BTC/USDT
or as regex (in this case, to download all active USDT pairs) or as regex (in this case, to download all active USDT pairs)
```bash ```bash
freqtrade download-data --exchange binance --pairs .*/USDT freqtrade download-data --exchange binance --pairs ".*/USDT"
``` ```
### Other Notes ### Other Notes
* To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`. * To use a different directory than the exchange specific default, use `--datadir user_data/data/some_directory`.
* To change the exchange used to download the historical data from, please use a different configuration file (you'll probably need to adjust rate limits etc.) * To change the exchange used to download the historical data from, either use `--exchange <exchange>` - or specify a different configuration file.
* To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`. * To use `pairs.json` from some other directory, use `--pairs-file some_other_dir/pairs.json`.
* To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days). * To download historical candle (OHLCV) data for only 10 days, use `--days 10` (defaults to 30 days).
* To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020. * To download historical candle (OHLCV) data from a fixed starting point, use `--timerange 20200101-` - which will download all data from January 1st, 2020.
* Given starting points are ignored if data is already available, downloading only missing data up to today.
* Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data. * Use `--timeframes` to specify what timeframe download the historical candle (OHLCV) data for. Default is `--timeframes 1m 5m` which will download 1-minute and 5-minute data.
* To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options. * To use exchange, timeframe and list of pairs as defined in your configuration file, use the `-c/--config` option. With this, the script uses the whitelist defined in the config as the list of currency pairs to download data for and does not require the pairs.json file. You can combine `-c/--config` with most other options.
@@ -162,7 +93,6 @@ Freqtrade currently supports the following data-formats:
* `feather` - a dataformat based on Apache Arrow * `feather` - a dataformat based on Apache Arrow
* `json` - plain "text" json files * `json` - plain "text" json files
* `jsongz` - a gzip-zipped version of json files * `jsongz` - a gzip-zipped version of json files
* `hdf5` - a high performance datastore
* `parquet` - columnar datastore (OHLCV only) * `parquet` - columnar datastore (OHLCV only)
By default, both OHLCV data and trades data are stored in the `feather` format. By default, both OHLCV data and trades data are stored in the `feather` format.
@@ -172,8 +102,8 @@ To persist this change, you should also add the following snippet to your config
``` jsonc ``` jsonc
// ... // ...
"dataformat_ohlcv": "hdf5", "dataformat_ohlcv": "feather",
"dataformat_trades": "hdf5", "dataformat_trades": "feather",
// ... // ...
``` ```
@@ -211,7 +141,6 @@ time freqtrade list-data --show-timerange --data-format-ohlcv <dataformat>
| `feather` | 72Mb | 3.5s | | `feather` | 72Mb | 3.5s |
| `json` | 149Mb | 25.6s | | `json` | 149Mb | 25.6s |
| `jsongz` | 39Mb | 27s | | `jsongz` | 39Mb | 27s |
| `hdf5` | 145Mb | 3.9s |
| `parquet` | 83Mb | 3.8s | | `parquet` | 83Mb | 3.8s |
Size has been taken from the BTC/USDT 1m spot combination for the timerange specified above. Size has been taken from the BTC/USDT 1m spot combination for the timerange specified above.
@@ -249,55 +178,7 @@ Mixing different stake-currencies is allowed for this file, since it's only used
## Sub-command convert data ## Sub-command convert data
``` --8<-- "commands/convert-data.md"
usage: freqtrade convert-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] --format-from
{json,jsongz,hdf5,feather,parquet} --format-to
{json,jsongz,hdf5,feather,parquet} [--erase]
[--exchange EXCHANGE]
[-t TIMEFRAMES [TIMEFRAMES ...]]
[--trading-mode {spot,margin,futures}]
[--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--format-from {json,jsongz,hdf5,feather,parquet}
Source format for data conversion.
--format-to {json,jsongz,hdf5,feather,parquet}
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--candle-types {spot,futures,mark,index,premiumIndex,funding_rate} [{spot,futures,mark,index,premiumIndex,funding_rate} ...]
Select candle type to convert. Defaults to all
available types.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
### Example converting data ### Example converting data
@@ -310,46 +191,7 @@ freqtrade convert-data --format-from json --format-to jsongz --datadir ~/.freqtr
## Sub-command convert trade data ## Sub-command convert trade data
``` --8<-- "commands/convert-trade-data.md"
usage: freqtrade convert-trade-data [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]] --format-from
{json,jsongz,hdf5,feather,parquet}
--format-to
{json,jsongz,hdf5,feather,parquet}
[--erase] [--exchange EXCHANGE]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--format-from {json,jsongz,hdf5,feather,parquet}
Source format for data conversion.
--format-to {json,jsongz,hdf5,feather,parquet}
Destination format for data conversion.
--erase Clean all existing data for the selected
exchange/pairs/timeframes.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
### Example converting trades ### Example converting trades
@@ -365,49 +207,7 @@ freqtrade convert-trade-data --format-from jsongz --format-to json --datadir ~/.
When you need to use `--dl-trades` (kraken only) to download data, conversion of trades data to ohlcv data is the last step. When you need to use `--dl-trades` (kraken only) to download data, conversion of trades data to ohlcv data is the last step.
This command will allow you to repeat this last step for additional timeframes without re-downloading the data. This command will allow you to repeat this last step for additional timeframes without re-downloading the data.
``` --8<-- "commands/trades-to-ohlcv.md"
usage: freqtrade trades-to-ohlcv [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[-p PAIRS [PAIRS ...]]
[-t TIMEFRAMES [TIMEFRAMES ...]]
[--exchange EXCHANGE]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[--data-format-trades {json,jsongz,hdf5,feather}]
options:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
-t TIMEFRAMES [TIMEFRAMES ...], --timeframes TIMEFRAMES [TIMEFRAMES ...]
Specify which tickers to download. Space-separated
list. Default: `1m 5m`.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--data-format-trades {json,jsongz,hdf5,feather}
Storage format for downloaded trades data. (default:
`feather`).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
### Example trade-to-ohlcv conversion ### Example trade-to-ohlcv conversion
@@ -419,51 +219,7 @@ freqtrade trades-to-ohlcv --exchange kraken -t 5m 1h 1d --pairs BTC/EUR ETH/EUR
You can get a list of downloaded data using the `list-data` sub-command. You can get a list of downloaded data using the `list-data` sub-command.
``` --8<-- "commands/list-data.md"
usage: freqtrade list-data [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [--exchange EXCHANGE]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[--data-format-trades {json,jsongz,hdf5,feather,parquet}]
[--trades] [-p PAIRS [PAIRS ...]]
[--trading-mode {spot,margin,futures}]
[--show-timerange]
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
--data-format-trades {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded trades data. (default:
`feather`).
--trades Work on trades data instead of OHLCV data.
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
--show-timerange Show timerange available for available data. (May take
a while to calculate).
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
### Example list-data ### Example list-data

View File

@@ -75,7 +75,16 @@ Webhook terminology changed from "sell" to "exit", and from "buy" to "entry", re
* `webhooksellfill`, `webhookexitfill` -> `exit_fill` * `webhooksellfill`, `webhookexitfill` -> `exit_fill`
* `webhooksellcancel`, `webhookexitcancel` -> `exit_cancel` * `webhooksellcancel`, `webhookexitcancel` -> `exit_cancel`
## Removal of `populate_any_indicators` ## Removal of `populate_any_indicators`
version 2023.3 saw the removal of `populate_any_indicators` in favor of split methods for feature engineering and targets. Please read the [migration document](strategy_migration.md#freqai-strategy) for full details. version 2023.3 saw the removal of `populate_any_indicators` in favor of split methods for feature engineering and targets. Please read the [migration document](strategy_migration.md#freqai-strategy) for full details.
## Removal of `protections` from configuration
Setting protections from the configuration via `"protections": [],` has been removed in 2024.10, after having raised deprecation warnings for over 3 years.
## hdf5 data storage
Using hdf5 as data storage has been deprecated in 2024.12 and was removed in 2025.1. We recommend switching to the feather data format.
Please use the [`convert-data` subcommand](data-download.md#sub-command-convert-data) to convert your existing data to one of the supported formats before updating.

View File

@@ -116,7 +116,7 @@ A similar setup can also be taken for Pycharm - using `freqtrade` as module name
![Pycharm debug configuration](assets/pycharm_debug.png) ![Pycharm debug configuration](assets/pycharm_debug.png)
!!! Note "Startup directory" !!! Note "Startup directory"
This assumes that you have the repository checked out, and the editor is started at the repository root level (so setup.py is at the top level of your repository). This assumes that you have the repository checked out, and the editor is started at the repository root level (so pyproject.toml is at the top level of your repository).
## ErrorHandling ## ErrorHandling
@@ -162,7 +162,7 @@ Hopefully you also want to contribute this back upstream.
Whatever your motivations are - This should get you off the ground in trying to develop a new Pairlist Handler. Whatever your motivations are - This should get you off the ground in trying to develop a new Pairlist Handler.
First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/pairlist/VolumePairList.py) Handler, and best copy this file with a name of your new Pairlist Handler. First of all, have a look at the [VolumePairList](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/plugins/pairlist/VolumePairList.py) Handler, and best copy this file with a name of your new Pairlist Handler.
This is a simple Handler, which however serves as a good example on how to start developing. This is a simple Handler, which however serves as a good example on how to start developing.
@@ -205,7 +205,7 @@ This is called with each iteration of the bot (only if the Pairlist Handler is a
It must return the resulting pairlist (which may then be passed into the chain of Pairlist Handlers). It must return the resulting pairlist (which may then be passed into the chain of Pairlist Handlers).
Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the end-result is not shorter than expected. Validations are optional, the parent class exposes a `verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filtering. Use this if you limit your result to a certain number of pairs - so the end-result is not shorter than expected.
#### filter_pairlist #### filter_pairlist
@@ -219,14 +219,14 @@ The default implementation in the base class simply calls the `_validate_pair()`
If overridden, it must return the resulting pairlist (which may then be passed into the next Pairlist Handler in the chain). If overridden, it must return the resulting pairlist (which may then be passed into the next Pairlist Handler in the chain).
Validations are optional, the parent class exposes a `_verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the end result is not shorter than expected. Validations are optional, the parent class exposes a `verify_blacklist(pairlist)` and `_whitelist_for_active_markets(pairlist)` to do default filters. Use this if you limit your result to a certain number of pairs - so the end result is not shorter than expected.
In `VolumePairList`, this implements different methods of sorting, does early validation so only the expected number of pairs is returned. In `VolumePairList`, this implements different methods of sorting, does early validation so only the expected number of pairs is returned.
##### sample ##### sample
``` python ``` python
def filter_pairlist(self, pairlist: List[str], tickers: Dict) -> List[str]: def filter_pairlist(self, pairlist: list[str], tickers: dict) -> List[str]:
# Generate dynamic whitelist # Generate dynamic whitelist
pairs = self._calculate_pairlist(pairlist, tickers) pairs = self._calculate_pairlist(pairlist, tickers)
return pairs return pairs
@@ -241,7 +241,6 @@ No protection should use datetime directly, but use the provided `date_now` vari
!!! Tip "Writing a new Protection" !!! Tip "Writing a new Protection"
Best copy one of the existing Protections to have a good example. Best copy one of the existing Protections to have a good example.
Don't forget to register your protection in `constants.py` under the variable `AVAILABLE_PROTECTIONS` - otherwise it will not be selectable.
#### Implementation of a new protection #### Implementation of a new protection
@@ -481,15 +480,18 @@ Once the PR against stable is merged (best right after merging):
### pypi ### pypi
!!! Note !!! Warning "Manual Releases"
This process is now automated as part of Github Actions. This process is automated as part of Github Actions.
Manual pypi pushes should not be necessary.
To create a pypi release, please run the following commands: ??? example "Manual release"
To manually create a pypi release, please run the following commands:
Additional requirement: `wheel`, `twine` (for uploading), account on pypi with proper permissions. Additional requirement: `wheel`, `twine` (for uploading), account on pypi with proper permissions.
``` bash ``` bash
python setup.py sdist bdist_wheel pip install -U build
python -m build --sdist --wheel
# For pypi test (to check if some change to the installation did work) # For pypi test (to check if some change to the installation did work)
twine upload --repository-url https://test.pypi.org/legacy/ dist/* twine upload --repository-url https://test.pypi.org/legacy/ dist/*

View File

@@ -215,64 +215,7 @@ Let's say the stake currency is **ETH** and there is $10$ **ETH** on the wallet.
## Edge command reference ## Edge command reference
``` --8<-- "commands/edge.md"
usage: freqtrade edge [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [-s NAME] [--strategy-path PATH]
[-i TIMEFRAME] [--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,hdf5}]
[--max-open-trades INT] [--stake-amount STAKE_AMOUNT]
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
[--stoplosses STOPLOSS_RANGE]
optional arguments:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,hdf5}
Storage format for downloaded candle (OHLCV) data.
(default: `None`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
-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).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
## Configurations ## Configurations

View File

@@ -118,7 +118,7 @@ When trading on Binance Futures market, orderbook must be used because there is
}, },
``` ```
#### Binance futures settings #### Binance isolated futures settings
Users will also have to have the futures-setting "Position Mode" set to "One-way Mode", and "Asset Mode" set to "Single-Asset Mode". Users will also have to have the futures-setting "Position Mode" set to "One-way Mode", and "Asset Mode" set to "Single-Asset Mode".
These settings will be checked on startup, and freqtrade will show an error if this setting is wrong. These settings will be checked on startup, and freqtrade will show an error if this setting is wrong.
@@ -127,6 +127,27 @@ These settings will be checked on startup, and freqtrade will show an error if t
Freqtrade will not attempt to change these settings. Freqtrade will not attempt to change these settings.
#### Binance BNFCR futures
BNFCR mode are a special type of futures mode on Binance to work around regulatory issues in Europe.
To use BNFCR futures, you will have to have the following combination of settings:
``` jsonc
{
// ...
"trading_mode": "futures",
"margin_mode": "cross",
"proxy_coin": "BNFCR",
"stake_currency": "USDT" // or "USDC"
// ...
}
```
The `stake_currency` setting defines the markets the bot will be operating in. This choice is really arbitrary.
On the exchange, you'll have to use "Multi-asset Mode" - and "Position Mode set to "One-way Mode".
Freqtrade will check these settings on startup, but won't attempt to change them.
## Bingx ## Bingx
BingX supports [time_in_force](configuration.md#understand-order_time_in_force) with settings "GTC" (good till cancelled), "IOC" (immediate-or-cancel) and "PO" (Post only) settings. BingX supports [time_in_force](configuration.md#understand-order_time_in_force) with settings "GTC" (good till cancelled), "IOC" (immediate-or-cancel) and "PO" (Post only) settings.
@@ -189,7 +210,7 @@ freqtrade download-data --exchange kraken --dl-trades -p BTC/EUR BCH/EUR
It will also take a long time, as freqtrade will need to download every single trade that happened on the exchange for the pair / timerange combination, therefore please be patient. It will also take a long time, as freqtrade will need to download every single trade that happened on the exchange for the pair / timerange combination, therefore please be patient.
!!! Warning "rateLimit tuning" !!! Warning "rateLimit tuning"
Please pay attention that rateLimit configuration entry holds delay in milliseconds between requests, NOT requests\sec rate. Please pay attention that rateLimit configuration entry holds delay in milliseconds between requests, NOT requests/sec rate.
So, in order to mitigate Kraken API "Rate limit exceeded" exception, this configuration should be increased, NOT decreased. So, in order to mitigate Kraken API "Rate limit exceeded" exception, this configuration should be increased, NOT decreased.
## Kucoin ## Kucoin
@@ -217,12 +238,12 @@ Kucoin supports [time_in_force](configuration.md#understand-order_time_in_force)
For Kucoin, it is suggested to add `"KCS/<STAKE>"` to your blacklist to avoid issues, unless you are willing to maintain enough extra `KCS` on the account or unless you're willing to disable using `KCS` for fees. For Kucoin, it is suggested to add `"KCS/<STAKE>"` to your blacklist to avoid issues, unless you are willing to maintain enough extra `KCS` on the account or unless you're willing to disable using `KCS` for fees.
Kucoin accounts may use `KCS` for fees, and if a trade happens to be on `KCS`, further trades may consume this position and make the initial `KCS` trade unsellable as the expected amount is not there anymore. Kucoin accounts may use `KCS` for fees, and if a trade happens to be on `KCS`, further trades may consume this position and make the initial `KCS` trade unsellable as the expected amount is not there anymore.
## HTX (formerly Huobi) ## HTX
!!! Tip "Stoploss on Exchange" !!! Tip "Stoploss on Exchange"
HTX supports `stoploss_on_exchange` and uses `stop-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange. HTX supports `stoploss_on_exchange` and uses `stop-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange.
## OKX (former OKEX) ## OKX
OKX requires a passphrase for each api key, you will therefore need to add this key into the configuration so your exchange section looks as follows: OKX requires a passphrase for each api key, you will therefore need to add this key into the configuration so your exchange section looks as follows:
@@ -236,6 +257,9 @@ OKX requires a passphrase for each api key, you will therefore need to add this
} }
``` ```
If you've registered with OKX on the host my.okx.com (OKX EAA)- you will need to use `"myokx"` as the exchange name.
Using the wrong exchange will result in the error "OKX Error 50119: API key doesn't exist" - as the 2 are separate entities.
!!! Warning !!! Warning
OKX only provides 100 candles per api call. Therefore, the strategy will only have a pretty low amount of data available in backtesting mode. OKX only provides 100 candles per api call. Therefore, the strategy will only have a pretty low amount of data available in backtesting mode.
@@ -252,21 +276,36 @@ OKX requires a passphrase for each api key, you will therefore need to add this
Gate.io allows the use of `POINT` to pay for fees. As this is not a tradable currency (no regular market available), automatic fee calculations will fail (and default to a fee of 0). Gate.io allows the use of `POINT` to pay for fees. As this is not a tradable currency (no regular market available), automatic fee calculations will fail (and default to a fee of 0).
The configuration parameter `exchange.unknown_fee_rate` can be used to specify the exchange rate between Point and the stake currency. Obviously, changing the stake-currency will also require changes to this value. The configuration parameter `exchange.unknown_fee_rate` can be used to specify the exchange rate between Point and the stake currency. Obviously, changing the stake-currency will also require changes to this value.
Gate API keys require the following permissions on top of the market type you want to trade:
* "Spot Trade" _or_ "Perpetual Futures" (Read and Write) (either select both, or the one matching the market you want to trade)
* "Wallet" (read only)
* "Account" (read only)
Without these permissions, the bot will not start correctly and show errors like "permission missing".
## Bybit ## Bybit
Futures trading on bybit is currently supported for USDT markets, and will use isolated futures mode. Futures trading on bybit is currently supported for USDT markets, and will use isolated futures mode.
Users with unified accounts (there's no way back) can create a Sub-account which will start as "non-unified", and can therefore use isolated futures.
On startup, freqtrade will set the position mode to "One-way Mode" for the whole (sub)account. This avoids making this call over and over again (slowing down bot operations), but means that changes to this setting may result in exceptions and errors On startup, freqtrade will set the position mode to "One-way Mode" for the whole (sub)account. This avoids making this call over and over again (slowing down bot operations), but means that changes to this setting may result in exceptions and errors.
As bybit doesn't provide funding rate history, the dry-run calculation is used for live trades as well. As bybit doesn't provide funding rate history, the dry-run calculation is used for live trades as well.
API Keys for live futures trading (Subaccount on non-unified) must have the following permissions: API Keys for live futures trading must have the following permissions:
* Read-write * Read-write
* Contract - Orders * Contract - Orders
* Contract - Positions * Contract - Positions
We do strongly recommend to limit all API keys to the IP you're going to use it from. We do strongly recommend to limit all API keys to the IP you're going to use it from.
!!! Warning "Unified accounts"
Freqtrade assumes accounts to be dedicated to the bot.
We therefore recommend the usage of one subaccount per bot. This is especially important when using unified accounts.
Other configurations (multiple bots on one account, manual non-bot trades on the bot account) are not supported and may lead to unexpected behavior.
!!! Tip "Stoploss on Exchange" !!! Tip "Stoploss on Exchange"
Bybit (futures only) supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange. Bybit (futures only) supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it by enabling stoploss on exchange.
On futures, Bybit supports both `stop-limit` as well as `stop-market` orders. You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type to use. On futures, Bybit supports both `stop-limit` as well as `stop-market` orders. You can use either `"limit"` or `"market"` in the `order_types.stoploss` configuration setting to decide which type to use.
@@ -289,6 +328,41 @@ It's therefore required to pass the UID as well.
!!! Warning "Necessary Verification" !!! Warning "Necessary Verification"
Bitmart requires Verification Lvl2 to successfully trade on the spot market through the API - even though trading via UI works just fine with just Lvl1 verification. Bitmart requires Verification Lvl2 to successfully trade on the spot market through the API - even though trading via UI works just fine with just Lvl1 verification.
## Hyperliquid
!!! Tip "Stoploss on Exchange"
Hyperliquid supports `stoploss_on_exchange` and uses `stop-loss-limit` orders. It provides great advantages, so we recommend to benefit from it.
Hyperliquid is a Decentralized Exchange (DEX). Decentralized exchanges work a bit different compared to normal exchanges. Instead of authenticating private API calls using an API key, private API calls need to be signed with the private key of your wallet (We recommend using an api Wallet for this, generated either on Hyperliquid or in your wallet of choice).
This needs to be configured like this:
```json
"exchange": {
"name": "hyperliquid",
"walletAddress": "your_eth_wallet_address",
"privateKey": "your_api_private_key",
// ...
}
```
* walletAddress in hex format: `0x<40 hex characters>` - Can be easily copied from your wallet - and should be your wallet address, not your API Wallet Address.
* privateKey in hex format: `0x<64 hex characters>` - Use the key the API Wallet shows on creation.
Hyperliquid handles deposits and withdrawals on the Arbitrum One chain, a Layer 2 scaling solution built on top of Ethereum. Hyperliquid uses USDC as quote / collateral. The process of depositing USDC on Hyperliquid requires a couple of steps, see [how to start trading](https://hyperliquid.gitbook.io/hyperliquid-docs/onboarding/how-to-start-trading) for details on what steps are needed.
!!! Note "Hyperliquid general usage Notes"
Hyperliquid does not support market orders, however ccxt will simulate market orders by placing limit orders with a maximum slippage of 5%.
Unfortunately, hyperliquid only offers 5000 historic candles, so backtesting will either need to build candles historically (by waiting and downloading the data incrementally over time) - or will be limited to the last 5000 candles.
!!! Info "Some general best practices (non exhaustive)"
* Beware of supply chain attacks, like pip package poisoning etcetera. Whenever you use your private key, make sure your environment is safe.
* Don't use your actual wallet private key for trading. Use the Hyperliquid [API generator](https://app.hyperliquid.xyz/API) to create a separate API wallet.
* Don't store your actual wallet private key on the server you use for freqtrade. Use the API wallet private key instead. This key won't allow withdrawals, only trading.
* Always keep your mnemonic phrase and private key private.
* Don't use the same mnemonic as the one you had to backup when initializing a hardware wallet, using the same mnemonic basically deletes the security of your hardware wallet.
* 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.
## All exchanges ## 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. 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.
@@ -298,7 +372,7 @@ Should you experience constant errors with Nonce (like `InvalidNonce`), it is be
* The Ocean (exchange id: `theocean`) exchange uses Web3 functionality and requires `web3` python package to be installed: * The Ocean (exchange id: `theocean`) exchange uses Web3 functionality and requires `web3` python package to be installed:
```shell ```shell
$ pip3 install web3 pip3 install web3
``` ```
### Getting latest price / Incomplete candles ### Getting latest price / Incomplete candles

View File

@@ -40,12 +40,18 @@ This could be caused by the following reasons:
* The installation did not complete successfully. * The installation did not complete successfully.
* Please check the [Installation documentation](installation.md). * Please check the [Installation documentation](installation.md).
### The bot starts, but in STOPPED mode
Make sure you set the `initial_state` config option to `"running"` in your config.json
### I have waited 5 minutes, why hasn't the bot made any trades yet? ### I have waited 5 minutes, why hasn't the bot made any trades yet?
* Depending on the buy strategy, the amount of whitelisted coins, the * Depending on the entry strategy, the amount of whitelisted coins, the
situation of the market etc, it can take up to hours to find a good entry situation of the market etc, it can take up to hours or days to find a good entry
position for a trade. Be patient! position for a trade. Be patient!
* Backtesting will tell you roughly how many trades to expect - but that won't guarantee that they'll be distributed evenly across time - so you could have 20 trades on one day, and 0 for the rest of the week.
* It may be because of a configuration error. It's best to check the logs, they usually tell you if the bot is simply not getting buy signals (only heartbeat messages), or if there is something wrong (errors / exceptions in the log). * It may be because of a configuration error. It's best to check the logs, they usually tell you if the bot is simply not getting buy signals (only heartbeat messages), or if there is something wrong (errors / exceptions in the log).
### I have made 12 trades already, why is my total profit negative? ### I have made 12 trades already, why is my total profit negative?
@@ -100,6 +106,19 @@ You can use the `/stopentry` command in Telegram to prevent future trade entry,
Please look at the [advanced setup documentation Page](advanced-setup.md#running-multiple-instances-of-freqtrade). Please look at the [advanced setup documentation Page](advanced-setup.md#running-multiple-instances-of-freqtrade).
### I'm getting "Impossible to load Strategy" when starting the bot
This error message is shown when the bot cannot load the strategy.
Usually, you can use `freqtrade list-strategies` to list all available strategies.
The output of this command will also include a status column, showing if the strategy can be loaded.
Please check the following:
* Are you using the correct strategy name? The strategy name is case-sensitive and must correspond to the Strategy class name (not the filename!).
* Is the strategy in the `user_data/strategies` directory, and has the file-ending `.py`?
* Does the bot show other warnings before this error? Maybe you're missing some dependencies for the strategy - which would be highlighted in the log.
* In case of docker - is the strategy directory mounted correctly (check the volumes part of the docker-compose file)?
### I'm getting "Missing data fillup" messages in the log ### I'm getting "Missing data fillup" messages in the log
This message is just a warning that the latest candles had missing candles in them. This message is just a warning that the latest candles had missing candles in them.
@@ -116,6 +135,10 @@ This message is a warning that the candles had a price jump of > 30%.
This might be a sign that the pair stopped trading, and some token exchange took place (e.g. COCOS in 2021 - where price jumped from 0.0000154 to 0.01621). This might be a sign that the pair stopped trading, and some token exchange took place (e.g. COCOS in 2021 - where price jumped from 0.0000154 to 0.01621).
This message is often accompanied by ["Missing data fillup"](#im-getting-missing-data-fillup-messages-in-the-log) - as trading on such pairs is often stopped for some time. This message is often accompanied by ["Missing data fillup"](#im-getting-missing-data-fillup-messages-in-the-log) - as trading on such pairs is often stopped for some time.
### I want to reset the bot's database
To reset the bot's database, you can either delete the database (by default `tradesv3.sqlite` or `tradesv3.dryrun.sqlite`), or use a different database url via `--db-url` (e.g. `sqlite:///mynewdatabase.sqlite`).
### I'm getting "Outdated history for pair xxx" in the log ### I'm getting "Outdated history for pair xxx" in the log
The bot is trying to tell you that it got an outdated last candle (not the last complete candle). The bot is trying to tell you that it got an outdated last candle (not the last complete candle).

View File

@@ -58,7 +58,6 @@ The plot configuration can be accessed via the "Plot Configurator" (Cog icon) bu
### Settings ### Settings
Several UI related settings can be changed by accessing the settings page. Several UI related settings can be changed by accessing the settings page.
Things you can change (among others): Things you can change (among others):

View File

@@ -293,10 +293,10 @@ class MyCoolPyTorchClassifier(BasePyTorchClassifier):
super().__init__(**kwargs) super().__init__(**kwargs)
config = self.freqai_info.get("model_training_parameters", {}) config = self.freqai_info.get("model_training_parameters", {})
self.learning_rate: float = config.get("learning_rate", 3e-4) self.learning_rate: float = config.get("learning_rate", 3e-4)
self.model_kwargs: Dict[str, Any] = config.get("model_kwargs", {}) self.model_kwargs: dict[str, Any] = config.get("model_kwargs", {})
self.trainer_kwargs: Dict[str, Any] = config.get("trainer_kwargs", {}) self.trainer_kwargs: dict[str, Any] = config.get("trainer_kwargs", {})
def fit(self, data_dictionary: Dict, dk: FreqaiDataKitchen, **kwargs) -> Any: def fit(self, data_dictionary: dict, dk: FreqaiDataKitchen, **kwargs) -> Any:
""" """
User sets up the training and test data to fit their desired model here User sets up the training and test data to fit their desired model here
:param data_dictionary: the dictionary holding all data for train, test, :param data_dictionary: the dictionary holding all data for train, test,
@@ -359,10 +359,10 @@ class PyTorchMLPRegressor(BasePyTorchRegressor):
super().__init__(**kwargs) super().__init__(**kwargs)
config = self.freqai_info.get("model_training_parameters", {}) config = self.freqai_info.get("model_training_parameters", {})
self.learning_rate: float = config.get("learning_rate", 3e-4) self.learning_rate: float = config.get("learning_rate", 3e-4)
self.model_kwargs: Dict[str, Any] = config.get("model_kwargs", {}) self.model_kwargs: dict[str, Any] = config.get("model_kwargs", {})
self.trainer_kwargs: Dict[str, Any] = config.get("trainer_kwargs", {}) self.trainer_kwargs: dict[str, Any] = config.get("trainer_kwargs", {})
def fit(self, data_dictionary: Dict, dk: FreqaiDataKitchen, **kwargs) -> Any: def fit(self, data_dictionary: dict, dk: FreqaiDataKitchen, **kwargs) -> Any:
n_features = data_dictionary["train_features"].shape[-1] n_features = data_dictionary["train_features"].shape[-1]
model = PyTorchMLPModel( model = PyTorchMLPModel(
input_dim=n_features, input_dim=n_features,
@@ -393,7 +393,7 @@ Here we create a `PyTorchMLPRegressor` class that implements the `fit` method. T
For example, if you are using a binary classifier to predict price movements as up or down, you can set the class names as follows: For example, if you are using a binary classifier to predict price movements as up or down, you can set the class names as follows:
```python ```python
def set_freqai_targets(self, dataframe: DataFrame, metadata: Dict, **kwargs) -> DataFrame: def set_freqai_targets(self, dataframe: DataFrame, metadata: dict, **kwargs) -> DataFrame:
self.freqai.class_names = ["down", "up"] self.freqai.class_names = ["down", "up"]
dataframe['&s-up_or_down'] = np.where(dataframe["close"].shift(-100) > dataframe['&s-up_or_down'] = np.where(dataframe["close"].shift(-100) >
dataframe["close"], 'up', 'down') dataframe["close"], 'up', 'down')

View File

@@ -22,6 +22,7 @@ Mandatory parameters are marked as **Required** and have to be set in one of the
| `write_metrics_to_disk` | Collect train timings, inference timings and cpu usage in json file. <br> **Datatype:** Boolean. <br> Default: `False` | `write_metrics_to_disk` | Collect train timings, inference timings and cpu usage in json file. <br> **Datatype:** Boolean. <br> Default: `False`
| `data_kitchen_thread_count` | <br> Designate the number of threads you want to use for data processing (outlier methods, normalization, etc.). This has no impact on the number of threads used for training. If user does not set it (default), FreqAI will use max number of threads - 2 (leaving 1 physical core available for Freqtrade bot and FreqUI) <br> **Datatype:** Positive integer. | `data_kitchen_thread_count` | <br> Designate the number of threads you want to use for data processing (outlier methods, normalization, etc.). This has no impact on the number of threads used for training. If user does not set it (default), FreqAI will use max number of threads - 2 (leaving 1 physical core available for Freqtrade bot and FreqUI) <br> **Datatype:** Positive integer.
| `activate_tensorboard` | <br> Indicate whether or not to activate tensorboard for the tensorboard enabled modules (currently Reinforcment Learning, XGBoost, Catboost, and PyTorch). Tensorboard needs Torch installed, which means you will need the torch/RL docker image or you need to answer "yes" to the install question about whether or not you wish to install Torch. <br> **Datatype:** Boolean. <br> Default: `True`. | `activate_tensorboard` | <br> Indicate whether or not to activate tensorboard for the tensorboard enabled modules (currently Reinforcment Learning, XGBoost, Catboost, and PyTorch). Tensorboard needs Torch installed, which means you will need the torch/RL docker image or you need to answer "yes" to the install question about whether or not you wish to install Torch. <br> **Datatype:** Boolean. <br> Default: `True`.
| `wait_for_training_iteration_on_reload` | <br> When using /reload or ctrl-c, wait for the current training iteration to finish before completing graceful shutdown. If set to `False`, FreqAI will break the current training iteration, allowing you to shutdown gracefully more quickly, but you will lose your current training iteration. <br> **Datatype:** Boolean. <br> Default: `True`.
### Feature parameters ### Feature parameters

View File

@@ -18,7 +18,7 @@ Features include:
* **Extensibility** - The generalized and robust architecture allows for incorporating any [machine learning library/method](freqai-configuration.md#using-different-prediction-models) available in Python. Eight examples are currently available, including classifiers, regressors, and a convolutional neural network * **Extensibility** - The generalized and robust architecture allows for incorporating any [machine learning library/method](freqai-configuration.md#using-different-prediction-models) available in Python. Eight examples are currently available, including classifiers, regressors, and a convolutional neural network
* **Smart outlier removal** - Remove outliers from training and prediction data sets using a variety of [outlier detection techniques](freqai-feature-engineering.md#outlier-detection) * **Smart outlier removal** - Remove outliers from training and prediction data sets using a variety of [outlier detection techniques](freqai-feature-engineering.md#outlier-detection)
* **Crash resilience** - Store trained models to disk to make reloading from a crash fast and easy, and [purge obsolete files](freqai-running.md#purging-old-model-data) for sustained dry/live runs * **Crash resilience** - Store trained models to disk to make reloading from a crash fast and easy, and [purge obsolete files](freqai-running.md#purging-old-model-data) for sustained dry/live runs
* **Automatic data normalization** - [Normalize the data](freqai-feature-engineering.md#feature-normalization) in a smart and statistically safe way * **Automatic data normalization** - [Normalize the data](freqai-feature-engineering.md#building-the-data-pipeline) in a smart and statistically safe way
* **Automatic data download** - Compute timeranges for data downloads and update historic data (in live deployments) * **Automatic data download** - Compute timeranges for data downloads and update historic data (in live deployments)
* **Cleaning of incoming data** - Handle NaNs safely before training and model inferencing * **Cleaning of incoming data** - Handle NaNs safely before training and model inferencing
* **Dimensionality reduction** - Reduce the size of the training data via [Principal Component Analysis](freqai-feature-engineering.md#data-dimensionality-reduction-with-principal-component-analysis) * **Dimensionality reduction** - Reduce the size of the training data via [Principal Component Analysis](freqai-feature-engineering.md#data-dimensionality-reduction-with-principal-component-analysis)
@@ -76,14 +76,14 @@ pip install -r requirements-freqai.txt
### Usage with docker ### Usage with docker
If you are using docker, a dedicated tag with FreqAI dependencies is available as `:freqai`. As such - you can replace the image line in your docker compose file with `image: freqtradeorg/freqtrade:develop_freqai`. This image contains the regular FreqAI dependencies. Similar to native installs, Catboost will not be available on ARM based devices. If you would like to use PyTorch or Reinforcement learning, you should use the torch or RL tags, `image: freqtradeorg/freqtrade:develop_freqaitorch`, `image: freqtradeorg/freqtrade:develop_freqairl`. 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" !!! 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 ### FreqAI position in open-source machine learning landscape
Forecasting chaotic time-series based systems, such as equity/cryptocurrency markets, requires a broad set of tools geared toward testing a wide range of hypotheses. Fortunately, a recent maturation of robust machine learning libraries (e.g. `scikit-learn`) has opened up a wide range of research possibilities. Scientists from a diverse range of fields can now easily prototype their studies on an abundance of established machine learning algorithms. Similarly, these user-friendly libraries enable "citzen scientists" to use their basic Python skills for data exploration. However, leveraging these machine learning libraries on historical and live chaotic data sources can be logistically difficult and expensive. Additionally, robust data collection, storage, and handling presents a disparate challenge. [`FreqAI`](#freqai) aims to provide a generalized and extensible open-sourced framework geared toward live deployments of adaptive modeling for market forecasting. The `FreqAI` framework is effectively a sandbox for the rich world of open-source machine learning libraries. Inside the `FreqAI` sandbox, users find they can combine a wide variety of third-party libraries to test creative hypotheses on a free live 24/7 chaotic data source - cryptocurrency exchange data. Forecasting chaotic time-series based systems, such as equity/cryptocurrency markets, requires a broad set of tools geared toward testing a wide range of hypotheses. Fortunately, a recent maturation of robust machine learning libraries (e.g. `scikit-learn`) has opened up a wide range of research possibilities. Scientists from a diverse range of fields can now easily prototype their studies on an abundance of established machine learning algorithms. Similarly, these user-friendly libraries enable "citizen scientists" to use their basic Python skills for data exploration. However, leveraging these machine learning libraries on historical and live chaotic data sources can be logistically difficult and expensive. Additionally, robust data collection, storage, and handling presents a disparate challenge. [`FreqAI`](#freqai) aims to provide a generalized and extensible open-sourced framework geared toward live deployments of adaptive modeling for market forecasting. The `FreqAI` framework is effectively a sandbox for the rich world of open-source machine learning libraries. Inside the `FreqAI` sandbox, users find they can combine a wide variety of third-party libraries to test creative hypotheses on a free live 24/7 chaotic data source - cryptocurrency exchange data.
### Citing FreqAI ### Citing FreqAI

View File

@@ -36,130 +36,7 @@ pip install -r requirements-hyperopt.txt
## Hyperopt command reference ## Hyperopt command reference
``` --8<-- "commands/hyperopt.md"
usage: freqtrade hyperopt [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH] [-s NAME] [--strategy-path PATH]
[--recursive-strategy-search] [--freqaimodel NAME]
[--freqaimodel-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,hdf5}]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT] [--fee FLOAT]
[-p PAIRS [PAIRS ...]] [--hyperopt-path PATH]
[--eps] [--dmmp] [--enable-protections]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL] [-e INT]
[--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]]
[--print-all] [--no-color] [--print-json] [-j JOBS]
[--random-state INT] [--min-trades INT]
[--hyperopt-loss NAME] [--disable-param-export]
[--ignore-missing-spaces] [--analyze-per-epoch]
optional arguments:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--timerange TIMERANGE
Specify what timerange of data to use.
--data-format-ohlcv {json,jsongz,hdf5}
Storage format for downloaded candle (OHLCV) data.
(default: `json`).
--max-open-trades INT
Override the value of the `max_open_trades`
configuration setting.
--stake-amount STAKE_AMOUNT
Override the value of the `stake_amount` configuration
setting.
--fee FLOAT Specify fee ratio. Will be applied twice (on trade
entry and exit).
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--hyperopt-path PATH Specify additional lookup path for Hyperopt Loss
functions.
--eps, --enable-position-stacking
Allow buying the same pair multiple times (position
stacking).
--dmmp, --disable-max-market-positions
Disable applying `max_open_trades` during backtest
(same as setting `max_open_trades` to a very high
number).
--enable-protections, --enableprotections
Enable protections for backtesting.Will slow
backtesting down by a considerable amount, but will
include configured protections
--dry-run-wallet DRY_RUN_WALLET, --starting-balance DRY_RUN_WALLET
Starting balance, used for backtesting / hyperopt and
dry-runs.
--timeframe-detail TIMEFRAME_DETAIL
Specify detail timeframe for backtesting (`1m`, `5m`,
`30m`, `1h`, `1d`).
-e INT, --epochs INT Specify number of epochs (default: 100).
--spaces {all,buy,sell,roi,stoploss,trailing,protection,trades,default} [{all,buy,sell,roi,stoploss,trailing,protection,trades,default} ...]
Specify which parameters to hyperopt. Space-separated
list.
--print-all Print all results, not only the best ones.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--print-json Print output in JSON format.
-j JOBS, --job-workers JOBS
The number of concurrently running jobs for
hyperoptimization (hyperopt worker processes). If -1
(default), all CPUs are used, for -2, all CPUs but one
are used, etc. If 1 is given, no parallel computing
code is used at all.
--random-state INT Set random state to some positive integer for
reproducible hyperopt results.
--min-trades INT Set minimal desired number of trades for evaluations
in the hyperopt optimization path (default: 1).
--hyperopt-loss NAME, --hyperoptloss NAME
Specify the class name of the hyperopt loss function
class (IHyperOptLoss). Different functions can
generate completely different results, since the
target for optimization is different. Built-in
Hyperopt-loss-functions are:
ShortTradeDurHyperOptLoss, OnlyProfitHyperOptLoss,
SharpeHyperOptLoss, SharpeHyperOptLossDaily,
SortinoHyperOptLoss, SortinoHyperOptLossDaily,
CalmarHyperOptLoss, MaxDrawDownHyperOptLoss,
MaxDrawDownRelativeHyperOptLoss,
ProfitDrawDownHyperOptLoss
--disable-param-export
Disable automatic hyperopt parameter export.
--ignore-missing-spaces, --ignore-unparameterized-spaces
Suppress errors for any requested Hyperopt spaces that
do not contain any parameters.
--analyze-per-epoch Run populate_indicators once per epoch.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
--freqaimodel NAME Specify a custom freqaimodels.
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
```
### Hyperopt checklist ### Hyperopt checklist
@@ -445,7 +322,6 @@ While this strategy is most likely too simple to provide consistent profit, it s
Whether you are using `.range` functionality or the alternatives above, you should try to use space ranges as small as possible since this will improve CPU/RAM usage. Whether you are using `.range` functionality or the alternatives above, you should try to use space ranges as small as possible since this will improve CPU/RAM usage.
## Optimizing protections ## Optimizing protections
Freqtrade can also optimize protections. How you optimize protections is up to you, and the following should be considered as example only. Freqtrade can also optimize protections. How you optimize protections is up to you, and the following should be considered as example only.
@@ -589,14 +465,15 @@ Currently, the following loss functions are builtin:
* `ShortTradeDurHyperOptLoss` - (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses. * `ShortTradeDurHyperOptLoss` - (default legacy Freqtrade hyperoptimization loss function) - Mostly for short trade duration and avoiding losses.
* `OnlyProfitHyperOptLoss` - takes only amount of profit into consideration. * `OnlyProfitHyperOptLoss` - takes only amount of profit into consideration.
* `SharpeHyperOptLoss` - optimizes Sharpe Ratio calculated on trade returns relative to standard deviation. * `SharpeHyperOptLoss` - Optimizes Sharpe Ratio calculated on trade returns relative to standard deviation.
* `SharpeHyperOptLossDaily` - optimizes Sharpe Ratio calculated on **daily** trade returns relative to standard deviation. * `SharpeHyperOptLossDaily` - Optimizes Sharpe Ratio calculated on **daily** trade returns relative to standard deviation.
* `SortinoHyperOptLoss` - optimizes Sortino Ratio calculated on trade returns relative to **downside** standard deviation. * `SortinoHyperOptLoss` - Optimizes Sortino Ratio calculated on trade returns relative to **downside** standard deviation.
* `SortinoHyperOptLossDaily` - optimizes Sortino Ratio calculated on **daily** trade returns relative to **downside** standard deviation. * `SortinoHyperOptLossDaily` - optimizes Sortino Ratio calculated on **daily** trade returns relative to **downside** standard deviation.
* `MaxDrawDownHyperOptLoss` - Optimizes Maximum absolute drawdown. * `MaxDrawDownHyperOptLoss` - Optimizes Maximum absolute drawdown.
* `MaxDrawDownRelativeHyperOptLoss` - Optimizes both maximum absolute drawdown while also adjusting for maximum relative drawdown. * `MaxDrawDownRelativeHyperOptLoss` - Optimizes both maximum absolute drawdown while also adjusting for maximum relative drawdown.
* `CalmarHyperOptLoss` - Optimizes Calmar Ratio calculated on trade returns relative to max drawdown. * `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. * `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.
Creation of a custom loss function is covered in the [Advanced Hyperopt](advanced-hyperopt.md) part of the documentation. Creation of a custom loss function is covered in the [Advanced Hyperopt](advanced-hyperopt.md) part of the documentation.
@@ -867,18 +744,15 @@ You can use the `--print-all` command line option if you would like to see all r
## Position stacking and disabling max market positions ## Position stacking and disabling max market positions
In some situations, you may need to run Hyperopt (and Backtesting) with the In some situations, you may need to run Hyperopt (and Backtesting) with the `--eps`/`--enable-position-staking` argument, or you may need to set `max_open_trades` to a very high number to disable the limit on the number of open trades.
`--eps`/`--enable-position-staking` and `--dmmp`/`--disable-max-market-positions` arguments.
By default, hyperopt emulates the behavior of the Freqtrade Live Run/Dry Run, where only one By default, hyperopt emulates the behavior of the Freqtrade Live Run/Dry Run, where only one
open trade is allowed for every traded pair. The total number of trades open for all pairs open trade per pair is allowed. The total number of trades open for all pairs
is also limited by the `max_open_trades` setting. During Hyperopt/Backtesting this may lead to is also limited by the `max_open_trades` setting. During Hyperopt/Backtesting this may lead to
some potential trades to be hidden (or masked) by previously open trades. potential trades being hidden (or masked) by already open trades.
The `--eps`/`--enable-position-stacking` argument allows emulation of buying the same pair multiple times, The `--eps`/`--enable-position-stacking` argument allows emulation of buying the same pair multiple times.
while `--dmmp`/`--disable-max-market-positions` disables applying `max_open_trades` Using `--max-open-trades` with a very high number will disable the limit on the number of open trades.
during Hyperopt/Backtesting (which is equal to setting `max_open_trades` to a very high
number).
!!! Note !!! Note
Dry/live runs will **NOT** use position stacking - therefore it does make sense to also validate the strategy without this as it's closer to reality. Dry/live runs will **NOT** use position stacking - therefore it does make sense to also validate the strategy without this as it's closer to reality.
@@ -919,13 +793,39 @@ Your epochs should therefore be aligned to the possible values - or you should b
After you run Hyperopt for the desired amount of epochs, you can later list all results for analysis, select only best or profitable once, and show the details for any of the epochs previously evaluated. This can be done with the `hyperopt-list` and `hyperopt-show` sub-commands. The usage of these sub-commands is described in the [Utils](utils.md#list-hyperopt-results) chapter. After you run Hyperopt for the desired amount of epochs, you can later list all results for analysis, select only best or profitable once, and show the details for any of the epochs previously evaluated. This can be done with the `hyperopt-list` and `hyperopt-show` sub-commands. The usage of these sub-commands is described in the [Utils](utils.md#list-hyperopt-results) chapter.
## Output debug messages from your strategy
If you want to output debug messages from your strategy, you can use the `logging` module. By default, Freqtrade will output all messages with a level of `INFO` or higher.
``` python
import logging
logger = logging.getLogger(__name__)
class MyAwesomeStrategy(IStrategy):
...
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
logger.info("This is a debug message")
...
```
!!! Note "using print"
Messages printed via `print()` will not be shown in the hyperopt output unless parallelism is disabled (`-j 1`).
It is recommended to use the `logging` module instead.
## Validate backtesting results ## Validate backtesting results
Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected. Once the optimized strategy has been implemented into your strategy, you should backtest this strategy to make sure everything is working as expected.
To achieve same the results (number of trades, their durations, profit, etc.) as during Hyperopt, please use the same configuration and parameters (timerange, timeframe, ...) used for hyperopt `--dmmp`/`--disable-max-market-positions` and `--eps`/`--enable-position-stacking` for Backtesting. To achieve same the results (number of trades, their durations, profit, etc.) as during Hyperopt, please use the same configuration and parameters (timerange, timeframe, ...) used for hyperopt for Backtesting.
### Why do my backtest results not match my hyperopt results? ### Why do my backtest results not match my hyperopt results?
Should results not match, check the following factors: Should results not match, check the following factors:
* You may have added parameters to hyperopt in `populate_indicators()` where they will be calculated only once **for all epochs**. If you are, for example, trying to optimise multiple SMA timeperiod values, the hyperoptable timeperiod parameter should be placed in `populate_entry_trend()` which is calculated every epoch. See [Optimizing an indicator parameter](https://www.freqtrade.io/en/stable/hyperopt/#optimizing-an-indicator-parameter). * You may have added parameters to hyperopt in `populate_indicators()` where they will be calculated only once **for all epochs**. If you are, for example, trying to optimise multiple SMA timeperiod values, the hyperoptable timeperiod parameter should be placed in `populate_entry_trend()` which is calculated every epoch. See [Optimizing an indicator parameter](https://www.freqtrade.io/en/stable/hyperopt/#optimizing-an-indicator-parameter).

View File

@@ -55,7 +55,6 @@ It uses configuration from `exchange.pair_whitelist` and `exchange.pair_blacklis
By default, only currently enabled pairs are allowed. By default, only currently enabled pairs are allowed.
To skip pair validation against active markets, set `"allow_inactive": true` within the `StaticPairList` configuration. To skip pair validation against active markets, set `"allow_inactive": true` within the `StaticPairList` configuration.
This can be useful for backtesting expired pairs (like quarterly spot-markets). This can be useful for backtesting expired pairs (like quarterly spot-markets).
This option must be configured along with `exchange.skip_pair_validation` in the exchange configuration.
When used in a "follow-up" position (e.g. after VolumePairlist), all pairs in `'pair_whitelist'` will be added to the end of the pairlist. When used in a "follow-up" position (e.g. after VolumePairlist), all pairs in `'pair_whitelist'` will be added to the end of the pairlist.
@@ -353,7 +352,7 @@ The optional `bearer_token` will be included in the requests Authorization Heade
#### MarketCapPairList #### MarketCapPairList
`MarketCapPairList` employs sorting/filtering of pairs by their marketcap rank based of CoinGecko. It will only recognize coins up to the coin placed at rank 250. The returned pairlist will be sorted based of their marketcap ranks. `MarketCapPairList` employs sorting/filtering of pairs by their marketcap rank based of CoinGecko. The returned pairlist will be sorted based of their marketcap ranks.
```json ```json
"pairlists": [ "pairlists": [
@@ -361,14 +360,22 @@ The optional `bearer_token` will be included in the requests Authorization Heade
"method": "MarketCapPairList", "method": "MarketCapPairList",
"number_assets": 20, "number_assets": 20,
"max_rank": 50, "max_rank": 50,
"refresh_period": 86400 "refresh_period": 86400,
"categories": ["layer-1"]
} }
] ]
``` ```
`number_assets` defines the maximum number of pairs returned by the pairlist. `max_rank` will determine the maximum rank used in creating/filtering the pairlist. It's expected that some coins within the top `max_rank` marketcap will not be included in the resulting pairlist since not all pairs will have active trading pairs in your preferred market/stake/exchange combination. `number_assets` defines the maximum number of pairs returned by the pairlist. `max_rank` will determine the maximum rank used in creating/filtering the pairlist. It's expected that some coins within the top `max_rank` marketcap will not be included in the resulting pairlist since not all pairs will have active trading pairs in your preferred market/stake/exchange combination.
While using a `max_rank` bigger than 250 is supported, it's not recommended, as it'll cause multiple API calls to CoinGecko, which can lead to rate limit issues.
`refresh_period` setting defines the period (in seconds) at which the marketcap rank data will be refreshed. Defaults to 86,400s (1 day). The pairlist cache (`refresh_period`) is applicable on both generating pairlists (first position in the list) and filtering instances (not the first position in the list). The `refresh_period` setting defines the interval (in seconds) at which the marketcap rank data will be refreshed. The default is 86,400 seconds (1 day). The pairlist cache (`refresh_period`) applies to both generating pairlists (when in the first position in the list) and filtering instances (when not in the first position in the list).
The `categories` setting specifies the [coingecko categories](https://www.coingecko.com/en/categories) from which to select coins from. The default is an empty list `[]`, meaning no category filtering is applied.
If an incorrect category string is chosen, the plugin will print the available categories from CoinGecko and fail. The category should be the ID of the category, for example, for `https://www.coingecko.com/en/categories/layer-1`, the category ID would be `layer-1`. You can pass multiple categories such as `["layer-1", "meme-token"]` to select from several categories.
!!! Warning "Many categories"
Each added category corresponds to one API call to CoinGecko. The more categories you add, the longer the pairlist generation will take, potentially causing rate limit issues.
#### AgeFilter #### AgeFilter

View File

@@ -1,24 +1,16 @@
## Protections ## Protections
!!! Warning "Beta feature"
This feature is still in it's testing phase. Should you notice something you think is wrong please let us know via Discord or via Github Issue.
Protections will protect your strategy from unexpected events and market conditions by temporarily stop trading for either one pair, or for all pairs. Protections will protect your strategy from unexpected events and market conditions by temporarily stop trading for either one pair, or for all pairs.
All protection end times are rounded up to the next candle to avoid sudden, unexpected intra-candle buys. All protection end times are rounded up to the next candle to avoid sudden, unexpected intra-candle buys.
!!! Note !!! Tip "Usage tips"
Not all Protections will work for all strategies, and parameters will need to be tuned for your strategy to improve performance. Not all Protections will work for all strategies, and parameters will need to be tuned for your strategy to improve performance.
!!! Tip
Each Protection can be configured multiple times with different parameters, to allow different levels of protection (short-term / long-term). Each Protection can be configured multiple times with different parameters, to allow different levels of protection (short-term / long-term).
!!! Note "Backtesting" !!! Note "Backtesting"
Protections are supported by backtesting and hyperopt, but must be explicitly enabled by using the `--enable-protections` flag. Protections are supported by backtesting and hyperopt, but must be explicitly enabled by using the `--enable-protections` flag.
!!! Warning "Setting protections from the configuration"
Setting protections from the configuration via `"protections": [],` key should be considered deprecated and will be removed in a future version.
It is also no longer guaranteed that your protections apply to the strategy in cases where the strategy defines [protections as property](hyperopt.md#optimizing-protections).
### Available Protections ### Available Protections
* [`StoplossGuard`](#stoploss-guard) Stop trading if a certain amount of stoploss occurred within a certain time window. * [`StoplossGuard`](#stoploss-guard) Stop trading if a certain amount of stoploss occurred within a certain time window.

View File

@@ -28,7 +28,7 @@ Freqtrade is a free and open source crypto trading bot written in Python. It is
- Develop your Strategy: Write your strategy in python, using [pandas](https://pandas.pydata.org/). Example strategies to inspire you are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). - Develop your Strategy: Write your strategy in python, using [pandas](https://pandas.pydata.org/). Example strategies to inspire you are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies).
- Download market data: Download historical data of the exchange and the markets your may want to trade with. - Download market data: Download historical data of the exchange and the markets your may want to trade with.
- Backtest: Test your strategy on downloaded historical data. - Backtest: Test your strategy on downloaded historical data.
- Optimize: Find the best parameters for your strategy using hyperoptimization which employs machining learning methods. You can optimize buy, sell, take profit (ROI), stop-loss and trailing stop-loss parameters for your strategy. - 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. - 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: 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. - 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.
@@ -40,20 +40,24 @@ Freqtrade is a free and open source crypto trading bot written in Python. It is
Please read the [exchange specific notes](exchanges.md) to learn about eventual, special configurations needed for each exchange. Please read the [exchange specific notes](exchanges.md) to learn about eventual, special configurations needed for each exchange.
- [X] [Binance](https://www.binance.com/) - [X] [Binance](https://www.binance.com/)
- [X] [Bitmart](https://bitmart.com/)
- [X] [BingX](https://bingx.com/invite/0EM9RX) - [X] [BingX](https://bingx.com/invite/0EM9RX)
- [X] [Bitmart](https://bitmart.com/)
- [X] [Bybit](https://bybit.com/)
- [X] [Gate.io](https://www.gate.io/ref/6266643) - [X] [Gate.io](https://www.gate.io/ref/6266643)
- [X] [HTX](https://www.htx.com/) (Former Huobi) - [X] [HTX](https://www.htx.com/)
- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)
- [X] [Kraken](https://kraken.com/) - [X] [Kraken](https://kraken.com/)
- [X] [OKX](https://okx.com/) (Former OKEX) - [X] [OKX](https://okx.com/)
- [X] [MyOKX](https://okx.com/) (OKX EEA)
- [ ] [potentially many others through <img alt="ccxt" width="30px" src="assets/ccxt-logo.svg" />](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_ - [ ] [potentially many others through <img alt="ccxt" width="30px" src="assets/ccxt-logo.svg" />](https://github.com/ccxt/ccxt/). _(We cannot guarantee they will work)_
### Supported Futures Exchanges (experimental) ### Supported Futures Exchanges (experimental)
- [X] [Binance](https://www.binance.com/) - [X] [Binance](https://www.binance.com/)
- [X] [Gate.io](https://www.gate.io/ref/6266643)
- [X] [OKX](https://okx.com/)
- [X] [Bybit](https://bybit.com/) - [X] [Bybit](https://bybit.com/)
- [X] [Gate.io](https://www.gate.io/ref/6266643)
- [X] [Hyperliquid](https://hyperliquid.xyz/) (A decentralized exchange, or DEX)
- [X] [OKX](https://okx.com/)
Please make sure to read the [exchange specific notes](exchanges.md), as well as the [trading with leverage](leverage.md) documentation before diving in. Please make sure to read the [exchange specific notes](exchanges.md), as well as the [trading with leverage](leverage.md) documentation before diving in.
@@ -84,7 +88,7 @@ To run this bot we recommend you a linux cloud instance with a minimum of:
Alternatively Alternatively
- Python 3.9+ - Python 3.10+
- pip (pip3) - pip (pip3)
- git - git
- TA-Lib - TA-Lib

View File

@@ -24,7 +24,7 @@ The easiest way to install and run Freqtrade is to clone the bot Github reposito
The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable). The `stable` branch contains the code of the last release (done usually once per month on an approximately one week old snapshot of the `develop` branch to prevent packaging bugs, so potentially it's more stable).
!!! Note !!! Note
Python3.9 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository. Python3.10 or higher and the corresponding `pip` are assumed to be available. The install-script will warn you and stop if that's not the case. `git` is also needed to clone the Freqtrade repository.
Also, python headers (`python<yourversion>-dev` / `python<yourversion>-devel`) must be available for the installation to complete successfully. Also, python headers (`python<yourversion>-dev` / `python<yourversion>-devel`) must be available for the installation to complete successfully.
!!! Warning "Up-to-date clock" !!! Warning "Up-to-date clock"
@@ -42,7 +42,7 @@ These requirements apply to both [Script Installation](#script-installation) and
### Install guide ### Install guide
* [Python >= 3.9](http://docs.python-guide.org/en/latest/starting/installation/) * [Python >= 3.10](http://docs.python-guide.org/en/latest/starting/installation/)
* [pip](https://pip.pypa.io/en/stable/installing/) * [pip](https://pip.pypa.io/en/stable/installing/)
* [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) * [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
* [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended) * [virtualenv](https://virtualenv.pypa.io/en/stable/installation.html) (Recommended)
@@ -54,7 +54,7 @@ We've included/collected install instructions for Ubuntu, MacOS, and Windows. Th
OS Specific steps are listed first, the common section below is necessary for all systems. OS Specific steps are listed first, the common section below is necessary for all systems.
!!! Note !!! Note
Python3.9 or higher and the corresponding pip are assumed to be available. Python3.10 or higher and the corresponding pip are assumed to be available.
=== "Debian/Ubuntu" === "Debian/Ubuntu"
#### Install necessary dependencies #### Install necessary dependencies
@@ -67,16 +67,28 @@ OS Specific steps are listed first, the common section below is necessary for al
sudo apt install -y python3-pip python3-venv python3-dev python3-pandas git curl sudo apt install -y python3-pip python3-venv python3-dev python3-pandas git curl
``` ```
=== "MacOS"
#### Install necessary dependencies
Install [Homebrew](https://brew.sh/) if you don't have it already.
```bash
# install packages
brew install gettext libomp
```
!!! Note
The `setup.sh` script will install these dependencies for you - assuming brew is installed on your system.
=== "RaspberryPi/Raspbian" === "RaspberryPi/Raspbian"
The following assumes the latest [Raspbian Buster lite image](https://www.raspberrypi.org/downloads/raspbian/). The following assumes the latest [Raspbian Buster lite image](https://www.raspberrypi.org/downloads/raspbian/).
This image comes with python3.9 preinstalled, making it easy to get freqtrade up and running. This image comes with python3.11 preinstalled, making it easy to get freqtrade up and running.
Tested using a Raspberry Pi 3 with the Raspbian Buster lite image, all updates applied. Tested using a Raspberry Pi 3 with the Raspbian Buster lite image, all updates applied.
```bash ```bash
sudo apt-get install python3-venv libatlas-base-dev cmake curl sudo apt-get install python3-venv libatlas-base-dev cmake curl
# Use pywheels.org to speed up installation # Use piwheels.org to speed up installation
sudo echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > tee /etc/pip.conf sudo echo "[global]\nextra-index-url=https://www.piwheels.org/simple" > tee /etc/pip.conf
git clone https://github.com/freqtrade/freqtrade.git git clone https://github.com/freqtrade/freqtrade.git
@@ -150,9 +162,7 @@ Each time you open a new terminal, you must run `source .venv/bin/activate` to a
source ./.venv/bin/activate source ./.venv/bin/activate
``` ```
### Congratulations [You are now ready](#you-are-ready) to run the bot.
[You are ready](#you-are-ready), and run the bot
### Other options of /setup.sh script ### Other options of /setup.sh script
@@ -169,7 +179,7 @@ You can as well update, configure and reset the codebase of your bot with `./scr
** --install ** ** --install **
With this option, the script will install the bot and most dependencies: With this option, the script will install the bot and most dependencies:
You will need to have git and python3.9+ installed beforehand for this to work. You will need to have git and python3.10+ installed beforehand for this to work.
* Mandatory software as: `ta-lib` * Mandatory software as: `ta-lib`
* Setup your virtualenv under `.venv/` * Setup your virtualenv under `.venv/`
@@ -220,7 +230,7 @@ cd ..
rm -rf ./ta-lib* rm -rf ./ta-lib*
``` ```
#### Setup Python virtual environment (virtualenv) ### Setup Python virtual environment (virtualenv)
You will run freqtrade in separated `virtual environment` You will run freqtrade in separated `virtual environment`
@@ -232,19 +242,18 @@ python3 -m venv .venv
source .venv/bin/activate source .venv/bin/activate
``` ```
#### Install python dependencies ### Install python dependencies
```bash ```bash
python3 -m pip install --upgrade pip python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt python3 -m pip install -r requirements.txt
# install freqtrade
python3 -m pip install -e . python3 -m pip install -e .
``` ```
### Congratulations [You are now ready](#you-are-ready) to run the bot.
[You are ready](#you-are-ready), and run the bot ### (Optional) Post-installation Tasks
#### (Optional) Post-installation Tasks
!!! Note !!! Note
If you run the bot on a server, you should consider using [Docker](docker_quickstart.md) or a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout. If you run the bot on a server, you should consider using [Docker](docker_quickstart.md) or a terminal multiplexer like `screen` or [`tmux`](https://en.wikipedia.org/wiki/Tmux) to avoid that the bot is stopped on logout.
@@ -333,9 +342,7 @@ cd build_helpers
bash install_ta-lib.sh ${CONDA_PREFIX} nosudo bash install_ta-lib.sh ${CONDA_PREFIX} nosudo
``` ```
### Congratulations [You are now ready](#you-are-ready) to run the bot.
[You are ready](#you-are-ready), and run the bot
### Important shortcuts ### Important shortcuts

View File

@@ -82,7 +82,7 @@ Each market(trading pair), keeps collateral in a separate account
"margin_mode": "isolated" "margin_mode": "isolated"
``` ```
#### Cross margin mode (currently unavailable) #### Cross margin mode
One account is used to share collateral between markets (trading pairs). Margin is taken from total account balance to avoid liquidation when needed. One account is used to share collateral between markets (trading pairs). Margin is taken from total account balance to avoid liquidation when needed.

View File

@@ -29,39 +29,7 @@ Those are set to avoid users accidentally generating false positives.
## Lookahead-analysis command reference ## Lookahead-analysis command reference
``` --8<-- "commands/lookahead-analysis.md"
usage: freqtrade lookahead-analysis [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME]
[--freqaimodel-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[--max-open-trades INT]
[--stake-amount STAKE_AMOUNT]
[--fee FLOAT] [-p PAIRS [PAIRS ...]]
[--dry-run-wallet DRY_RUN_WALLET]
[--timeframe-detail TIMEFRAME_DETAIL]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
[--export {none,trades,signals}]
[--export-filename PATH]
[--breakdown {day,week,month} [{day,week,month} ...]]
[--cache {none,day,week,month}]
[--freqai-backtest-live-models]
[--minimum-trade-amount INT]
[--targeted-trade-amount INT]
[--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME]
options:
--minimum-trade-amount INT
Minimum trade amount for lookahead-analysis
--targeted-trade-amount INT
Targeted trade amount for lookahead analysis
--lookahead-analysis-exportfilename LOOKAHEAD_ANALYSIS_EXPORTFILENAME
Use this csv-filename to store lookahead-analysis-
results
```
!!! Note "" !!! Note ""
The above Output was reduced to options `lookahead-analysis` adds on top of regular backtesting commands. The above Output was reduced to options `lookahead-analysis` adds on top of regular backtesting commands.
@@ -101,3 +69,4 @@ This could lead to a false-negative (the strategy will then be reported as non-b
- `lookahead-analysis` has access to everything that backtesting has too. - `lookahead-analysis` has access to everything that backtesting has too.
Please don't provoke any configs like enabling position stacking. 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. 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.

View File

@@ -30,76 +30,7 @@ The `freqtrade plot-dataframe` subcommand shows an interactive graph with three
Possible arguments: Possible arguments:
``` --8<-- "commands/plot-dataframe.md"
usage: freqtrade plot-dataframe [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-p PAIRS [PAIRS ...]]
[--indicators1 INDICATORS1 [INDICATORS1 ...]]
[--indicators2 INDICATORS2 [INDICATORS2 ...]]
[--plot-limit INT] [--db-url PATH]
[--trade-source {DB,file}] [--export EXPORT]
[--export-filename PATH]
[--timerange TIMERANGE] [-i TIMEFRAME]
[--no-trades]
optional arguments:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--indicators1 INDICATORS1 [INDICATORS1 ...]
Set indicators from your strategy you want in the
first row of the graph. Space-separated list. Example:
`ema3 ema5`. Default: `['sma', 'ema3', 'ema5']`.
--indicators2 INDICATORS2 [INDICATORS2 ...]
Set indicators from your strategy you want in the
third row of the graph. Space-separated list. Example:
`fastd fastk`. Default: `['macd', 'macdsignal']`.
--plot-limit INT Specify tick limit for plotting. Notice: too high
values cause huge files. Default: 750.
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-source {DB,file}
Specify the source for trades (Can be DB or file
(backtest file)) Default: file
--export EXPORT Export backtest results, argument are: trades.
Example: `--export=trades`
--export-filename PATH
Save backtest results to the file with this filename.
Requires `--export` to be set as well. Example:
`--export-filename=user_data/backtest_results/backtest
_today.json`
--timerange TIMERANGE
Specify what timerange of data to use.
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--no-trades Skip using trades from backtesting file and DB.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
Example: Example:
@@ -306,62 +237,7 @@ The forth graph can help you analyze trade parallelism, showing how often max_op
Possible options for the `freqtrade plot-profit` subcommand: Possible options for the `freqtrade plot-profit` subcommand:
``` --8<-- "commands/plot-profit.md"
usage: freqtrade plot-profit [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH] [-p PAIRS [PAIRS ...]]
[--timerange TIMERANGE] [--export EXPORT]
[--export-filename PATH] [--db-url PATH]
[--trade-source {DB,file}] [-i TIMEFRAME]
optional arguments:
-h, --help show this help message and exit
-p PAIRS [PAIRS ...], --pairs PAIRS [PAIRS ...]
Limit command to these pairs. Pairs are space-
separated.
--timerange TIMERANGE
Specify what timerange of data to use.
--export EXPORT Export backtest results, argument are: trades.
Example: `--export=trades`
--export-filename PATH, --backtest-filename PATH
Use backtest results from this filename.
Requires `--export` to be set as well. Example:
`--export-filename=user_data/backtest_results/backtest
_today.json`
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-source {DB,file}
Specify the source for trades (Can be DB or file
(backtest file)) Default: file
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--auto-open Automatically open generated plot.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
```
The `-p/--pairs` argument, can be used to limit the pairs that are considered for this calculation. The `-p/--pairs` argument, can be used to limit the pairs that are considered for this calculation.

View File

@@ -26,56 +26,7 @@ In addition to the recursive formula check, this command also carries out a simp
## Recursive-analysis command reference ## Recursive-analysis command reference
``` --8<-- "commands/recursive-analysis.md"
usage: freqtrade recursive-analysis [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [-s NAME]
[--strategy-path PATH]
[--recursive-strategy-search]
[--freqaimodel NAME]
[--freqaimodel-path PATH] [-i TIMEFRAME]
[--timerange TIMERANGE]
[--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}]
[-p PAIR]
[--freqai-backtest-live-models]
[--startup-candle STARTUP_CANDLES [STARTUP_CANDLES ...]]
optional arguments:
-h, --help show this help message and exit
-i TIMEFRAME, --timeframe TIMEFRAME
Specify timeframe (`1m`, `5m`, `30m`, `1h`, `1d`).
--data-format-ohlcv {json,jsongz,hdf5,feather,parquet}
Storage format for downloaded candle (OHLCV) data.
(default: `feather`).
-p PAIR, --pairs PAIR
Limit command to this pair.
--startup-candle STARTUP_CANDLE [STARTUP_CANDLE ...]
Provide a space-separated list of startup_candle_count to
be checked. Default : `199 399 499 999 1999`.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
Strategy arguments:
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--strategy-path PATH Specify additional strategy lookup path.
--timerange TIMERANGE
Specify what timerange of data to use.
```
### Why are odd-numbered default startup candles used? ### Why are odd-numbered default startup candles used?

View File

@@ -1,7 +1,7 @@
markdown==3.7 markdown==3.7
mkdocs==1.6.0 mkdocs==1.6.1
mkdocs-material==9.5.33 mkdocs-material==9.5.50
mdx_truly_sane_lists==1.3 mdx_truly_sane_lists==1.3
pymdown-extensions==10.9 pymdown-extensions==10.14.1
jinja2==3.1.4 jinja2==3.1.5
mike==2.1.3 mike==2.1.3

View File

@@ -88,8 +88,9 @@ Make sure that the following 2 lines are available in your docker-compose file:
### Consuming the API ### Consuming the API
You can consume the API by using `freqtrade-client` (also available as `scripts/rest_client.py`). We advise consuming the API by using the supported `freqtrade-client` package (also available as `scripts/rest_client.py`).
This command can be installed independent of the bot by using `pip install freqtrade-client`.
This command can be installed independent of any running freqtrade bot by using `pip install freqtrade-client`.
This module is designed to be lightweight, and only depends on the `requests` and `python-rapidjson` modules, skipping all heavy dependencies freqtrade otherwise needs. This module is designed to be lightweight, and only depends on the `requests` and `python-rapidjson` modules, skipping all heavy dependencies freqtrade otherwise needs.
@@ -144,57 +145,6 @@ This method will work for all arguments - check the "show" command for a list of
For a full list of available commands, please refer to the list below. For a full list of available commands, please refer to the list below.
### Available endpoints
| Command | Description |
|----------|-------------|
| `ping` | Simple command testing the API Readiness - requires no authentication.
| `start` | Starts the trader.
| `stop` | Stops the trader.
| `stopbuy` | Stops the trader from opening new trades. Gracefully closes open trades according to their rules.
| `reload_config` | Reloads the configuration file.
| `trades` | List last trades. Limited to 500 trades per call.
| `trade/<tradeid>` | Get specific trade.
| `trades/<tradeid>` | DELETE - Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange.
| `trades/<tradeid>/open-order` | DELETE - Cancel open order for this trade.
| `trades/<tradeid>/reload` | GET - Reload a trade from the Exchange. Only works in live, and can potentially help recover a trade that was manually sold on the exchange.
| `show_config` | Shows part of the current configuration with relevant settings to operation.
| `logs` | Shows last log messages.
| `status` | Lists all open trades.
| `count` | Displays number of trades used and available.
| `entries [pair]` | Shows profit statistics for each enter tags for given pair (or all pairs if pair isn't given). Pair is optional.
| `exits [pair]` | Shows profit statistics for each exit reasons for given pair (or all pairs if pair isn't given). Pair is optional.
| `mix_tags [pair]` | Shows profit statistics for each combinations of enter tag + exit reasons for given pair (or all pairs if pair isn't given). Pair is optional.
| `locks` | Displays currently locked pairs.
| `delete_lock <lock_id>` | Deletes (disables) the lock by id.
| `locks add <pair>, <until>, [side], [reason]` | Locks a pair until "until". (Until will be rounded up to the nearest timeframe).
| `profit` | Display a summary of your profit/loss from close trades and some stats about your performance.
| `forceexit <trade_id> [order_type] [amount]` | Instantly exits the given trade (ignoring `minimum_roi`), using the given order type ("market" or "limit", uses your config setting if not specified), and the chosen amount (full sell if not specified).
| `forceexit all` | Instantly exits all open trades (Ignoring `minimum_roi`).
| `forceenter <pair> [rate]` | Instantly enters the given pair. Rate is optional. (`force_entry_enable` must be set to True)
| `forceenter <pair> <side> [rate]` | Instantly longs or shorts the given pair. Rate is optional. (`force_entry_enable` must be set to True)
| `performance` | Show performance of each finished trade grouped by pair.
| `balance` | Show account balance per currency.
| `daily <n>` | Shows profit or loss per day, over the last n days (n defaults to 7).
| `weekly <n>` | Shows profit or loss per week, over the last n days (n defaults to 4).
| `monthly <n>` | Shows profit or loss per month, over the last n days (n defaults to 3).
| `stats` | Display a summary of profit / loss reasons as well as average holding times.
| `whitelist` | Show the current whitelist.
| `blacklist [pair]` | Show the current blacklist, or adds a pair to the blacklist.
| `edge` | Show validated pairs by Edge if it is enabled.
| `pair_candles` | Returns dataframe for a pair / timeframe combination while the bot is running. **Alpha**
| `pair_history` | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy. **Alpha**
| `plot_config` | Get plot config from the strategy (or nothing if not configured). **Alpha**
| `strategies` | List strategies in strategy directory. **Alpha**
| `strategy <strategy>` | Get specific Strategy content. **Alpha**
| `available_pairs` | List available backtest data. **Alpha**
| `version` | Show version.
| `sysinfo` | Show information about the system load.
| `health` | Show bot health (last bot loop).
!!! Warning "Alpha status"
Endpoints labeled with *Alpha status* above may change at any time without notice.
Possible commands can be listed from the rest-client script using the `help` command. Possible commands can be listed from the rest-client script using the `help` command.
``` bash ``` bash
@@ -266,6 +216,14 @@ forceexit
health health
Provides a quick health check of the running bot. Provides a quick health check of the running bot.
lock_add
Manually lock a specific pair
:param pair: Pair to lock
:param until: Lock until this date (format "2024-03-30 16:00:00Z")
:param side: Side to lock (long, short, *)
:param reason: Reason for the lock
locks locks
Return current locks Return current locks
@@ -353,6 +311,62 @@ whitelist
``` ```
### Available endpoints
If you wish to call the REST API manually via another route, e.g. directly via `curl`, the table below shows the relevant URL endpoints and parameters.
All endpoints in the below table need to be prefixed with the base URL of the API, e.g. `http://127.0.0.1:8080/api/v1/` - so the command becomes `http://127.0.0.1:8080/api/v1/<command>`.
| Endpoint | Method | Description / Parameters |
|-----------|--------|--------------------------|
| `/ping` | GET | Simple command testing the API Readiness - requires no authentication.
| `/start` | POST | Starts the trader.
| `/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.
| `/trades` | GET | List last trades. Limited to 500 trades per call.
| `/trade/<tradeid>` | GET | Get specific trade.<br/>*Params:*<br/>- `tradeid` (`int`)
| `/trades/<tradeid>` | DELETE | Remove trade from the database. Tries to close open orders. Requires manual handling of this trade on the exchange.<br/>*Params:*<br/>- `tradeid` (`int`)
| `/trades/<tradeid>/open-order` | DELETE | Cancel open order for this trade.<br/>*Params:*<br/>- `tradeid` (`int`)
| `/trades/<tradeid>/reload` | POST | Reload a trade from the Exchange. Only works in live, and can potentially help recover a trade that was manually sold on the exchange.<br/>*Params:*<br/>- `tradeid` (`int`)
| `/show_config` | GET | Shows part of the current configuration with relevant settings to operation.
| `/logs` | GET | Shows last log messages.
| `/status` | GET | Lists all open trades.
| `/count` | GET | Displays number of trades used and available.
| `/entries` | GET | Shows profit statistics for each enter tags for given pair (or all pairs if pair isn't given). Pair is optional.<br/>*Params:*<br/>- `pair` (`str`)
| `/exits` | GET | Shows profit statistics for each exit reasons for given pair (or all pairs if pair isn't given). Pair is optional.<br/>*Params:*<br/>- `pair` (`str`)
| `/mix_tags` | GET | Shows profit statistics for each combinations of enter tag + exit reasons for given pair (or all pairs if pair isn't given). Pair is optional.<br/>*Params:*<br/>- `pair` (`str`)
| `/locks` | GET | Displays currently locked pairs.
| `/locks` | POST | Locks a pair until "until". (Until will be rounded up to the nearest timeframe). Side is optional and is either `long` or `short` (default is `long`). Reason is optional.<br/>*Params:*<br/>- `<pair>` (`str`)<br/>- `<until>` (`datetime`)<br/>- `[side]` (`str`)<br/>- `[reason]` (`str`)
| `/locks/<lockid>` | DELETE | Deletes (disables) the lock by id.<br/>*Params:*<br/>- `lockid` (`int`)
| `/profit` | GET | Display a summary of your profit/loss from close trades and some stats about your performance.
| `/forceexit` | POST | Instantly exits the given trade (ignoring `minimum_roi`), using the given order type ("market" or "limit", uses your config setting if not specified), and the chosen amount (full sell if not specified). If `all` is supplied as the `tradeid`, then all currently open trades will be forced to exit.<br/>*Params:*<br/>- `<tradeid>` (`int` or `str`)<br/>- `<ordertype>` (`str`)<br/>- `[amount]` (`float`)
| `/forceenter` | POST | Instantly enters the given pair. Side is optional and is either `long` or `short` (default is `long`). Rate is optional. (`force_entry_enable` must be set to True)<br/>*Params:*<br/>- `<pair>` (`str`)<br/>- `<side>` (`str`)<br/>- `[rate]` (`float`)
| `/performance` | GET | Show performance of each finished trade grouped by pair.
| `/balance` | GET | Show account balance per currency.
| `/daily` | GET | Shows profit or loss per day, over the last n days (n defaults to 7).<br/>*Params:*<br/>- `<n>` (`int`)
| `/weekly` | GET | Shows profit or loss per week, over the last n days (n defaults to 4).<br/>*Params:*<br/>- `<n>` (`int`)
| `/monthly` | GET | Shows profit or loss per month, over the last n days (n defaults to 3).<br/>*Params:*<br/>- `<n>` (`int`)
| `/stats` | GET | Display a summary of profit / loss reasons as well as average holding times.
| `/whitelist` | GET | Show the current whitelist.
| `/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**
| `/pair_history` | POST | Returns an analyzed dataframe for a given timerange, analyzed by a given strategy, filtered by a provided list of columns to return. **Alpha**<br/>*Params:*<br/>- `<column_list>` (`list[str]`)
| `/plot_config` | GET | Get plot config from the strategy (or nothing if not configured). **Alpha**
| `/strategies` | GET | List strategies in strategy directory. **Alpha**
| `/strategy/<strategy>` | GET | Get specific Strategy content by strategy class name. **Alpha**<br/>*Params:*<br/>- `<strategy>` (`str`)
| `/available_pairs` | GET | List available backtest data. **Alpha**
| `/version` | GET | Show version.
| `/sysinfo` | GET | Show information about the system load.
| `/health` | GET | Show bot health (last bot loop).
!!! Warning "Alpha status"
Endpoints labeled with *Alpha status* above may change at any time without notice.
### Message WebSocket ### Message WebSocket
The API Server includes a websocket endpoint for subscribing to RPC messages from the freqtrade Bot. The API Server includes a websocket endpoint for subscribing to RPC messages from the freqtrade Bot.

View File

@@ -31,11 +31,12 @@ The Order-type will be ignored if only one mode is available.
| Binance | limit | | Binance | limit |
| Binance Futures | market, limit | | Binance Futures | market, limit |
| Bingx | market, limit | | Bingx | market, limit |
| HTX (former Huobi) | limit | | HTX | limit |
| kraken | market, limit | | kraken | market, limit |
| Gate | limit | | Gate | limit |
| Okx | limit | | Okx | limit |
| Kucoin | stop-limit, stop-market| | Kucoin | stop-limit, stop-market|
| Hyperliquid (futures only) | limit |
!!! Note "Tight stoploss" !!! Note "Tight stoploss"
<ins>Do not set too low/tight stoploss value when using stop loss on exchange!</ins> <ins>Do not set too low/tight stoploss value when using stop loss on exchange!</ins>

196
docs/strategy-101.md Normal file
View File

@@ -0,0 +1,196 @@
# Freqtrade Strategies 101: A Quick Start for Strategy Development
For the purposes of this quick start, we are assuming you are familiar with the basics of trading, and have read the
[Freqtrade basics](bot-basics.md) page.
## Required Knowledge
A strategy in Freqtrade is a Python class that defines the logic for buying and selling cryptocurrency `assets`.
Assets are defined as `pairs`, which represent the `coin` and the `stake`. The coin is the asset you are trading using another currency as the stake.
Data is supplied by the exchange in the form of `candles`, which are made up of a six values: `date`, `open`, `high`, `low`, `close` and `volume`.
`Technical analysis` functions analyse the candle data using various computational and statistical formulae, and produce secondary values called `indicators`.
Indicators are analysed on the asset pair candles to generate `signals`.
Signals are turned into `orders` on a cryptocurrency `exchange`, i.e. `trades`.
We use the terms `entry` and `exit` instead of `buying` and `selling` because Freqtrade supports both `long` and `short` trades.
- **long**: You buy the coin based on a stake, e.g. buying the coin BTC using USDT as your stake, and you make a profit by selling the coin at a higher rate than you paid for. In long trades, profits are made by the coin value going up versus the stake.
- **short**: You borrow capital from the exchange in the form of the coin, and you pay back the stake value of the coin later. In short trades profits are made by the coin value going down versus the stake (you pay the loan off at a lower rate).
Whilst Freqtrade supports spot and futures markets for certain exchanges, for simplicity we will focus on spot (long) trades only.
## Structure of a Basic Strategy
### Main dataframe
Freqtrade strategies use a tabular data structure with rows and columns known as a `dataframe` to generate signals to enter and exit trades.
Each pair in your configured pairlist has its own dataframe. Dataframes are indexed by the `date` column, e.g. `2024-06-31 12:00`.
The next 5 columns represent the `open`, `high`, `low`, `close` and `volume` (OHLCV) data.
### Populate indicator values
The `populate_indicators` function adds columns to the dataframe that represent the technical analysis indicator values.
Examples of common indicators include Relative Strength Index, Bollinger Bands, Money Flow Index, Moving Average, and Average True Range.
Columns are added to the dataframe by calling technical analysis functions, e.g. ta-lib's RSI function `ta.RSI()`, and assigning them to a column name, e.g. `rsi`
```python
dataframe['rsi'] = ta.RSI(dataframe)
```
??? Hint "Technical Analysis libraries"
Different libraries work in different ways to generate indicator values. Please check the documentation of each library to understand
how to integrate it into your strategy. You can also check the [Freqtrade example strategies](https://github.com/freqtrade/freqtrade-strategies) to give you ideas.
### Populate entry signals
The `populate_entry_trend` function defines conditions for an entry signal.
The dataframe column `enter_long` is added to the dataframe, and when a value of `1` is in this column, Freqtrade sees an entry signal.
??? Hint "Shorting"
To enter short trades, use the `enter_short` column.
### Populate exit signals
The `populate_exit_trend` function defines conditions for an exit signal.
The dataframe column `exit_long` is added to the dataframe, and when a value of `1` is in this column, Freqtrade sees an exit signal.
??? Hint "Shorting"
To exit short trades, use the `exit_short` column.
## A simple strategy
Here is a minimal example of a Freqtrade strategy:
```python
from freqtrade.strategy import IStrategy
from pandas import DataFrame
import talib.abstract as ta
class MyStrategy(IStrategy):
# set the initial stoploss to -10%
stoploss = -0.10
# exit profitable positions at any time when the profit is greater than 1%
minimal_roi = {"0": 0.01}
def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# generate values for technical analysis indicators
dataframe['rsi'] = ta.RSI(dataframe, timeperiod=14)
return dataframe
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# generate entry signals based on indicator values
dataframe.loc[
(dataframe['rsi'] < 30),
'enter_long'] = 1
return dataframe
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
# generate exit signals based on indicator values
dataframe.loc[
(dataframe['rsi'] > 70),
'exit_long'] = 1
return dataframe
```
## Making trades
When a signal is found (a `1` in an entry or exit column), Freqtrade will attempt to make an order, i.e. a `trade` or `position`.
Each new trade position takes up a `slot`. Slots represent the maximum number of concurrent new trades that can be opened.
The number of slots is defined by the `max_open_trades` [configuration](configuration.md) option.
However, there can be a range of scenarios where generating a signal does not always create a trade order. These include:
- not enough remaining stake to buy an asset, or funds in your wallet to sell an asset (including any fees)
- not enough remaining free slots for a new trade to be opened (the number of positions you have open equals the `max_open_trades` option)
- there is already an open trade for a pair (Freqtrade cannot stack positions - however it can [adjust existing positions](strategy-callbacks.md#adjust-trade-position))
- if an entry and exit signal is present on the same candle, they are considered as [colliding](strategy-customization.md#colliding-signals), and no order will be raised
- the strategy actively rejects the trade order due to logic you specify by using one of the relevant [entry](strategy-callbacks.md#trade-entry-buy-order-confirmation) or [exit](strategy-callbacks.md#trade-exit-sell-order-confirmation) callbacks
Read through the [strategy customization](strategy-customization.md) documentation for more details.
## Backtesting and forward testing
Strategy development can be a long and frustrating process, as turning our human "gut instincts" into a working computer-controlled
("algo") strategy is not always straightforward.
Therefore a strategy should be tested to verify that it is going to work as intended.
Freqtrade has two testing modes:
- **backtesting**: using historical data that you [download from an exchange](data-download.md), backtesting is a quick way to assess performance of a strategy. However, it can be very easy to distort results so a strategy will look a lot more profitable than it really is. Check the [backtesting documentation](backtesting.md) for more information.
- **dry run**: often referred to as _forward testing_, dry runs use real time data from the exchange. However, any signals that would result in trades are tracked as normal by Freqtrade, but do not have any trades opened on the exchange itself. Forward testing runs in real time, so whilst it takes longer to get results it is a much more reliable indicator of **potential** performance than backtesting.
Dry runs are enabled by setting `dry_run` to true in your [configuration](configuration.md#using-dry-run-mode).
!!! Warning "Backtests can be very inaccurate"
There are many reasons why backtest results may not match reality. Please check the [backtesting assumptions](backtesting.md#assumptions-made-by-backtesting) and [common strategy mistakes](strategy-customization.md#common-mistakes-when-developing-strategies) documentation.
Some websites that list and rank Freqtrade strategies show impressive backtest results. Do not assume these results are achieveable or realistic.
??? Hint "Useful commands"
Freqtrade includes two useful commands to check for basic flaws in strategies: [lookahead-analysis](lookahead-analysis.md) and [recursive-analysis](recursive-analysis.md).
### Assessing backtesting and dry run results
Always dry run your strategy after backtesting it to see if backtesting and dry run results are sufficiently similar.
If there is any significant difference, verify that your entry and exit signals are consistent and appear on the same candles between the two modes. However, there will always be differences between dry runs and backtests:
- Backtesting assumes all orders fill. In dry runs this might not be the case if using limit orders or there is no volume on the exchange.
- Following an entry signal on candle close, backtesting assumes trades enter at the next candle's open price (unless you have custom pricing callbacks in your strategy). In dry runs, there is often a delay between signals and trades opening.
This is because when new candles come in on your main timeframe, e.g. every 5 minutes, it takes time for Freqtrade to analyse all pair dataframes. Therefore, Freqtrade will attempt to open trades a few seconds (ideally a small a delay as possible)
after candle open.
- As entry rates in dry runs might not match backtesting, this means profit calculations will also differ. Therefore, it is normal if ROI, stoploss, trailing stoploss and callback exits are not identical.
- The more computational "lag" you have between new candles coming in and your signals being raised and trades being opened will result in greater price unpredictability. Make sure your computer is powerful enough to process the data for the number
of pairs you have in your pairlist within a reasonable time. Freqtrade will warn you in the logs if there are significant data processing delays.
## 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:
- **[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.
- **[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.
## 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.
Therefore, taking public strategies and using backtests as a way to assess performance is often problematic. However, Freqtrade provides useful ways to help you make decisions and do your due diligence.
There are many different ways to achieve profitability, and there is no one single tip, trick or config option that will fix a poorly performing strategy.
Freqtrade is an open source platform with a large and helpful community - make sure to visit our [discord channel](https://discord.gg/p7nuUNVfP7) to discuss your strategy with others!
As always, only invest what you are willing to lose.
## Conclusion
Developing a strategy in Freqtrade involves defining entry and exit signals based on technical indicators. By following the structure and methods outlined above, you can create and test your own trading strategies.
Common questions and answers are available on our [FAQ](faq.md).
To continue, refer to the more in-depth [Freqtrade strategy customization documentation](strategy-customization.md).

View File

@@ -38,9 +38,9 @@ class AwesomeStrategy(IStrategy):
trade.set_custom_data(key='entry_type', value=trade_entry_type) trade.set_custom_data(key='entry_type', value=trade_entry_type)
return super().bot_loop_start(**kwargs) return super().bot_loop_start(**kwargs)
def adjust_entry_price(self, trade: Trade, order: Optional[Order], pair: str, def adjust_entry_price(self, trade: Trade, order: Order | None, pair: str,
current_time: datetime, proposed_rate: float, current_order_rate: float, current_time: datetime, proposed_rate: float, current_order_rate: float,
entry_tag: Optional[str], side: str, **kwargs) -> float: entry_tag: str | None, side: str, **kwargs) -> float:
# Limit orders to use and follow SMA200 as price target for the first 10 minutes since entry trigger for BTC/USDT pair. # Limit orders to use and follow SMA200 as price target for the first 10 minutes since entry trigger for BTC/USDT pair.
if ( if (
pair == 'BTC/USDT' pair == 'BTC/USDT'

View File

@@ -90,8 +90,8 @@ Called before entering a trade, makes it possible to manage your position size w
class AwesomeStrategy(IStrategy): class AwesomeStrategy(IStrategy):
def custom_stake_amount(self, pair: str, current_time: datetime, current_rate: float, def custom_stake_amount(self, pair: str, current_time: datetime, current_rate: float,
proposed_stake: float, min_stake: Optional[float], max_stake: float, proposed_stake: float, min_stake: float | None, max_stake: float,
leverage: float, entry_tag: Optional[str], side: str, leverage: float, entry_tag: str | None, side: str,
**kwargs) -> float: **kwargs) -> float:
dataframe, _ = self.dp.get_analyzed_dataframe(pair=pair, timeframe=self.timeframe) dataframe, _ = self.dp.get_analyzed_dataframe(pair=pair, timeframe=self.timeframe)
@@ -166,6 +166,7 @@ Called for open trade every iteration (roughly every 5 seconds) until a trade is
The usage of the custom stoploss method must be enabled by setting `use_custom_stoploss=True` on the strategy object. The usage of the custom stoploss method must be enabled by setting `use_custom_stoploss=True` on the strategy object.
The stoploss price can only ever move upwards - if the stoploss value returned from `custom_stoploss` would result in a lower stoploss price than was previously set, it will be ignored. The traditional `stoploss` value serves as an absolute lower level and will be instated as the initial stoploss (before this method is called for the first time for a trade), and is still mandatory. The stoploss price can only ever move upwards - if the stoploss value returned from `custom_stoploss` would result in a lower stoploss price than was previously set, it will be ignored. The traditional `stoploss` value serves as an absolute lower level and will be instated as the initial stoploss (before this method is called for the first time for a trade), and is still mandatory.
As custom stoploss acts as regular, changing stoploss, it will behave similar to `trailing_stop` - and trades exiting due to this will have the exit_reason of `"trailing_stop_loss"`.
The method must return a stoploss value (float / number) as a percentage of the current price. The method must return a stoploss value (float / number) as a percentage of the current price.
E.g. If the `current_rate` is 200 USD, then returning `0.02` will set the stoploss price 2% lower, at 196 USD. E.g. If the `current_rate` is 200 USD, then returning `0.02` will set the stoploss price 2% lower, at 196 USD.
@@ -212,7 +213,7 @@ class AwesomeStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
""" """
Custom stoploss logic, returning the new distance relative to current_rate (as ratio). Custom stoploss logic, returning the new distance relative to current_rate (as ratio).
e.g. returning -0.05 would create a stoploss 5% below current_rate. e.g. returning -0.05 would create a stoploss 5% below current_rate.
@@ -250,7 +251,7 @@ class AwesomeStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
# Make sure you have the longest interval first - these conditions are evaluated from top to bottom. # 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: if current_time - timedelta(minutes=120) > trade.open_date_utc:
@@ -276,7 +277,7 @@ class AwesomeStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
if after_fill: if after_fill:
# After an additional order, start with a stoploss of 10% below the new open rate # After an additional order, start with a stoploss of 10% below the new open rate
@@ -305,7 +306,7 @@ class AwesomeStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
if pair in ("ETH/BTC", "XRP/BTC"): if pair in ("ETH/BTC", "XRP/BTC"):
return -0.10 return -0.10
@@ -331,7 +332,7 @@ class AwesomeStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
if current_profit < 0.04: if current_profit < 0.04:
return None # return None to keep using the initial stoploss return None # return None to keep using the initial stoploss
@@ -363,7 +364,7 @@ class AwesomeStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
# evaluate highest to lowest, so that highest possible stop is used # evaluate highest to lowest, so that highest possible stop is used
if current_profit > 0.40: if current_profit > 0.40:
@@ -394,7 +395,7 @@ class AwesomeStrategy(IStrategy):
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe) dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
last_candle = dataframe.iloc[-1].squeeze() last_candle = dataframe.iloc[-1].squeeze()
@@ -439,7 +440,7 @@ Stoploss values returned from `custom_stoploss()` must specify a percentage rela
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
# once the profit has risen above 10%, keep the stoploss at 7% above the open price # once the profit has risen above 10%, keep the stoploss at 7% above the open price
if current_profit > 0.10: if current_profit > 0.10:
@@ -482,7 +483,7 @@ The helper function `stoploss_from_absolute()` can be used to convert from an ab
def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime, def custom_stoploss(self, pair: str, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe) dataframe, _ = self.dp.get_analyzed_dataframe(pair, self.timeframe)
trade_date = timeframe_to_prev_date(self.timeframe, trade.open_date_utc) trade_date = timeframe_to_prev_date(self.timeframe, trade.open_date_utc)
candle = dataframe.iloc[-1].squeeze() candle = dataframe.iloc[-1].squeeze()
@@ -519,8 +520,8 @@ class AwesomeStrategy(IStrategy):
# ... populate_* methods # ... populate_* methods
def custom_entry_price(self, pair: str, trade: Optional[Trade], current_time: datetime, proposed_rate: float, def custom_entry_price(self, pair: str, trade: Trade | None, current_time: datetime, proposed_rate: float,
entry_tag: Optional[str], side: str, **kwargs) -> float: entry_tag: str | None, side: str, **kwargs) -> float:
dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=pair, dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=pair,
timeframe=self.timeframe) timeframe=self.timeframe)
@@ -530,7 +531,7 @@ class AwesomeStrategy(IStrategy):
def custom_exit_price(self, pair: str, trade: Trade, def custom_exit_price(self, pair: str, trade: Trade,
current_time: datetime, proposed_rate: float, current_time: datetime, proposed_rate: float,
current_profit: float, exit_tag: Optional[str], **kwargs) -> float: current_profit: float, exit_tag: str | None, **kwargs) -> float:
dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=pair, dataframe, last_updated = self.dp.get_analyzed_dataframe(pair=pair,
timeframe=self.timeframe) timeframe=self.timeframe)
@@ -662,7 +663,7 @@ class AwesomeStrategy(IStrategy):
# ... populate_* methods # ... populate_* methods
def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float, def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float,
time_in_force: str, current_time: datetime, entry_tag: Optional[str], time_in_force: str, current_time: datetime, entry_tag: str | None,
side: str, **kwargs) -> bool: side: str, **kwargs) -> bool:
""" """
Called right before placing a entry order. Called right before placing a entry order.
@@ -757,7 +758,7 @@ For performance reasons, it's disabled by default and freqtrade will show a warn
Additional orders also result in additional fees and those orders don't count towards `max_open_trades`. Additional orders also result in additional fees and those orders don't count towards `max_open_trades`.
This callback is **not** called when there is an open order (either buy or sell) waiting for execution. This callback is also called when there is an open order (either buy or sell) waiting for execution - and will cancel the existing open order to place a new order if the amount, price or direction is different.
`adjust_trade_position()` is called very frequently for the duration of a trade, so you must keep your implementation as performant as possible. `adjust_trade_position()` is called very frequently for the duration of a trade, so you must keep your implementation as performant as possible.
@@ -766,6 +767,22 @@ Adjustment orders can be assigned with a tag by returning a 2 element Tuple, wit
Modifications to leverage are not possible, and the stake-amount returned is assumed to be before applying leverage. Modifications to leverage are not possible, and the stake-amount returned is assumed to be before applying leverage.
The combined stake currently allocated to the position is held in `trade.stake_amount`. Therefore `trade.stake_amount` will always be updated on every additional entry and partial exit made through `adjust_trade_position()`.
!!! Danger "Loose Logic"
On dry and live run, this function will be called every `throttle_process_secs` (default to 5s). If you have a loose logic, for example your logic for extra entry is only to check RSI of last candle is below 30, then when such condition fulfilled, your bot will do extra re-entry every 5 secs until either it run out of money, it hit the `max_position_adjustment` limit, or a new candle with RSI more than 30 arrived.
Same thing also can happen with partial exit. So be sure to have a strict logic and/or check for the last filled order.
!!! Warning "Performance with many position adjustments"
Position adjustments can be a good approach to increase a strategy's output - but it can also have drawbacks if using this feature extensively.
Each of the orders will be attached to the trade object for the duration of the trade - hence increasing memory usage.
Trades with long duration and 10s or even 100ds of position adjustments are therefore not recommended, and should be closed at regular intervals to not affect performance.
!!! Warning "Backtesting"
During backtesting this callback is called for each candle in `timeframe` or `timeframe_detail`, so run-time performance will be affected.
This can also cause deviating results between live and backtesting, since backtesting can adjust the trade only once per candle, whereas live could adjust the trade multiple times per candle.
### Increase position ### Increase position
The strategy is expected to return a positive **stake_amount** (in stake currency) between `min_stake` and `max_stake` if and when an additional entry order should be made (position is increased -> buy order for long trades, sell order for short trades). The strategy is expected to return a positive **stake_amount** (in stake currency) between `min_stake` and `max_stake` if and when an additional entry order should be made (position is increased -> buy order for long trades, sell order for short trades).
@@ -775,16 +792,22 @@ If there are not enough funds in the wallet (the return value is above `max_stak
Additional entries are ignored once you have reached the maximum amount of extra entries that you have set on `max_entry_position_adjustment`, but the callback is called anyway looking for partial exits. Additional entries are ignored once you have reached the maximum amount of extra entries that you have set on `max_entry_position_adjustment`, but the callback is called anyway looking for partial exits.
!!! Note "About stake size"
Using fixed stake size means it will be the amount used for the first order, just like without position adjustment.
If you wish to buy additional orders with DCA, then make sure to leave enough funds in the wallet for that.
Using `"unlimited"` stake amount with DCA orders requires you to also implement the `custom_stake_amount()` callback to avoid allocating all funds to the initial order.
### Decrease position ### Decrease position
The strategy is expected to return a negative stake_amount (in stake currency) for a partial exit. The strategy is expected to return a negative stake_amount (in stake currency) for a partial exit.
Returning the full owned stake at that point (`-trade.stake_amount`) results in a full exit. Returning the full owned stake at that point (`-trade.stake_amount`) results in a full exit.
Returning a value more than the above (so remaining stake_amount would become negative) will result in the bot ignoring the signal. Returning a value more than the above (so remaining stake_amount would become negative) will result in the bot ignoring the signal.
!!! Note "About stake size" For a partial exit, it's important to know that the formula used to calculate the amount of the coin for the partial exit order is `amount to be exited partially = negative_stake_amount * trade.amount / trade.stake_amount`, where `negative_stake_amount` is the value returned from the `adjust_trade_position` function. As seen in the formula, the formula doesn't care about current profit/loss of the position. It only cares about `trade.amount` and `trade.stake_amount` which aren't affected by the price movement at all.
Using fixed stake size means it will be the amount used for the first order, just like without position adjustment.
If you wish to buy additional orders with DCA, then make sure to leave enough funds in the wallet for that. For example, let's say you buy 2 SHITCOIN/USDT at open rate of 50, which means the trade's stake amount is 100 USDT. Now the price raises to 200 and you want to sell half of it. In that case, you have to return -50% of `trade.stake_amount` (0.5 * 100 USDT) which equals to -50. The bot will calculate the amount it needed to sell, which is `50 * 2 / 100` which equals 1 SHITCOIN/USDT. If you return -200 (50% of 2 * 200), the bot will ignore it since `trade.stake_amount` is only 100 USDT but you asked to sell 200 USDT which means you are asking to sell 4 SHITCOIN/USDT.
Using `"unlimited"` stake amount with DCA orders requires you to also implement the `custom_stake_amount()` callback to avoid allocating all funds to the initial order.
Back to the example above, since current rate is 200, the current USDT value of your trade is now 400 USDT. Let's say you want to partially sell 100 USDT to take out the initial investment and leave the profit in the trade hoping that the price keeps rising. In that case, you have to do a different approach. First, you need to calculate the exact amount you needed to sell. In this case, since you want to sell 100 USDT worth based of current rate, the exact amount you need to partially sell is `100 * 2 / 400` which equals 0.5 SHITCOIN/USDT. Since we know now the exact amount we want to sell (0.5), the value you need to return in the `adjust_trade_position` function is `-amount to be exited partially * trade.stake_amount / trade.amount`, which equals -25. The bot will sell 0.5 SHITCOIN/USDT, keeping 1.5 in trade. You will receive 100 USDT from the partial exit.
!!! Warning "Stoploss calculation" !!! Warning "Stoploss calculation"
Stoploss is still calculated from the initial opening price, not averaged price. Stoploss is still calculated from the initial opening price, not averaged price.
@@ -792,15 +815,6 @@ Returning a value more than the above (so remaining stake_amount would become ne
While `/stopentry` command stops the bot from entering new trades, the position adjustment feature will continue buying new orders on existing trades. While `/stopentry` command stops the bot from entering new trades, the position adjustment feature will continue buying new orders on existing trades.
!!! Warning "Backtesting"
During backtesting this callback is called for each candle in `timeframe` or `timeframe_detail`, so run-time performance will be affected.
This can also cause deviating results between live and backtesting, since backtesting can adjust the trade only once per candle, whereas live could adjust the trade multiple times per candle.
!!! Warning "Performance with many position adjustments"
Position adjustments can be a good approach to increase a strategy's output - but it can also have drawbacks if using this feature extensively.
Each of the orders will be attached to the trade object for the duration of the trade - hence increasing memory usage.
Trades with long duration and 10s or even 100ds of position adjustments are therefore not recommended, and should be closed at regular intervals to not affect performance.
``` python ``` python
# Default imports # Default imports
@@ -820,8 +834,8 @@ class DigDeeperStrategy(IStrategy):
# This is called when placing the initial order (opening trade) # This is called when placing the initial order (opening trade)
def custom_stake_amount(self, pair: str, current_time: datetime, current_rate: float, def custom_stake_amount(self, pair: str, current_time: datetime, current_rate: float,
proposed_stake: float, min_stake: Optional[float], max_stake: float, proposed_stake: float, min_stake: float | None, max_stake: float,
leverage: float, entry_tag: Optional[str], side: str, leverage: float, entry_tag: str | None, side: str,
**kwargs) -> float: **kwargs) -> float:
# We need to leave most of the funds for possible further DCA orders # We need to leave most of the funds for possible further DCA orders
@@ -830,11 +844,11 @@ class DigDeeperStrategy(IStrategy):
def adjust_trade_position(self, trade: Trade, current_time: datetime, def adjust_trade_position(self, trade: Trade, current_time: datetime,
current_rate: float, current_profit: float, current_rate: float, current_profit: float,
min_stake: Optional[float], max_stake: float, min_stake: float | None, max_stake: float,
current_entry_rate: float, current_exit_rate: float, current_entry_rate: float, current_exit_rate: float,
current_entry_profit: float, current_exit_profit: float, current_entry_profit: float, current_exit_profit: float,
**kwargs **kwargs
) -> Union[Optional[float], Tuple[Optional[float], Optional[str]]]: ) -> float | None | tuple[float | None, str | None]:
""" """
Custom trade adjustment logic, returning the stake amount that a trade should be Custom trade adjustment logic, returning the stake amount that a trade should be
increased or decreased. increased or decreased.
@@ -890,7 +904,7 @@ class DigDeeperStrategy(IStrategy):
# Hope you have a deep wallet! # Hope you have a deep wallet!
try: try:
# This returns first order stake size # This returns first order stake size
stake_amount = filled_entries[0].stake_amount stake_amount = filled_entries[0].stake_amount_filled
# This then calculates current safety order size # This then calculates current safety order size
stake_amount = stake_amount * (1 + (count_of_entries * 0.25)) stake_amount = stake_amount * (1 + (count_of_entries * 0.25))
return stake_amount, "1/3rd_increase" return stake_amount, "1/3rd_increase"
@@ -923,6 +937,9 @@ class DigDeeperStrategy(IStrategy):
## Adjust Entry Price ## Adjust Entry Price
The `adjust_entry_price()` callback may be used by strategy developer to refresh/replace limit orders upon arrival of new candles. The `adjust_entry_price()` callback may be used by strategy developer to refresh/replace limit orders upon arrival of new candles.
This callback is called once every iteration unless the order has been (re)placed within the current candle - limiting the maximum (re)placement of each order to once per candle.
This also means that the first call will be at the start of the next candle after the initial order was placed.
Be aware that `custom_entry_price()` is still the one dictating initial entry limit order price target at the time of entry trigger. Be aware that `custom_entry_price()` is still the one dictating initial entry limit order price target at the time of entry trigger.
Orders can be cancelled out of this callback by returning `None`. Orders can be cancelled out of this callback by returning `None`.
@@ -934,6 +951,7 @@ The trade open-date (`trade.open_date_utc`) will remain at the time of the very
Please make sure to be aware of this - and eventually adjust your logic in other callbacks to account for this, and use the date of the first filled order instead. Please make sure to be aware of this - and eventually adjust your logic in other callbacks to account for this, and use the date of the first filled order instead.
If the cancellation of the original order fails, then the order will not be replaced - though the order will most likely have been canceled on exchange. Having this happen on initial entries will result in the deletion of the order, while on position adjustment orders, it'll result in the trade size remaining as is. If the cancellation of the original order fails, then the order will not be replaced - though the order will most likely have been canceled on exchange. Having this happen on initial entries will result in the deletion of the order, while on position adjustment orders, it'll result in the trade size remaining as is.
If the order has been partially filled, the order will not be replaced. You can however use [`adjust_trade_position()`](#adjust-trade-position) to adjust the trade size to the full, expected position size, should this be necessary / desired.
!!! Warning "Regular timeout" !!! Warning "Regular timeout"
Entry `unfilledtimeout` mechanism (as well as `check_entry_timeout()`) takes precedence over this. Entry `unfilledtimeout` mechanism (as well as `check_entry_timeout()`) takes precedence over this.
@@ -946,9 +964,9 @@ class AwesomeStrategy(IStrategy):
# ... populate_* methods # ... populate_* methods
def adjust_entry_price(self, trade: Trade, order: Optional[Order], pair: str, def adjust_entry_price(self, trade: Trade, order: Order | None, pair: str,
current_time: datetime, proposed_rate: float, current_order_rate: float, current_time: datetime, proposed_rate: float, current_order_rate: float,
entry_tag: Optional[str], side: str, **kwargs) -> float: entry_tag: str | None, side: str, **kwargs) -> float:
""" """
Entry price re-adjustment logic, returning the user desired limit price. Entry price re-adjustment logic, returning the user desired limit price.
This only executes when a order was already placed, still open (unfilled fully or partially) This only executes when a order was already placed, still open (unfilled fully or partially)
@@ -975,7 +993,7 @@ class AwesomeStrategy(IStrategy):
pair == "BTC/USDT" pair == "BTC/USDT"
and entry_tag == "long_sma200" and entry_tag == "long_sma200"
and side == "long" and side == "long"
and (current_time - timedelta(minutes=10)) > trade.open_date_utc and (current_time - timedelta(minutes=10)) <= trade.open_date_utc
): ):
# just cancel the order if it has been filled more than half of the amount # just cancel the order if it has been filled more than half of the amount
if order.filled > order.remaining: if order.filled > order.remaining:
@@ -1003,7 +1021,7 @@ For markets / exchanges that don't support leverage, this method is ignored.
class AwesomeStrategy(IStrategy): class AwesomeStrategy(IStrategy):
def leverage(self, pair: str, current_time: datetime, current_rate: float, def leverage(self, pair: str, current_time: datetime, current_rate: float,
proposed_leverage: float, max_leverage: float, entry_tag: Optional[str], side: str, proposed_leverage: float, max_leverage: float, entry_tag: str | None, side: str,
**kwargs) -> float: **kwargs) -> float:
""" """
Customize leverage for each new trade. This method is only called in futures mode. Customize leverage for each new trade. This method is only called in futures mode.

View File

@@ -2,52 +2,93 @@
This page explains how to customize your strategies, add new indicators and set up trading rules. This page explains how to customize your strategies, add new indicators and set up trading rules.
Please familiarize yourself with [Freqtrade basics](bot-basics.md) first, which provides overall info on how the bot operates. If you haven't already, please familiarize yourself with:
- the [Freqtrade strategy 101](strategy-101.md), which provides a quick start to strategy development
- the [Freqtrade bot basics](bot-basics.md), which provides overall info on how the bot operates
## Develop your own strategy ## Develop your own strategy
The bot includes a default strategy file. The bot includes a default strategy file.
Also, several other strategies are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Also, several other strategies are available in the [strategy repository](https://github.com/freqtrade/freqtrade-strategies).
You will however most likely have your own idea for a strategy. You will however most likely have your own idea for a strategy.
This document intends to help you convert your strategy idea into your own strategy.
To get started, use `freqtrade new-strategy --strategy AwesomeStrategy` (you can obviously use your own naming for your strategy). This document intends to help you convert your ideas into a working strategy.
This will create a new strategy file from a template, which will be located under `user_data/strategies/AwesomeStrategy.py`.
### Generating a strategy template
To get started, you can use the command:
```bash
freqtrade new-strategy --strategy AwesomeStrategy
```
This will create a new strategy called `AwesomeStrategy` from a template, which will be located using the filename `user_data/strategies/AwesomeStrategy.py`.
!!! Note !!! Note
This is just a template file, which will most likely not be profitable out of the box. There is a difference between the *name* of the strategy and the filename. In most commands, Freqtrade uses the *name* of the strategy, *not the filename*.
!!! Note
The `new-strategy` command generates starting examples which will not be profitable out of the box.
??? Hint "Different template levels" ??? Hint "Different template levels"
`freqtrade new-strategy` has an additional parameter, `--template`, which controls the amount of pre-build information you get in the created strategy. Use `--template minimal` to get an empty strategy without any indicator examples, or `--template advanced` to get a template with most callbacks defined. `freqtrade new-strategy` has an additional parameter, `--template`, which controls the amount of pre-build information you get in the created strategy. Use `--template minimal` to get an empty strategy without any indicator examples, or `--template advanced` to get a template with more complicated features defined.
### Anatomy of a strategy ### Anatomy of a strategy
A strategy file contains all the information needed to build a good strategy: A strategy file contains all the information needed to build the strategy logic:
- Candle data in OHLCV format
- Indicators - Indicators
- Entry strategy rules - Entry logic
- Exit strategy rules - Signals
- Minimal ROI recommended - Exit logic
- Stoploss strongly recommended - Signals
- Minimal ROI
- Callbacks ("custom functions")
- Stoploss
- Fixed/absolute
- Trailing
- Callbacks ("custom functions")
- Pricing [optional]
- Position adjustment [optional]
The bot also include a sample strategy called `SampleStrategy` you can update: `user_data/strategies/sample_strategy.py`. The bot includes a sample strategy called `SampleStrategy` that you can use as a basis: `user_data/strategies/sample_strategy.py`.
You can test it with the parameter: `--strategy SampleStrategy` You can test it with the parameter: `--strategy SampleStrategy`. Remember that you use the strategy class name, not the filename.
Additionally, there is an attribute called `INTERFACE_VERSION`, which defines the version of the strategy interface the bot should use. Additionally, there is an attribute called `INTERFACE_VERSION`, which defines the version of the strategy interface the bot should use.
The current version is 3 - which is also the default when it's not set explicitly in the strategy. The current version is 3 - which is also the default when it's not set explicitly in the strategy.
Future versions will require this to be set. You may see older strategies set to interface version 2, and these will need to be updated to v3 terminology as future versions will require this to be set.
Starting the bot in dry or live mode is accomplished using the `trade` command:
```bash ```bash
freqtrade trade --strategy AwesomeStrategy freqtrade trade --strategy AwesomeStrategy
``` ```
### Bot modes
Freqtrade strategies can be processed by the Freqtrade bot in 5 main modes:
- backtesting
- hyperopting
- dry ("forward testing")
- live
- FreqAI (not covered here)
Check the [configuration documentation](configuration.md) about how to set the bot to dry or live mode.
**Always use dry mode when testing as this gives you an idea of how your strategy will work in reality without risking capital.**
## Diving in deeper
**For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py) **For the following section we will use the [user_data/strategies/sample_strategy.py](https://github.com/freqtrade/freqtrade/blob/develop/freqtrade/templates/sample_strategy.py)
file as reference.** file as reference.**
!!! Note "Strategies and Backtesting" !!! Note "Strategies and Backtesting"
To avoid problems and unexpected differences between Backtesting and dry/live modes, please be aware To avoid problems and unexpected differences between backtesting and dry/live modes, please be aware
that during backtesting the full time range is passed to the `populate_*()` methods at once. that during backtesting the full time range is passed to the `populate_*()` methods at once.
It is therefore best to use vectorized operations (across the whole dataframe, not loops) and It is therefore best to use vectorized operations (across the whole dataframe, not loops) and
avoid index referencing (`df.iloc[-1]`), but instead use `df.shift()` to get to the previous candle. avoid index referencing (`df.iloc[-1]`), but instead use `df.shift()` to get to the previous candle.
@@ -57,12 +98,20 @@ file as reference.**
needs to take care to avoid having the strategy utilize data from the future. needs to take care to avoid having the strategy utilize data from the future.
Some common patterns for this are listed in the [Common Mistakes](#common-mistakes-when-developing-strategies) section of this document. Some common patterns for this are listed in the [Common Mistakes](#common-mistakes-when-developing-strategies) section of this document.
??? Hint "Lookahead and recursive analysis"
Freqtrade includes two helpful commands to help assess common lookahead (using future data) and
recursive bias (variance in indicator values) issues. Before running a strategy in dry or live more,
you should always use these commands first. Please check the relevant documentation for
[lookahead](lookahead-analysis.md) and [recursive](recursive-analysis.md) analysis.
### Dataframe ### Dataframe
Freqtrade uses [pandas](https://pandas.pydata.org/) to store/provide the candlestick (OHLCV) data. Freqtrade uses [pandas](https://pandas.pydata.org/) to store/provide the candlestick (OHLCV) data.
Pandas is a great library developed for processing large amounts of data. Pandas is a great library developed for processing large amounts of data in tabular format.
Each row in a dataframe corresponds to one candle on a chart, with the latest candle always being the last in the dataframe (sorted by date). Each row in a dataframe corresponds to one candle on a chart, with the latest complete candle always being the last in the dataframe (sorted by date).
If we were to look at the first few rows of the main dataframe using the pandas `head()` function, we would see:
```output ```output
> dataframe.head() > dataframe.head()
@@ -74,20 +123,16 @@ Each row in a dataframe corresponds to one candle on a chart, with the latest ca
4 2021-11-09 23:45:00+00:00 67160.48 67160.48 66901.26 66943.37 111.39292 4 2021-11-09 23:45:00+00:00 67160.48 67160.48 66901.26 66943.37 111.39292
``` ```
Pandas provides fast ways to calculate metrics. To benefit from this speed, it's advised to not use loops, but use vectorized methods instead. A dataframe is a table where columns are not single values, but a series of data values. As such, simple python comparisons like the following will not work:
Vectorized operations perform calculations across the whole range of data and are therefore, compared to looping through each row, a lot faster when calculating indicators.
As a dataframe is a table, simple python comparisons like the following will not work
``` python ``` python
if dataframe['rsi'] > 30: if dataframe['rsi'] > 30:
dataframe['enter_long'] = 1 dataframe['enter_long'] = 1
``` ```
The above section will fail with `The truth value of a Series is ambiguous. [...]`. The above section will fail with `The truth value of a Series is ambiguous [...]`.
This must instead be written in a pandas-compatible way, so the operation is performed across the whole dataframe. This must instead be written in a pandas-compatible way, so the operation is performed across the whole dataframe, i.e. `vectorisation`.
``` python ``` python
dataframe.loc[ dataframe.loc[
@@ -97,13 +142,38 @@ This must instead be written in a pandas-compatible way, so the operation is per
With this section, you have a new column in your dataframe, which has `1` assigned whenever RSI is above 30. With this section, you have a new column in your dataframe, which has `1` assigned whenever RSI is above 30.
Freqtrade uses this new column as an entry signal, where it is assumed that a trade will subsequently open on the next open candle.
Pandas provides fast ways to calculate metrics, i.e. "vectorisation". To benefit from this speed, it is advised to not use loops, but use vectorized methods instead.
Vectorized operations perform calculations across the whole range of data and are therefore, compared to looping through each row, a lot faster when calculating indicators.
??? Hint "Signals vs Trades"
- Signals are generated from indicators at candle close, and are intentions to enter a trade.
- Trades are orders that are executed (on the exchange in live mode) where a trade will then open as close to next candle open as possible.
!!! Warning "Trade order assumptions"
In backtesting, signals are generated on candle close. Trades are then initiated immeditely on next candle open.
In dry and live, this may be delayed due to all pair dataframes needing to be analysed first, then trade processing
for each of those pairs happens. This means that in dry/live you need to be mindful of having as low a computation
delay as possible, usually by running a low number of pairs and having a CPU with a good clock speed.
#### Why can't I see "real time" candle data?
Freqtrade does not store incomplete/unfinished candles in the dataframe.
The use of incomplete data for making strategy decisions is called "repainting" and you might see other platforms allow this.
Freqtrade does not. Only complete/finished candle data is available in the dataframe.
### Customize Indicators ### Customize Indicators
Buy and sell signals need indicators. You can add more indicators by extending the list contained in the method `populate_indicators()` from your strategy file. Entry and exit signals need indicators. You can add more indicators by extending the list contained in the method `populate_indicators()` from your strategy file.
You should only add the indicators used in either `populate_entry_trend()`, `populate_exit_trend()`, or to populate another indicator, otherwise performance may suffer. You should only add the indicators used in either `populate_entry_trend()`, `populate_exit_trend()`, or to populate another indicator, otherwise performance may suffer.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected. It's important to always return the dataframe from these three functions without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected.
Sample: Sample:
@@ -124,7 +194,7 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame
stoch = ta.STOCHF(dataframe) stoch = ta.STOCHF(dataframe)
dataframe['fastd'] = stoch['fastd'] dataframe['fastd'] = stoch['fastd']
dataframe['fastk'] = stoch['fastk'] dataframe['fastk'] = stoch['fastk']
dataframe['blower'] = ta.BBANDS(dataframe, nbdevup=2, nbdevdn=2)['lowerband'] dataframe['bb_lower'] = ta.BBANDS(dataframe, nbdevup=2, nbdevdn=2)['lowerband']
dataframe['sma'] = ta.SMA(dataframe, timeperiod=40) dataframe['sma'] = ta.SMA(dataframe, timeperiod=40)
dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9) dataframe['tema'] = ta.TEMA(dataframe, timeperiod=9)
dataframe['mfi'] = ta.MFI(dataframe) dataframe['mfi'] = ta.MFI(dataframe)
@@ -145,6 +215,8 @@ def populate_indicators(self, dataframe: DataFrame, metadata: dict) -> DataFrame
dataframe['plus_di'] = ta.PLUS_DI(dataframe) dataframe['plus_di'] = ta.PLUS_DI(dataframe)
dataframe['minus_dm'] = ta.MINUS_DM(dataframe) dataframe['minus_dm'] = ta.MINUS_DM(dataframe)
dataframe['minus_di'] = ta.MINUS_DI(dataframe) dataframe['minus_di'] = ta.MINUS_DI(dataframe)
# remember to always return the dataframe
return dataframe return dataframe
``` ```
@@ -164,11 +236,13 @@ Additional technical libraries can be installed as necessary, or custom indicato
### Strategy startup period ### Strategy startup period
Most indicators have an instable startup period, in which they are either not available (NaN), or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this instable period should be. Some indicators have an unstable startup period in which there isn't enough candle data to calculate any values (NaN), or the calculation is incorrect. This can lead to inconsistencies, since Freqtrade does not know how long this unstable period is and uses whatever indicator values are in the dataframe.
To account for this, the strategy can be assigned the `startup_candle_count` attribute. To account for this, the strategy can be assigned the `startup_candle_count` attribute.
This should be set to the maximum number of candles that the strategy requires to calculate stable indicators. In the case where a user includes higher timeframes with informative pairs, the `startup_candle_count` does not necessarily change. The value is the maximum period (in candles) that any of the informatives timeframes need to compute stable indicators. This should be set to the maximum number of candles that the strategy requires to calculate stable indicators. In the case where a user includes higher timeframes with informative pairs, the `startup_candle_count` does not necessarily change. The value is the maximum period (in candles) that any of the informatives timeframes need to compute stable indicators.
You can use [recursive-analysis](recursive-analysis.md) to check and find the correct `startup_candle_count` to be used. You can use [recursive-analysis](recursive-analysis.md) to check and find the correct `startup_candle_count` to be used. When recursive analysis shows a variance of 0%, then you can be sure that you have enough startup candle data.
In this example strategy, this should be set to 400 (`startup_candle_count = 400`), since the minimum needed history for ema100 calculation to make sure the value is correct is 400 candles. In this example strategy, this should be set to 400 (`startup_candle_count = 400`), since the minimum needed history for ema100 calculation to make sure the value is correct is 400 candles.
@@ -195,19 +269,22 @@ Let's try to backtest 1 month (January 2019) of 5m candles using an example stra
freqtrade backtesting --timerange 20190101-20190201 --timeframe 5m freqtrade backtesting --timerange 20190101-20190201 --timeframe 5m
``` ```
Assuming `startup_candle_count` is set to 400, backtesting knows it needs 400 candles to generate valid buy signals. It will load data from `20190101 - (400 * 5m)` - which is ~2018-12-30 11:40:00. Assuming `startup_candle_count` is set to 400, backtesting knows it needs 400 candles to generate valid entry signals. It will load data from `20190101 - (400 * 5m)` - which is ~2018-12-30 11:40:00.
If this data is available, indicators will be calculated with this extended timerange. The instable startup period (up to 2019-01-01 00:00:00) will then be removed before starting backtesting.
!!! Note If this data is available, indicators will be calculated with this extended timerange. The unstable startup period (up to 2019-01-01 00:00:00) will then be removed before backtesting is carried out.
If data for the startup period is not available, then the timerange will be adjusted to account for this startup period - so Backtesting would start at 2019-01-02 09:20:00.
!!! Note "Unavailable startup candle data"
If data for the startup period is not available, then the timerange will be adjusted to account for this startup period. In our example, backtesting would then start from 2019-01-02 09:20:00.
### Entry signal rules ### Entry signal rules
Edit the method `populate_entry_trend()` in your strategy file to update your entry strategy. Edit the method `populate_entry_trend()` in your strategy file to update your entry strategy.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected. It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected. The strategy may then produce invalid values, or cease to work entirely.
This method will also define a new column, `"enter_long"` (`"enter_short"` for shorts), which needs to contain 1 for entries, and 0 for "no action". `enter_long` is a mandatory column that must be set even if the strategy is shorting only. This method will also define a new column, `"enter_long"` (`"enter_short"` for shorts), which needs to contain `1` for entries, and `0` for "no action". `enter_long` is a mandatory column that must be set even if the strategy is shorting only.
You can name your entry signals by using the `"enter_tag"` column, which can help debug and assess your strategy later.
Sample from `user_data/strategies/sample_strategy.py`: Sample from `user_data/strategies/sample_strategy.py`:
@@ -232,12 +309,15 @@ def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFram
``` ```
??? Note "Enter short trades" ??? Note "Enter short trades"
Short-entries can be created by setting `enter_short` (corresponds to `enter_long` for long trades). Short entries can be created by setting `enter_short` (corresponds to `enter_long` for long trades).
The `enter_tag` column remains identical. The `enter_tag` column remains identical.
Short-trades need to be supported by your exchange and market configuration! Shorting needs to be supported by your exchange and market configuration!
Please make sure to set [`can_short`]() appropriately on your strategy if you intend to short. Also, make sure you set [`can_short`](#can-short) appropriately on your strategy if you intend to short.
```python ```python
# allow both long and short trades
can_short = True
def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[ dataframe.loc[
( (
@@ -261,17 +341,21 @@ def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFram
``` ```
!!! Note !!! Note
Buying requires sellers to buy from - therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure that the bot does not buy/sell in no-activity periods. Buying requires sellers to buy from. Therefore volume needs to be > 0 (`dataframe['volume'] > 0`) to make sure that the bot does not buy/sell in no-activity periods.
### Exit signal rules ### Exit signal rules
Edit the method `populate_exit_trend()` into your strategy file to update your exit strategy. Edit the method `populate_exit_trend()` into your strategy file to update your exit strategy.
The exit-signal can be suppressed by setting `use_exit_signal` to false in the configuration or strategy. The exit-signal can be suppressed by setting `use_exit_signal` to false in the configuration or strategy.
`use_exit_signal` will not influence [signal collision rules](#colliding-signals) - which will still apply and can prevent entries. `use_exit_signal` will not influence [signal collision rules](#colliding-signals) - which will still apply and can prevent entries.
It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected. It's important to always return the dataframe without removing/modifying the columns `"open", "high", "low", "close", "volume"`, otherwise these fields would contain something unexpected. The strategy may then produce invalid values, or cease to work entirely.
This method will also define a new column, `"exit_long"` (`"exit_short"` for shorts), which needs to contain 1 for exits, and 0 for "no action". This method will also define a new column, `"exit_long"` (`"exit_short"` for shorts), which needs to contain `1` for exits, and `0` for "no action".
You can name your exit signals by using the `"exit_tag"` column, which can help debug and assess your strategy later.
Sample from `user_data/strategies/sample_strategy.py`: Sample from `user_data/strategies/sample_strategy.py`:
@@ -295,11 +379,15 @@ def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame
``` ```
??? Note "Exit short trades" ??? Note "Exit short trades"
Short-exits can be created by setting `exit_short` (corresponds to `exit_long`). Short exits can be created by setting `exit_short` (corresponds to `exit_long`).
The `exit_tag` column remains identical. The `exit_tag` column remains identical.
Short-trades need to be supported by your exchange and market configuration! Shorting needs to be supported by your exchange and market configuration!
Also, make sure you set [`can_short`](#can-short) appropriately on your strategy if you intend to short.
```python ```python
# allow both long and short trades
can_short = True
def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame: def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame:
dataframe.loc[ dataframe.loc[
( (
@@ -322,9 +410,9 @@ def populate_exit_trend(self, dataframe: DataFrame, metadata: dict) -> DataFrame
### Minimal ROI ### Minimal ROI
This dict defines the minimal Return On Investment (ROI) a trade should reach before exiting, independent from the exit signal. The `minimal_roi` strategy variable defines the minimal Return On Investment (ROI) a trade should reach before exiting, independent from the exit signal.
It is of the following format, with the dict key (left side of the colon) being the minutes passed since the trade opened, and the value (right side of the colon) being the percentage. It is of the following format, i.e. a python `dict`, with the dict key (left side of the colon) being the minutes passed since the trade opened, and the value (right side of the colon) being the percentage.
```python ```python
minimal_roi = { minimal_roi = {
@@ -344,14 +432,19 @@ The above configuration would therefore mean:
The calculation does include fees. The calculation does include fees.
#### Disabling minimal ROI
To disable ROI completely, set it to an empty dictionary: To disable ROI completely, set it to an empty dictionary:
```python ```python
minimal_roi = {} minimal_roi = {}
``` ```
#### Using calculations in minimal ROI
To use times based on candle duration (timeframe), the following snippet can be handy. To use times based on candle duration (timeframe), the following snippet can be handy.
This will allow you to change the timeframe for the strategy, and ROI times will still be set as candles (e.g. after 3 candles ...)
This will allow you to change the timeframe for the strategy, but the minimal ROI times will still be set as candles, e.g. after 3 candles.
``` python ``` python
from freqtrade.exchange import timeframe_to_minutes from freqtrade.exchange import timeframe_to_minutes
@@ -368,9 +461,9 @@ class AwesomeStrategy(IStrategy):
``` ```
??? info "Orders that don't fill immediately" ??? info "Orders that don't fill immediately"
`minimal_roi` will take the `trade.open_date` as reference, which is the time the trade was initialized / the first order for this trade was placed. `minimal_roi` will take the `trade.open_date` as reference, which is the time the trade was initialized, i.e. when the first order for this trade was placed.
This will also hold true for limit orders that don't fill immediately (usually in combination with "off-spot" prices through `custom_entry_price()`), as well as for cases where the initial order is replaced through `adjust_entry_price()`. This will also hold true for limit orders that don't fill immediately (usually in combination with "off-spot" prices through `custom_entry_price()`), as well as for cases where the initial order price is replaced through `adjust_entry_price()`.
The time used will still be from the initial `trade.open_date` (when the initial order was first placed), not from the newly placed order date. The time used will still be from the initial `trade.open_date` (when the initial order was first placed), not from the newly placed or adjusted order date.
### Stoploss ### Stoploss
@@ -386,35 +479,44 @@ For the full documentation on stoploss features, look at the dedicated [stoploss
### Timeframe ### Timeframe
This is the set of candles the bot should download and use for the analysis. This is the periodicity of candles the bot should use in the strategy.
Common values are `"1m"`, `"5m"`, `"15m"`, `"1h"`, however all values supported by your exchange should work. Common values are `"1m"`, `"5m"`, `"15m"`, `"1h"`, however all values supported by your exchange should work.
Please note that the same entry/exit signals may work well with one timeframe, but not with the others. Please note that the same entry/exit signals may work well with one timeframe, but not with others.
This setting is accessible within the strategy methods as the `self.timeframe` attribute. This setting is accessible within the strategy methods as the `self.timeframe` attribute.
### Can short ### Can short
To use short signals in futures markets, you will have to let us know to do so by setting `can_short=True`. To use short signals in futures markets, you will have to set `can_short = True`.
Strategies which enable this will fail to load on spot markets. Strategies which enable this will fail to load on spot markets.
Disabling of this will have short signals ignored (also in futures markets).
If you have `1` values in the `enter_short` column to raise short signals, setting `can_short = False` (which is the default) will mean that these short signals are ignored, even if you have specified futures markets in your configuration.
### Metadata dict ### Metadata dict
The metadata-dict (available for `populate_entry_trend`, `populate_exit_trend`, `populate_indicators`) contains additional information. The `metadata` dict (available for `populate_entry_trend`, `populate_exit_trend`, `populate_indicators`) contains additional information.
Currently this is `pair`, which can be accessed using `metadata['pair']` - and will return a pair in the format `XRP/BTC`. Currently this is `pair`, which can be accessed using `metadata['pair']`, and will return a pair in the format `XRP/BTC` (or `XRP/BTC:BTC` for futures markets).
The Metadata-dict should not be modified and does not persist information across multiple calls. The metadata dict should not be modified and does not persist information across multiple functions in your strategy.
Instead, have a look at the [Storing information](strategy-advanced.md#storing-information-persistent) section.
Instead, please check the [Storing information](strategy-advanced.md#storing-information-persistent) section.
--8<-- "includes/strategy-imports.md" --8<-- "includes/strategy-imports.md"
## Strategy file loading ## Strategy file loading
By default, freqtrade will attempt to load strategies from all `.py` files within `user_data/strategies`. By default, freqtrade will attempt to load strategies from all `.py` files within the `userdir` (default `user_data/strategies`).
Assuming your strategy is called `AwesomeStrategy`, stored in the file `user_data/strategies/AwesomeStrategy.py`, then you can start freqtrade with `freqtrade trade --strategy AwesomeStrategy`. Assuming your strategy is called `AwesomeStrategy`, stored in the file `user_data/strategies/AwesomeStrategy.py`, then you can start freqtrade in dry (or live, depending on your configuration) mode with:
Note that we're using the class-name, not the file name.
```bash
freqtrade trade --strategy AwesomeStrategy`
```
Note that we're using the class name, not the file name.
You can use `freqtrade list-strategies` to see a list of all strategies Freqtrade is able to load (all strategies in the correct folder). You can use `freqtrade list-strategies` to see a list of all strategies Freqtrade is able to load (all strategies in the correct folder).
It will also include a "status" field, highlighting potential problems. It will also include a "status" field, highlighting potential problems.
@@ -426,9 +528,11 @@ It will also include a "status" field, highlighting potential problems.
### Get data for non-tradeable pairs ### Get data for non-tradeable pairs
Data for additional, informative pairs (reference pairs) can be beneficial for some strategies. Data for additional, informative pairs (reference pairs) can be beneficial for some strategies to see data on a wider timeframe.
OHLCV data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see below). OHLCV data for these pairs will be downloaded as part of the regular whitelist refresh process and is available via `DataProvider` just as other pairs (see below).
These parts will **not** be traded unless they are also specified in the pair whitelist, or have been selected by Dynamic Whitelisting.
These pairs will **not** be traded unless they are also specified in the pair whitelist, or have been selected by Dynamic Whitelisting, e.g. `VolumePairlist`.
The pairs need to be specified as tuples in the format `("pair", "timeframe")`, with pair as the first and timeframe as the second argument. The pairs need to be specified as tuples in the format `("pair", "timeframe")`, with pair as the first and timeframe as the second argument.
@@ -441,7 +545,7 @@ def informative_pairs(self):
] ]
``` ```
A full sample can be found [in the DataProvider section](#complete-data-provider-sample). A full sample can be found [in the DataProvider section](#complete-dataprovider-sample).
!!! Warning !!! Warning
As these pairs will be refreshed as part of the regular whitelist refresh, it's best to keep this list short. As these pairs will be refreshed as part of the regular whitelist refresh, it's best to keep this list short.
@@ -468,18 +572,24 @@ A full sample can be found [in the DataProvider section](#complete-data-provider
### Informative pairs decorator (`@informative()`) ### Informative pairs decorator (`@informative()`)
In most common case it is possible to easily define informative pairs by using a decorator. All decorated `populate_indicators_*` methods run in isolation, To easily define informative pairs, use the `@informative` decorator. All decorated `populate_indicators_*` methods run in isolation,
not having access to data from other informative pairs, in the end all informative dataframes are merged and passed to main `populate_indicators()` method. and do not have access to data from other informative pairs. However, all informative dataframes for each pair are merged and passed to main `populate_indicators()` method.
When hyperopting, use of hyperoptable parameter `.value` attribute is not supported. Please use `.range` attribute. See [optimizing an indicator parameter](hyperopt.md#optimizing-an-indicator-parameter)
for more information. !!! Note
Do not use the `@informative` decorator if you need to use data from one informative pair when generating another informative pair. Instead, define informative pairs manually as described [in the DataProvider section](#complete-dataprovider-sample).
When hyperopting, use of the hyperoptable parameter `.value` attribute is not supported. Please use the `.range` attribute. See [optimizing an indicator parameter](hyperopt.md#optimizing-an-indicator-parameter) for more information.
??? info "Full documentation" ??? info "Full documentation"
``` python ``` python
def informative(timeframe: str, asset: str = '', def informative(
fmt: Optional[Union[str, Callable[[KwArg(str)], str]]] = None, timeframe: str,
asset: str = "",
fmt: str | Callable[[Any], str] | None = None,
*, *,
candle_type: Optional[CandleType] = None, candle_type: CandleType | str | None = None,
ffill: bool = True) -> Callable[[PopulateIndicators], PopulateIndicators]: ffill: bool = True,
) -> Callable[[PopulateIndicators], PopulateIndicators]:
""" """
A decorator for populate_indicators_Nn(self, dataframe, metadata), allowing these functions to A decorator for populate_indicators_Nn(self, dataframe, metadata), allowing these functions to
define informative indicators. define informative indicators.
@@ -568,10 +678,6 @@ for more information.
``` ```
!!! Note
Do not use `@informative` decorator if you need to use data of one informative pair when generating another informative pair. Instead, define informative pairs
manually as described [in the DataProvider section](#complete-data-provider-sample).
!!! Note !!! Note
Use string formatting when accessing informative dataframes of other pairs. This will allow easily changing stake currency in config without having to adjust strategy code. Use string formatting when accessing informative dataframes of other pairs. This will allow easily changing stake currency in config without having to adjust strategy code.
@@ -592,22 +698,19 @@ for more information.
Alternatively column renaming may be used to remove stake currency from column names: `@informative('1h', 'BTC/{stake}', fmt='{base}_{column}_{timeframe}')`. Alternatively column renaming may be used to remove stake currency from column names: `@informative('1h', 'BTC/{stake}', fmt='{base}_{column}_{timeframe}')`.
!!! Warning "Duplicate method names" !!! Warning "Duplicate method names"
Methods tagged with `@informative()` decorator must always have unique names! Re-using same name (for example when copy-pasting already defined informative method) Methods tagged with the `@informative()` decorator must always have unique names! Reusing the same name (for example when copy-pasting already defined informative methods) will overwrite previously defined methods and not produce any errors due to limitations of Python programming language. In such cases you will find that indicators created in methods higher up in the strategy file are not available in the dataframe. Carefully review method names and make sure they are unique!
will overwrite previously defined method and not produce any errors due to limitations of Python programming language. In such cases you will find that indicators
created in earlier-defined methods are not available in the dataframe. Carefully review method names and make sure they are unique!
### *merge_informative_pair()* ### *merge_informative_pair()*
This method helps you merge an informative pair to a regular dataframe without lookahead bias. This method helps you merge an informative pair to the regular main dataframe safely and consistently, without lookahead bias.
It's there to help you merge the dataframe in a safe and consistent way.
Options: Options:
- Rename the columns for you to create unique columns - Rename the columns to create unique columns
- Merge the dataframe without lookahead bias - Merge the dataframe without lookahead bias
- Forward-fill (optional) - Forward-fill (optional)
For a full sample, please refer to the [complete data provider example](#complete-data-provider-sample) below. For a full sample, please refer to the [complete data provider example](#complete-dataprovider-sample) below.
All columns of the informative dataframe will be available on the returning dataframe in a renamed fashion: All columns of the informative dataframe will be available on the returning dataframe in a renamed fashion:
@@ -654,20 +757,20 @@ All columns of the informative dataframe will be available on the returning data
``` ```
!!! Warning "Informative timeframe < timeframe" !!! Warning "Informative timeframe < timeframe"
Using informative timeframes smaller than the dataframe timeframe is not recommended with this method, as it will not use any of the additional information this would provide. Using informative timeframes smaller than the main dataframe timeframe is not recommended with this method, as it will not use any of the additional information this would provide.
To use the more detailed information properly, more advanced methods should be applied (which are out of scope for freqtrade documentation, as it'll depend on the respective need). To use the more detailed information properly, more advanced methods should be applied (which are out of scope for this documentation).
## Additional data (DataProvider) ## Additional data (DataProvider)
The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy. The strategy provides access to the `DataProvider`. This allows you to get additional data to use in your strategy.
All methods return `None` in case of failure (do not raise an exception). All methods return `None` in case of failure, i.e. failures do not raise an exception.
Please always check the mode of operation to select the correct method to get data (samples see below). Please always check the mode of operation to select the correct method to get data (see below for examples).
!!! Warning "Hyperopt" !!! Warning "Hyperopt Limitations"
Dataprovider is available during hyperopt, however it can only be used in `populate_indicators()` within a strategy. The DataProvider is available during hyperopt, however it can only be used in `populate_indicators()` **within a strategy**, not within a hyperopt class file.
It is not available in `populate_buy()` and `populate_sell()` methods, nor in `populate_indicators()`, if this method located in the hyperopt file. It is also not available in `populate_entry_trend()` and `populate_exit_trend()` methods.
### Possible options for DataProvider ### Possible options for DataProvider
@@ -693,30 +796,31 @@ for pair, timeframe in self.dp.available_pairs:
### *current_whitelist()* ### *current_whitelist()*
Imagine you've developed a strategy that trades the `5m` timeframe using signals generated from a `1d` timeframe on the top 10 volume pairs by volume. Imagine you've developed a strategy that trades the `5m` timeframe using signals generated from a `1d` timeframe on the top 10 exchange pairs by volume.
The strategy might look something like this: The strategy logic might look something like this:
*Scan through the top 10 pairs by volume using the `VolumePairList` every 5 minutes and use a 14 day RSI to buy and sell.* *Scan through the top 10 pairs by volume using the `VolumePairList` every 5 minutes and use a 14 day RSI to enter and exit.*
Due to the limited available data, it's very difficult to resample `5m` candles into daily candles for use in a 14 day RSI. Most exchanges limit us to just 500-1000 candles which effectively gives us around 1.74 daily candles. We need 14 days at least! Due to the limited available data, it's very difficult to resample `5m` candles into daily candles for use in a 14 day RSI. Most exchanges limit users to just 500-1000 candles which effectively gives us around 1.74 daily candles. We need 14 days at least!
Since we can't resample the data we will have to use an informative pair; and since the whitelist will be dynamic we don't know which pair(s) to use. Since we can't resample the data we will have to use an informative pair, and since the whitelist will be dynamic we don't know which pair(s) to use! We have a problem!
This is where calling `self.dp.current_whitelist()` comes in handy. This is where calling `self.dp.current_whitelist()` comes in handy to retrieve only those pairs in the whitelist.
```python ```python
def informative_pairs(self): def informative_pairs(self):
# get access to all pairs available in whitelist. # get access to all pairs available in whitelist.
pairs = self.dp.current_whitelist() pairs = self.dp.current_whitelist()
# Assign tf to each pair so they can be downloaded and cached for strategy. # Assign timeframe to each pair so they can be downloaded and cached for strategy.
informative_pairs = [(pair, '1d') for pair in pairs] informative_pairs = [(pair, '1d') for pair in pairs]
return informative_pairs return informative_pairs
``` ```
??? Note "Plotting with current_whitelist" ??? Note "Plotting with current_whitelist"
Current whitelist is not supported for `plot-dataframe`, as this command is usually used by providing an explicit pairlist - and would therefore make the return values of this method misleading. Current whitelist is not supported for `plot-dataframe`, as this command is usually used by providing an explicit pairlist and would therefore make the return values of this method misleading.
It's also not supported for FreqUI visualization in [webserver mode](utils.md#webserver-mode), as the configuration for webserver mode doesn't require a pairlist to be set.
### *get_pair_dataframe(pair, timeframe)* ### *get_pair_dataframe(pair, timeframe)*
@@ -757,7 +861,7 @@ if self.dp.runmode.value in ('live', 'dry_run'):
dataframe['best_ask'] = ob['asks'][0][0] dataframe['best_ask'] = ob['asks'][0][0]
``` ```
The orderbook structure is aligned with the order structure from [ccxt](https://github.com/ccxt/ccxt/wiki/Manual#order-book-structure), so the result will look as follows: The orderbook structure is aligned with the order structure from [ccxt](https://github.com/ccxt/ccxt/wiki/Manual#order-book-structure), so the result will be formatted as follows:
``` js ``` js
{ {
@@ -775,7 +879,7 @@ The orderbook structure is aligned with the order structure from [ccxt](https://
} }
``` ```
Therefore, using `ob['bids'][0][0]` as demonstrated above will result in using the best bid price. `ob['bids'][0][1]` would look at the amount at this orderbook position. Therefore, using `ob['bids'][0][0]` as demonstrated above will use the best bid price. `ob['bids'][0][1]` would look at the amount at this orderbook position.
!!! Warning "Warning about backtesting" !!! Warning "Warning about backtesting"
The order book is not part of the historic data which means backtesting and hyperopt will not work correctly if this method is used, as the method will return up-to-date values. The order book is not part of the historic data which means backtesting and hyperopt will not work correctly if this method is used, as the method will return up-to-date values.
@@ -792,12 +896,12 @@ if self.dp.runmode.value in ('live', 'dry_run'):
!!! Warning !!! Warning
Although the ticker data structure is a part of the ccxt Unified Interface, the values returned by this method can Although the ticker data structure is a part of the ccxt Unified Interface, the values returned by this method can
vary for different exchanges. For instance, many exchanges do not return `vwap` values, some exchanges vary for different exchanges. For instance, many exchanges do not return `vwap` values, and some exchanges
does not always fills in the `last` field (so it can be None), etc. So you need to carefully verify the ticker do not always fill in the `last` field (so it can be None), etc. So you need to carefully verify the ticker
data returned from the exchange and add appropriate error handling / defaults. data returned from the exchange and add appropriate error handling / defaults.
!!! Warning "Warning about backtesting" !!! Warning "Warning about backtesting"
This method will always return up-to-date values - so usage during backtesting / hyperopt without runmode checks will lead to wrong results. This method will always return up-to-date / real-time values. As such, usage during backtesting / hyperopt without runmode checks will lead to wrong results, e.g. your whole dataframe will contain the same single value in all rows.
### Send Notification ### Send Notification
@@ -816,7 +920,7 @@ Notifications will only be sent in trading modes (Live/Dry-run) - so this method
!!! Warning "Spamming" !!! Warning "Spamming"
You can spam yourself pretty good by setting `always_send=True` in this method. Use this with great care and only in conditions you know will not happen throughout a candle to avoid a message every 5 seconds. You can spam yourself pretty good by setting `always_send=True` in this method. Use this with great care and only in conditions you know will not happen throughout a candle to avoid a message every 5 seconds.
### Complete Data-provider sample ### Complete DataProvider sample
```python ```python
from freqtrade.strategy import IStrategy, merge_informative_pair from freqtrade.strategy import IStrategy, merge_informative_pair
@@ -883,14 +987,14 @@ class SampleStrategy(IStrategy):
## Additional data (Wallets) ## Additional data (Wallets)
The strategy provides access to the `wallets` object. This contains the current balances on the exchange. The strategy provides access to the `wallets` object. This contains the current balances of your wallets/accounts on the exchange.
!!! Note "Backtesting / Hyperopt" !!! Note "Backtesting / Hyperopt"
Wallets behaves differently depending on the function it's called. Wallets behaves differently depending on the function from which it is called.
Within `populate_*()` methods, it'll return the full wallet as configured. Within `populate_*()` methods, it'll return the full wallet as configured.
Within [callbacks](strategy-callbacks.md), you'll get the wallet state corresponding to the actual simulated wallet at that point in the simulation process. Within [callbacks](strategy-callbacks.md), you'll get the wallet state corresponding to the actual simulated wallet at that point in the simulation process.
Please always check if `wallets` is available to avoid failures during backtesting. Always check if `wallets` is available to avoid failures during backtesting.
``` python ``` python
if self.wallets: if self.wallets:
@@ -909,15 +1013,15 @@ if self.wallets:
## Additional data (Trades) ## Additional data (Trades)
A history of Trades can be retrieved in the strategy by querying the database. A history of trades can be retrieved in the strategy by querying the database.
At the top of the file, import Trade. At the top of the file, import the required object:
```python ```python
from freqtrade.persistence import Trade from freqtrade.persistence import Trade
``` ```
The following example queries for the current pair and trades from today, however other filters can easily be added. The following example queries trades from today for the current pair (`metadata['pair']`). Other filters can easily be added.
``` python ``` python
trades = Trade.get_trades_proxy(pair=metadata['pair'], trades = Trade.get_trades_proxy(pair=metadata['pair'],
@@ -935,7 +1039,9 @@ For a full list of available methods, please consult the [Trade object](trade-ob
## Prevent trades from happening for a specific pair ## Prevent trades from happening for a specific pair
Freqtrade locks pairs automatically for the current candle (until that candle is over) when a pair is sold, preventing an immediate re-buy of that pair. Freqtrade locks pairs automatically for the current candle (until that candle is over) when a pair exits, preventing an immediate re-entry of that pair.
This is to prevent "waterfalls" of many and frequent trades within a single candle.
Locked pairs will show the message `Pair <pair> is currently locked.`. Locked pairs will show the message `Pair <pair> is currently locked.`.
@@ -946,7 +1052,7 @@ Sometimes it may be desired to lock a pair after certain events happen (e.g. mul
Freqtrade has an easy method to do this from within the strategy, by calling `self.lock_pair(pair, until, [reason])`. Freqtrade has an easy method to do this from within the strategy, by calling `self.lock_pair(pair, until, [reason])`.
`until` must be a datetime object in the future, after which trading will be re-enabled for that pair, while `reason` is an optional string detailing why the pair was locked. `until` must be a datetime object in the future, after which trading will be re-enabled for that pair, while `reason` is an optional string detailing why the pair was locked.
Locks can also be lifted manually, by calling `self.unlock_pair(pair)` or `self.unlock_reason(<reason>)` - providing reason the pair was locked with. Locks can also be lifted manually, by calling `self.unlock_pair(pair)` or `self.unlock_reason(<reason>)`, providing the reason the pair was unlocked.
`self.unlock_reason(<reason>)` will unlock all pairs currently locked with the provided reason. `self.unlock_reason(<reason>)` will unlock all pairs currently locked with the provided reason.
To verify if a pair is currently locked, use `self.is_pair_locked(pair)`. To verify if a pair is currently locked, use `self.is_pair_locked(pair)`.
@@ -955,7 +1061,7 @@ To verify if a pair is currently locked, use `self.is_pair_locked(pair)`.
Locked pairs will always be rounded up to the next candle. So assuming a `5m` timeframe, a lock with `until` set to 10:18 will lock the pair until the candle from 10:15-10:20 will be finished. Locked pairs will always be rounded up to the next candle. So assuming a `5m` timeframe, a lock with `until` set to 10:18 will lock the pair until the candle from 10:15-10:20 will be finished.
!!! Warning !!! Warning
Manually locking pairs is not available during backtesting, only locks via Protections are allowed. Manually locking pairs is not available during backtesting. Only locks via Protections are allowed.
#### Pair locking example #### Pair locking example
@@ -965,7 +1071,7 @@ 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 a the top of the strategy file, next to all the other imports
# -------- # --------
# Within populate indicators (or populate_buy): # Within populate indicators (or populate_entry_trend):
if self.config['runmode'].value in ('live', 'dry_run'): if self.config['runmode'].value in ('live', 'dry_run'):
# fetch closed trades for the last 2 days # fetch closed trades for the last 2 days
trades = Trade.get_trades_proxy( trades = Trade.get_trades_proxy(
@@ -978,9 +1084,9 @@ if self.config['runmode'].value in ('live', 'dry_run'):
self.lock_pair(metadata['pair'], until=datetime.now(timezone.utc) + timedelta(hours=12)) self.lock_pair(metadata['pair'], until=datetime.now(timezone.utc) + timedelta(hours=12))
``` ```
## Print created dataframe ## Print the main dataframe
To inspect the created dataframe, you can issue a print-statement in either `populate_entry_trend()` or `populate_exit_trend()`. To inspect the current main dataframe, you can issue a print-statement in either `populate_entry_trend()` or `populate_exit_trend()`.
You may also want to print the pair so it's clear what data is currently shown. You may also want to print the pair so it's clear what data is currently shown.
``` python ``` python
@@ -1000,29 +1106,30 @@ def populate_entry_trend(self, dataframe: DataFrame, metadata: dict) -> DataFram
return dataframe return dataframe
``` ```
Printing more than a few rows is also possible (simply use `print(dataframe)` instead of `print(dataframe.tail())`), however not recommended, as that will be very verbose (~500 lines per pair every 5 seconds). Printing more than a few rows is also possible by using `print(dataframe)` instead of `print(dataframe.tail())`. However this is not recommended, as can results in a lot of output (~500 lines per pair every 5 seconds).
## Common mistakes when developing strategies ## Common mistakes when developing strategies
### Peeking into the future while backtesting ### Looking into the future while backtesting
Backtesting analyzes the whole time-range at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not look-ahead into the future. Backtesting analyzes the whole dataframe timerange at once for performance reasons. Because of this, strategy authors need to make sure that strategies do not lookahead into the future, i.e. using data that would not be available in dry or live mode.
This is a common pain-point, which can cause huge differences between backtesting and dry/live run methods, since they all use data which is not available during dry/live runs, so these strategies will perform well during backtesting, but will fail / perform badly in real conditions.
The following lists some common patterns which should be avoided to prevent frustration: This is a common pain-point, which can cause huge differences between backtesting and dry/live run methods. Strategies that look into the future will perform well during backtesting, often with incredible profits or winrates, but will fail or perform badly in real conditions.
The following list contains some common patterns which should be avoided to prevent frustration:
- don't use `shift(-1)` or other negative values. This uses data from the future in backtesting, which is not available in dry or live modes. - don't use `shift(-1)` or other negative values. This uses data from the future in backtesting, which is not available in dry or live modes.
- don't use `.iloc[-1]` or any other absolute position in the dataframe within `populate_` functions, as this will be different between dry-run and backtesting. Absolute `iloc` indexing is safe to use in callbacks however - see [Strategy Callbacks](strategy-callbacks.md). - don't use `.iloc[-1]` or any other absolute position in the dataframe within `populate_` functions, as this will be different between dry-run and backtesting. Absolute `iloc` indexing is safe to use in callbacks however - see [Strategy Callbacks](strategy-callbacks.md).
- don't use `dataframe['volume'].mean()`. This uses the full DataFrame for backtesting, including data from the future. Use `dataframe['volume'].rolling(<window>).mean()` instead - don't use functions that use all dataframe or column values, e.g. `dataframe['mean_volume'] = dataframe['volume'].mean()`. As backtesting uses the full dataframe, at any point in the dataframe, the `'mean_volume'` series would include data from the future. Use rolling() calculations instead, e.g. `dataframe['volume'].rolling(<window>).mean()`.
- don't use `.resample('1h')`. This uses the left border of the interval, so moves data from an hour to the start of the hour. Use `.resample('1h', label='right')` instead. - don't use `.resample('1h')`. This uses the left border of the period interval, so moves data from an hour boundary to the start of the hour. Use `.resample('1h', label='right')` instead.
!!! Tip "Identifying problems" !!! Tip "Identifying problems"
You may also want to check the 2 helper commands [lookahead-analysis](lookahead-analysis.md) and [recursive-analysis](recursive-analysis.md), which can each help you figure out problems with your strategy in different ways. You should always use the two helper commands [lookahead-analysis](lookahead-analysis.md) and [recursive-analysis](recursive-analysis.md), which can each help you figure out problems with your strategy in different ways.
Please treat them as what they are - helpers to identify most common problems. A negative result of each does not guarantee that there's none of the above errors included. Please treat them as what they are - helpers to identify most common problems. A negative result of each does not guarantee that there are none of the above errors included.
### Colliding signals ### Colliding signals
When conflicting signals collide (e.g. both `'enter_long'` and `'exit_long'` are 1), freqtrade will do nothing and ignore the entry signal. This will avoid trades that enter, and exit immediately. Obviously, this can potentially lead to missed entries. When conflicting signals collide (e.g. both `'enter_long'` and `'exit_long'` are set to `1`), freqtrade will do nothing and ignore the entry signal. This will avoid trades that enter, and exit immediately. Obviously, this can potentially lead to missed entries.
The following rules apply, and entry signals will be ignored if more than one of the 3 signals is set: The following rules apply, and entry signals will be ignored if more than one of the 3 signals is set:
@@ -1031,11 +1138,11 @@ The following rules apply, and entry signals will be ignored if more than one of
## Further strategy ideas ## Further strategy ideas
To get additional Ideas for strategies, head over to the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Feel free to use them as they are - but results will depend on the current market situation, pairs used etc. - therefore please backtest the strategy for your exchange/desired pairs first, evaluate carefully, use at your own risk. To get additional ideas for strategies, head over to the [strategy repository](https://github.com/freqtrade/freqtrade-strategies). Feel free to use them as examples, but results will depend on the current market situation, pairs used, etc. Therefore, these strategies should be considered only for learning purposes, not real world trading. Please backtest the strategy for your exchange/desired pairs first, then dry run to evaluate carefully, and use at your own risk.
Feel free to use any of them as inspiration for your own strategies.
We're happy to accept Pull Requests containing new Strategies to that repo.
## Next step Feel free to use any of them as inspiration for your own strategies. We're happy to accept Pull Requests containing new strategies to the repository.
## Next steps
Now you have a perfect strategy you probably want to backtest it. Now you have a perfect strategy you probably want to backtest it.
Your next step is to learn [How to use the Backtesting](backtesting.md). Your next step is to learn [how to use backtesting](backtesting.md).

View File

@@ -152,7 +152,7 @@ print(stats["strategy"][strategy]["pairlist"])
# Get market change (average change of all pairs from start to end of the backtest period) # Get market change (average change of all pairs from start to end of the backtest period)
print(stats["strategy"][strategy]["market_change"]) print(stats["strategy"][strategy]["market_change"])
# Maximum drawdown () # Maximum drawdown ()
print(stats["strategy"][strategy]["max_drawdown"]) print(stats["strategy"][strategy]["max_drawdown_abs"])
# Maximum drawdown start and end # Maximum drawdown start and end
print(stats["strategy"][strategy]["drawdown_start"]) print(stats["strategy"][strategy]["drawdown_start"])
print(stats["strategy"][strategy]["drawdown_end"]) print(stats["strategy"][strategy]["drawdown_end"])
@@ -215,7 +215,7 @@ trades.groupby("pair")["exit_reason"].value_counts()
``` ```
## Analyze the loaded trades for trade parallelism ## Analyze the loaded trades for trade parallelism
This can be useful to find the best `max_open_trades` parameter, when used with backtesting in conjunction with `--disable-max-market-positions`. This can be useful to find the best `max_open_trades` parameter, when used with backtesting in conjunction with a very high `max_open_trades` setting.
`analyze_trade_parallelism()` returns a timeseries dataframe with an "open_trades" column, specifying the number of open trades for each candle. `analyze_trade_parallelism()` returns a timeseries dataframe with an "open_trades" column, specifying the number of open trades for each candle.

View File

@@ -214,8 +214,8 @@ class AwesomeStrategy(IStrategy):
``` python hl_lines="4" ``` python hl_lines="4"
class AwesomeStrategy(IStrategy): class AwesomeStrategy(IStrategy):
def custom_stake_amount(self, pair: str, current_time: datetime, current_rate: float, def custom_stake_amount(self, pair: str, current_time: datetime, current_rate: float,
proposed_stake: float, min_stake: Optional[float], max_stake: float, proposed_stake: float, min_stake: float | None, max_stake: float,
entry_tag: Optional[str], side: str, **kwargs) -> float: entry_tag: str | None, side: str, **kwargs) -> float:
# ... # ...
return proposed_stake return proposed_stake
``` ```
@@ -237,7 +237,7 @@ After:
``` python hl_lines="4" ``` python hl_lines="4"
class AwesomeStrategy(IStrategy): class AwesomeStrategy(IStrategy):
def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float, def confirm_trade_entry(self, pair: str, order_type: str, amount: float, rate: float,
time_in_force: str, current_time: datetime, entry_tag: Optional[str], time_in_force: str, current_time: datetime, entry_tag: str | None,
side: str, **kwargs) -> bool: side: str, **kwargs) -> bool:
return True return True
``` ```
@@ -280,8 +280,8 @@ After:
``` python hl_lines="3" ``` python hl_lines="3"
class AwesomeStrategy(IStrategy): class AwesomeStrategy(IStrategy):
def custom_entry_price(self, pair: str, trade: Optional[Trade], current_time: datetime, proposed_rate: float, def custom_entry_price(self, pair: str, trade: Trade | None, current_time: datetime, proposed_rate: float,
entry_tag: Optional[str], side: str, **kwargs) -> float: entry_tag: str | None, side: str, **kwargs) -> float:
return proposed_rate return proposed_rate
``` ```
@@ -312,7 +312,7 @@ After:
``` python hl_lines="5 7" ``` python hl_lines="5 7"
def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime, def custom_stoploss(self, pair: str, trade: 'Trade', current_time: datetime,
current_rate: float, current_profit: float, after_fill: bool, current_rate: float, current_profit: float, after_fill: bool,
**kwargs) -> Optional[float]: **kwargs) -> float | None:
# once the profit has risen above 10%, keep the stoploss at 7% above the open price # once the profit has risen above 10%, keep the stoploss at 7% above the open price
if current_profit > 0.10: if current_profit > 0.10:
return stoploss_from_open(0.07, current_profit, is_short=trade.is_short) return stoploss_from_open(0.07, current_profit, is_short=trade.is_short)
@@ -329,7 +329,7 @@ After:
`order_time_in_force` attributes changed from `"buy"` to `"entry"` and `"sell"` to `"exit"`. `order_time_in_force` attributes changed from `"buy"` to `"entry"` and `"sell"` to `"exit"`.
``` python ``` python
order_time_in_force: Dict = { order_time_in_force: dict = {
"buy": "gtc", "buy": "gtc",
"sell": "gtc", "sell": "gtc",
} }
@@ -338,7 +338,7 @@ After:
After: After:
``` python hl_lines="2 3" ``` python hl_lines="2 3"
order_time_in_force: Dict = { order_time_in_force: dict = {
"entry": "GTC", "entry": "GTC",
"exit": "GTC", "exit": "GTC",
} }
@@ -780,7 +780,7 @@ class MyCoolFreqaiModel(BaseRegressionModel):
def predict( def predict(
self, unfiltered_df: DataFrame, dk: FreqaiDataKitchen, **kwargs self, unfiltered_df: DataFrame, dk: FreqaiDataKitchen, **kwargs
) -> Tuple[DataFrame, npt.NDArray[np.int_]]: ) -> tuple[DataFrame, npt.NDArray[np.int_]]:
# ... your custom stuff # ... your custom stuff

View File

@@ -15,3 +15,7 @@
.md-version__list { .md-version__list {
font-weight: 500 !important; font-weight: 500 !important;
} }
#available-endpoints ~ .md-typeset__scrollwrap .md-typeset__table th:first-of-type {
width: 35% !important;
}

View File

@@ -45,22 +45,42 @@ Get your "Id", you will use it for the config parameter `chat_id`.
#### Use Group id #### Use Group id
You can use bots in telegram groups by just adding them to the group. You can find the group id by first adding a [RawDataBot](https://telegram.me/rawdatabot) to your group. The Group id is shown as id in the `"chat"` section, which the RawDataBot will send to you: To get the group ID, you can add the bot to the group, start freqtrade, and issue a `/tg_info` command.
This will return the group id to you, without having to use some random bot.
While "chat_id" is still required, it doesn't need to be set to this particular group id for this command.
The response will also contain the "topic_id" if necessary - both in a format ready to copy/paste into your configuration.
``` json ``` json
"chat":{ {
"id":-1001332619709 "enabled": true,
"token": "********",
"chat_id": "-1001332619709",
"topic_id": "122"
} }
``` ```
For the Freqtrade configuration, you can then use the full value (including `-` if it's there) as string: For the Freqtrade configuration, you can then use the full value (including `-` ) as string:
```json ```json
"chat_id": "-1001332619709" "chat_id": "-1001332619709"
``` ```
!!! Warning "Using telegram groups" !!! Warning "Using telegram groups"
When using telegram groups, you're giving every member of the telegram group access to your freqtrade bot and to all commands possible via telegram. Please make sure that you can trust everyone in the telegram group to avoid unpleasant surprises. When using telegram groups, you're giving every member of the telegram group access to your freqtrade bot and to all commands possible via telegram. Please make sure that you can trust everyone in the telegram group to avoid unpleasant surprises.
##### Group Topic ID
To use a specific topic in a group, you can use the `topic_id` parameter in the configuration. This will allow you to use the bot in a specific topic in a group.
Without this, the bot will always respond to the general channel in the group if topics are enabled for a group chat.
```json
"chat_id": "-1001332619709",
"topic_id": "3"
```
Similar to the group-id - you can use `/tg_info` from the topic/thread to get the correct topic-id.
## Control telegram noise ## Control telegram noise
Freqtrade provides means to control the verbosity of your telegram bot. Freqtrade provides means to control the verbosity of your telegram bot.
@@ -93,9 +113,12 @@ Example configuration showing the different settings:
"trailing_stop_loss": "on", "trailing_stop_loss": "on",
"stop_loss": "on", "stop_loss": "on",
"stoploss_on_exchange": "on", "stoploss_on_exchange": "on",
"custom_exit": "silent", "custom_exit": "silent", // custom_exit without specifying an exit reason
"partial_exit": "on" "partial_exit": "on",
// "custom_exit_message": "silent", // Disable individual custom exit reasons
"*": "off" // Disable all other exit reasons
}, },
// "exit": "off", // Simplistic configuration to disable all exit messages
"exit_cancel": "on", "exit_cancel": "on",
"exit_fill": "off", "exit_fill": "off",
"protection_trigger": "off", "protection_trigger": "off",
@@ -108,16 +131,16 @@ Example configuration showing the different settings:
}, },
``` ```
`entry` notifications are sent when the order is placed, while `entry_fill` notifications are sent when the order is filled on the exchange. * `entry` notifications are sent when the order is placed, while `entry_fill` notifications are sent when the order is filled on the exchange.
`exit` notifications are sent when the order is placed, while `exit_fill` notifications are sent when the order is filled on the exchange. * `exit` notifications are sent when the order is placed, while `exit_fill` notifications are sent when the order is filled on the exchange.
`*_fill` notifications are off by default and must be explicitly enabled. Exit messages (`exit` and `exit_fill`) can be further controlled at individual exit reasons level, with the specific exit reason as the key. the default for all exit reasons is `on` - but can be configured via special `*` key - which will act as a wildcard for all exit reasons that are not explicitly defined.
`protection_trigger` notifications are sent when a protection triggers and `protection_trigger_global` notifications trigger when global protections are triggered. * `*_fill` notifications are off by default and must be explicitly enabled.
`strategy_msg` - Receive notifications from the strategy, sent via `self.dp.send_msg()` from the strategy [more details](strategy-customization.md#send-notification). * `protection_trigger` notifications are sent when a protection triggers and `protection_trigger_global` notifications trigger when global protections are triggered.
`show_candle` - show candle values as part of entry/exit messages. Only possible values are `"ohlc"` or `"off"`. * `strategy_msg` - Receive notifications from the strategy, sent via `self.dp.send_msg()` from the strategy [more details](strategy-customization.md#send-notification).
* `show_candle` - show candle values as part of entry/exit messages. Only possible values are `"ohlc"` or `"off"`.
`balance_dust_level` will define what the `/balance` command takes as "dust" - Currencies with a balance below this will be shown. * `balance_dust_level` will define what the `/balance` command takes as "dust" - Currencies with a balance below this will be shown.
`allow_custom_messages` completely disable strategy messages. * `allow_custom_messages` completely disable strategy messages.
`reload` allows you to disable reload-buttons on selected messages. * `reload` allows you to disable reload-buttons on selected messages.
## Create a custom keyboard (command shortcut buttons) ## Create a custom keyboard (command shortcut buttons)
@@ -296,12 +319,12 @@ Return a summary of your profit/loss and performance.
The relative profit of `1.2%` is the average profit per trade. The relative profit of `1.2%` is the average profit per trade.
The relative profit of `15.2 Σ%` is be based on the starting capital - so in this case, the starting capital was `0.00485701 * 1.152 = 0.00738 BTC`. The relative profit of `15.2 Σ%` is be based on the starting capital - so in this case, the starting capital was `0.00485701 * 1.152 = 0.00738 BTC`.
Starting capital is either taken from the `available_capital` setting, or calculated by using current wallet size - profits. **Starting capital(**) is either taken from the `available_capital` setting, or calculated by using current wallet size - profits.
Profit Factor is calculated as gross profits / gross losses - and should serve as an overall metric for the strategy. **Profit Factor** is calculated as gross profits / gross losses - and should serve as an overall metric for the strategy.
Expectancy corresponds to the average return per currency unit at risk, i.e. the winrate and the risk-reward ratio (the average gain of winning trades compared to the average loss of losing trades). **Expectancy** corresponds to the average return per currency unit at risk, i.e. the winrate and the risk-reward ratio (the average gain of winning trades compared to the average loss of losing trades).
Expectancy Ratio is expected profit or loss of a subsequent trade based on the performance of all past trades. **Expectancy Ratio** is expected profit or loss of a subsequent trade based on the performance of all past trades.
Max drawdown corresponds to the backtesting metric `Absolute Drawdown (Account)` - calculated as `(Absolute Drawdown) / (DrawdownHigh + startingBalance)`. **Max drawdown** corresponds to the backtesting metric `Absolute Drawdown (Account)` - calculated as `(Absolute Drawdown) / (DrawdownHigh + startingBalance)`.
Bot started date will refer to the date the bot was first started. For older bots, this will default to the first trade's open date. **Bot started date** will refer to the date the bot was first started. For older bots, this will default to the first trade's open date.
### /forceexit <trade_id> ### /forceexit <trade_id>
@@ -337,6 +360,8 @@ Return the performance of each crypto-currency the bot has sold.
> 5. `STORJ/BTC 0.0009 BTC (27.24%) (1)` > 5. `STORJ/BTC 0.0009 BTC (27.24%) (1)`
> ... > ...
The relative performance is calculated against the total investment in the currency, aggregating all filled entries for the currency.
### /balance ### /balance
Return the balance of all crypto-currency your have on the exchange. Return the balance of all crypto-currency your have on the exchange.
@@ -345,7 +370,7 @@ Return the balance of all crypto-currency your have on the exchange.
> **Available:** 3.05890234 > **Available:** 3.05890234
> **Balance:** 3.05890234 > **Balance:** 3.05890234
> **Pending:** 0.0 > **Pending:** 0.0
>
> **Currency:** CVC > **Currency:** CVC
> **Available:** 86.64180098 > **Available:** 86.64180098
> **Balance:** 86.64180098 > **Balance:** 86.64180098
@@ -356,6 +381,7 @@ Return the balance of all crypto-currency your have on the exchange.
Per default `/daily` will return the 7 last days. The example below if for `/daily 3`: Per default `/daily` will return the 7 last days. The example below if for `/daily 3`:
> **Daily Profit over the last 3 days:** > **Daily Profit over the last 3 days:**
``` ```
Day (count) USDT USD Profit % Day (count) USDT USD Profit %
-------------- ------------ ---------- ---------- -------------- ------------ ---------- ----------
@@ -370,6 +396,7 @@ Per default `/weekly` will return the 8 last weeks, including the current week.
from Monday. The example below if for `/weekly 3`: from Monday. The example below if for `/weekly 3`:
> **Weekly Profit over the last 3 weeks (starting from Monday):** > **Weekly Profit over the last 3 weeks (starting from Monday):**
``` ```
Monday (count) Profit BTC Profit USD Profit % Monday (count) Profit BTC Profit USD Profit %
------------- -------------- ------------ ---------- ------------- -------------- ------------ ----------

View File

@@ -18,7 +18,7 @@ The following attributes / properties are available for each individual trade -
| `open_rate` | float | Rate this trade was entered at (Avg. entry rate in case of trade-adjustments). | | `open_rate` | float | Rate this trade was entered at (Avg. entry rate in case of trade-adjustments). |
| `close_rate` | float | Close rate - only set when is_open = False. | | `close_rate` | float | Close rate - only set when is_open = False. |
| `stake_amount` | float | Amount in Stake (or Quote) currency. | | `stake_amount` | float | Amount in Stake (or Quote) currency. |
| `amount` | float | Amount in Asset / Base currency that is currently owned. | | `amount` | float | Amount in Asset / Base currency that is currently owned. Will be 0.0 until the initial order fills. |
| `open_date` | datetime | Timestamp when trade was opened **use `open_date_utc` instead** | | `open_date` | datetime | Timestamp when trade was opened **use `open_date_utc` instead** |
| `open_date_utc` | datetime | Timestamp when trade was opened - in UTC. | | `open_date_utc` | datetime | Timestamp when trade was opened - in UTC. |
| `close_date` | datetime | Timestamp when trade was closed **use `close_date_utc` instead** | | `close_date` | datetime | Timestamp when trade was closed **use `close_date_utc` instead** |
@@ -130,20 +130,21 @@ Most properties here can be None as they are dependent on the exchange response.
| Attribute | DataType | Description | | Attribute | DataType | Description |
|------------|-------------|-------------| |------------|-------------|-------------|
`trade` | Trade | Trade object this order is attached to | `trade` | Trade | Trade object this order is attached to |
`ft_pair` | string | Pair this order is for | `ft_pair` | string | Pair this order is for |
`ft_is_open` | boolean | is the order filled? | `ft_is_open` | boolean | is the order filled? |
`order_type` | string | Order type as defined on the exchange - usually market, limit or stoploss | `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 | `status` | string | Status as defined by ccxt. Usually open, closed, expired or canceled |
`side` | string | Buy or Sell | `side` | string | Buy or Sell |
`price` | float | Price the order was placed at | `price` | float | Price the order was placed at |
`average` | float | Average price the order filled at | `average` | float | Average price the order filled at |
`amount` | float | Amount in base currency | `amount` | float | Amount in base currency |
`filled` | float | Filled amount (in base currency) | `filled` | float | Filled amount (in base currency) |
`remaining` | float | Remaining amount | `remaining` | float | Remaining amount |
`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.*) | `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` | float | Stake amount used for this order. *Added in 2023.7.* |
`order_date` | datetime | Order creation date **use `order_date_utc` instead** | `stake_amount_filled` | float | Filled Stake amount used for this order. *Added in 2024.11.* |
`order_date_utc` | datetime | Order creation date (in UTC) | `order_date` | datetime | Order creation date **use `order_date_utc` instead** |
`order_fill_date` | datetime | Order fill date **use `order_fill_utc` instead** | `order_date_utc` | datetime | Order creation date (in UTC) |
`order_fill_date_utc` | datetime | Order fill date | `order_fill_date` | datetime | Order fill date **use `order_fill_utc` instead** |
| `order_fill_date_utc` | datetime | Order fill date |

View File

@@ -8,15 +8,7 @@ Creates the directory structure to hold your files for freqtrade.
Will also create strategy and hyperopt examples for you to get started. Will also create strategy and hyperopt examples for you to get started.
Can be used multiple times - using `--reset` will reset the sample strategy and hyperopt files to their default state. Can be used multiple times - using `--reset` will reset the sample strategy and hyperopt files to their default state.
``` --8<-- "commands/create-userdir.md"
usage: freqtrade create-userdir [-h] [--userdir PATH] [--reset]
optional arguments:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
--reset Reset sample files to their original state.
```
!!! Warning !!! Warning
Using `--reset` may result in loss of data, since this will overwrite all sample files without asking again. Using `--reset` may result in loss of data, since this will overwrite all sample files without asking again.
@@ -38,15 +30,7 @@ optional arguments:
Creates a new configuration file, asking some questions which are important selections for a configuration. Creates a new configuration file, asking some questions which are important selections for a configuration.
``` --8<-- "commands/new-config.md"
usage: freqtrade new-config [-h] [-c PATH]
optional arguments:
-h, --help show this help message and exit
-c PATH, --config PATH
Specify configuration file (default: `config.json`). Multiple --config options may be used. Can be set to `-`
to read config from stdin.
```
!!! Warning !!! Warning
Only vital questions are asked. Freqtrade offers a lot more configuration possibilities, which are listed in the [Configuration documentation](configuration.md#configuration-parameters) Only vital questions are asked. Freqtrade offers a lot more configuration possibilities, which are listed in the [Configuration documentation](configuration.md#configuration-parameters)
@@ -73,21 +57,7 @@ Especially useful with [split configuration files](configuration.md#multiple-con
![Show config output](assets/show-config-output.png) ![Show config output](assets/show-config-output.png)
``` --8<-- "commands/show-config.md"
usage: freqtrade show-config [-h] [--userdir PATH] [-c PATH]
[--show-sensitive]
options:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
--show-sensitive Show secrets in the output.
```
``` output ``` output
Your combined configuration is: Your combined configuration is:
@@ -120,23 +90,7 @@ The file will be named inline with your class name, and will not overwrite exist
Results will be located in `user_data/strategies/<strategyclassname>.py`. Results will be located in `user_data/strategies/<strategyclassname>.py`.
``` output --8<-- "commands/new-strategy.md"
usage: freqtrade new-strategy [-h] [--userdir PATH] [-s NAME]
[--template {full,minimal,advanced}]
optional arguments:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
-s NAME, --strategy NAME
Specify strategy class name which will be used by the
bot.
--template {full,minimal,advanced}
Use a template which is either `minimal`, `full`
(containing multiple sample indicators) or `advanced`.
Default: `full`.
```
### Sample usage of new-strategy ### Sample usage of new-strategy
@@ -162,38 +116,7 @@ Use the `list-strategies` subcommand to see all strategies in one particular dir
This subcommand is useful for finding problems in your environment with loading strategies: modules with strategies that contain errors and failed to load are printed in red (LOAD FAILED), while strategies with duplicate names are printed in yellow (DUPLICATE NAME). This subcommand is useful for finding problems in your environment with loading strategies: modules with strategies that contain errors and failed to load are printed in red (LOAD FAILED), while strategies with duplicate names are printed in yellow (DUPLICATE NAME).
``` --8<-- "commands/list-strategies.md"
usage: freqtrade list-strategies [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--strategy-path PATH] [-1] [--no-color]
[--recursive-strategy-search]
optional arguments:
-h, --help show this help message and exit
--strategy-path PATH Specify additional strategy lookup path.
-1, --one-column Print output in one column.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--recursive-strategy-search
Recursively search for a strategy in the strategies
folder.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Warning !!! Warning
Using these commands will try to load all python files from a directory. This can be a security risk if untrusted files reside in this directory, since all module-level code is executed. Using these commands will try to load all python files from a directory. This can be a security risk if untrusted files reside in this directory, since all module-level code is executed.
@@ -216,55 +139,29 @@ Example: Search dedicated strategy path.
freqtrade list-strategies --strategy-path ~/.freqtrade/strategies/ freqtrade list-strategies --strategy-path ~/.freqtrade/strategies/
``` ```
## List Hyperopt-Loss functions
Use the `list-hyperoptloss` subcommand to see all hyperopt loss functions available.
It provides a quick list of all available loss functions in your environment.
This subcommand can be useful for finding problems in your environment with loading loss functions: modules with Hyperopt-Loss functions that contain errors and failed to load are printed in red (LOAD FAILED), while hyperopt-Loss functions with duplicate names are printed in yellow (DUPLICATE NAME).
--8<-- "commands/list-hyperoptloss.md"
## List freqAI models ## List freqAI models
Use the `list-freqaimodels` subcommand to see all freqAI models available. Use the `list-freqaimodels` subcommand to see all freqAI models available.
This subcommand is useful for finding problems in your environment with loading freqAI models: modules with models that contain errors and failed to load are printed in red (LOAD FAILED), while models with duplicate names are printed in yellow (DUPLICATE NAME). This subcommand is useful for finding problems in your environment with loading freqAI models: modules with models that contain errors and failed to load are printed in red (LOAD FAILED), while models with duplicate names are printed in yellow (DUPLICATE NAME).
``` --8<-- "commands/list-freqaimodels.md"
usage: freqtrade list-freqaimodels [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--freqaimodel-path PATH] [-1] [--no-color]
optional arguments:
-h, --help show this help message and exit
--freqaimodel-path PATH
Specify additional lookup path for freqaimodels.
-1, --one-column Print output in one column.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
## List Exchanges ## List Exchanges
Use the `list-exchanges` subcommand to see the exchanges available for the bot. Use the `list-exchanges` subcommand to see the exchanges available for the bot.
``` --8<-- "commands/list-exchanges.md"
usage: freqtrade list-exchanges [-h] [-1] [-a]
optional arguments:
-h, --help show this help message and exit
-1, --one-column Print output in one column.
-a, --all Print all exchanges known to the ccxt library.
```
Example: see exchanges available for the bot: Example: see exchanges available for the bot:
@@ -313,35 +210,7 @@ okx True Official spot, isolated futures
Use the `list-timeframes` subcommand to see the list of timeframes available for the exchange. Use the `list-timeframes` subcommand to see the list of timeframes available for the exchange.
``` --8<-- "commands/list-timeframes.md"
usage: freqtrade list-timeframes [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--exchange EXCHANGE] [-1]
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
-1, --one-column Print output in one column.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
* Example: see the timeframes for the 'binance' exchange, set in the configuration file: * Example: see the timeframes for the 'binance' exchange, set in the configuration file:
@@ -369,54 +238,7 @@ You can print info about any pair/market with these subcommands - and you can fi
These subcommands have same usage and same set of available options: These subcommands have same usage and same set of available options:
``` --8<-- "commands/list-pairs.md"
usage: freqtrade list-markets [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--exchange EXCHANGE]
[--print-list] [--print-json] [-1] [--print-csv]
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
[-a] [--trading-mode {spot,margin,futures}]
usage: freqtrade list-pairs [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--exchange EXCHANGE]
[--print-list] [--print-json] [-1] [--print-csv]
[--base BASE_CURRENCY [BASE_CURRENCY ...]]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]] [-a]
[--trading-mode {spot,margin,futures}]
options:
-h, --help show this help message and exit
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
--print-list Print list of pairs or market symbols. By default data
is printed in the tabular format.
--print-json Print list of pairs or market symbols in JSON format.
-1, --one-column Print output in one column.
--print-csv Print exchange pair or market data in the csv format.
--base BASE_CURRENCY [BASE_CURRENCY ...]
Specify base currency(-ies). Space-separated list.
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
Specify quote currency(-ies). Space-separated list.
-a, --all Print all pairs or market symbols. By default only
active ones are shown.
--trading-mode {spot,margin,futures}, --tradingmode {spot,margin,futures}
Select Trading mode
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
By default, only active pairs/markets are shown. Active pairs/markets are those that can currently be traded on the exchange. By default, only active pairs/markets are shown. Active pairs/markets are those that can currently be traded on the exchange.
You can use the `-a`/`-all` option to see the list of all pairs/markets, including the inactive ones. You can use the `-a`/`-all` option to see the list of all pairs/markets, including the inactive ones.
@@ -454,28 +276,7 @@ Use the `test-pairlist` subcommand to test the configuration of [dynamic pairlis
Requires a configuration with specified `pairlists` attribute. Requires a configuration with specified `pairlists` attribute.
Can be used to generate static pairlists to be used during backtesting / hyperopt. Can be used to generate static pairlists to be used during backtesting / hyperopt.
``` --8<-- "commands/test-pairlist.md"
usage: freqtrade test-pairlist [-h] [--userdir PATH] [-v] [-c PATH]
[--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]]
[-1] [--print-json] [--exchange EXCHANGE]
options:
-h, --help show this help message and exit
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
--quote QUOTE_CURRENCY [QUOTE_CURRENCY ...]
Specify quote currency(-ies). Space-separated list.
-1, --one-column Print output in one column.
--print-json Print list of pairs or market symbols in JSON format.
--exchange EXCHANGE Exchange name. Only valid if no config is provided.
```
### Examples ### Examples
@@ -491,17 +292,7 @@ freqtrade test-pairlist --config config.json --quote USDT BTC
Please refer to the [corresponding documentation](advanced-setup.md#use-a-different-database-system) to learn about requirements for different database systems. Please refer to the [corresponding documentation](advanced-setup.md#use-a-different-database-system) to learn about requirements for different database systems.
``` --8<-- "commands/convert-db.md"
usage: freqtrade convert-db [-h] [--db-url PATH] [--db-url-from PATH]
optional arguments:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--db-url-from PATH Source db url to use when migrating a database.
```
!!! Warning !!! Warning
Please ensure to only use this on an empty target database. Freqtrade will perform a regular migration, but may fail if entries already existed. Please ensure to only use this on an empty target database. Freqtrade will perform a regular migration, but may fail if entries already existed.
@@ -517,30 +308,7 @@ Freqtrade will start the webserver and allow FreqUI to start and control backtes
This has the advantage that data will not be reloaded between backtesting runs (as long as timeframe and timerange remain identical). This has the advantage that data will not be reloaded between backtesting runs (as long as timeframe and timerange remain identical).
FreqUI will also show the backtesting results. FreqUI will also show the backtesting results.
``` --8<-- "commands/webserver.md"
usage: freqtrade webserver [-h] [-v] [--logfile FILE] [-V] [-c PATH] [-d PATH]
[--userdir PATH]
optional arguments:
-h, --help show this help message and exit
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
### Webserver mode - docker ### Webserver mode - docker
@@ -570,37 +338,7 @@ Adding `--show-pair-list` outputs a sorted pair list you can easily copy/paste i
??? Warning "Strategy overfitting" ??? Warning "Strategy overfitting"
Only using winning pairs can lead to an overfitted strategy, which will not work well on future data. Make sure to extensively test your strategy in dry-run before risking real money. Only using winning pairs can lead to an overfitted strategy, which will not work well on future data. Make sure to extensively test your strategy in dry-run before risking real money.
``` --8<-- "commands/backtesting-show.md"
usage: freqtrade backtesting-show [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--export-filename PATH] [--show-pair-list]
optional arguments:
-h, --help show this help message and exit
--export-filename PATH
Save backtest results to the file with this filename.
Requires `--export` to be set as well. Example:
`--export-filename=user_data/backtest_results/backtest
_today.json`
--show-pair-list Show backtesting pairlist sorted by profit.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
## Detailed backtest analysis ## Detailed backtest analysis
@@ -608,134 +346,13 @@ Advanced backtest result analysis.
More details in the [Backtesting analysis](advanced-backtesting.md#analyze-the-buyentry-and-sellexit-tags) Section. More details in the [Backtesting analysis](advanced-backtesting.md#analyze-the-buyentry-and-sellexit-tags) Section.
``` --8<-- "commands/backtesting-analysis.md"
usage: freqtrade backtesting-analysis [-h] [-v] [--logfile FILE] [-V]
[-c PATH] [-d PATH] [--userdir PATH]
[--export-filename PATH]
[--analysis-groups {0,1,2,3,4} [{0,1,2,3,4} ...]]
[--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]]
[--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]]
[--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]]
[--timerange YYYYMMDD-[YYYYMMDD]]
[--rejected]
[--analysis-to-csv]
[--analysis-csv-path PATH]
optional arguments:
-h, --help show this help message and exit
--export-filename PATH, --backtest-filename PATH
Use this filename for backtest results.Requires
`--export` to be set as well. Example: `--export-filen
ame=user_data/backtest_results/backtest_today.json`
--analysis-groups {0,1,2,3,4} [{0,1,2,3,4} ...]
grouping output - 0: simple wins/losses by enter tag,
1: by enter_tag, 2: by enter_tag and exit_tag, 3: by
pair and enter_tag, 4: by pair, enter_ and exit_tag
(this can get quite large)
--enter-reason-list ENTER_REASON_LIST [ENTER_REASON_LIST ...]
Space separated list of entry signals to analyse.
Default: all. e.g. 'entry_tag_a entry_tag_b'
--exit-reason-list EXIT_REASON_LIST [EXIT_REASON_LIST ...]
Space separated list of exit signals to analyse.
Default: all. e.g.
'exit_tag_a roi stop_loss trailing_stop_loss'
--indicator-list INDICATOR_LIST [INDICATOR_LIST ...]
Space separated list of indicators to analyse. e.g.
'close rsi bb_lowerband profit_abs'
--timerange YYYYMMDD-[YYYYMMDD]
Timerange to filter trades for analysis,
start inclusive, end exclusive. e.g.
20220101-20220201
--rejected
Print out rejected trades table
--analysis-to-csv
Write out tables to individual CSVs, by default to
'user_data/backtest_results' unless '--analysis-csv-path' is given.
--analysis-csv-path [PATH]
Optional path where individual CSVs will be written. If not used,
CSVs will be written to 'user_data/backtest_results'.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
## List Hyperopt results ## List Hyperopt results
You can list the hyperoptimization epochs the Hyperopt module evaluated previously with the `hyperopt-list` sub-command. You can list the hyperoptimization epochs the Hyperopt module evaluated previously with the `hyperopt-list` sub-command.
``` --8<-- "commands/hyperopt-list.md"
usage: freqtrade hyperopt-list [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--best]
[--profitable] [--min-trades INT]
[--max-trades INT] [--min-avg-time FLOAT]
[--max-avg-time FLOAT] [--min-avg-profit FLOAT]
[--max-avg-profit FLOAT]
[--min-total-profit FLOAT]
[--max-total-profit FLOAT]
[--min-objective FLOAT] [--max-objective FLOAT]
[--no-color] [--print-json] [--no-details]
[--hyperopt-filename PATH] [--export-csv FILE]
optional arguments:
-h, --help show this help message and exit
--best Select only best epochs.
--profitable Select only profitable epochs.
--min-trades INT Select epochs with more than INT trades.
--max-trades INT Select epochs with less than INT trades.
--min-avg-time FLOAT Select epochs above average time.
--max-avg-time FLOAT Select epochs below average time.
--min-avg-profit FLOAT
Select epochs above average profit.
--max-avg-profit FLOAT
Select epochs below average profit.
--min-total-profit FLOAT
Select epochs above total profit.
--max-total-profit FLOAT
Select epochs below total profit.
--min-objective FLOAT
Select epochs above objective.
--max-objective FLOAT
Select epochs below objective.
--no-color Disable colorization of hyperopt results. May be
useful if you are redirecting output to a file.
--print-json Print output in JSON format.
--no-details Do not print best epoch details.
--hyperopt-filename FILENAME
Hyperopt result filename.Example: `--hyperopt-
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
--export-csv FILE Export to CSV-File. This will disable table print.
Example: --export-csv hyperopt.csv
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Note !!! Note
`hyperopt-list` will automatically use the latest available hyperopt results file. `hyperopt-list` will automatically use the latest available hyperopt results file.
@@ -757,46 +374,7 @@ freqtrade hyperopt-list --profitable --no-details
You can show the details of any hyperoptimization epoch previously evaluated by the Hyperopt module with the `hyperopt-show` subcommand. You can show the details of any hyperoptimization epoch previously evaluated by the Hyperopt module with the `hyperopt-show` subcommand.
``` --8<-- "commands/hyperopt-show.md"
usage: freqtrade hyperopt-show [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--best]
[--profitable] [-n INT] [--print-json]
[--hyperopt-filename FILENAME] [--no-header]
[--disable-param-export]
[--breakdown {day,week,month} [{day,week,month} ...]]
optional arguments:
-h, --help show this help message and exit
--best Select only best epochs.
--profitable Select only profitable epochs.
-n INT, --index INT Specify the index of the epoch to print details for.
--print-json Print output in JSON format.
--hyperopt-filename FILENAME
Hyperopt result filename.Example: `--hyperopt-
filename=hyperopt_results_2020-09-27_16-20-48.pickle`
--no-header Do not print epoch details header.
--disable-param-export
Disable automatic hyperopt parameter export.
--breakdown {day,week,month} [{day,week,month} ...]
Show backtesting breakdown per [day, week, month].
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
!!! Note !!! Note
`hyperopt-show` will automatically use the latest available hyperopt results file. `hyperopt-show` will automatically use the latest available hyperopt results file.
@@ -820,38 +398,7 @@ freqtrade hyperopt-show --best -n -1 --print-json --no-header
Print selected (or all) trades from database to screen. Print selected (or all) trades from database to screen.
``` --8<-- "commands/show-trades.md"
usage: freqtrade show-trades [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH] [--db-url PATH]
[--trade-ids TRADE_IDS [TRADE_IDS ...]]
[--print-json]
optional arguments:
-h, --help show this help message and exit
--db-url PATH Override trades database URL, this is useful in custom
deployments (default: `sqlite:///tradesv3.sqlite` for
Live Run mode, `sqlite:///tradesv3.dryrun.sqlite` for
Dry Run).
--trade-ids TRADE_IDS [TRADE_IDS ...]
Specify the list of trade ids.
--print-json Print output in JSON format.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```
### Examples ### Examples
@@ -871,32 +418,4 @@ Your original strategy will remain available in the `user_data/strategies_orig_u
Strategy updater will work on a "best effort" approach. Please do your due diligence and verify the results of the conversion. Strategy updater will work on a "best effort" approach. Please do your due diligence and verify the results of the conversion.
We also recommend to run a python formatter (e.g. `black`) to format results in a sane manner. We also recommend to run a python formatter (e.g. `black`) to format results in a sane manner.
``` --8<-- "commands/strategy-updater.md"
usage: freqtrade strategy-updater [-h] [-v] [--logfile FILE] [-V] [-c PATH]
[-d PATH] [--userdir PATH]
[--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]]
options:
-h, --help show this help message and exit
--strategy-list STRATEGY_LIST [STRATEGY_LIST ...]
Provide a space-separated list of strategies to
be converted.
Common arguments:
-v, --verbose Verbose mode (-vv for more, -vvv to get all messages).
--logfile FILE, --log-file FILE
Log to the file specified. Special values are:
'syslog', 'journald'. See the documentation for more
details.
-V, --version show program's version number and exit
-c PATH, --config PATH
Specify configuration file (default:
`userdir/config.json` or `config.json` whichever
exists). Multiple --config options may be used. Can be
set to `-` to read config from stdin.
-d PATH, --datadir PATH, --data-dir PATH
Path to directory with historical backtesting data.
--userdir PATH, --user-data-dir PATH
Path to userdata directory.
```

View File

@@ -5,7 +5,7 @@ We **strongly** recommend that Windows users use [Docker](docker_quickstart.md)
If that is not possible, try using the Windows Linux subsystem (WSL) - for which the Ubuntu instructions should work. If that is not possible, try using the Windows Linux subsystem (WSL) - for which the Ubuntu instructions should work.
Otherwise, please follow the instructions below. Otherwise, please follow the instructions below.
All instructions assume that python 3.9+ is installed and available. All instructions assume that python 3.10+ is installed and available.
## Clone the git repository ## Clone the git repository
@@ -42,7 +42,7 @@ cd freqtrade
Install ta-lib according to the [ta-lib documentation](https://github.com/TA-Lib/ta-lib-python#windows). 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.9, 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 and 3.12) and for 64bit Windows.
These Wheels are also used by CI running on windows, and are therefore tested together with freqtrade. 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. Other versions must be downloaded from the above link.

View File

@@ -1,6 +1,6 @@
"""Freqtrade bot""" """Freqtrade bot"""
__version__ = "2024.8" __version__ = "2025.1"
if "dev" in __version__: if "dev" in __version__:
from pathlib import Path from pathlib import Path

View File

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

View File

@@ -27,6 +27,7 @@ from freqtrade.commands.hyperopt_commands import start_hyperopt_list, start_hype
from freqtrade.commands.list_commands import ( from freqtrade.commands.list_commands import (
start_list_exchanges, start_list_exchanges,
start_list_freqAI_models, start_list_freqAI_models,
start_list_hyperopt_loss_functions,
start_list_markets, start_list_markets,
start_list_strategies, start_list_strategies,
start_list_timeframes, start_list_timeframes,

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