К статье
Справка XTester
XTester Studio

Проверка робота

Проверьте готовность робота и выполните бэктест его файла из XTester Studio.

Проверено: Для версий: 1.0.0-preview.1

Предполётная проверка

Где открыть

команда «XTester: Проверка робота».

Порядок действий
  1. Откройте «Проверку робота».
  2. Если проверяете готовый файл, нажмите «Выбрать файл робота…». Без файла проверка использует открытый проект.
  3. Нажмите «Выполнить предполётную проверку» и прочитайте полученные причины допуска или отказа.
  4. Для расчёта файла используйте отдельный блок «Бэктест робота».
Скриншот программыXTester 1.0.0-preview.1
Окно «Проверка робота» до запуска проверки и без подключённых роботов.Снимок интерфейса · XTester 1.0.0-preview.1
  1. Для работы с файлом робота выберите его здесь.
  2. Предполётная проверка выполняется отдельной кнопкой.
  3. Для бэктеста робота требуется его файл.

Панель показывает роботов Launcher на этом компьютере и позволяет отдельно проверить готовность робота. Можно работать с открытым проектом или выбрать файл робота. Для бэктеста робота нужен именно файл.

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

Создание и оформление приложения робота описаны в отдельном руководстве «Свой лаунчер (White Label)».

Бэктест робота

Бэктест робота — это headless-бэктест файла тем же движком, что считает обычный бэктест. Ключи при этом не затрагиваются.

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

Если при выпуске стартовые балансы проекта финансируют рынок робота, робот уносит их с собой: бэктест робота и режим Paper стартуют с них, а депозит остаётся запасным — для рынка, которого в таблице нет. Живой запуск их не использует: он торгует реальным счётом биржи. Такой робот записан схемой бандла v8, и старый лаунчер откажется его открыть — обновите лаунчер. Бэктест со стартовыми балансами в Лабораторию стратегий не сохраняется: Лаборатория сравнивает бэктесты с одним депозитом.

Границы панели

Studio показывает только проверки. Кокпит, выбор режима исполнения, гейты допуска и терминал живут в самом приложении лаунчера, а не в редакторе.

«Запустить в лаунчере» в разделе «Лаунчер» (и в заголовке раздела стратегий) компилирует робота и передаёт его в лаунчер, где он сразу стартует. Повторный запуск заменяет версию остановленного робота; работающего робота сначала нужно остановить. «Свой лаунчер (White Label)…» рядом собирает приложение робота с вашим названием, логотипом и цветом.

Приложение несёт только то, что нужно роботу: коннекторы его бирж (все, если профиль запуска может выбрать любой инструмент) и среду ML-моделей, только если они у стратегии есть; мастер заранее показывает ожидаемый размер для каждой платформы.

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

Перезапуск LIVE-робота

LIVE-робот ведёт журнал своих ордеров на диске. Каждый ордер записывается до того, как уходит на биржу; если записать не удалось, ордер не отправляется. Журнал и история ордеров лежат в папке данных XTester (Launcher/Orders), история — файлами по месяцам.

Скриншот программыXTester 1.0.0-preview.1
В этом разделе выбирается реакция на расхождение с журналом и срок хранения истории ордеров.Снимок интерфейса · XTester 1.0.0-preview.1

Если робот упал, был перезапущен или обновлён, при следующем старте он сверяет биржу со своим журналом: свои висящие ордера и позицию он забирает обратно, а ордера, исполненные или снятые, пока он лежал, объясняет по исполнениям на бирже. Пустой рынок в этом случае не требуется.

Падение робота, потеря связи с XTester, перезапуск или остановка службы и перезагрузка сервера — не остановка: робот только выключает торговлю, ордера не снимает, позицию не закрывает, а OnFinish стратегии не вызывается. Всё это он подхватывает при следующем запуске. Кнопка «Стоп» делает то, что выбрано в её диалоге: снять ордера, закрыть позицию, и то и другое или ничего.

Что делать, если биржа не совпала с журналом (чужой ордер, ручная сделка, позиция не сходится), задаётся в профиле запуска, в разделе «Перезапуск LIVE»: «Предупредить и продолжить» (по умолчанию) — робот продолжает и пишет расхождения в журнал робота; «Не торговать» — робот не включает торговлю и ничего на бирже не трогает; «Не обращать внимания» — продолжает, расхождения остаются только в истории. Чужие ордера робот никогда не берёт себе.

Если исход команды неизвестен (запрос ушёл, ответа не было) или робот закрывал позицию, когда остановился, он не продолжает сам при любой настройке: это решает человек.

Там же задаётся, сколько месяцев истории ордеров хранить кроме текущего (по умолчанию 1, 0 — всю); старые файлы удаляются при старте робота.

Фьючерсный счёт на старте

Профиль запуска фьючерсного робота задаёт «Режим маржи на старте» (кросс или изолированная) и «Плечо на старте» (целое, 1–125): в Studio — рядом с опросом ордеров, в лаунчере — в профиле робота рядом с лимитами риска. Пусто (0) — робот оставляет то, что есть на счёте биржи. Стратегия по-прежнему может менять оба из кода через SetMarginMode и SetLeverage — теми же вызовами.

Прежде чем LIVE-робот начнёт торговать, его старт настраивает счёт: сначала режим позиций «в одну сторону» (движок торгует только так), затем режим маржи, затем плечо. Режим старт переключает, только пока на рынке нет позиции и открытых ордеров; иначе запуск отклоняется с причиной. Режим маржи не меняется под позицией или открытыми ордерами, и плечо под ними не повышается. Бэктест и бэктест робота начинаются с теми же значениями.

У Binance, Bybit, OKX, Bitget, MEXC, BingX, Gate.io, HTX, BloFin и Kucoin есть режим «в одну сторону» — старт включает его, когда рынок пуст. XT, DeepCoin, Weex и CoinW держат лонг и шорт раздельно: робот держит открытой одну сторону, ордер против неё её уменьшает, а ордер, который закрыл бы позицию и открыл другую сторону сразу, отклоняется — сначала закройте позицию. У Coinbase и Crypto.com одна позиция на символ.

Режим маржи ставится собственным вызовом биржи у Binance, Bitget, Kucoin, BingX, XT и Weex; вместе с плечом — у MEXC, DeepCoin и BloFin; с каждым ордером — у OKX; HTX работает весь сеанс в режиме значения старта. У Bybit, Gate.io, CoinW, Coinbase и Crypto.com другой режим маржи ставится на бирже: значение старта, которое не поставить, отклоняет запуск. HTX и CoinW берут плечо с каждым ордером и не умеют его читать: без значения старта и без открытой позиции задайте «Плечо на старте».

Серверы

Серверы добавляются на вкладке «Роботы» лаунчера: адрес, порт, логин и пароль или файл ключа SSH. Пароль и ключ хранятся зашифрованными только на этом компьютере. При первом подключении XTester показывает отпечаток ключа сервера: сравните его с тем, что показывает хостинг. Позже сервер с другим ключом XTester отклонит.

Скриншот программыXTester 1.0.0-preview.1
На карточке видны адрес, состояние и команда «Настроить сервер…». Этот локальный учебный адрес не отвечает.Снимок интерфейса · XTester 1.0.0-preview.1

«Настроить сервер…» в меню строки сервера ставит на сервер агента XTester. Сначала идёт проверка, которая ничего не меняет. Нужна Ubuntu 22.04 или новее на процессоре x86_64, systemd, не меньше 2 ГБ свободного места и вход как root (или пользователь с sudo без пароля). Затем XTester показывает, что будет создано и что не будет тронуто, и ничего не меняет до нажатия «Настроить».

Настройка выгружает сборку сервера из этой Studio и проверяет её SHA-256 на сервере. Затем создаётся пользователь xtester без пароля, папка /opt/xtester и службы xtester-agent и xtester-robot@, а XTester получает свой ключ для входа как xtester. В конце XTester спрашивает агента через SSH-соединение: порты наружу не открываются. Файрвол, sshd, Docker/Amnezia, веб-сервер и пароль root не трогаются.

Журнал настройки идёт построчно в панель «Вывод» («XTester: сервер <имя>»). Его копия сохраняется в данных XTester (logs/servers/<имя>/) и на сервере в /opt/xtester/logs. Пароли и ключи в журнал не попадают. Повторная настройка обновляет сервер до версии этой Studio, запущенные роботы продолжают работу.

«Перенастроить сервер…» убирает с сервера всё, что поставил XTester, и настраивает его заново: роботов и их данные, ключи бирж на сервере, службы, /opt/xtester, пользователей xtester и xtester-logs, ключ XTester (вместо него создаётся новый). Перед этим XTester показывает список роботов. Про робота, который торгует на бирже, спрашивает, как его остановить: оставить ордера и позицию, снять ордера или снять ордера и закрыть позицию. Выбора по умолчанию нет. Чужое на сервере не трогается.

Если Ubuntu переустановлена в панели хостинга, сервер отвечает другим ключом, и в его строке появляется «Принять новый ключ сервера…». XTester показывает прежний и новый отпечатки. Без переустановки смена ключа — признак подмены: такой ключ не принимайте. После принятия можно ввести новый пароль root из панели хостинга и настроить сервер с нуля. Отформатировать диск по SSH нельзя, это делается в панели хостинга.

Связанные команды

Команды в палитре
Название командыИдентификатор

Команды доступны по названию через палитру команд; их доступность зависит от текущего проекта и состояния операции.

Свой лаунчер (White Label)…xtester.buildRobotPackage
Показать в лаунчереxtester.launcherBots.activate
Обновить роботовxtester.launcherBots.refresh
Запустить в лаунчереxtester.runInLauncher
Принять новый ключ сервера…xtester.servers.acceptKey
Добавить сервер…xtester.servers.add
Проверить серверxtester.servers.check
Запустить робота здесь…xtester.servers.deployRobot
Экспорт серверов…xtester.servers.export
Импорт серверов…xtester.servers.import
Уведомления в Telegram…xtester.servers.notify
Сведения о сервереxtester.servers.open
Сведения о роботеxtester.servers.openRobot
Удалить сервер…xtester.servers.remove
Перенастроить сервер…xtester.servers.reset
Настроить сервер…xtester.servers.setup
Обновить стратегию…xtester.servers.updateStrategy
Веб-панель…xtester.servers.webPanel
Проверка роботаxtester.showLauncherChecks
Запустить в лаунчереxtester.strategy.runInLauncher