Spectra
Открыть документацию

scripting

Ограничения песочницы

Бюджеты CPU и памяти, что запрещает байт-код VM и как подключить более длинные окна.


Каждый скрипт выполняется внутри байт-код VM с жёсткими бюджетами CPU и памяти, применяемыми на каждое вычисление. Зациклившийся цикл не может обрушить приложение.

Скринер под песочницей — 200 мс на символ, fan-out всё равно ощущается мгновенным.

Бюджеты по умолчанию

| Поверхность | CPU на бар | Потолок памяти | |---|---|---| | Indicator (предпросмотр на графике) | 50 мс | 16 MB | | Alert (на вычисление) | 50 мс | 16 MB | | Screener (на символ) | 200 мс | 32 MB | | Drawing | 50 мс | 16 MB | | Strategy (на бар) | 100 мс | 32 MB | | Backtester (полный прогон) | 60 с | 256 MB | | VPS worker (на вычисление) | 200 мс | 64 MB |

Если бюджет превышен, VM прерывает вычисление и сообщает об ошибке нарушения песочницы в редакторе скриптов. Последующие вычисления продолжаются.

Запрещённые возможности

VM не имеет доступа к:

  • Файловой системе хоста.
  • Произвольным сетевым сокетам. Только проверенные встроенные функции (например, notify по известному списку вебхуков) выходят в сеть.
  • Нативному коду. Никакого FFI.
  • Часам хоста — скрипты читают временные метки баров через bar(N), а не Date.now().
  • Состоянию других скриптов. Каждый скрипт изолирован в песочнице.

Отмена

Скрипт можно отменить в середине вычисления:

  • Пользователь закрывает график, редактирует скрипт или нажимает аварийный выключатель.
  • Истекает бюджет CPU.
  • Для облачного worker: срабатывает лимит дневного убытка или административная пауза.

Отмена кооперативная — VM вставляет контрольные точки между байт-код операциями, поэтому плотный бесконечный цикл завершается в пределах ~1 мс от сигнала отмены.

Подключение более длинных бюджетов

Аккаунты тарифа Pro могут запросить расширенные бюджеты для конкретных скриптов через метаданные в файле:

// budget: cpu=500ms mem=128mb

Одобрение проверяется автоматически — злоупотребление понижает запрос.