Портфель
Открывайте стратегии, переключайтесь между ними и управляйте составом портфеля.
Создание, открытие и переключение проектов
Команда «Новый проект…» (xtester.newProject) предлагает имя и родительскую папку. Studio создаёт отдельный корень с xtester.project.json и пустой папкой strategies/. Создавайте независимые проекты рядом друг с другом. Команда «Новая стратегия…» добавляет стратегию в strategies/ текущего управляемого проекта, а не создаёт отдельное рабочее пространство.
- Портфель и файлы стратегии.
- Исходник выбранной стратегии.
Команда «Открыть проект…» (xtester.openProject) открывает существующую папку. Команда «Переключить проект…» (xtester.switchProject), доступная также по имени проекта в строке состояния, показывает недавние корни и пункты создания и открытия. Свободное окно переключает папку штатным механизмом рабочего пространства.
Если есть запущенная, подготовленная или приостановленная работа, подключённый агент, несохранённый результат запуска либо состояние работы не удалось проверить, Studio открывает цель в новом окне, сохраняя исходный движок и его работу.
У каждого корня свои файлы стратегий, настройки проекта, исследования и сохранённые результаты. При возвращении в тот же корень восстанавливаются вкладки рабочего пространства и сохранённое состояние графиков. Восстановленный отчёт показывает неизменяемый снимок результата; восстановление вида не возобновляет симуляцию, живое подключение или исполнение.
Управляемый проект также хранит историю расчётов в .xtester/jobs/lab, документы, вложения и задания Market Research в .xtester/market-research, фоновые отчёты и результаты проверок устойчивости в .xtester/background-calculations. Задания и исследования другого проекта в эти хранилища не попадают.
История котировок, глобальный кеш, общая база исследовательских знаний и настроенные биржевые аккаунты остаются общими для Studio. Проекты организуют работу и не являются границей безопасности или отдельным хранилищем аккаунтов.
Существующие папки стратегий и библиотеки открываются без перезаписи. Только корни, управляемые xtester.project.json, автоматически помещают новые стратегии в собственную папку strategies/. Старые файлы библиотеки автоматически не переносятся. Форматы проектов и окна старого настольного XTester не становятся доступными автоматически; сохраните резервную копию перед адаптацией исходного кода.
Манифест стратегии
Файл xtester.strategy.json описывает проект стратегии и его исходные настройки. Он должен находиться рядом с файлами C#. Мастер создания записывает выбранные вами настройки в манифест.
Биржа, рынок и символ определяют инструмент вместе: смена одного тикера не меняет рынок. При переключении языка интерфейса не переводите имена параметров и идентификаторы API.
Компиляция перед запуском
После изменения кода выполните команду компиляции стратегии. Компиляцию выполняет EngineHost, а не расширение справки. До запуска изучите диагностику редактора и канал вывода XTester.
- Ошибка компиляции
Начинайте с небольшого изменения и короткого периода, покрытого историей. Успешная компиляция проверяет исходный код, но не доказывает правильность торговой логики или результатов.
Управление портфелем стратегий
Портфель объединяет стратегии одного корня проекта. Именованные варианты портфеля внутри этого корня используют одни и те же исходные файлы стратегий; отдельный независимый проект имеет собственные файлы. На странице Welcome выберите «Портфель стратегий», затем «Открыть портфель», чтобы перейти к Portfolio Explorer, или «Настройки портфеля», чтобы открыть состав и параметры текущего проекта. Для настройки сначала откройте стратегию или проект.
- Выберите активный портфель.
- Проверьте состав и доли.
- Проверьте общую торговую пару.
В Portfolio Explorer включайте и исключайте стратегии из расчёта флажками, создавайте вложенные логические папки и перетаскивайте в них стратегии. Двойной щелчок делает стратегию активной; стрелка раскрывает её содержимое. Организация хранится в xtester.portfolio.json как organization: folders [{id,name,parentId?}] и strategyFolders [{strategyId,folderId}]. Это только представление: файлы на диске, порядок исполнения и участие стратегий от перемещения не меняются.
В настройках задайте начальные балансы, распределение капитала (доли shares или общий пул pool), период и общие параметры симуляции. Сохраните варианты под разными именами, переключайте, переименовывайте и удаляйте неактивные портфели. Портфельный расчёт запускает выбранные стратегии на одном моделируемом счёте; отчёт содержит общий результат и результаты участников.
Copilot и внешние MCP-агенты используют get_portfolio, save_portfolio и run_portfolio; list_portfolios, copy_portfolio, rename_portfolio, switch_portfolio и delete_portfolio управляют именованными вариантами. В Copilot первые три инструмента имеют префикс xtester_, а именованными вариантами управляет xtester_manage_portfolios. После одобренного подключения MCP чтение доступно наблюдателю, сохранение и запуск требуют права записи и confirm: true.
Для изменения папок сначала прочитайте get_portfolio и передайте в save_portfolio полный актуальный strategies [{id,enabled,...}] без изменения порядка, долей и индивидуальных параметров, а также новое organization. Сохраняйте существующие идентификаторы папок; parentId должен ссылаться на существующую папку без циклов, каждой стратегии соответствует не более одной папки. Пропущенное organization сохраняет дерево, null очищает его. Это уже доступный контракт движка, а не обещание будущей функции.
Внешние агенты, MCP-сессии и владение заданиями
MCP-агент, например Codex или Claude, работает с окном Studio только после того, как вы одобрите подключение. Панель «Внешние подключения» показывает каждое подключение, его доступ и состояние права записи. Право записи в каждый момент есть только у одного агента. Ваши действия в Studio из-за этого не отклоняются: они ждут, пока закончится текущая операция агента. Запуск симуляции или конвертации стратегии, пока идёт другая, по-прежнему сообщает, что движок занят.
Задача, которую запустил агент (загрузка истории, бэктест, симуляция или конвертация стратегии), принадлежит этому агенту. Отменить её может только он или вы в Studio, другие агенты её не видят. Если агент отключился, задача сохраняется и появляется в панели «Внешние подключения» как задача без владельца; другой агент не может её перехватить. Если она больше не нужна, остановите её обычной кнопкой Studio. Отмена задачи симуляции останавливает сессию и сбрасывает её к началу периода; пауза сохраняет позицию.
Пока симуляция подготовлена, идёт или стоит на паузе либо выполняется конвертация стратегии, текущий движок остаётся привязан к своему проекту. Другой независимый проект открывается в новом окне, если нужно сохранить работу, подключённого агента или несохранённый результат либо состояние работы неизвестно. Владение задачами при этом не передаётся, исполнение в целевом окне не возобновляется.
Агенты получают устойчивые коды отказа: WRITER_BUSY (право записи у другого агента), STALE_CONTEXT (проект изменился после чтения, нужно перечитать), JOB_NOT_OWNER (задача принадлежит другому подключению), ACTIVE_JOB_BLOCKS_PROJECT_SWITCH (активная симуляция или конвертация удерживает проект), SHARED_PROJECT_WRITE_BLOCKED (папка открыта в другом окне Studio), READ_ONLY_SESSION (подключение одобрено только для чтения) и PROJECT_BINDING_CHANGED (окно переключилось на другой проект, нужно новое одобрение).
Когда Codex или Claude просит подключение, Studio предлагает «Разрешить для этого диалога», «Только чтение» или «Отклонить». «Разрешить» даёт право записи для этого подключения; «Только чтение» никогда не получает lease на запись; «Отклонить» закрывает запрос. Закрытие окна или тайм-аут для этого запроса равносильны отклонению. Запуск одного MCP-хоста не открывает Studio и не активирует уже открытое окно.
Автономный режим агентов (настройка xtester.mcp.autonomousAgents, по умолчанию выключена; Studio один раз предлагает её при первом запуске) позволяет агентам подключаться, писать в проект и забирать право записи без этих диалогов.
Доступ к биржевым счетам и API-ключам и удаления по-прежнему требуют вашего явного разрешения: агент спрашивает вас в своём чате и передаёт ответ инструментом consent_answer, либо Studio спрашивает в окне, где доступ можно разрешить один раз или всегда для этого проекта. Запомненные разрешения показаны и отзываются в Настройках → Внешние агенты; удаление биржевых ключей спрашивается каждый раз.
Включить или выключить режим можно в Настройках, поиском autonomousAgents; агент сам эту настройку изменить не может.
Отключить агента можно в любой момент в панели «Внешние подключения». Отключение сразу отзывает разрешение; осиротевшие задания остаются в списке, пока вы не остановите их в Studio. Секреты, токены и nonce никогда не попадают в аргументы инструментов, которые видит модель.
Текущий полный каталог возможностей агента берётся из XTester.McpHost --studio через tools/list. Для конкретной задачи используйте search_tools, затем get_tool_schema: схемы этой сборки важнее старого списка инструментов. Общие действия интерфейса перечисляет list_studio_actions и выполняет run_studio_action — среди них открытие чата исследования market_research_open и показ результата market_research_show. Состав, капитал, папки и расчёт портфеля описаны в разделе «Управление портфелем стратегий».
Для независимых проектов доступны общие действия list_projects, create_project и open_project; имена Copilot имеют префикс xtester_. Схемы получайте через list_studio_actions, действия вызывайте через run_studio_action с одобренным доступом read-write, правом записи и confirm: true — даже чтение list_projects.
Его JSON отдельно возвращает workspaceRoot и activeStrategy, а также projects [{folder,name,id?,current}]. create_project требует name и точный абсолютный parentFolder и создаёт пустой проект без открытия. open_project принимает точный абсолютный folder и всегда запрашивает другое окно.
Исходная сессия сохраняется, целевое окно автоматически не выбирается и не получает разрешения: вызовите list_studio_sessions, затем select_studio_session для точного нужного окна, прежде чем работать там.
Связанные команды
Команды в палитре
Команды доступны по названию через палитру команд; их доступность зависит от текущего проекта и состояния операции.
xtester.launcherBots.openProjectxtester.newProjectxtester.openProjectxtester.portfolioAddStrategyxtester.portfolioAnalysisxtester.portfolioCreateFolderxtester.portfolioDeleteFolderxtester.portfolioExcludeAllxtester.portfolioExcludeStrategyxtester.portfolioFindStrategyxtester.portfolioIncludeAllxtester.portfolioIncludeStrategyxtester.portfolioLivextester.portfolioMoveToFolderxtester.portfolioOnlySelectedxtester.portfolioOnlyStrategyxtester.portfolioRenameFolderxtester.portfolioSettingsxtester.runPortfolioxtester.switchProject