Редактор пользовательских индикаторов: писать, запускать и выводить свои индикаторы
Диалог «Пользовательские индикаторы» позволяет написать скрипт индикатора, запустить его на реальных барах текущего графика и сохранить. Сохранённые скрипты попадают в панель индикаторов в группу «Мои скрипты», где включаются и выключаются как встроенные.
Senzoukria · Документация · Обновлено: сентябрь 2026
Где найти
- Где
- График Реплея → чип «Скрипт» (подсказка «Напишите свой индикатор (выполняется в песочнице)»); страница «Скрипты» → переключатель «Показывать на графике»
- Хранение
- Ключ localStorage orderflow.userIndicators.v1; видимость на каждом графике — в хранилище настроек индикаторов
- Область запуска
- До 600 последних баров, реальные данные графика, бюджет песочницы 2 с
- Ритм на графике
- Не более одного запуска в работе на скрипт и не менее 400 мс между двумя запусками
Что он делает
Диалог называется «Пользовательские индикаторы». Слева список сохранённых скриптов с их целью отрисовки; «+ Новый индикатор» создаёт скрипт с именем «Мой индикатор», скриптом по умолчанию (SMA за 20 периодов) и двумя параметрами — Период (20, от 1 до 500) и Цвет (#7ed321). Справа поле имени (не более 48 символов), выбор цели отрисовки и тот же редактор кода, что и на странице «Скрипты», с номерами строк и отступом по Tab.
Главная кнопка — «▶ Запустить на текущем графике». Она выполняет скрипт в песочнице на реальных барах графика, не более 600, и сообщает либо «✓ N выходов за X мс — на N барах», либо ошибку, у которой первым идёт номер строки. Блок «Консоль» перечисляет всё, что скрипт вывел через log() / console.log() (JavaScript) или print() (Python); если ничего не выведено, подсказка объясняет, какую функцию использовать. Escape закрывает диалог.
Настройки
| Элемент | По умолчанию | Что меняет |
|---|---|---|
| Имя индикатора | Мой индикатор | Подпись в списке, в панели индикаторов и на таблицах и карточках; до 48 символов |
| Цель отрисовки | На графике | «На графике» рисует поверх цены; «Отдельная панель» выделяет собственную панель под графиком |
| Параметр Период | 20 (мин. 1, макс. 500, шаг 1) | Передаётся скрипту как params.period; позже настраивается из панели индикаторов |
| Параметр Цвет | #7ed321 | Передаётся как params.color |
| Запустить на текущем графике | — | Выполняет скрипт максимум на 600 реальных барах и показывает выходы, время, журнал или строку с ошибкой |
| Сохранить | — | Сохраняет скрипт; несохранённые правки теряются при закрытии диалога |
| Удалить | — | Удаляет скрипт и выбирает следующий |
Как вывести скрипт на график
Сохранение скрипта его не рисует. На странице «Скрипты» переключатель «Показывать на графике» объясняет: «Индикатор рисуется на графике и попадает в панель индикаторов, в группу «Мои скрипты» — включайте и выключайте его оттуда, как любой другой.» Сохранение нового индикатора со страницы «Скрипты» включает его автоматически. В панели индикаторов рядом с каждым скриптом указано «наложение на график» или «отдельная панель»; если скрипт падает, там выводится ошибка.
На графике пользовательские скрипты выполняются в воркере со своим циклом: не более одного выполнения в работе на скрипт и порог в 400 мс между двумя запусками, поэтому медленный скрипт задерживает только собственную отрисовку и никогда не подвешивает график. Результаты отбрасываются при смене инструмента или таймфрейма, но не тогда, когда бары просто переопубликованы. Значения параметров, заданные в панели индикаторов, перекрывают значения по умолчанию из скрипта, и каждый объявленный ключ всегда получает значение.
Ошибки, сообщаемые по каждому скрипту
| Код | Смысл | Что делать |
|---|---|---|
| threw | compute выбросила исключение или песочница её прервала (бюджет 2 с); показаны сообщение и строка | Исправьте указанную строку; прежняя отрисовка снимается, чтобы устаревшая кривая не сошла за рабочую |
| shape | У выхода форма, которой рендерер не знает | Верните одну из форм: line, histogram, bands, markers, levels, table, panel |
| empty | Скрипт отработал без ошибок и ничего не нарисовал | Это нормально для скрипта меток, которому нечего отмечать; иначе проверьте прогрев и обратный порядок баров |
Ограничения и подводные камни
- Скрипты получают бары от новых к старым: bars[0] — самый свежий. Разверните массив перед применением любой формулы.
- Язык хранится вместе со скриптом (JavaScript по умолчанию, Python или C++ при выборе на странице «Скрипты»). Скрипт на Python выполняется движком Python, а не как JavaScript.
- Точки, время которых не совпадает ни с одним баром, отбрасываются; неконечные значения становятся разрывами. Скрипт не может рисовать за пределами графика.
- У редактора намеренно нет подсветки синтаксиса: её заменяют кнопка запуска и точная ошибка.
Связанные страницы
- Выходы скрипта: наложение, панель, таблица и карточка
- Скрипты на C++ (движок WASM)
- Ассистент по скриптам (ИИ)
- Накопленная дельта: объяснение
Эта страница на других языках
Частые вопросы
- Я сохранил скрипт, но на графике ничего нет. Почему?
- Сохранение и отображение — два разных действия. Включите «Показывать на графике» на странице «Скрипты» или отметьте скрипт в группе «Мои скрипты» в панели индикаторов.
- Сколько баров получает скрипт?
- Не более 600 последних баров графика — и при запуске из редактора, и на живом графике. Сериализовать целый день баров со всеми уровнями стоило бы дороже самого расчёта.
- Может ли мой скрипт выйти в сеть или к брокеру?
- Нет. Скрипт выполняется в воркере, где fetch, XMLHttpRequest, WebSocket, importScripts и глобальный eval перезаписаны до запуска вашего кода, API Tauri не импортируется никогда, а протокол песочницы добавляет политику default-src 'none'. Ни доступа к файлам, ни API брокера.