scripting
Ограничения песочницы
Бюджеты CPU и памяти, что запрещает байт-код VM и как подключить более длинные окна.
Каждый скрипт выполняется внутри байт-код VM с жёсткими бюджетами CPU и памяти, применяемыми на каждое вычисление. Зациклившийся цикл не может обрушить приложение.
Бюджеты по умолчанию
| Поверхность | 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
Одобрение проверяется автоматически — злоупотребление понижает запрос.