Procházet zdrojové kódy

research: record freqtrade okx market load failure

lxy před 1 měsícem
rodič
revize
3c355d624a

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 25 - 0
reports/eth-exploration/freqtrade-eth-skeleton-backtest-20260429T183918Z.json


+ 453 - 0
reports/eth-exploration/freqtrade-eth-skeleton-backtest-20260429T183918Z.md

@@ -0,0 +1,453 @@
+# Freqtrade ETH skeleton backtest attempt
+
+- Generated at: `2026-04-29T18:43:17.417426+00:00`
+- Scope: backtest only; no live or dry-run trading process was started.
+- Repo config changed: `false`; temporary config was written under `/tmp`.
+- Temporary userdir: `/tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data`
+- Temporary config: `/tmp/okx-codex-trader-freqtrade-eth-skeleton/config-eth-skeleton-okx-futures.json`
+- Proxy injected: `True`
+
+## Data export
+
+- `rtk uv run python scripts/export_freqtrade_data.py --symbol ETH-USDT-SWAP --bar 5m --output-dir /tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data/data/okx/futures`: exit `0`
+- `rtk uv run python scripts/export_freqtrade_data.py --symbol BTC-USDT-SWAP --bar 5m --output-dir /tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data/data/okx/futures`: exit `0`
+- `rtk uv run python scripts/export_freqtrade_data.py --symbol ETH-USDT-SWAP --bar 15m --output-dir /tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data/data/okx/futures`: exit `0`
+- `rtk uv run python scripts/export_freqtrade_data.py --symbol BTC-USDT-SWAP --bar 15m --output-dir /tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data/data/okx/futures`: exit `0`
+
+## Backtest
+
+- Command: `rtk uvx --from freqtrade freqtrade backtesting --config /tmp/okx-codex-trader-freqtrade-eth-skeleton/config-eth-skeleton-okx-futures.json --userdir /tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data --strategy EthFocusedInformativeDry --timeframe 5m --pairs ETH/USDT:USDT --timerange 20230101-`
+- Result: `failed` with exit `2`
+
+## Full failure output
+
+### stderr
+
+```text
+2026-04-30 02:39:28,701 - freqtrade - INFO - freqtrade 2026.3
+2026-04-30 02:39:29,995 - freqtrade.configuration.load_config - INFO - Using config: /tmp/okx-codex-trader-freqtrade-eth-skeleton/config-eth-skeleton-okx-futures.json ...
+2026-04-30 02:39:29,996 - freqtrade.loggers - INFO - Enabling colorized output.
+2026-04-30 02:39:29,997 - freqtrade.loggers - INFO - Logfile configured
+2026-04-30 02:39:29,997 - freqtrade.loggers - INFO - Verbosity set to 0
+2026-04-30 02:39:29,997 - freqtrade.configuration.configuration - INFO - Parameter -i/--timeframe detected ... Using timeframe: 5m ...
+2026-04-30 02:39:29,997 - freqtrade.configuration.configuration - INFO - Using max_open_trades: 1 ...
+2026-04-30 02:39:29,997 - freqtrade.configuration.configuration - INFO - Parameter --timerange detected: 20230101- ...
+2026-04-30 02:39:29,999 - freqtrade.configuration.configuration - INFO - Using user-data directory: /tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data ...
+2026-04-30 02:39:29,999 - freqtrade.configuration.configuration - INFO - Using data directory: /tmp/okx-codex-trader-freqtrade-eth-skeleton/user_data/data/okx ...
+2026-04-30 02:39:29,999 - freqtrade.configuration.configuration - INFO - Parameter --cache=day detected ...
+2026-04-30 02:39:29,999 - freqtrade.configuration.configuration - INFO - Using pairs ['ETH/USDT:USDT']
+2026-04-30 02:39:29,999 - freqtrade.configuration.configuration - INFO - Filter trades by timerange: 20230101-
+2026-04-30 02:39:30,000 - freqtrade.exchange.check_exchange - INFO - Checking exchange...
+2026-04-30 02:39:30,003 - freqtrade.exchange.check_exchange - INFO - Exchange "okx" is officially supported by the Freqtrade development team.
+2026-04-30 02:39:30,003 - freqtrade.configuration.config_validation - INFO - Validating configuration ...
+2026-04-30 02:39:30,004 - freqtrade.commands.optimize_commands - INFO - Starting freqtrade in Backtesting mode
+2026-04-30 02:39:30,005 - freqtrade.exchange.exchange - INFO - Instance is running with dry_run enabled
+2026-04-30 02:39:30,005 - freqtrade.exchange.exchange - INFO - Using CCXT 4.5.51
+2026-04-30 02:39:30,005 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}, 'enableRateLimit': True, 'proxies': {'http': 
+'http://127.0.0.1:7897', 'https': 'http://127.0.0.1:7897'}, 'timeout': 60000}
+2026-04-30 02:39:30,008 - freqtrade.exchange.exchange - INFO - Applying additional ccxt config: {'options': {'defaultType': 'swap'}, 'enableRateLimit': True, 'proxies': {'http': 
+'http://127.0.0.1:7897', 'https': 'http://127.0.0.1:7897'}, 'timeout': 60000}
+2026-04-30 02:39:30,010 - freqtrade.exchange.exchange - INFO - Using Exchange "OKX"
+2026-04-30 02:40:26,083 - freqtrade.exchange.common - WARNING - _load_async_markets() returned exception: "Error in reload_markets due to RequestTimeout. Message: okx GET 
+https://www.okx.com/api/v5/public/instruments?instType=FUTURES". Retrying still for 3 times.
+2026-04-30 02:41:23,130 - freqtrade.exchange.common - WARNING - _load_async_markets() returned exception: "Error in reload_markets due to RequestTimeout. Message: okx GET 
+https://www.okx.com/api/v5/public/instruments?instType=SWAP". Retrying still for 2 times.
+2026-04-30 02:42:20,094 - freqtrade.exchange.common - WARNING - _load_async_markets() returned exception: "Error in reload_markets due to RequestTimeout. Message: okx GET 
+https://www.okx.com/api/v5/public/instruments?instType=FUTURES". Retrying still for 1 times.
+2026-04-30 02:43:17,089 - freqtrade.exchange.common - WARNING - _load_async_markets() returned exception: "Error in reload_markets due to RequestTimeout. Message: okx GET 
+https://www.okx.com/api/v5/public/instruments?instType=SWAP". Giving up.
+2026-04-30 02:43:17,089 - freqtrade.exchange.exchange - ERROR - Could not load markets.
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 788, in _request
+    resp = await handler(req)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 742, in _connect_and_send_request
+    conn = await self._connector.connect(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 672, in connect
+    proto = await self._create_connection(req, traces, timeout)
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1251, in _create_connection
+    _, proto = await self._create_direct_connection(req, traces, timeout)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1592, in _create_direct_connection
+    transp, proto = await self._wrap_create_connection(
+                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1310, in _wrap_create_connection
+    sock = await aiohappyeyeballs.start_connection(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/impl.py", line 87, in start_connection
+    sock, _, _ = await _staggered.staggered_race(
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 165, in staggered_race
+    done = await _wait_one(
+           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 46, in _wait_one
+    return await wait_next
+           ^^^^^^^^^^^^^^^
+asyncio.exceptions.CancelledError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 241, in fetch
+    async with session_method(yarl.URL(url, encoded=True),
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 1521, in __aenter__
+    self._resp: _RetType = await self._coro
+                           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 632, in _request
+    with timer:
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/helpers.py", line 713, in __exit__
+    raise asyncio.TimeoutError from exc_val
+TimeoutError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 680, in _api_reload_markets
+    await self._api_async.load_markets(reload=reload, params={})
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 365, in load_markets
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 357, in load_markets
+    result = await self.markets_loading
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 324, in load_markets_helper
+    markets = await self.fetch_markets(params)
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1711, in fetch_markets
+    promises = await asyncio.gather(*promises)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1896, in fetch_markets_by_type
+    response = await self.publicGetPublicInstruments(self.extend(request, params))
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1033, in request
+    return await self.fetch2(path, api, method, params, headers, body, config)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1027, in fetch2
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1017, in fetch2
+    return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 277, in fetch
+    raise RequestTimeout(details) from e
+ccxt.base.errors.RequestTimeout: okx GET https://www.okx.com/api/v5/public/instruments?instType=FUTURES
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 179, in wrapper
+    return f(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 693, in _load_async_markets
+    markets = self.loop.run_until_complete(self._api_reload_markets(reload=reload))
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.local/share/uv/python/cpython-3.11.15-linux-x86_64-gnu/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
+    return future.result()
+           ^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 684, in _api_reload_markets
+    raise TemporaryError(
+freqtrade.exceptions.TemporaryError: Error in reload_markets due to RequestTimeout. Message: okx GET https://www.okx.com/api/v5/public/instruments?instType=FUTURES
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 788, in _request
+    resp = await handler(req)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 742, in _connect_and_send_request
+    conn = await self._connector.connect(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 672, in connect
+    proto = await self._create_connection(req, traces, timeout)
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1251, in _create_connection
+    _, proto = await self._create_direct_connection(req, traces, timeout)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1592, in _create_direct_connection
+    transp, proto = await self._wrap_create_connection(
+                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1310, in _wrap_create_connection
+    sock = await aiohappyeyeballs.start_connection(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/impl.py", line 87, in start_connection
+    sock, _, _ = await _staggered.staggered_race(
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 165, in staggered_race
+    done = await _wait_one(
+           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 46, in _wait_one
+    return await wait_next
+           ^^^^^^^^^^^^^^^
+asyncio.exceptions.CancelledError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 241, in fetch
+    async with session_method(yarl.URL(url, encoded=True),
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 1521, in __aenter__
+    self._resp: _RetType = await self._coro
+                           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 632, in _request
+    with timer:
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/helpers.py", line 713, in __exit__
+    raise asyncio.TimeoutError from exc_val
+TimeoutError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 680, in _api_reload_markets
+    await self._api_async.load_markets(reload=reload, params={})
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 365, in load_markets
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 357, in load_markets
+    result = await self.markets_loading
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 324, in load_markets_helper
+    markets = await self.fetch_markets(params)
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1711, in fetch_markets
+    promises = await asyncio.gather(*promises)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1896, in fetch_markets_by_type
+    response = await self.publicGetPublicInstruments(self.extend(request, params))
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1033, in request
+    return await self.fetch2(path, api, method, params, headers, body, config)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1027, in fetch2
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1017, in fetch2
+    return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 277, in fetch
+    raise RequestTimeout(details) from e
+ccxt.base.errors.RequestTimeout: okx GET https://www.okx.com/api/v5/public/instruments?instType=SWAP
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 179, in wrapper
+    return f(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 693, in _load_async_markets
+    markets = self.loop.run_until_complete(self._api_reload_markets(reload=reload))
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.local/share/uv/python/cpython-3.11.15-linux-x86_64-gnu/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
+    return future.result()
+           ^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 684, in _api_reload_markets
+    raise TemporaryError(
+freqtrade.exceptions.TemporaryError: Error in reload_markets due to RequestTimeout. Message: okx GET https://www.okx.com/api/v5/public/instruments?instType=SWAP
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 788, in _request
+    resp = await handler(req)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 742, in _connect_and_send_request
+    conn = await self._connector.connect(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 672, in connect
+    proto = await self._create_connection(req, traces, timeout)
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1251, in _create_connection
+    _, proto = await self._create_direct_connection(req, traces, timeout)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1592, in _create_direct_connection
+    transp, proto = await self._wrap_create_connection(
+                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1310, in _wrap_create_connection
+    sock = await aiohappyeyeballs.start_connection(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/impl.py", line 87, in start_connection
+    sock, _, _ = await _staggered.staggered_race(
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 165, in staggered_race
+    done = await _wait_one(
+           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 46, in _wait_one
+    return await wait_next
+           ^^^^^^^^^^^^^^^
+asyncio.exceptions.CancelledError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 241, in fetch
+    async with session_method(yarl.URL(url, encoded=True),
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 1521, in __aenter__
+    self._resp: _RetType = await self._coro
+                           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 632, in _request
+    with timer:
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/helpers.py", line 713, in __exit__
+    raise asyncio.TimeoutError from exc_val
+TimeoutError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 680, in _api_reload_markets
+    await self._api_async.load_markets(reload=reload, params={})
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 365, in load_markets
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 357, in load_markets
+    result = await self.markets_loading
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 324, in load_markets_helper
+    markets = await self.fetch_markets(params)
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1711, in fetch_markets
+    promises = await asyncio.gather(*promises)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1896, in fetch_markets_by_type
+    response = await self.publicGetPublicInstruments(self.extend(request, params))
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1033, in request
+    return await self.fetch2(path, api, method, params, headers, body, config)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1027, in fetch2
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1017, in fetch2
+    return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 277, in fetch
+    raise RequestTimeout(details) from e
+ccxt.base.errors.RequestTimeout: okx GET https://www.okx.com/api/v5/public/instruments?instType=FUTURES
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 179, in wrapper
+    return f(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 693, in _load_async_markets
+    markets = self.loop.run_until_complete(self._api_reload_markets(reload=reload))
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.local/share/uv/python/cpython-3.11.15-linux-x86_64-gnu/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
+    return future.result()
+           ^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 684, in _api_reload_markets
+    raise TemporaryError(
+freqtrade.exceptions.TemporaryError: Error in reload_markets due to RequestTimeout. Message: okx GET https://www.okx.com/api/v5/public/instruments?instType=FUTURES
+
+During handling of the above exception, another exception occurred:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 788, in _request
+    resp = await handler(req)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 742, in _connect_and_send_request
+    conn = await self._connector.connect(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 672, in connect
+    proto = await self._create_connection(req, traces, timeout)
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1251, in _create_connection
+    _, proto = await self._create_direct_connection(req, traces, timeout)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1592, in _create_direct_connection
+    transp, proto = await self._wrap_create_connection(
+                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/connector.py", line 1310, in _wrap_create_connection
+    sock = await aiohappyeyeballs.start_connection(
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/impl.py", line 87, in start_connection
+    sock, _, _ = await _staggered.staggered_race(
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 165, in staggered_race
+    done = await _wait_one(
+           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohappyeyeballs/_staggered.py", line 46, in _wait_one
+    return await wait_next
+           ^^^^^^^^^^^^^^^
+asyncio.exceptions.CancelledError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 241, in fetch
+    async with session_method(yarl.URL(url, encoded=True),
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 1521, in __aenter__
+    self._resp: _RetType = await self._coro
+                           ^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/client.py", line 632, in _request
+    with timer:
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/aiohttp/helpers.py", line 713, in __exit__
+    raise asyncio.TimeoutError from exc_val
+TimeoutError
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 680, in _api_reload_markets
+    await self._api_async.load_markets(reload=reload, params={})
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 365, in load_markets
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 357, in load_markets
+    result = await self.markets_loading
+             ^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 324, in load_markets_helper
+    markets = await self.fetch_markets(params)
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1711, in fetch_markets
+    promises = await asyncio.gather(*promises)
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/okx.py", line 1896, in fetch_markets_by_type
+    response = await self.publicGetPublicInstruments(self.extend(request, params))
+               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1033, in request
+    return await self.fetch2(path, api, method, params, headers, body, config)
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1027, in fetch2
+    raise e
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 1017, in fetch2
+    return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/ccxt/async_support/base/exchange.py", line 277, in fetch
+    raise RequestTimeout(details) from e
+ccxt.base.errors.RequestTimeout: okx GET https://www.okx.com/api/v5/public/instruments?instType=SWAP
+
+The above exception was the direct cause of the following exception:
+
+Traceback (most recent call last):
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 720, in reload_markets
+    retrier(self._load_async_markets, retries=retries)(reload=True)
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 191, in wrapper
+    return wrapper(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 191, in wrapper
+    return wrapper(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 191, in wrapper
+    return wrapper(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 194, in wrapper
+    raise ex
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/common.py", line 179, in wrapper
+    return f(*args, **kwargs)
+           ^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 693, in _load_async_markets
+    markets = self.loop.run_until_complete(self._api_reload_markets(reload=reload))
+              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+  File "/home/lxy/.local/share/uv/python/cpython-3.11.15-linux-x86_64-gnu/lib/python3.11/asyncio/base_events.py", line 654, in run_until_complete
+    return future.result()
+           ^^^^^^^^^^^^^^^
+  File "/home/lxy/.cache/uv/archive-v0/mUfiqGCKo_jp8tUPEZw-d/lib/python3.11/site-packages/freqtrade/exchange/exchange.py", line 684, in _api_reload_markets
+    raise TemporaryError(
+freqtrade.exceptions.TemporaryError: Error in reload_markets due to RequestTimeout. Message: okx GET https://www.okx.com/api/v5/public/instruments?instType=SWAP
+2026-04-30 02:43:17,102 - freqtrade - ERROR - Could not load markets, therefore cannot start. Please investigate the above error for more details.
+```
+
+### stdout
+
+```text
+
+```
+
+## Next step
+
+- Use the full stderr/stdout captured in the JSON report to identify the first Freqtrade failure and rerun after that specific issue is fixed.

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů