XTester 0.0.68: стабильность долгих сессий и более надёжная отладка

Основной объём версии 0.0.68 связан со стабильностью долгих рабочих сессий, отладкой стратегий и поведением интерфейса в ситуациях, где раньше можно было потерять время или незаметно остановить активный процесс.
Стабильность при долгой работе
Один из разобранных сбоев завершал XTester с кодом 0xffffffff во время работы с AI Copilot и редактором стратегии. Это был не обычный .NET exception, а исчерпание GDI/USER-ресурсов процесса.
Причина состояла в накоплении объектов интерфейса: подсказок, шрифтов и других графических ресурсов, которые создавались повторно при обновлении панели Copilot, переключении вкладок и перерисовке отдельных элементов. При длительной сессии количество таких объектов могло приблизиться к системному лимиту Windows.
В 0.0.68 переработано управление этими ресурсами:
- повторно используемые подсказки и шрифты больше не создаются при каждом обновлении;
- график, окно контроля версий и другие часто перерисовываемые элементы используют кэшируемые ресурсы;
- старые дочерние элементы явно освобождаются перед перестроением интерфейса;
- в диагностику добавлены счётчики GDI/USER и периодическая запись их состояния.
Последний пункт нужен не только для этого исправления. Если в дальнейшем появится похожая утечка, её рост будет виден в диагностическом журнале до аварийного завершения процесса.
Отладка без ложной ошибки CS0269
Режим отладки добавляет в стратегию служебные пробы, чтобы показывать значения параметров, локальных переменных и полей. Раньше инструментарий пытался захватить в том числе out-параметр до его первого присваивания. В результате пользовательский код был корректным, но инструментированная версия могла завершить компиляцию ошибкой CS0269.
В новой версии out-параметры исключены из раннего захвата. Дополнительно изменён сценарий обработки ошибок:
- если инструментированная версия не собирается, XTester отдельно компилирует чистый код;
- если чистый код тоже содержит ошибку, пользователь получает реальные координаты ошибки в своём файле;
- если чистый код собирается, стратегия может быть запущена без отладочных проб, а ошибка инструментора фиксируется отдельно.
Двойной клик по текстовой ошибке компиляции теперь открывает соответствующий файл и строку, даже если запись в журнале изначально не содержала структурированной ссылки.
Первый OnBar и защита от зацикливания
Некоторые стратегии выполняют разовый прогрев индикаторов при первом вызове OnBar(). Такая работа может быть заметно тяжелее последующих баров и раньше могла ошибочно восприниматься как превышение лимита исполнения.
Для первого OnBar() добавлен отдельный прогревочный бюджет — до 15 секунд. При подключённом отладчике wall-clock лимит отключён, чтобы остановки самого отладчика не выглядели как зависание. При этом защита по числу контрольных точек остаётся включённой и продолжает останавливать реальное зацикливание.
Защита активной AI Research Lab
Закрытие главного окна или самой AI Research Lab во время исследования раньше могло завершить активную работу после слишком общего подтверждения выхода.
Теперь XTester явно сообщает, что лаборатория работает, и предлагает два понятных варианта: остановить исследование и выйти либо продолжить работу. Такой же контроль применяется при закрытии окна лаборатории программным способом.
Изменения интерфейса
В релиз также вошли несколько небольших правок:
- дерево проекта синхронизируется с активной вкладкой редактора и не возвращается к устаревшему выделению;
- окно обновления увеличено до 720×640, запоминает размер и открывается по центру главного окна;
- текст changelog больше не выделяется целиком при открытии окна обновления;
- длинные подписи в настройках автопаузы переразложены и не пересекаются с соседней колонкой.
Обновлённый лендинг
Одновременно обновлён сайт xtester.pw. На одной странице собраны текущие возможности XTester: данные 14 CEX и 3 DEX, спот и фьючерсы, линейные и обратные контракты, OOS-проверка, 163 MCP-инструмента и Live Launcher.
Версия 0.0.68 не меняет основной принцип работы с проектом. Она закрывает несколько проблем, которые проявлялись именно в ежедневной эксплуатации: долгие сессии, отладка сложных стратегий, навигация по ошибкам и безопасное завершение активного исследования.

