Аудит системы

Что он умеет и как быстро.

Всё на этой странице входит в @tradecanvas/chart 1.31.0. Время кадра измерено в Chrome на ноутбуке со встроенной графикой (Intel UHD); node scripts/bench-render.mjs из репозитория запускает те же сцены на вашем.

В цифрах

типов графиков
18
встроенных индикаторов
111
инструментов рисования
69
языков виджета
30
ключей стиля
101
переключателей функций виджета
112
сторонних runtime-зависимостей
0
модульных тестов
3,000+

Время кадра

Время отрисовки одного кадра при прокрутке. 16,7 мс — это 60 кадров в секунду.

ГрафикПлотность пикселейCanvas 2DWebGLCanvas 2D / WebGL
1600×900, 500 свечей + 4 индикатора · 2×227,4 ms19,6 ms
1600×900, все 200 000 баров на экране + 4 индикатора · 2×234,5 ms20,2 ms
1600×900, все 1 000 000 баров на экране + 4 индикатора · 2×234,5 ms16,7 ms
1600×900, тепловая карта стакана, 240 снимков × 80 уровней · 2×225,5 ms16,8 ms
Шесть графиков, у каждого 500 свечей и 2 индикатора · 2×223,5 ms17,2 ms
2560×1400, 2000 свечей + 4 индикатора · 1×141,6 ms17,7 ms
2560×1400, 2000 свечей + 4 индикатора · 1,5×1,570,8 ms17,6 ms
2560×1400, 2000 свечей + 4 индикатора · 2×2114,5 ms29,1 ms

По умолчанию используется Canvas 2D. renderer: 'webgl' (или 'auto') рисует область графика через WebGL 2 и переходит на Canvas 2D, если WebGL 2 нет или его контекст потерян.

Путь данных

Живой тик с Bollinger Bands, EMA, RSI и MACD на 100 000 баров
~0,001 ms
Полный пересчёт тех же четырёх индикаторов на 100 000 баров
~27 ms
Линия из 1 000 000 видимых точек, прореженная для одного кадра
~2,6 ms
Перерисовка при наведении (перекрестие, легенда)
~0,2 ms
При смене символа или таймфрейма завеса загрузки появляется только через
200 ms

Размер загрузки

После минификации и gzip, вместе со всем, что импортируется.

Chart, headless API
176 KB
ChartWidget, полный интерфейс
315 KB
Рендерер WebGL, загружается при первом использовании
18 KB

Как это проверяется

  • Более 3000 модульных тестов в семи пакетах запускаются в CI при каждом pull request.
  • Рендерер WebGL рисует свечи на тех же пикселях устройства, что и Canvas 2D; линии и заливки отличаются лишь в нескольких сглаженных пикселях по краям.
  • Рендерер WebGL проверен в Chromium, Firefox и WebKit. Без WebGL 2 или при потере его контекста график продолжает работать на Canvas 2D.
  • Примеры кода в документации и в навыке для агентов проходят проверку типов на настоящем API.
  • Графики доступны программам чтения с экрана и управляются с клавиатуры; на арабском, иврите и персидском виджет идёт справа налево.

Возможности

Фильтруйте по области или ищите по названию или API.

