Logo hamster-bot Claude новинка: MCP
RU EN PT

Загрузка…

Как MCP работает в hamster-bot

Бот торгует на VPS сам, по ключам и настройкам, которые дал человек. MCP открывает у бота второй вход: через него ИИ-агент на том же сервере управляет ботом. Человек разговаривает с агентом с телефона.

87 инструментов

Человек Смартфон приложение Claude или claude.ai/code Браузер веб-интерфейс бота даёт ключи биржи, задаёт настройки Облако Anthropic модель Claude принимает решения, Remote Control пересылает сообщения телефона VPS Агент Claude Code сессия в tmux, правила в CLAUDE.md, журнал, запуск по /loop hamster-bot один процесс, один порт Веб-интерфейс /htmx MCP-сервер /mcp, 87 инструментов JSON API /api/*, проверка доступа Ядро бота Ключи, настройки файлы на диске Стратегии, тестер коннекторы бирж, подпись Биржа Bybit, BitMEX, Binance и другие ордера, позиции, балансы по API ключи, настройки, кнопки сообщения HTTPS только исходящий HTTPS, входящих портов нет вызов инструмента по MCP 127.0.0.1 + Bearer api_token запрос боту к самому себе с тем же токеном те же действия 1 2 3 4 5 6 команда через агента настройка без агента граница зоны
С биржей связан только бот. Агент работает с ботом через MCP, а телефон работает с агентом через облако Anthropic, поэтому на VPS не нужно открывать порт для телефона.

Кто за что отвечает#

Бот

Круглосуточно торгует по настройкам и хранит ключи биржи. Для работы ему не нужен ни агент, ни телефон.

Агент

Исследует настройки в тестере, запускает и правит стратегии, следит за ботами и ведёт журнал. Торговые команды он отдаёт через инструменты бота.

Телефон

Окно в сессию агента. Сама сессия, её файлы и подключение к MCP остаются на VPS.

Путь одной команды: «закрой позицию по BTC»#

  1. 1Человек пишет сообщение в приложении Claude. Оно уходит в облако Anthropic по HTTPS.
  2. 2Claude Code на VPS сам опрашивает облако и забирает сообщение. Модель решает, какой инструмент вызвать.
  3. 3Агент вызывает close_position на /mcp с токеном api_token. Бот проверяет токен.
  4. 4MCP-сервер превращает вызов в обычный запрос к /api/* этого же бота и передаёт тот же токен. Поэтому логика и проверки у MCP и API одни.
  5. 5API передаёт команду ядру бота. Ядро берёт ключ этого аккаунта.
  6. 6Коннектор подписывает запрос и отправляет его на биржу. Результат идёт обратно по той же цепочке и появляется на телефоне.

Что будет, если одна из частей отключится#

Что случилосьБотАгент
Телефон выключенТоргуетСессия продолжает работать на VPS
Закрылся SSHТоргуетРаботает, если запущен в tmux
VPS без сети дольше 10 минутНе может обращаться к бирже, пока сеть не вернётсяПроцесс claude remote-control завершается, его нужно запустить заново
Агент остановилсяТоргует по текущим настройкам, но за ним никто не следитНе работает
use_mcp выключенТоргуетНе может управлять ботом: /mcp отвечает 404

Что агент может делать через MCP#

ГруппаИнструментовПримеры
Тестер42tester_run_mining, tester_run_batch, tester_portfolio_analysis
ещё 39

tester_status, get_tester_config, save_tester_config, tester_exchanges, tester_exchange_symbols, list_tester_settings, get_tester_settings, draft_tester_settings, save_tester_settings, copy_tester_settings, delete_tester_settings, copy_tester_settings_to_folder, delete_tester_settings_matching, import_tester_settings, check_tester_settings, get_tester_settings_folder, set_tester_settings_folder, create_tester_settings_folder, delete_tester_settings_folder, tester_run_stress, tester_stop, tester_cancel_queued, tester_run_single, tester_wait, tester_wait_batch, tester_run_snapshot, tester_download_data, tester_data_coverage, tester_mining_robustness, tester_wizard_results, list_tester_files, read_tester_file, save_tester_file, delete_tester_file, tester_report_summaries, read_tester_report, send_tester_report_to_telegram, tester_publish_files, tester_publish

Боты10list_bots, get_balances, pause_bot, play_bot
ещё 6

get_bot_bars, get_bot_state, pause_all_bots, play_all_bots, send_chart_to_telegram, send_position_to_telegram

Позиции и ордера9list_positions, market_order, close_position
ещё 6

list_orders, close_all_positions, reduce_positions, cancel_order, cancel_account_orders, cancel_all_orders

Аккаунты8list_accounts, save_account, get_balance_history
ещё 5

get_account, get_account_symbols, delete_account, get_account_info, compact_balance_history

Стратегии7save_strategy, create_strategy_from_tester, delete_strategy
ещё 4

list_strategies, get_strategy, draft_strategy, copy_strategy

Система и логи7get_errors, read_log_file, update_program
ещё 4

get_system_status, shutdown_program, get_log, list_log_files

Настройки4get_config, update_config, get_field_hints
ещё 1

get_settings_schema

Из 87 инструментов 42 только читают данные (readOnlyHint), а 25 помечены как опасные (destructiveHint): они торгуют, запускают ботов или необратимо меняют данные. Это рыночные ордера, закрытие позиций, отмена ордеров, запуск ботов, сохранение и удаление стратегий и ключей, изменение конфига, выключение и обновление программы. Тестер работает на истории и с биржей не торгует.

Границы доступа#

  • Токен даёт права владельца. С api_token доступны все 87 инструментов, включая торговлю, удаление аккаунтов и выключение программы. Режима только для чтения нет.
  • Подтверждение зависит от клиента. Опасные инструменты только помечены, а спрашивать человека должен MCP-клиент. В автономном режиме разрешения выдаются заранее, и агент действует без вопросов.
  • CLAUDE.md задаёт правила, но не защищает. Лимиты риска и запрет выходить за пределы папки агент соблюдает как инструкцию. Если у него есть shell под тем же пользователем, что и у бота, он технически может читать файлы бота.
  • Токен не всегда нужен. Когда вход через Telegram выключен, запросы к /mcp с этой же машины проходят без токена. Это касается любого локального процесса.
  • Веб-интерфейс, API и MCP работают на одном порту. Агенту на том же VPS хватает адреса 127.0.0.1. С другой машины токен идёт открытым текстом, поэтому через интернет нужен HTTPS-прокси или SSH-туннель.

Как это запускается на VPS#

  1. В settings_program.json бота, перезапуск не нужен:

    "use_mcp": true
  2. Сессия, которая переживёт закрытие SSH:

    tmux new -s agent
  3. Подключить агента к боту:

    claude mcp add --transport http hamster-bot http://127.0.0.1:<порт>/mcp --header "Authorization: Bearer <api_token>"
  4. Открыть сессию для телефона:

    claude remote-control --name "hamster-bot"
  5. В чате сессии: автономная работа по расписанию:

    /loop 6h Продолжай работу по CLAUDE.md

Подключение: подробности#

По умолчанию MCP выключен. Вместо правки файла его можно включить через API: POST /api/settings/config с телом { "use_mcp": true }.

Адрес: http://127.0.0.1:<порт>/mcp, транспорт Streamable HTTP. С другой машины вместо 127.0.0.1 укажите адрес сервера.

Вместо claude mcp add подключение можно описать в файле .mcp.json проекта:

{
  "mcpServers": {
    "hamster-bot": {
      "type": "http",
      "url": "http://127.0.0.1:5000/mcp",
      "headers": { "Authorization": "Bearer <api_token>" }
    }
  }
}

Другие клиенты подключаются по тому же адресу, если поддерживают Streamable HTTP и свои заголовки запроса.

Правила доступа те же, что у API (см. Доступ). Кроме токена подходит cookie hamster-bot-token при включённом входе. Запрос без них получает 401.

Имена аргументов#

Во всех инструментах одни и те же имена: strategy — имя стратегии бота, account — имя аккаунта, folder — папка настроек тестера. Прежние имена принимаются как синонимы: name вместо strategy в get_strategy, copy_strategy, delete_strategy, name вместо account в get_account, get_account_symbols, delete_account, get_account_info, get_balance_history, compact_balance_history, path вместо folder в set_tester_settings_folder, create_tester_settings_folder, delete_tester_settings_folder. Если нет ни основного имени, ни синонима, ошибка называет ожидаемое поле. strategy в draft_strategy, draft_tester_settings и get_settings_schema — код стратегии (zigzag, mrs2), а не имя. Для настроек тестера name — имя набора настроек.

Ошибка API возвращается агенту как ошибка инструмента с кодом и текстом, например HTTP 404: {"success":false,"error":"Strategy not found"}. Очень длинные ответы обрезаются до 200 000 символов. read_tester_file отдаёт текстовые файлы целыми строками: длинный ответ заканчивается подсказкой ... [lines A-B of N; continue with offset=B]. Для длинных CSV есть параметры offset и limit (страница строк), tail_lines (последние N строк), contains (только строки с текстом) и columns (только нужные столбцы); заголовок CSV сохраняется всегда. list_tester_files принимает contains, offset и limit. HTML-отчёты большие, поэтому для сравнения прогонов лучше tester_report_summaries, а для подробностей одного прогона — read_tester_report.

Исследования в тестере#

Агент может сам вести исследование стратегии. Типичный порядок:

  1. get_field_hints — узнать смысл полей настроек стратегии и конфига тестера, в том числе синтаксис parameter_mining; get_settings_schema — какие поля стратегия действительно читает: перебор недействующего поля даёт одинаковые строки.
  2. create_tester_settings_folder — завести свою папку для эксперимента; copy_tester_settings_to_folder — скопировать в неё нужные настройки. Дальше передавать folder во все инструменты тестера.
  3. draft_tester_settings и save_tester_settings — создать новые настройки для нужной биржи, пары и таймфрейма. Варианты существующих настроек сохранять не нужно: их задаёт overrides при запуске.
  4. save_tester_config — задать период, комиссии, parameter_mining и новый name_comment для эксперимента; включить report.enable_json_report. Начало периода (StartDate) для сверки с живым ботом ставить на границу time_frame стратегии и не раньше запуска бота: стратегия работает с первой свечи своего таймфрейма, открытие которой не раньше StartDate, поэтому старт в середине 4h-свечи сдвигает первые ордера на следующую свечу. WarmupDays (по умолчанию 30) только прогревает индикаторы историей до StartDate: на этих днях стратегия не торгует и состояние не накапливает, позиция и ордера живого бота из истории не восстанавливаются. Если данных у пары меньше WarmupDays, торговля начнётся позже (предупреждение в ответе).
  5. tester_download_data — загрузить свечи и дождаться окончания в tester_status. Период можно задать параметрами start и end, по умолчанию: старт конфига с прогревом .. сейчас (конфиг менять не нужно). В download.result видно, по какой день данные реально есть у каждой пары.
  6. tester_run_single — проверить одну комбинацию; tester_wait (или wait_seconds при запуске) дожидается прогона и возвращает метрики, предупреждения и пути к отчётам. tester_run_batch — сравнить несколько вариантов и проверить их на нескольких периодах одним вызовом. Или tester_run_mining — перебрать все комбинации: результаты в <name_comment>/reports_history.csv (read_tester_file); queue=true ставит перебор в очередь за текущим.
  7. read_tester_report — разобрать прогон: раздел summary для сравнения, итоги по парам, месяцы, сделки. Для набора стратегий — tester_portfolio_analysis: группы T/CT, корреляция, худшие дни, вклад каждой стратегии в просадку.
  8. tester_report_summaries, tester_run_stress и walk_forward в конфиге — сравнить лучшие варианты и проверить их устойчивость.
  9. send_tester_report_to_telegram — прислать итоговый отчёт пользователю в Telegram, если он просит.

Одна стратегия на пару#

На одном счёте на одной паре (basic.symbol) может быть только одна стратегия, и в живой торговле, и в тестере. Пар на счёте может быть сколько угодно (хоть 200), стратегии на них могут быть разными или одинаковыми, но символ среди стратегий счёта должен быть уникальным. Стратегия на занятой паре сохраняется, но не запускается (в логе DUBLICATE SUMBOL ON API); проверьте list_strategies по счёту и паре до save_strategy, copy_strategy (копируйте на другую пару) и create_strategy_from_tester. Настройки тестера, которые идут в одном прогоне, тоже должны быть на разных парах; чтобы сравнить несколько настроек на одной паре, запускайте каждую отдельно (элементы tester_run_batch или перебор с single_mode).

Реинвестирование и сравнение вариантов#

Размер позиции по basic.balance_percentage_long/_short считается от текущего баланса, поэтому прибыль реинвестируется и годовой PnL % завышается. Чтобы варианты и периоды сравнивались честно, отключите рост размера одним из способов:

  1. basic.use_fix = true и basic.my_fix_balance = 50: каждый ордер считается от 50 единиц котируемой валюты (обычно USDT), независимо от баланса.
  2. basic.max_balance = 2000: пока баланс меньше, бот работает с реальным балансом; при балансе 2350 размер считается от 2000, выше порога реинвестирование прекращается.
  3. basic.lot_long / basic.lot_short: постоянный размер ордера, который уходит на биржу.

Некоторые стратегии могут изменить этот базовый размер по своей логике. Параметры можно задать через overrides запуска (set) или перебирать в parameter_mining.

Ответы на сохранение и запуск содержат warnings: поля, которые настройки не читают. check_tester_settings проверяет так всю папку.

Перевод в торговлю и контроль#

Проверенную настройку переносит в бота create_strategy_from_tester — стратегия создаётся на паузе, запуск — play_bot после проверки. Работу живого бота агент оценивает так: после закрытия дня, когда свечи можно скачать, прогоняет тестер на тех же настройках и за тот же период (стратегию в папку тестера копирует import_tester_settings) и получает полную статистику — в нормальном случае она совпадает с живой торговлей. Фактический результат — история баланса get_balance_history (пишется при включённом monitoring.enabled).

Инструкции сервера и описания инструментов объясняют агенту главное правило живой торговли: позиция и ордера не должны оставаться без контроля. Стратегия на паузе их не ведёт, поэтому отключение — только в порядке пауза → снять ордера → закрыть позицию → удалить (delete_strategy с full=true делает это сам).

Логи#

У каждого бота (стратегии на паре) свой лог: log_<дата>_<Биржа> <аккаунт> <пара> <таймфрейм> <стратегия> <имя>.log — уровни, сигналы, выставленные и снятые ордера, исполнения, изменения позиции и ошибки стратегии; по нему видно, почему бот торговал или не торговал. У каждого аккаунта — log_<аккаунт>_<дата>.log: балансы и позиции с биржи, ответы и ошибки API биржи, лимитер позиций, close_by_margin. Общий лог программы — log_<дата>.log (get_log), логи тестера — TESTER_*.log. Формат даты в именах разный, поэтому файл ищут по имени стратегии или аккаунта: list_log_files с contains, затем read_log_file.

Примеры использования#

Ниже — запросы к агенту и вызовы инструментов, которые он делает. Аргументы показаны в JSON, как их передаёт MCP-клиент. Папка lut_now, имена настроек и даты — для примера.

Проверить вариант набора без тестовых копий#

«Что будет, если удвоить трендовые стратегии, но не больше 10% на пару, и выключить шорт у C_MU? Проверь на двух периодах».

tester_run_single {
  "settings": ["*"], "folder": "lut_now", "wait_seconds": 240,
  "overrides": [
    { "match": "T_*", "mul": { "basic.balance_percentage_long": 2, "basic.balance_percentage_short": 2 }, "cap_pct": 10 },
    { "match": "C_MU", "set": { "basic.use_short": false } }
  ],
  "periods": [["2026-05-01", "2026-08-01"], ["2026-08-01", "2026-10-26"]]
}

Файлы настроек не меняются. В ответе по каждому периоду — summary (PnL, просадки, Ulcer, profit factor, сделки, месяцы), пути к отчётам, applied (что изменено) и warnings. Вместо маски можно выбрать настройки по тегу: { "tag": "hedge", "mul": { ... } }.

Сравнить несколько вариантов одним вызовом#

tester_run_batch {
  "folder": "lut_now", "parallel": 2, "wait_seconds": 240,
  "periods": [["2026-05-01", "2026-08-01"], ["2026-08-01", "2026-10-26"]],
  "runs": [
    { "name": "base", "settings": ["*"] },
    { "name": "T x2", "settings": ["*"], "overrides": [{ "match": "T_*", "mul": { "basic.balance_percentage_long": 2 } }] },
    { "name": "без L_X", "settings": ["*"], "overrides": [{ "match": "L_X", "exclude": true }] },
    { "name": "только лонг", "settings": ["*"], "sides": "long" }
  ]
}

Каждый вариант идёт на каждом периоде; ответ — таблица результатов. Без wait_seconds агент ждёт пакет через tester_wait_batch.

Подобрать параметр, устойчивый на нескольких периодах#

«Подбери depth для T_BTC, но не под один период».

  1. get_settings_schema { "strategy": "zz" } — zz.depth действует только при zz.type = ZZ2; перебор поля, которое настройка не читает, даёт одинаковые строки.
  2. Перебор на трёх периодах (каждый — отдельный полный прогон через очередь):

    tester_run_mining {
      "settings": ["T_BTC"], "folder": "lut_now",
      "config": { "name_comment": "MCP_depth", "parameter_mining": [{ "name": "settings[*].zz.depth", "start": 4, "end": 20, "step": 2 }], "...": "остальное как в get_tester_config" },
      "periods": [["2026-02-01", "2026-05-01"], ["2026-05-01", "2026-08-01"], ["2026-08-01", "2026-10-26"]]
    }

    Ответ содержит report_folders каждого периода и warnings (несуществующие и недействующие параметры).

  3. Дождаться окончания в tester_status, затем tester_mining_robustness { "folders": [...], "base": { "settings[*].zz.depth": 12 } } — рейтинг по плато всех периодов, место лучшей точки каждого периода в общем рейтинге и точки, которые не хуже исходной ни на одном периоде.

Оценить хедж трендовых стратегий в портфеле#

«Помогают ли T-стратегии CT-стратегиям в просадке?»

  1. Прогон набора с report.enable_json_report: true (раздел daily включён по умолчанию).
  2. tester_portfolio_analysis { "path": "<report_json_path>", "groups": { "T": "T_*", "CT": "C_*" } } — корреляция групп, худшая неделя, PnL группы T в худшие дни CT (offset_percent) и leave_one_out: насколько выросла бы просадка портфеля без каждой стратегии. Это заменяет отдельный прогон без каждой стратегии.
  3. Подобрать размер T на фоне остального набора — портфельный перебор без single_mode: параметр settings[T_*].basic.balance_percentage_long, строки сравниваются по MaxDrawdownPercent и UlcerIndex портфеля.

Проверить папку настроек#

check_tester_settings { "folder": "lut_now" } — настройки с изменёнными полями, которые ни на что не влияют (секция другой стратегии, поле другого zz.type, выключенный use_*, basic.leverage в тестере). Те же предупреждения приходят при сохранении настроек.

Повторить прогон с правкой и отдать вариант пользователю#

Каждый прогон сохраняет run_snapshot_*.json с точными настройками и конфигом. Агент читает его (read_tester_file), правит и запускает tester_run_snapshot с изменённым snapshot — файл не меняется. Чтобы пользователь запустил вариант сам, агент сохраняет его в runs через save_tester_file: в веб-интерфейсе (Тестер, вкладка «Результаты (файлы)») у файла есть кнопки «Запустить» и «Изменить».

Перевести настройку в торговлю и вести бота#

«Запусти T_BTC на демо-счёте и следи за ним».

  1. list_accounts — найти аккаунт.
  2. create_strategy_from_tester { "name": "T_BTC", "folder": "lut_now", "account": "demo_bybit" } — стратегия создаётся на паузе; агент проверяет её (get_strategy, warnings) и запускает play_bot.
  3. Контроль в течение дня: list_bots, list_positions, list_orders; лог стратегии — list_log_files { "contains": "T_BTC" } и read_log_file; ошибки — get_errors.
  4. После закрытия дня: import_tester_settings (стратегия из get_strategy в папку тестера), tester_download_data, прогон тестера за прошедший период — полная статистика, которая в нормальном случае совпадает с живой торговлей. Фактический результат — get_balance_history (при monitoring.enabled). Расхождение — повод разобрать лог стратегии.
  5. Корректировка: проверить изменение в тестере, затем save_strategy — изменения сразу применяются к работающему боту.

Отключить стратегию#

delete_strategy { "name": "T_BTC", "full": true } — пауза, снятие ордеров, закрытие позиции, удаление. Если ордера или позиция не снялись, стратегия остаётся на паузе и не удаляется: агент проверяет list_orders и list_positions и доделывает вручную в том же порядке, не пропуская паузу.

Прислать отчёт#

«Пришли итоговый отчёт в Telegram» — send_tester_report_to_telegram { "path": "<report_path>", "caption": "лучший вариант по просадке" }. Отправляются только файлы отчётов тестера в чат уведомлений тестера.

Примеры запросов к агенту:

  • «Подбери длину зигзага для BTCUSDT 1h на Bybit за последние три месяца, проверь лучшую точку на двух других периодах и стресс-тестом».
  • «Синхронизируй папку lut_now с mrs-bybit и сравни набор с удвоенными T-стратегиями и без них по просадке и Ulcer».
  • «Какие стратегии lut_now добавляют просадку портфелю, а какие её снижают?»
  • «Перенеси лучший вариант на демо-счёт, запусти и каждый день сверяй живую торговлю с тестером».

Примеры: что можно попросить у агента

Агенту пишут обычным языком: он сам выбирает инструменты, вызывает их по очереди и объясняет результат.

Исследования в тестере

«Подбери параметры MRS2 для BTC за последний год и проверь лучшие стресс-тестом»

Настроит перебор, запустит его, найдёт плато, а не одиночный пик, прогонит tester_run_stress и расскажет, что выжило.

«Прогони e2e_zz за сентябрь и объясни, почему стратегия в минусе. Разбери сделки: лонги против шортов, длительность, MAE/MFE. Предложи одно изменение и проверь его»

Возьмёт сделки из read_tester_report и сам найдёт закономерности: например, что шорты убыточны или что сделки закрываются раньше пика MFE. Затем поменяет параметр, перезапустит прогон и покажет цифры до и после.

«Найди лучшую длину зигзага перебором, а потом докажи, что это не подгонка: walk-forward и стресс-тест»

Перебор находит «идеальный» вариант, walk_forward проверяет его на периоде, который оптимизатор не видел, а tester_run_stress — в ухудшенных условиях исполнения. Обычно лучший вариант перебора на новых данных заметно проседает, и агент это покажет.

«Подбери параметры zigzag для BTCUSDT 1h на Bybit за последние 3 месяца и дай итоговую рекомендацию»

Весь цикл одной фразой: подсказки к полям, настройки, загрузка данных, прогоны, чтение результатов и вывод.

«Проверь стратегию на топ-10 пар Bybit и оставь пары, где она стабильно работает»

tester_exchange_symbols, настройки на несколько пар, раздел by_symbol и доходность по месяцам из JSON-отчёта.

«Покажи, как результат зависит от комиссии и проскальзывания»

Перебор по TakerFee и SlippagePercent в конфиге тестера. Наглядно показывает, почему стратегия с отличным бэктестом теряет деньги в реальной торговле.

«Сравни два последних прогона: где новая версия лучше, а где хуже?»

Прочитает JSON-отчёты и разложит разницу по парам, месяцам и просадке.

«Скопируй стратегию с BTC на SOL и прогони её в тестере за полгода»

Скопирует настройки на другую пару, скачает историю, запустит бэктест и скажет, стоит ли переносить её на реальный счёт.

«Синхронизируй папку lut_now с mrs-bybit и сравни набор с удвоенными T-стратегиями и без них по просадке и Ulcer»

copy_tester_settings_to_folder, затем tester_run_batch с overrides — без тестовых копий настроек, все варианты одним вызовом.

«Какие стратегии lut_now добавляют просадку портфелю, а какие её снижают?»

tester_portfolio_analysis: корреляция групп, худшие дни и leave_one_out — просадка портфеля без каждой стратегии, без отдельных прогонов.

«Подбери длину зигзага, проверь лучшую точку на двух других периодах и стресс-тестом»

Перебор с periods, затем tester_mining_robustness покажет, держится ли точка на всех периодах или подогнана под один.

Рабочий бот: чтение и анализ

«Утренняя сводка: баланс, открытые позиции, ошибки за ночь»

Балансы, позиции, ордера, история баланса и ошибки в логах — одна фраза вместо пяти вкладок. В Claude Code сводку можно поставить на расписание командой /loop.

«Почему бот на ETH ночью не открыл сделку?»

Посмотрит лог и ошибки за ночь, состояние бота и фильтры стратегии и объяснит причину.

«Разберись с ошибками за сутки»

Через get_errors и get_account_info найдёт причину — например, истёкший ключ или отсутствие прав на фьючерсы — и объяснит её по-человечески.

«Проверь мои стратегии на рискованные настройки»

Сверит все стратегии с подсказками полей и укажет на риски.

«Пришли в Telegram график и позицию по каждому боту в просадке»

Найдёт таких ботов и отправит их график и позицию в Telegram.

Управление: с подтверждением

Перед реальными действиями агент показывает, что собирается сделать, а клиент запрашивает подтверждение на каждый опасный инструмент, если разрешения не выданы заранее (см. Границы доступа).

«Создай рабочую стратегию с найденными параметрами, но на паузе»

После исследования: create_strategy_from_tester переносит проверенную настройку тестера в бота на паузе. Вы проверяете настройки и запускаете бота сами.

«Перенеси лучший вариант на демо-счёт, запусти и каждый день сверяй живую торговлю с тестером»

После закрытия дня прогонит тестер на тех же настройках за тот же период и сравнит с историей баланса; расхождение разберёт по логу стратегии.

«Отключи стратегию T_BTC»

delete_strategy с full=true: пауза, снятие ордеров, закрытие позиции, удаление — позиция не останется без управления.

«Объясни, что делает параметр block_adds, и включи его там, где есть фильтр по тренду»

Прочитает подсказки к полям, найдёт нужные стратегии и поправит их.

«Поставь на паузу всех ботов на альтах и отмени их ордера»

Пауза и отмена ордеров — всё на словах.

«Сократи все позиции на аккаунте наполовину и поставь ботов на паузу»

reduce_positions и pause_all_bots.