ONNX-модели
Импортируйте ONNX, обучите модель в ML-профиле, подключите её к стратегии и запустите в Launcher или на сервере.
Каталог проекта
палитра команд → «ONNX-модели». Выберите нужную папку стратегии и убедитесь, что EngineHost запущен. Каталог относится к активному проекту, а не ко всем стратегиям компьютера.
Готовый ONNX или пакет .xtmodel можно импортировать. Для обучения в текущем проекте см. раздел «Создать и настроить ML-профиль». ONNX-модель выполняет прогноз внутри стратегии.
В списке смотрите идентификатор, backend, вход, выходы, признаки и границу обучающих данных. «Обновить» перечитывает каталог текущего проекта. Пустой список означает, что в этом проекте пока нет подключённых моделей.
Добавить ONNX или .xtmodel
«Импорт ONNX» открывает выбор исходного .onnx. Сначала движок читает метаданные и показывает «Проверку контракта модели». Выбор файла ещё не подтверждает его добавление в каталог.
- Откройте нужный проект и выберите формат импорта.
- Выберите файл и изучите вход/выходы модели.
- Для ONNX задайте идентификатор, границу обучения и необходимые векторы признаков.
- Подтвердите импорт проверенного контракта; при замене проверьте её отдельное подтверждение.
- Проверьте появившийся элемент каталога.
Для исходного ONNX задайте идентификатор и реальный конец обучающих данных в UTC. Например формат даты 2025-01-01T00:00:00Z означает полночь UTC; используйте дату своей обучающей выборки, а не дату из примера.
«Импорт .xtmodel» читает упакованный контракт. Если пакет запечатан, поля не редактируются в этой форме: требуемое изменение оформляется новым корректным пакетом.
После проверки нажмите «Импортировать проверенную модель». Если идентификатор уже подключён, программа отдельно просит подтвердить замену. При отмене вернитесь к выбору файла, не ожидая появления нового элемента в каталоге.
Порядок признаков и нормализация
Размерность входа определяет, сколько значений должна подготовить стратегия. Имена признаков помогают сохранить тот же порядок, что использовался при обучении. Произвольная перестановка значений меняет смысл входа, даже если количество совпадает.
Вектора вводятся целиком, по одному значению на признак, через запятые или переводы строк. Можно оставить имена пустыми для стандартных имён движка. Для нормализации нужны оба полных вектора: средние и стандартные отклонения; отклонения должны быть положительными конечными числами.
Условный пример для входа из трёх признаков: имена return_1, range_1, volume_1 и три соответствующих значения в каждом векторе. Этот пример не описывает контракт произвольной скачанной модели — сверяйтесь с её обучением.
Если длинный список показан частично, действие загрузки дополнительных имён расширяет просмотр. Частичный видимый фрагмент нельзя выдавать за полный контракт ввода.
Подключение к коду и проверка
Сначала подключите артефакт к проекту, затем используйте его идентификатор через доступный API моделей своей сборки. Сам факт появления элемента в каталоге не вызывает прогноз автоматически и не добавляет торговые правила.
При подготовке входа сохраняйте имена, порядок, размерность и правила нормализации. Значения должны быть доступны стратегии в тот исторический момент, для которого вычисляется сигнал. Дата конца обучения помогает проверить, что тест не захватывает использованное будущее.
Начните с небольшого воспроизводимого исторического расчёта и журнала входов/выходов. Наличие ONNX-файла или успешный импорт не подтверждают точность прогноза, отсутствие утечки данных или качество торговой идеи.
Замена и удаление
Замена под тем же идентификатором требует подтверждения; новые прогоны используют заменённый артефакт. Для сравнения сохраняйте сведения о версии и отпечатках, а не только короткое имя модели.
Удаление подтверждается отдельно и убирает привязку из каталога этого проекта. Сам файл модели остаётся на диске. Если код продолжает обращаться к удалённому идентификатору, исправьте привязку или исходники перед следующим запуском.
При смене проекта или изменении исходного файла во время проверки прежний черновик перестаёт быть актуальным. Повторите выбор и проверку в правильном проекте; старое подтверждение не переносится автоматически.
Если импорт не проходит
Каталог недоступен: проверьте выбранный папочный проект и запущенный EngineHost. Неправильная UTC-дата, неполные вектора или неположительное стандартное отклонение требуют исправления контракта, а не повторного нажатия импорта.
Сообщение «Stop and close the prepared or running simulation before changing attached models.» означает, что движок защищает подготовленный или активный снимок стратегии. Остановите и закройте симуляцию перед изменением моделей. Если отказ сохраняется до запуска новой сессии, приложите версию и точный сценарий к обращению в поддержку; не изменяйте манифест вручную в обход проверки.
Несовпадение формы входа или неподдерживаемый артефакт проверяйте по точному сообщению движка. Не переименовывайте расширение другого формата в .onnx. Для сравнения используйте отпечатки файла, схемы признаков и манифеста в карточке.
Для поддержки сохраните версию сборки, идентификатор модели, форму входа/выходов и сообщение ошибки. Полные обучающие данные и частные веса передавайте только при необходимости.
Создать и настроить ML-профиль
Откройте папку нужной C#-стратегии, подтвердите доверие к рабочей области и дождитесь запуска EngineHost. В палитре команд откройте «ONNX-модели», затем «ML-профили и обучение». Профили и история запусков принадлежат этому проекту.
- Выберите «Создать ML-профиль» и задайте ID, например btc15. Допустимо до 64 строчных латинских букв, цифр, дефисов и подчёркиваний. Начните с буквы или цифры.
- В открывшемся JSON проверьте горизонт прогноза, даты обучения, валидации и проверки, параметры LightGBM и MLP, порог решения и издержки. Сохраните файл. Для повторного открытия выберите «Настроить ML-профиль».
Текущий шаблон обучения рассчитан на минутные свечи Binance Spot BTCUSDT. Сохраните разные профили, чтобы сравнивать конфигурации по одному набору данных.
Подготовить данные и обучить модель
Для обучения требуется установленный Python 3.11, 3.12 или 3.13. Studio создаёт отдельное окружение проекта и устанавливает закреплённые зависимости. На macOS для LightGBM требуется libomp. Подготовка окружения и загрузка архива требуют доступа к сети.
- Выберите «Подготовить окружение Python», профиль и установленную версию Python. Дождитесь завершения.
- Для образца выберите «Загрузить историю BTC для эксперимента» и дождитесь проверки контрольных сумм. Для этого источника задайте границы по началу месяца.
- Выберите «Обучить ML-профиль». Укажите загруженный образец, сохранённую историю BTCUSDT Spot или снимок OHLCV в CSV/JSON. Дождитесь завершения. Остановить задачу можно из уведомления или через «Отменить задачу обучения ML».
- Выберите «Открыть отчёт эксперимента» и нужный запуск. Проверьте даты, покрытие истории, качество прогноза и результат после заданных издержек. Для проверки другой конфигурации создайте новый запуск.
При обучении Studio сохраняет снимки конфигурации и входных данных. Сравните LightGBM и MLP с простыми базовыми моделями на отложенном периоде. Для исследования запаздывающего обобщения задайте mlp_mode=extended, предел эпох и времени. Сохраняются кривые обучения и валидации и контрольные точки. Контрольную точку выбирают по валидации.
Подключить версию к стратегии
После успешного обучения и экспорта выберите «Подключить обученную модель к стратегии», завершённый запуск и lightgbm или mlp. Проверьте, что нужная стратегия активна и симуляция не подготовлена и не запущена. Studio добавит запечатанный пакет .xtmodel в каталог проекта и покажет его ID.
В коде стратегии откройте этот ID через Models.Open и передайте признаки в Predict. Используйте тот же порядок признаков и ту же обработку свечей, что при обучении. Для этого шаблона нужны 120 последовательных закрытых минутных свечей. Проверка модели на новом периоде должна начинаться после границы данных, использованных при обучении и валидации.
Чтобы получить готовый пример, выберите «Создать пример ML-стратегии», укажите запуск и модель. Откройте сгенерированную папку как отдельную стратегию. Пример записывает прогноз probability_up в журнал и не выставляет ордера. Начните с небольшого исторического прогона. Сверьте версию модели и сообщения журнала.
Запустить в Launcher или на сервере
Сохраните проект с подключённой моделью. При экспорте стратегия и .xtmodel входят в один комплект робота. На стороне запуска прогноз считает встроенный ONNX; окружение Python, исходный набор данных и отчёты остаются в проекте обучения.
Для локального запуска откройте стратегию в Studio, выберите «Запустить в лаунчере», локальный компьютер и режим Paper. Подробнее см. «Как робот попадает в лаунчер». После старта откройте журнал Launcher и проверьте, появились ли прогнозы после накопления контекста.
Для удалённого запуска сначала подключите совместимый сервер XTester. Откройте нужную стратегию, выберите «Запустить в лаунчере» и укажите сервер. Та же форма открывается через «Запустить робота здесь…» в меню сервера. Сверьте стратегию, сервер и режим Paper, затем подтвердите запуск и прочитайте журнал удалённого робота.
Если пакет проверяется на другом компьютере, передайте его целиком. Для следующей версии модели обновите ID в стратегии, повторите проверку и заново соберите или обновите робота.
Обучить и подключить через MCP или Copilot
Через «Подключить внешнего агента (MCP)» привяжите клиент к нужному проекту. Для записи нужны права записи и confirm=true. В примере ниже передавайте каждый JSON в указанный инструмент. Подставьте реальные config_hash и job_id из ответов. К следующей операции переходите после completed. Для уже подготовленного окружения и сохранённой истории можно выбрать data_source=stored.
Операция attach принимает job_id завершённого обучения. Для отдельного примера используйте operation=strategy, profile_id, expected_hash, training_job_id и model. Для отмены вызовите ml_profiles_cancel с job_id и confirm=true и перечитайте состояние. Если ответ потерялся, сначала запросите список jobs. Если вы переключили проект, вернитесь в исходный.
В обычном чате Copilot инструменты называются xtester_ml_profiles_read, xtester_ml_profiles_manage и xtester_ml_profiles_cancel. Пример запроса: «В открытом проекте создай профиль btc15, подготовь окружение Python 3.13, загрузи историю BTC для эксперимента, обучи модель и покажи отчёт. Подключи LightGBM только после моего подтверждения». Убедитесь, что в запросе на подтверждение указан нужный проект. Для запуска робота используйте описанные выше шаги Launcher.
ml_profiles_manage {"operation":"save","profile_id":"btc15","confirm":true}
ml_profiles_read {"operation":"profile","profile_id":"btc15"}
ml_profiles_manage {"operation":"prepare","profile_id":"btc15","expected_hash":"<config_hash>","python_version":"3.13","confirm":true}
ml_profiles_read {"operation":"job","job_id":"<prepare_job_id>"}
ml_profiles_manage {"operation":"download","profile_id":"btc15","expected_hash":"<config_hash>","confirm":true}
ml_profiles_read {"operation":"job","job_id":"<download_job_id>"}
ml_profiles_manage {"operation":"train","profile_id":"btc15","expected_hash":"<config_hash>","data_source":"sample","confirm":true}
ml_profiles_read {"operation":"job","job_id":"<training_job_id>"}
ml_profiles_read {"operation":"report","job_id":"<training_job_id>"}
ml_profiles_manage {"operation":"attach","job_id":"<training_job_id>","model":"lightgbm","confirm":true}
ml_profiles_read {"operation":"models"}Запустить обученную стратегию через агента
Для запуска сначала подключите модель к стратегии и проверьте исторический прогон. Действия запуска агента доступны в Paper.
Локальный Launcher. Экспортируйте робота командой launcher_export_bundle или через Studio. Добавьте файл через действие launcher_add_bot с bundlePath. Перечитайте список через launcher_list_bots, затем запустите нужного робота через launcher_start_paper_bot с botId. Проверьте статус и журнал.
Сервер. Получите serverId через server_list. Вызовите server_deploy_strategy с mode=paper и ровно одним источником: strategyPath для папки стратегии открытого проекта или bundlePath для переносимого экспорта. Если вернулся deployId, проверьте его в agentDeploys результата server_list. Откройте журнал робота после старта.
В MCP передавайте эти действия в run_studio_action с полями action, input и confirm=true для записи. В Copilot те же действия имеют префикс xtester_, например xtester_server_deploy_strategy. Для локального запуска можно попросить Copilot добавить готовый файл и запустить указанного робота в Paper после подтверждения. Режим LIVE выбирается и подтверждается в окне приложения.
run_studio_action {"action":"server_deploy_strategy","input":{"serverId":"<server_id>","mode":"paper","bundlePath":"<portable_bundle_path>"},"confirm":true}
run_studio_action {"action":"server_list","input":{}}Если обучение или запуск не удались
Если подготовка или обучение остановились, откройте вывод «Обучение ML» и журнал задачи. Проверьте версию Python, зависимости, доступность архива и непрерывность истории. Если сменился проект, вернитесь в папку, где была запущена задача.
Если в каталоге нет обученной модели, проверьте результат экспорта и выберите завершённый запуск. Если стратегия не стартует, сверьте ID модели, комплект файлов, входной контракт, рынок и таймфрейм. После пропуска минутной свечи пример заново накапливает контекст. Отчёт и наличие прогнозов сами по себе не подтверждают доходность или гроккинг.
Связанные команды
Команды в палитре
Команды доступны по названию через палитру команд; их доступность зависит от текущего проекта и состояния операции.
xtester.models.open