Статистика
StatisticsWidget — таблица параметров статистики стратегии: прибыль, просадка, число сделок, задержки. Панель предназначена только для чтения: одна строка на параметр, строки сгруппированы по области, к которой параметр относится.

Создание и обновление
import {
StatisticsWidget,
type TradingHost,
} from '@stocksharp/trading-controls';
declare const host: TradingHost;
const statistics = StatisticsWidget.create(
document.querySelector<HTMLElement>('#statistics')!,
{},
{ host },
);
statistics.update([
{
key: 'NetProfit',
category: 'pnl',
categoryText: 'Прибыль',
order: 1,
name: 'Чистая прибыль',
description: 'Результат прогона',
value: 11_055.75,
},
{
key: 'MaxProfitDate',
category: 'pnl',
categoryText: 'Прибыль',
order: 2,
name: 'Дата максимума',
value: '2024-03-26T07:30:00Z',
},
{
key: 'NetProfit',
category: 'pnl',
categoryText: 'Сделки',
order: 100,
name: 'Число сделок',
value: 1_340,
},
]);
Набор зависимостей StatisticsDeps состоит из единственного обязательного поля host. Обработчиков действий у контрола нет: статистику формирует стратегия, отменять, перезагружать или редактировать в панели нечего. Второй аргумент create — сохранённое состояние панели; контрол его не использует.
update заменяет весь набор строк целиком. Стратегия публикует свои параметры как одну таблицу, поэтому исчезнувшая из набора строка считается прекратившей существовать, а не переставшей меняться. Идентичность строки определяется полем key.
Строки и порядок
Строка описывается типом StatisticRow:
| Поле | Назначение |
|---|---|
key |
Устойчивый идентификатор параметра. |
category |
Ключ группы, не зависящий от языка. |
categoryText |
Заголовок группы для показа. При отсутствии используется category. |
order |
Место параметра в реестре. |
name |
Локализованное название параметра. |
description |
Локализованное пояснение, показывается всплывающей подсказкой на ячейке названия. |
value |
Число, дата или строка. null — параметр ещё не измерен. |
Настольный вариант таблицы получает строки отражением по параметрам стратегии; в браузере такого механизма нет, поэтому строки приходят от хоста уже готовыми — с переведёнными названием и описанием.
Группировка ведётся по category, а не по categoryText: группировка по переведённому заголовку перестраивала бы таблицу при смене языка. Порядок групп задаёт наименьший order среди их параметров, поэтому прибыль идёт выше просадки, а та — выше счётчиков сделок. Сортировка по названию или по значению разнесла бы параметры, которые читаются вместе.
Видимых столбцов два: Name и Value. Столбцы category и order объявлены, но скрыты — они нужны для группировки и сортировки, а читателю ничего не сообщают. В экспорт попадают только два видимых столбца.
Форматирование значений
Текст ячейки значения формирует экспортируемая функция formatStatistic(value):
import { formatStatistic } from '@stocksharp/trading-controls';
formatStatistic(11_055.756); // '11055.76'
formatStatistic(1_340); // '1340'
formatStatistic('2024-03-26T07:30:00Z'); // '2024-03-26'
formatStatistic(null); // ''
Число округляется до двух знаков и показывается без хвостовых нулей. Дата — только день: параметры такого рода описывают прогон целиком, и время в них было бы шумом. Строка распознаётся как дата, лишь когда начинается с ГГГГ-ММ-ДД; иначе она остаётся текстом. Отсутствующее значение даёт пустую ячейку, а не ноль, который читался бы как измеренный результат.
Сортировка выполняется по исходному значению, поэтому число сортируется числом, а не строкой.
Что делает контрол, а что хост
Контрол берёт от хоста весь видимый текст через host.t, включая подписи столбцов, заголовок панели, надпись для пустой таблицы и пункты контекстного меню таблицы. Кнопка закрытия вызывает host.close, экспорт выгружает таблицу в XLSX. При создании экземпляр регистрируется через host.register, при dispose — снимается через host.unregister.
Собственных настроек в host.preferences контрол не хранит. Данные он не запрашивает: строки поставляет хост вызовом update.
Идентификатор типа панели доступен как StatisticsWidget.TYPE и равен ControlTypes.Statistics.
Публичные методы
StatisticsWidget.create(hostEl, state, deps)— создать панель в указанном контейнере.update(rows)— заменить весь набор строк статистики.dispose()— освободить ресурсы.
Панель также поддерживает сортировку, выделение нескольких строк, контекстное меню и экспорт в XLSX.