Редактор пользовательских индикаторов: писать, запускать и выводить свои индикаторы

Диалог «Пользовательские индикаторы» позволяет написать скрипт индикатора, запустить его на реальных барах текущего графика и сохранить. Сохранённые скрипты попадают в панель индикаторов в группу «Мои скрипты», где включаются и выключаются как встроенные.

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 мс между двумя запусками, поэтому медленный скрипт задерживает только собственную отрисовку и никогда не подвешивает график. Результаты отбрасываются при смене инструмента или таймфрейма, но не тогда, когда бары просто переопубликованы. Значения параметров, заданные в панели индикаторов, перекрывают значения по умолчанию из скрипта, и каждый объявленный ключ всегда получает значение.

Ошибки, сообщаемые по каждому скрипту

Почему скрипт ничего не рисует — как это сообщается рядом с ним
КодСмыслЧто делать
threwcompute выбросила исключение или песочница её прервала (бюджет 2 с); показаны сообщение и строкаИсправьте указанную строку; прежняя отрисовка снимается, чтобы устаревшая кривая не сошла за рабочую
shapeУ выхода форма, которой рендерер не знаетВерните одну из форм: line, histogram, bands, markers, levels, table, panel
emptyСкрипт отработал без ошибок и ничего не нарисовалЭто нормально для скрипта меток, которому нечего отмечать; иначе проверьте прогрев и обратный порядок баров

Ограничения и подводные камни

  • Скрипты получают бары от новых к старым: bars[0] — самый свежий. Разверните массив перед применением любой формулы.
  • Язык хранится вместе со скриптом (JavaScript по умолчанию, Python или C++ при выборе на странице «Скрипты»). Скрипт на Python выполняется движком Python, а не как JavaScript.
  • Точки, время которых не совпадает ни с одним баром, отбрасываются; неконечные значения становятся разрывами. Скрипт не может рисовать за пределами графика.
  • У редактора намеренно нет подсветки синтаксиса: её заменяют кнопка запуска и точная ошибка.

Эта страница на других языках

Частые вопросы

Я сохранил скрипт, но на графике ничего нет. Почему?
Сохранение и отображение — два разных действия. Включите «Показывать на графике» на странице «Скрипты» или отметьте скрипт в группе «Мои скрипты» в панели индикаторов.
Сколько баров получает скрипт?
Не более 600 последних баров графика — и при запуске из редактора, и на живом графике. Сериализовать целый день баров со всеми уровнями стоило бы дороже самого расчёта.
Может ли мой скрипт выйти в сеть или к брокеру?
Нет. Скрипт выполняется в воркере, где fetch, XMLHttpRequest, WebSocket, importScripts и глобальный eval перезаписаны до запуска вашего кода, API Tauri не импортируется никогда, а протокол песочницы добавляет политику default-src 'none'. Ни доступа к файлам, ни API брокера.