2026-10-17 10:43:30,705 INFO Sailar-x starting: mode=demo v1
2026-10-17 11:06:49,468 INFO Sailar-x starting: mode=demo v1
2026-10-19 19:24:41,012 INFO Sailar-x starting: mode=demo v1
2026-10-20 15:44:09,687 INFO Sailar-x starting: mode=demo v1
2026-10-20 16:21:38,620 INFO Sailar-x starting: mode=demo v1
2026-10-20 17:45:20,319 INFO OPEN BUY 3.81 @ 1.1249  SL 1.1236  TP 1.1269  conf 68%
2026-10-21 19:17:33,107 INFO Sailar-x starting: mode=demo v1
2026-10-21 19:17:33,131 INFO position is closed at the broker; waiting for its deal history
2026-10-21 19:17:53,245 INFO CLOSE BUY @ 1.1236 (SL)  pnl -499.11
2026-10-21 19:26:27,847 INFO Sailar-x starting: mode=demo v1
2026-10-21 19:30:09,080 INFO OPEN BUY 5.85 @ 1.1227  SL 1.1219  TP 1.124  conf 72%
2026-10-21 19:41:10,597 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 120, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-21 19:42:10,650 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 120, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-21 19:43:10,683 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 120, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-21 19:44:10,692 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 120, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-21 19:44:25,520 INFO Sailar-x starting: mode=demo v1
2026-10-21 19:44:25,562 INFO CLOSE BUY @ 1.1231 (CLOSED)  pnl +245.70
2026-10-21 19:45:06,492 INFO OPEN BUY 5.64 @ 1.1232  SL 1.1223  TP 1.1245  conf 90%
2026-10-21 19:50:47,466 INFO CLOSE BUY @ 1.1231 (CLOSED)  pnl -62.04
2026-10-21 20:08:13,233 INFO Sailar-x starting: mode=demo v1
2026-10-21 20:08:14,143 INFO OPEN BUY 5.8 @ 1.1234  SL 1.1226  TP 1.1247  conf 81%
2026-10-21 20:28:17,309 INFO CLOSE BUY @ 1.1234 (CLOSED)  pnl +5.80
2026-10-21 20:30:18,391 INFO OPEN BUY 6.13 @ 1.1234  SL 1.1226  TP 1.1246  conf 68%
2026-10-21 20:41:00,631 INFO CLOSE BUY @ 1.1236 (CLOSED)  pnl +116.47
2026-10-22 10:55:48,504 INFO Sailar-x starting: mode=demo v1
2026-10-22 10:58:53,582 INFO Sailar-x starting: mode=demo v1
2026-10-22 13:00:01,789 INFO Sailar-x starting: mode=demo v1
2026-10-22 13:00:03,042 INFO OPEN BUY 6.9 @ 1.122  SL 1.1213  TP 1.1231  conf 68%
2026-10-22 13:51:44,300 INFO AI brain: mode=shadow, providers=['groq', 'gemini']
2026-10-22 13:51:44,301 INFO Sailar-x starting: mode=demo v1
2026-10-22 13:51:47,322 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 13:51:53,887 INFO AI brain: mode=shadow, providers=['groq', 'gemini']
2026-10-22 13:51:53,888 INFO Sailar-x starting: mode=demo v1
2026-10-22 13:51:56,473 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 13:53:46,371 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 13:53:54,306 INFO CLOSE BUY @ 1.1217 (CLOSED)  pnl -207.00
2026-10-22 13:53:55,748 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 13:54:01,787 WARNING post-mortem failed: the model did not return valid JSON
2026-10-22 13:54:04,754 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 128, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-22 13:54:27,990 INFO AI brain: mode=shadow, providers=['groq', 'gemini']
2026-10-22 13:54:27,990 INFO Sailar-x starting: mode=demo v1
2026-10-22 13:54:31,035 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 13:56:29,711 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 13:58:29,667 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 14:00:14,478 WARNING AI review failed: groq: HTTP 400: {"error":{"message":"Failed to generate JSON. Please adjust your prompt. See 'failed_generation' for more details.","type":"invalid_request_error","code":"json_validate_failed","failed_generation":"max completion tokens reac
2026-10-22 14:00:15,224 INFO OPEN SELL 5.03 @ 1.1214  SL 1.1224  TP 1.1199  conf 68%
2026-10-22 14:00:35,266 WARNING research failed: gemini: cooling down
2026-10-22 14:02:35,644 WARNING research failed: gemini: cooling down
2026-10-22 14:04:37,955 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 14:06:36,288 WARNING research failed: gemini: cooling down
2026-10-22 14:07:57,273 INFO BE: SL moved to entry 1.1214 (trade at +0.85R)
2026-10-22 14:08:37,328 WARNING research failed: gemini: cooling down
2026-10-22 14:10:38,706 WARNING research failed: gemini: HTTP 429: {
  "error": {
    "code": 429,
    "message": "You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: https://ai.google.dev/gemini-api/docs/rate-limits. T
2026-10-22 14:12:38,129 WARNING research failed: gemini: cooling down
2026-10-22 14:14:38,538 WARNING research failed: gemini: cooling down
2026-10-22 14:15:26,558 INFO AI brain: mode=shadow, providers=['groq', 'gemini']
2026-10-22 14:15:26,559 INFO Sailar-x starting: mode=demo v1
2026-10-22 14:15:46,682 INFO CLOSE SELL @ 1.1199 (TP)  pnl +744.44
2026-10-22 14:53:05,688 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-22 14:53:05,689 INFO Sailar-x starting: mode=demo v1
2026-10-22 15:09:41,586 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-22 15:09:41,586 INFO Sailar-x starting: mode=demo v1
2026-10-22 15:12:03,446 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-22 15:12:03,446 INFO Sailar-x starting: mode=demo v1
2026-10-22 15:15:08,225 INFO OPEN SELL 4.2 @ 1.1207  SL 1.1219  TP 1.1189  conf 68%
2026-10-22 16:25:04,742 INFO BE: SL moved to entry 1.1207 (trade at +0.83R)
2026-10-22 17:10:52,466 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-22 17:10:52,467 INFO Sailar-x starting: mode=demo v1
2026-10-22 17:19:55,016 INFO CLOSE SELL @ 1.1189 (TP)  pnl +751.80
2026-10-23 12:19:49,120 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 12:19:49,120 INFO Sailar-x starting: mode=demo v1
2026-10-23 12:19:53,388 INFO OPEN SELL 6.17 @ 1.1193  SL 1.1201  TP 1.1181  conf 68%
2026-10-23 12:36:57,230 INFO CLOSE SELL @ 1.1197 (CLOSED)  pnl -265.31
2026-10-23 12:37:04,823 WARNING post-mortem failed: the model did not return valid JSON
2026-10-23 12:37:15,686 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 12:37:15,687 INFO Sailar-x starting: mode=demo v1
2026-10-23 12:37:19,909 INFO OPEN SELL 6.29 @ 1.1197  SL 1.1205  TP 1.1185  conf 77%
2026-10-23 13:19:50,062 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:19:51,501 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:21:50,612 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:21:51,935 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:23:51,323 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:23:52,591 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:25:51,806 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:25:53,133 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:27:52,393 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:27:53,770 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:29:53,009 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:29:54,192 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:31:53,731 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:31:54,776 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-23 13:39:34,966 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 13:39:34,967 INFO Sailar-x starting: mode=demo v1
2026-10-23 13:46:16,645 INFO CLOSE SELL @ 1.12 (CLOSED)  pnl -144.67
2026-10-23 13:46:23,068 WARNING post-mortem failed: groq: HTTP 400: {"error":{"message":"Failed to generate JSON. Please adjust your prompt. See 'failed_generation' for more details.","type":"invalid_request_error","code":"json_validate_failed","failed_generation":"max completion tokens reached before gener; gemini: HTTP 503: {
  "error": {
    "code
2026-10-23 14:00:00,220 INFO SELL signal skipped: cooling down after a loss
2026-10-23 14:15:36,372 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 14:15:36,372 INFO Sailar-x starting: mode=demo v1
2026-10-23 14:15:41,042 INFO OPEN SELL 6.1 @ 1.1195  SL 1.1203  TP 1.1182  conf 81%
2026-10-23 14:26:23,215 INFO CLOSE SELL @ 1.1197 (EXTERNAL)  pnl -103.70
2026-10-23 14:30:04,241 INFO SELL signal skipped: cooling down after a loss
2026-10-23 14:36:41,770 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 14:36:41,771 INFO Sailar-x starting: mode=demo v1
2026-10-23 14:36:41,807 INFO SELL signal skipped by the guard: 3 losing trades in a row: paused for 109 more minutes
2026-10-23 14:45:03,668 INFO SELL signal skipped by the guard: 3 losing trades in a row: paused for 101 more minutes
2026-10-23 15:00:06,980 INFO SELL signal skipped by the guard: 3 losing trades in a row: paused for 86 more minutes
2026-10-23 15:15:10,173 INFO SELL signal skipped by the guard: 3 losing trades in a row: paused for 71 more minutes
2026-10-23 15:19:14,835 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 15:19:14,836 INFO Sailar-x starting: mode=demo v1
2026-10-23 15:19:14,880 INFO SELL signal skipped by the guard: 3 losing trades in a row: paused for 67 more minutes
2026-10-23 15:30:17,138 INFO SELL signal skipped by the guard: 3 losing trades in a row: paused for 56 more minutes
2026-10-23 15:35:58,280 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:36:58,290 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:37:58,318 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:38:58,337 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:39:58,361 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:40:58,390 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:41:58,414 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:42:58,438 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:43:58,458 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:44:58,475 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:45:58,500 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:46:58,521 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:47:58,545 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:48:58,579 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:49:58,612 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:50:58,634 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:51:58,648 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:52:58,667 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:53:58,682 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:54:58,706 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:55:58,729 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:56:58,758 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:57:58,787 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:58:58,836 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 15:59:58,888 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:00:58,902 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:01:58,919 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:02:58,942 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:03:58,967 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:04:59,009 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:05:59,032 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:06:59,091 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:07:59,116 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:08:59,187 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:09:59,211 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:10:59,229 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:11:59,262 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:12:59,286 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:13:59,305 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:14:59,321 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:15:59,374 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:16:59,388 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:17:59,486 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:18:59,498 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:19:59,510 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:20:59,533 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:21:59,547 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:22:59,560 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:23:59,580 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:24:59,600 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:25:59,624 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:26:59,642 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:27:59,661 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:28:59,694 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:29:59,704 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:30:59,716 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:31:59,730 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:32:59,751 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:33:59,781 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:34:59,792 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:35:59,841 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:36:59,852 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:37:59,866 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:38:59,884 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:39:59,916 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:40:59,979 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:42:00,005 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:43:00,029 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:44:00,044 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:45:00,072 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:46:00,082 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:47:00,095 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:48:00,106 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:49:00,117 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:50:00,130 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:51:00,142 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:52:00,152 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:53:00,165 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:54:00,183 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:55:00,192 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:56:00,213 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:57:00,232 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:58:00,257 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 16:59:00,280 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 17:17:29,282 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 17:17:29,283 INFO Sailar-x starting: mode=demo v1
2026-10-23 17:23:30,537 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 17:23:30,538 INFO Sailar-x starting: mode=demo v1
2026-10-23 17:23:50,598 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-23 17:25:00,087 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-23 17:25:00,087 INFO Sailar-x starting: mode=demo v1
2026-10-23 17:30:07,434 INFO OPEN SELL 4.86 @ 1.1198  SL 1.1209  TP 1.1183  conf 81%
2026-10-26 07:37:23,998 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 07:37:23,998 INFO Sailar-x starting: mode=demo v1
2026-10-26 07:37:24,068 INFO CLOSE SELL @ 1.1209 (SL)  pnl -505.44
2026-10-26 07:39:04,394 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:40:04,436 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:41:04,451 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:42:04,481 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:43:04,497 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:44:04,514 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:45:04,544 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:46:04,575 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:47:04,600 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:48:04,621 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:49:04,640 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:50:04,664 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:51:04,675 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:52:04,691 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:53:04,707 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:54:04,732 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:55:04,744 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:56:04,790 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:57:04,834 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:58:04,848 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 07:59:04,878 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:00:04,906 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:01:04,925 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:02:04,981 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:03:05,005 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:04:05,018 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:05:05,037 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:06:05,049 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:07:05,068 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:08:05,091 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:09:05,125 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:10:05,167 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:11:05,216 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:12:05,283 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:13:05,314 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:14:05,326 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:15:05,357 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:16:05,406 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:17:05,424 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:18:05,456 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:19:05,488 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:20:05,541 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:21:05,591 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:22:05,613 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:23:05,650 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:24:05,682 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:25:05,710 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:26:05,730 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:27:05,763 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:28:05,791 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:29:05,804 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:30:05,837 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:31:05,864 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:32:05,921 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:33:05,943 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:34:05,968 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:35:05,995 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:36:06,019 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:37:06,036 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:38:06,051 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:39:06,069 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:40:06,091 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:41:06,138 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:42:06,167 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:43:06,194 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:44:06,225 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:45:06,274 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:46:06,311 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:47:06,322 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:48:06,345 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:49:06,367 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:50:06,388 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:51:06,405 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:52:06,436 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:53:06,482 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:54:06,534 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:55:06,564 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:56:06,578 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:57:06,594 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:58:06,615 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 08:59:06,631 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:00:06,663 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:01:06,689 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:02:06,719 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:03:06,741 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:04:06,768 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:05:06,812 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:06:06,833 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:07:06,881 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:08:06,909 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:09:06,930 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:10:06,950 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:11:06,973 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:12:06,988 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:13:07,009 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:14:07,034 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:15:07,098 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:16:07,112 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:17:07,149 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:18:07,176 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:19:07,189 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:20:07,209 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:21:07,235 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:22:07,257 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:23:07,297 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:24:07,318 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:25:07,340 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:26:07,392 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:27:07,426 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:28:07,453 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:29:07,485 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:30:07,515 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:31:07,557 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:32:07,608 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:33:07,629 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:34:07,663 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:35:07,691 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:36:07,740 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:37:07,766 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:38:07,786 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:39:07,806 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:40:07,838 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:41:07,862 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:42:07,878 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:43:07,914 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:44:07,941 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 09:52:36,620 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 09:52:36,621 INFO Sailar-x starting: mode=demo v1
2026-10-26 09:54:49,587 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 09:54:49,588 INFO Sailar-x starting: mode=demo v1
2026-10-26 10:15:20,063 INFO OPEN SELL 8.43 @ 1.1211  SL 1.1217  TP 1.1202  conf 77%
2026-10-26 10:24:23,590 INFO BE: SL moved to entry 1.1211 (trade at +0.80R)
2026-10-26 11:05:38,326 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 11:05:38,327 INFO Sailar-x starting: mode=demo v1
2026-10-26 11:09:01,321 INFO CLOSE SELL @ 1.1211 (SL)  pnl +16.86
2026-10-26 11:15:06,796 INFO OPEN SELL 7.6 @ 1.1209  SL 1.1216  TP 1.1199  conf 68%
2026-10-26 11:35:18,557 INFO BE: SL moved to entry 1.1209 (trade at +0.82R)
2026-10-26 12:05:48,979 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-26 12:07:49,578 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-26 12:09:50,167 WARNING research failed: URLError: <urlopen error [Errno 11001] getaddrinfo failed>
2026-10-26 13:20:33,818 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 13:20:33,818 INFO Sailar-x starting: mode=demo v1
2026-10-26 13:20:33,899 INFO CLOSE SELL @ 1.1209 (SL)  pnl +0.00
2026-10-26 13:30:19,306 INFO OPEN SELL 6.81 @ 1.1204  SL 1.1211  TP 1.1193  conf 77%
2026-10-26 13:48:07,723 INFO BE: SL moved to entry 1.1204 (trade at +0.89R)
2026-10-26 16:43:43,765 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 16:43:43,766 INFO Sailar-x starting: mode=demo v1
2026-10-26 16:43:43,792 INFO position is closed at the broker; waiting for its deal history
2026-10-26 16:44:03,923 INFO CLOSE SELL @ 1.1193 (TP)  pnl +749.10
2026-10-26 19:09:30,752 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 19:09:30,753 INFO Sailar-x starting: mode=demo v1
2026-10-26 19:09:34,122 INFO OPEN SELL 5.85 @ 1.1179  SL 1.1188  TP 1.1166  conf 77%
2026-10-26 19:21:43,589 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:26:48,780 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 19:26:48,780 INFO Sailar-x starting: mode=demo v1
2026-10-26 19:39:42,418 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:40:42,448 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:41:42,460 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:42:42,482 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:43:42,506 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:44:42,532 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:45:42,566 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:46:42,604 ERROR loop error
Traceback (most recent call last):
  File "C:\workspace\sailar-x\sailar-x\sailar\runner.py", line 132, in run
    df = fetch_candles(cfg, ex)
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 48, in fetch_candles
    return mt5_candles(cfg, cfg["candles"]).iloc[:-1]
           ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "C:\workspace\sailar-x\sailar-x\sailar\data.py", line 28, in mt5_candles
    raise RuntimeError(f"MT5 returned no candles for {cfg['symbol']}: {m.last_error()}")
RuntimeError: MT5 returned no candles for EURUSD: (-10001, 'IPC send failed')
2026-10-26 19:47:33,230 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 19:47:33,230 INFO Sailar-x starting: mode=demo v1
2026-10-26 19:47:55,380 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 19:47:55,381 INFO Sailar-x starting: mode=demo v1
2026-10-26 20:15:37,249 INFO AI brain: mode=shadow, providers=['groq', 'gemini'], search=serper
2026-10-26 20:15:37,250 INFO Sailar-x starting: mode=demo v1
2026-10-26 20:15:37,339 INFO CLOSE SELL @ 1.1188 (SL)  pnl -503.10