80 из 80
ВозможностьОбластьПодробности и API
Свечи, бары OHLC, линия, область, базовая линия, Хейкин-Аши, полые свечиТипы графиковcandlestick, bar, line, area, baseline, heikinAshi, hollowCandle
Ренко, линейный прорыв, Каги, крестики-нолики, бары диапазонаТипы графиковРазмер блока или ATR, число линий для прорыва, разворот в процентах или в цене, диапазон на бар
Объёмные свечи, Equivolume, область HLC, ступенчатая линия, линия с маркерами, максимум-минимумТипы графиковВсего 18 типов графиков
Основная серия скрытаТипы графиковОстаются только индикаторы и рисунки
Графики для дашбордовТипы графиковСтолбцы (группами, стопкой, горизонтальные), кольцевые и круговые диаграммы, диаграммы рассеяния и пузырьковые, гистограммы, календари, корреляционные матрицы, карты по секторам, кривые против часовой стрелки, спарклайны, круговые шкалы, тепловые карты и treemap, каскадные диаграммы, глубина стакана, кривые капитала
Canvas 2D или WebGL 2Отрисовкаrenderer: 'canvas' | 'webgl' | 'auto', setRenderer, событие rendererChange
Один отрезок на столбец пикселей при отдаленииОтрисовкаЛинии, полосы и гистограммы индикаторов, когда на бар приходится меньше пикселя
Миллион баров плавно прокручиваетсяОтрисовкаС четырьмя индикаторами, при плотности пикселей 2
Тепловая карта стакана, профиль объёма и рыночный профиль на GPUОтрисовкаpushDepthSnapshot(book, time)
Несколько графиков WebGL на страницеОтрисовкаДо 8 (setMaxWebGLCharts); остальные рисуются через Canvas 2D; возврат к WebGL, когда контекст восстанавливается
Чёткость при любом масштабе экранаОтрисовкаСвечи, объём и рисунки ложатся на физические пиксели при 100 %, 125 % и 200 %
Нет сторонних runtime-зависимостейОтрисовкаБольше нечего устанавливать и проверять
134 встроенных индикаторовИндикаторыТочки разворота шести видов, MA Cross, корреляция с другим символом
Источник ценыИндикаторыopen, high, low, hl2, hlc3, ohlc4, hlcc4
Индикатор поверх индикатораИндикаторыНапример, средняя от RSI, обновляемая на каждом тике
Несколько индикаторов в одной панели, перенос между панелямиИндикаторыmoveIndicatorToPane
Несколько экземпляров одного индикатораИндикаторыEMA 20 и EMA 50 рядом
Уровни и порогиИндикаторыRSI 30/70, CCI ±100, сохраняются вместе с макетом
Последнее значение на осиИндикаторыНа ценовой оси и на оси каждой панели, цветом линии
Панели сворачиваются, разворачиваются и меняются местамиИндикаторыСохраняется вместе с макетом
Шаблоны индикаторовИндикаторыПараметры, стиль, уровни и панель сохраняются и применяются вместе
Стиль и видимость каждой линииИндикаторыСкрытая линия не растягивает шкалу; setIndicatorDefaults
Дельта объёма и CVDИндикаторыОцениваются по барам
Экспорт значений индикаторовИндикаторыCSV или JSON, по столбцу на линию
Инкрементальные обновления на живых тикахИндикаторыupdate() пересчитывает только формирующийся бар
69 инструментов рисованияИнструменты рисованияЛинии, каналы, Фибоначчи, Ганн, вилы, волны Эллиотта, паттерны, циклы, проекции
Собственные настройки каждого инструментаИнструменты рисованияСтиль, свойства и координаты по ценовой сетке рынка
Длинные и короткие позицииИнструменты рисованияРиск:прибыль, объём по риску в процентах или в деньгах
Оповещения на рисункеИнструменты рисованияКогда цена пересекает линию тренда или канал так, как они нарисованы, в том числе на логарифмической шкале
Порядок, группы и шаблоныИнструменты рисованияНа передний план, на задний план, группировка, блокировка, скрытие
Заметки, выноски, стрелки, флажки, кисть, путь, криваяИнструменты рисованияРисование от руки и по нескольким точкам
Anchored VWAP и профиль объёма фиксированного диапазонаИнструменты рисованияСтроятся по барам графика
Ластик, зум рамкой, сильный магнит, горячие клавишиИнструменты рисованияAlt+T, Alt+H, Alt+J, Alt+V, Alt+C, Alt+F
Переход к дате; диапазоны от 1D до AllШкалы и времяБез ограничения на отдаление
Часовые пояса IANA с переходом на летнее времяШкалы и времяИли собственный пояс биржи
Любой таймфрейм и тиковые барыШкалы и время7m, 90m, 2d строятся из того, что отдаёт поток; 100T — из его сделок
Левая и правая шкалы; логарифмическая, перевёрнутая и процентная для каждой панелиШкалы и времяЛевая шкала для оверлея или копии ценовой шкалы
Сравнение символов, спред и отношениеШкалы и времяНа своей шкале или панели, с выравниванием по времени
Расширенные часы торговШкалы и времяПо торговым сессиям символа
Форматы цены и времениШкалы и времяpriceFormat как функция или дроби вроде 1/32; timeFormatter
Шкала в знаках после запятой и шаге цены символаШкалы и времяpricePrecision, minTick: акция с шагом 10 никогда не покажет 21 705
Линии максимума и минимума, bid и askШкалы и времяBid и ask из тиков потока
Метки событий на графикеШкалы и времяsignalMarkerHover, signalMarkerClick
Готовые потоки и ваши собственныеДанные и реальное времяBinance, Bybit, Coinbase, Kraken, mock; WebSocketAdapter, PollingAdapter
Старая история подгружается при прокрутке влевоДанные и реальное времяfetchHistoryBefore
Поиск символов с подробностямиДанные и реальное времяsearchSymbols, resolveSymbol: знаки после запятой, шаг цены, сессии, часовой пояс
Данные символа, полученные после подключенияДанные и реальное времяСобытие адаптера symbolInfo
Стакан заявокДанные и реальное времяОбъём bid и ask по ценам; щелчок для торговли
Живые котировки для списков наблюденияДанные и реальное времяsubscribeQuotes, setQuotes, getQuote
Новости и статус рынкаДанные и реальное времяfetchNews; обратный отсчёт до открытия или закрытия
Правила биржиДанные и реальное времяsetMarket: шаг цены по ценовым диапазонам, дневные верхний и нижний пределы, лоты, сессии; HOSE, HNX, UPCoM и фьючерсы на VN30
Ордера и позиции на графикеТорговляПеретаскивание для изменения; отмена, закрытие и разворот прямо с линии
Отметки исполненияТорговляПричина и прибыль или убыток в executionFill
Тикет ордераТорговляОбъём, тип, стоп-лосс и тейк-профит, срок действия, проверка по ходу ввода; шаг цены, верхний и нижний пределы и лоты биржи
Панель счётаТорговляПозиции с текущей прибылью и убытком, активные ордера, исполнения
Сигналы и торговые зоныТорговляКлючи стиля markers.*, tradeZones.*
Бэктестинг и метрики рискаТорговля@tradecanvas/analytics: комиссия, проскальзывание, Sharpe, Sortino, Calmar, просадка
Оповещения не только по уровню ценыОповещения и реплейПересечение линии линией, движение на N% за N баров, по закрытию бара, со сроком действия
Реплей баров более мелкими шагамиОповещения и реплейСтарший таймфрейм проигрывается из младших баров
Бумажная торговля в реплееОповещения и реплейОрдера исполняются по проигрываемым ценам
Реплей по сетке графиковОповещения и реплейВсе графики идут синхронно
Реплей для приложенийОповещения и реплейstartTime, hideHistory, duration, метки появляются по ходу проигрывания, replayComplete
Сетка синхронизированных виджетовРабочая областьДо 6, с общими символом, таймфреймом, перекрестием, временем и рисунками
Именованные макеты в вашем хранилищеРабочая областьСохранение, открытие, переименование, автосохранение; LayoutStorage для сервера
Отмена и повтор для всегоРабочая областьРисунки, индикаторы, настройки и тип графика; recordUndo
Контекстные меню по областямРабочая областьРисунки, область графика, панели, ценовая ось, ось времени
Списки наблюденияРабочая областьНесколько списков, порядок меняется перетаскиванием
События для хост-приложенияРабочая областьsymbolChange, timeframeChange, ordersChange, executionFill, styleChange и другие
Три оформления виджетаНастройкаStudio, Terminal, Capsule; ui и setUI; CSS-переменные --tcw-*
Вид графика по ключамНастройкаapplyOverrides по 101 типизированному ключу, на слое хоста и слое пользователя
Настройки, доступные для каждого ключаНастройкаВкладка стиля для текущего типа графика, вкладка торговли
112 переключателей функцийНастройкаfeatures, setFeatures, isFeatureOn; меняются на лету
Свои элементы в виджетеНастройкаКнопки и выпадающие списки панели инструментов, кнопки боковой панели, элементы строки состояния, слоты, пункты меню
Свои горячие клавишиНастройкаaddHotkey с учётом раскладки клавиатуры
Виджет на 30 языкахЯзыки и доступностьАрабский, иврит и персидский справа налево
Программы чтения с экрана и клавиатураЯзыки и доступностьСводка графика, бары по одному, диалоги с клавиатуры
Документация на шести языках, этот сайт — на четырнадцатиЯзыки и доступностьEnglish, Tiếng Việt, 简体中文, 日本語, 한국어, Español
Компоненты React, Vue и SvelteРазработчикамРеактивные props: overrides, indicators, features
ПлагиныРазработчикамИндикаторы, инструменты рисования, типы графиков и оверлеи; overlayScale и getPriceStep для рисования по ценовой сетке
Документация для агентов-программистовРазработчикамllms.txt, llms-full.txt и навык для агентов

Известные ограничения

  • Canvas 2D остаётся рендерером по умолчанию, пока WebGL не опробован на большем числе устройств; частота кадров WebGL в Safari и на экранах 5K ещё не измерялась.
  • При плотности пикселей 2 на графике 2560×1400 одна только композиция в браузере занимает около 23 мс на встроенной графике, поэтому кадры WebGL там в среднем длятся 29 мс.
  • Тиковые таймфреймы строятся из последних сделок, которые возвращает поток; более старую тиковую историю загрузить нельзя.
  • Дельта объёма и CVD оцениваются по барам, а не по стороне каждой сделки.
  • Одновременно через WebGL рисуют не более 8 графиков на странице; остальные рисуются через Canvas 2D.