Errores de compilación y ejecución
Todos los códigos LS que puede mostrar el Editor y el gráfico de LootScript: texto del mensaje, causa y solución, errores frecuentes con ejemplos, límites de ejecución y casos en los que en vez de error se obtiene na.
Cada mensaje del compilador y del ejecutor de LootScript empieza por un código del tipo LS2008. El código no cambia entre versiones ni depende del idioma de la interfaz, por eso conviene buscarlo: aquí están todos los códigos que puede mostrar el terminal, con el texto del mensaje, la causa y la forma de arreglarlo.
Los mensajes se muestran en ruso si la interfaz del terminal está en ruso, y en inglés en cualquier otro idioma. Primero están los errores que aparecen con más frecuencia, luego los errores de ejecución y la tabla completa.
Где видны ошибки
При компиляции. El Editor compila el script en cada pausa de escritura. Lo que encuentra aparece en la pestaña “Problemas” en la parte inferior del Editor: código, texto y posición como «Стр 6:6». Un doble clic en la línea lleva el cursor al lugar del error. En el encabezado del Editor se muestra el resultado: «ок · 12 мс», «предупреждений: 2» o «ошибок: 1».
При выполнении. Un script sin errores de compilación puede detenerse en algún bar: se acabó el presupuesto de operaciones, un índice salió de los límites de un array, el símbolo es desconocido. Entonces en la pestaña “Salida” aparecerá una línea «Script detenido: LS6004: …», y en la ventana del Probador de estrategias se verá la misma causa. Los demás scripts, paneles y el terminal siguen funcionando.
Las diagnósticas son de tres niveles:
| Уровень | Что значит | Что с графиком |
|---|---|---|
| Ошибка | Скрипт не собран | No se añade al gráfico: «Un script con errores no se coloca en el gráfico — vea “Problemas”». Si el script ya estaba en los gráficos, permanece la versión anterior que funcionaba |
| Предупреждение | Скрипт собран, но результат может обмануть: например, перерисуется на живом баре | El script funciona |
| Сведение | Скрипт собран, но какая-то его настройка ничего не делает | El script funciona |
Как устроены коды
| Коды | Этап | О чём |
|---|---|---|
| LS0001–LS0009 | Чтение текста | Символы, строки, числа, цвета, директива #version |
| LS1000–LS1012 | Разбор | Скобки, блоки, порядок операторов, объявление скрипта |
| LS2000–LS2030 | Типы и имена | Неизвестные имена, типы, аргументы, na |
| LS3000–LS3033 | Смысл программы | ta.* в ветках, рекурсия, стратегии, библиотеки, request.security |
| LS4000–LS4009 | Пределы компиляции | Слишком много рядов, выводов, вызовов |
| LS5000–LS5013 | Перерисовка и честность теста | Значения, которые на истории выглядят иначе, чем вживую |
| LS6000–LS6036 | Выполнение | Бюджеты, индексы, коллекции, строки, объекты рисования |
| LS0999 | Внутренний сбой | Дефект компилятора — о нём нужно сообщить |
Частые ошибки компиляции
LS1009 — нет объявления скрипта
«Нет объявления скрипта — начните с indicator(“Название”)». El primer operador del fichero debe ser indicator(...), strategy(...) o library(...). Esta misma ошибка aparece si la declaración existe pero hay algo escrito antes. Los comentarios y la directiva #version 1 no molestan.
// Так нельзя: объявление не первое
len = input.int(14, "Длина")
indicator("RSI")indicator("RSI")
len = input.int(14, "Длина")Una segunda declaración en el mismo fichero da LS1008: el script sólo puede tener una.
LS2002 — неизвестное имя
«Неизвестное имя «…» — проверьте написание или объявите его выше». Normalmente es una errata o una función sin su namespace: todas las funciones de indicadores están en ta, las matemáticas en math, los colores en color.
avg = sma(close, 20)avg = ta.sma(close, 20)La misma falla ocurre si se lee una variable antes de la línea donde se declara. La lista completa de nombres está en la Referencia de funciones.
LS2008 — сравнение с na
«Сравнение с na всегда ложно — используйте na(x)». Cualquier comparación con na, incluyendo == y !=, da false, por eso el compilador no permite esa escritura.
x = ta.sma(close, 50)
plot(x == na ? close : x)x = ta.sma(close, 50)
plot(na(x) ? close : x)Lo mismo se escribe más corto con ??: plot(x ?? close).
LS2014 — значение меняется от бара к бару там, где нужна постоянная
««…» в «…» требует значение не слабее input, а передано series — возьмите input.*(…) или литерал». La longitud de la ventana en ta.* debe conocerse antes del primer bar. Una longitud que se elige condicionalmente en cada bar no es válida.
len = close > open ? 10 : 20
avg = ta.sma(close, len)Calcule ambas variantes y elija el resultado, no la longitud:
fast = ta.sma(close, 10)
slow = ta.sma(close, 20)
avg = close > open ? fast : slowSi la longitud debe fijarla el usuario, tómela de input.int(...).
LS3004 — вызов ta.* зависит от переменной из ветки
«Аргумент «…» нельзя вычислить вне ветки — вынесите вызов ta.* на верхний уровень». Las funciones ta.* recuerdan barras pasadas, por eso el compilador las evalúa en cada bar aunque la llamada esté dentro de un if. Si el argumento se declara solo dentro de la rama, en otras barras simplemente no existe.
var float avgBody = na
if close > open {
body = close - open
avgBody := ta.sma(body, 10)
}body = close - open
avgBody = ta.sma(body, 10)LS2017, LS2007, LS1006 — строки, условия и сравнения
Estas tres errores comparten causa: LootScript no convierte tipos implícitamente.
| Код | Сообщение | Как исправить |
|---|---|---|
| LS2017 | «Строку нельзя складывать с числом (… + …) — используйте str.tostring(…)» | "RSI " + str.tostring(r) en lugar de "RSI " + r |
| LS2007 | «Условие должно быть bool, а здесь …» | if volume > 0 en lugar de if volume — los números no son truthy |
| LS1006 | «Сравнения не сцепляются — напишите a < b and b < c» | low < close and close < high en lugar de low < close < high |
LS2018 и LS2019 — имя уже занято
««…» уже объявлено в этой области» (LS2018) — la variable se declaró por segunda vez con =. Para cambiar su valor use :=.
level = high
level := low««…» затеняет встроенное имя — выберите другое» (LS2019) — variable, función o tipo se llamaron igual que un series o función incorporada: close, time, hour, volume. Renombre, por ejemplo startHour en vez de hour. Los nombres de espacios como color o position pueden usarse como nombres de variable.
LS2004 и LS2005 — аргументы вызова
««…» ожидает … аргумент(ов), а передано …» (LS2004) и «У «…» нет параметра «…»» (LS2005). Compruebe la llamada con la firma en la Referencia: los nombres de parámetros se escriben exactamente como allí.
plot(close, colour = color.red)plot(close, color = color.red)LS3011 и LS5011 — стратегии
«strategy.* доступно только в strategy(…)» (LS3011): órdenes y estado de posición existen solo en un script declarado con strategy(...). Reemplace indicator("…") por strategy("…").
«Стратегия читает «…»: у стакана и ленты нет истории, бэктест был бы вымыслом» (LS5011): la estrategia se prueba sobre la historia, y book.* y tape.* no tienen historia — en cada bar pasado allí hay na.
strategy("Перекос стакана")
if book.imbalance(10) > 0.5 {
strategy.entry("L", strategy.long)
}Para historia del libro de órdenes existe el espacio depth: donde el libro está grabado, depth.* da valores en cada bar.
strategy("Перекос стакана")
if depth.imbalance(1.0) > 0.5 {
strategy.entry("L", strategy.long)
}LS5000–LS5006 — предупреждения о перерисовке
Estas advertencias no impiden que el script funcione. Indican que una línea en la historia se verá distinta de como se vio en vivo:
- LS5001 — llega al gráfico un valor que solo existe en el bar en vivo (
barstate.isrealtime,barstate.isnew). - LS5000 — llega al gráfico la variable
varip: acumula ticks del bar en vivo que no existen en la historia. - LS5006 — llegan al gráfico
book.*otape.*: en la historia la serie está vacía. - LS5003 — valor de un higher timeframe desde
request.securitysin[1]: el bar no cerrado aún va a cambiar. - LS5002 —
lookahead = trueenrequest.security: en la historia el script ve el futuro. - LS5005 — llegan al gráfico
math.randomotimenow: dos ejecuciones dan líneas distintas.
Si es intencionado — por ejemplo un indicador solo para trading en vivo — la advertencia puede dejarse.
LS3016 — настройка принята и ничего не делает
Esto es un aviso informativo, no un error. Aparece en scripts trasladados de otras plataformas: el parámetro existe por compatibilidad pero no influye en el terminal. La segunda parte del mensaje explica por qué.
| Что написано | Пояснение в сообщении |
|---|---|
maxBarsBack в объявлении |
la historia se carga por columnas completas |
format, precision, scale в объявлении |
el formato y escala los gestiona el terminal |
timeframe в объявлении |
el script se calcula en la temporalidad del gráfico; otra da request.security |
Grosor, estilo u otra opción de salida definida por expresión y no por constante (el color de plot o marcas que cambian por barra) |
esta compilación sólo lee esa opción como constante |
color en el cuarto y siguientes plot |
el panel dibuja solo las tres primeras series |
location.absolute en plotshape o plotchar |
la marca no tiene un series al que pegarse |
display, que el series no soporta |
ese series no tiene esa superficie |
Ошибки выполнения
Un error de ejecución detiene el script en el bar donde ocurrió. El texto aparece en la pestaña “Salida” como «Script detenido: LS6004: …».
LS6004 и LS6005 — скрипт работает слишком долго
«Скрипт исчерпал бюджет операций на бар — упростите цикл» (LS6004) y «Скрипт превысил лимит времени на проход» (LS6005). Cada bar tiene un presupuesto de 2 000 000 de operaciones. El tiempo también está limitado: todo el pase por la historia — 2 s, un tick de bar en vivo — 20 ms. Casi siempre la causa es un bucle que no termina o que procesa demasiados datos en cada bar.
var int n = 0
i = 0
while i < 10 {
n := n + 1
}var int n = 0
i = 0
while i < 10 {
n := n + 1
i := i + 1
}LS6002 и LS5004 — чтение будущего
El índice de la historia x[n] no puede ser negativo: close[-1] significaría el siguiente bar. Si el número negativo está literal en el texto, el compilador lo detendrá inmediatamente (LS5004). Si nace de un cálculo, el script se detendrá en el bar con el error «Desplazamiento negativo de historia — no se puede leer el futuro» (LS6002). Un índice mayor que el número de barras cargadas no provoca error: da na.
LS6001, LS6007, LS6019 — коллекции и объекты
- LS6001 «Индекс … вне границ» —
array.get,array.setomatrix.getfuera del tamaño. Compruebearray.size(a)antes de acceder. - LS6007 «Обращение к пустому объекту (na)» — la colección se declaró pero no se creó:
var array<float> a = nay luegoa.push(x). Créela conarray.new<float>(). - LS6019 «Объект рисования уже удалён или вытеснен по потолку — создайте его заново». Viven simultáneamente 500 objetos del mismo tipo, el más antiguo es desalojado. Eleve el límite con
maxLinesCount,maxLabelsCountomaxBoxesCounten la declaración o reutilice el objeto conset_*.
LS6017 и LS6018 — инструмент и таймфрейм в request.security
«Символ «…» неизвестен — проверьте формат «ПЛОЩАДКА:СИМВОЛ» или задайте ignore_invalid_symbol = true» (LS6017) y «Таймфрейм «…» не разбирается — ожидается «5», «60», «4h», «1D», «1W»» (LS6018). Con ignore_invalid_symbol = true un instrumento desconocido da na en vez de detenerse.
Пределы выполнения
| Что ограничено | Предел | Код при превышении |
|---|---|---|
| Операций на бар | 2 000 000 | LS6004 |
| Время прохода по истории / тика живого бара | 2 с / 20 мс | LS6005 |
| Элементов массива | 100 000 | LS6003 |
| Пар в словаре | 50 000 | LS6003 |
| Элементов матрицы | 1 000 000 | LS6003 |
Длина окна ta.* |
100 000 баров | LS6034 |
| Длина одной строки | 100 000 символов | LS6014 |
| Ячеек в таблице | 2000 | LS6029 |
| Слоёв теплового поля | 4 (от 0 до 3) | LS6036 |
| Объектов рисования одного вида | 500 по умолчанию | старые вытесняются |
Разных пар «инструмент + таймфрейм» в request.security |
8 | — |
Вызовов request.security |
32 | LS4009 при компиляции |
Когда ошибки нет, а значения нет
Muchas situaciones que en otros lenguajes harían caer el programa en LootScript dan na — un hueco en el gráfico, no una detención:
- la aritmética con
nadana:close - xconxvacío también es vacío; x[n]más allá del inicio de la historia —na;- la división entera por cero —
na, y la división en coma flotante por cero no detiene el script; book.*,tape.*yscreener.*en barras históricas —na;- clústeres, delta, interés abierto y la historia del libro de órdenes —
naen barras donde no hay datos. Compruebecluster.available,delta.availabley las flags adyacentes; ta.*en las primeras barras, hasta que la ventana se llena, —na.
na en el gráfico nunca se dibuja como cero: la línea se corta. Para sustituir el valor use nz(x), x ?? fallback o fixnan(x).
Все коды
LS0001–LS0009 и LS0999 — чтение текста
| Код | Сообщение | Что делать |
|---|---|---|
| LS0001 | Неожиданный символ «…» | Уберите символ, которого нет в языке |
| LS0002 | Строка не закрыта — добавьте закрывающую кавычку до конца строки | Закройте кавычку на той же строке |
| LS0003 | Блочный комментарий не закрыт — добавьте */ | Закройте /* … */ |
| LS0004 | Неизвестная escape-последовательность «…» в строке | Допустимы \n, \r, \t, \0, \\, \", \' и \u{…}; одиночную \ удвойте |
| LS0005 | Неверный числовой литерал «…» | Проверьте запись числа |
| LS0006 | Число «…» не помещается в тип | Уменьшите число |
| LS0007 | Неверный литерал цвета «…» — ожидается #RRGGBB или #RRGGBBAA | Шесть или восемь шестнадцатеричных цифр |
| LS0008 | Разделитель разрядов «_» стоит в начале, в конце или сдвоен | Пишите 1_000_000 |
| LS0009 | Неверная директива версии — ожидается #version <число> первой строкой | #version 1 в первой строке |
| LS0999 | Компилятор не справился с этим файлом — это дефект сборки, сообщите о нём | Сообщите в поддержку, приложите скрипт |
LS1000–LS1012 — разбор
| Код | Сообщение | Что делать |
|---|---|---|
| LS1000 | Неожиданно: … | Проверьте строку на лишние символы |
| LS1001 | Ожидалось «…», а встретилось … | Чаще всего не закрыта скобка |
| LS1002 | Ожидалось выражение, а встретилось … | После оператора или запятой не хватает значения |
| LS1004 | Ожидалось имя, а встретилось … | После var, func, . нужно имя |
| LS1005 | Ожидался блок в фигурных скобках, а встретилось … | Добавьте { … } |
| LS1006 | Сравнения не сцепляются — напишите a < b and b < c | Разбейте на два сравнения через and |
| LS1008 | Второе объявление скрипта — у скрипта может быть только одно | Оставьте одно объявление |
| LS1009 | Нет объявления скрипта — начните с indicator(“Название”) | Первой строкой — indicator, strategy или library |
| LS1010 | Слишком глубокая вложенность (больше 64) — вынесите часть в функцию | Разбейте выражение или блок |
| LS1012 | Тело if / for / while пишется в фигурных скобках: if cond { … } | Добавьте фигурные скобки |
LS2000–LS2030 — типы и имена
| Код | Сообщение | Что делать |
|---|---|---|
| LS2000 | Несовпадение типов: ожидался …, а получен … | Передайте значение нужного типа |
| LS2001 | Нельзя преобразовать … в … | Преобразуйте явно: str.tostring, math.round |
| LS2002 | Неизвестное имя «…» — проверьте написание или объявите его выше | Исправьте опечатку, добавьте пространство (ta.), объявите выше |
| LS2003 | «…» — не функция, вызывать нельзя | Уберите скобки: это ряд или константа |
| LS2004 | «…» ожидает … аргумент(ов), а передано … | Сверьте число аргументов со справочником |
| LS2005 | У «…» нет параметра «…» | Исправьте имя параметра |
| LS2006 | Аргумент «…» передан дважды | Уберите повтор |
| LS2007 | Условие должно быть bool, а здесь … | Сравните явно: x > 0, not na(x) |
| LS2008 | Сравнение с na всегда ложно — используйте na(x) | na(x) вместо x == na |
| LS2014 | «…» в «…» требует значение не слабее …, а передано … — возьмите input.*(…) или литерал | Литерал, input.* или константа вместо ряда |
| LS2015 | «…» объявлено константой — присваивать нельзя; объявите через var | Настройку input.*, переменную цикла и параметр функции менять нельзя — скопируйте значение в свою переменную |
| LS2017 | Строку нельзя складывать с числом (… + …) — используйте str.tostring(…) | str.tostring или str.format |
| LS2018 | «…» уже объявлено в этой области | := для нового значения или другое имя |
| LS2019 | «…» затеняет встроенное имя — выберите другое | Переименуйте |
| LS2020 | Ветви дают разные типы: … и … | Приведите ветви к одному типу |
| LS2021 | switch без ветви по умолчанию «=> …» — добавьте её | Добавьте => значение |
| LS2022 | У «…» не выведен тип элемента — укажите его: … | array.new<float>() |
| LS2028 | У поля «…» типа «…» не указан тип — напишите его перед именем: float … | float price в объявлении type |
| LS2029 | export «…»: у экспортируемой функции обязаны быть объявлены типы всех параметров и тип результата | Укажите типы |
| LS2030 | «…» в «…» читается до первого бара — нужен литерал или именованная константа | В объявлении — только постоянные значения |
LS3000–LS3033 — смысл программы
| Код | Сообщение | Что делать |
|---|---|---|
| LS3002 | «…» вызывает саму себя — рекурсия в LootScript запрещена | Замените рекурсию циклом |
| LS3003 | Взаимная рекурсия запрещена: … | Разорвите круг вызовов |
| LS3004 | Аргумент «…» нельзя вычислить вне ветки — вынесите вызов ta.* на верхний уровень | Вычислите аргумент и вызов вне if |
| LS3006 | «…» затеняет имя из внешней области (предупреждение) | Переименуйте внутреннюю переменную |
| LS3007 | «…» вне цикла | break и continue — только в цикле |
| LS3008 | return вне функции | return — только в теле функции |
| LS3009 | export «…» возможен только в library(…) | Уберите export или сделайте файл библиотекой |
| LS3010 | «…» без единого уровня (profit/loss/stop/limit/trail) — пустая операция (предупреждение) | Задайте стоп, тейк или трейлинг |
| LS3011 | strategy.* доступно только в strategy(…) | Объявите скрипт через strategy(...) |
| LS3012 | В библиотеке нельзя рисовать и объявлять входы: … | Перенесите вывод и настройки в индикатор |
| LS3013 | «…» внутри request.security не станет строкой настроек — объявите вход выше и передайте его значение | Объявите input.* выше и передайте переменную |
| LS3016 | Настройка «…» принята и ничего не делает: … (сведение) | Можно оставить или удалить |
| LS3018 | Библиотека «…» не найдена в папке библиотек — имя берётся из её library(“…”, N), a не из имени файла | Проверьте имя в объявлении библиотеки |
| LS3019 | Библиотеки «…» версии … нет; установлены: … | Укажите установленную версию |
| LS3020 | «…» внутри request.security: у стакана и ленты нет истории на чужой серии | Уберите book.*, tape.* из выражения |
| LS3025 | Функция «…» объявлена, но не вызывается — её тело проверено лишь пробно (предупреждение) | Вызовите функцию или удалите |
| LS3026 | «…» требует стоп, от которого считать размер: loss/stop у входа или в strategy.exit | Добавьте стоп к входу или strategy.exit |
| LS3028 | Эта сборка не поддерживает: … | Перепишите без этой конструкции |
| LS3029 | Ветвь switch для «…» повторяется — вторая недостижима | Уберите повтор |
| LS3030 | «…» — переменная графика, а выражение request.security считается на другой серии; передайте значение через input.* или посчитайте его внутри выражения | Посчитайте внутри выражения |
| LS3031 | Библиотеки импортируют друг друга по кругу: … | Разорвите круг импортов |
| LS3032 | В библиотеке «…» допустимы только объявления функций и импорты — здесь … | Уберите из библиотеки остальной код |
| LS3033 | Библиотека «…» не компилируется (…) — откройте её в Editor и почините | Исправьте ошибку в самой библиотеке |
LS4000–LS4009 — пределы компиляции
| Код | Сообщение | Что делать |
|---|---|---|
| LS4000 | Слишком много рядов: … при пределе 512 — уберите лишние ta.* или переиспользуйте переменные | Сократите число вызовов ta.* и переменных с историей |
| LS4001 | Программа слишком велика (больше 4096 встраиваний) — упростите функции | Уменьшите число вызовов пользовательских функций |
| LS4002 | Слишком много plot — панель рисует не больше трёх рядов | Выводов — рядов plot, отметок plotshape и plotchar, фона bgcolor — не больше 64; рисуются первые три plot |
| LS4009 | Слишком много вызовов request.security: …, предел 32 | Объедините вызовы |
LS5000–LS5013 — перерисовка и тестер
| Код | Сообщение | Что делать |
|---|---|---|
| LS5000 | Значение varip доходит до вывода — на истории оно будет другим (перерисовка) (предупреждение) | Используйте var, если нужна одинаковая история |
| LS5001 | Значение только живого бара доходит до вывода — на истории его нет (перерисовка) (предупреждение) | Используйте barstate.isconfirmed |
| LS5002 | lookahead = true читает будущее — на истории результат недостижим в реальном времени (предупреждение) | Уберите lookahead = true |
| LS5003 | Старший таймфрейм без смещения — незакрытый бар перерисуется; добавьте [1] (предупреждение) | request.security(…, close[1]) |
| LS5004 | Отрицательное смещение сдвигает вывод в прошлое — на истории линия знает будущее | Уберите отрицательный индекс x[-n] |
| LS5005 | Недетерминированное значение доходит до вывода — два прогона дадут разный ряд (предупреждение) | Не выводите math.random и timenow на график |
| LS5006 | Данные есть только в реальном времени — на истории ряд пуст (предупреждение) | Для истории libro de órdenes используйте depth.* |
| LS5011 | Стратегия читает «…»: у стакана и ленты нет истории, бэктест был бы вымыслом | Уберите book.*, tape.* из стратегии |
| LS5012 | Стратегия заглядывает вперёд («…») — отчёт помечен как недостижимый в реальном времени (предупреждение) | Уберите lookahead = true |
| LS5013 | «…» включён: заявки исполняются по закрытию бара, отчёт помечен (сведение) | Уберите processOrdersOnClose, если нужен реалистичный отчёт |
LS6000–LS6036 — выполнение
| Код | Сообщение | Что делать |
|---|---|---|
| LS6001 | Индекс … вне границ | Проверьте размер коллекции перед обращением |
| LS6002 | Отрицательное смещение истории — читать будущее нельзя | Индекс истории должен быть ≥ 0 |
| LS6003 | Превышен предел размера коллекции (…) — коллекция создана в строке … | Ограничьте рост: удаляйте старые элементы |
| LS6004 | Скрипт исчерпал бюджет операций на бар — упростите цикл | Проверьте условие выхода из цикла |
| LS6005 | Скрипт превысил лимит времени на проход | Уменьшите работу на каждом баре |
| LS6007 | Обращение к пустому объекту (na) | Создайте коллекцию или объект до обращения |
| LS6014 | Строка длиннее потолка в 100000 знаков — укоротите её или соберите по частям | Сократите строку |
| LS6015 | Неизвестный часовой пояс «…» — нужен идентификатор IANA, например «Europe/Berlin» | Пояс в формате IANA |
| LS6017 | Символ «…» неизвестен — проверьте формат «ПЛОЩАДКА:СИМВОЛ» или задайте ignore_invalid_symbol = true | Исправьте символ |
| LS6018 | Таймфрейм «…» не разбирается — ожидается «5», «60», «4h», «1D», «1W» | Исправьте таймфрейм |
| LS6019 | Объект рисования уже удалён или вытеснен по потолку — создайте его заново | Проверяйте объект или поднимите предел |
| LS6020 | str.format: плейсхолдеру {…} не передан аргумент | Передайте аргумент для каждого {n} |
| LS6021 | str.match: шаблон исчерпал бюджет шагов — упростите его | Упростите регулярное выражение |
| LS6026 | Исчерпан общий бюджет коллекций скрипта (… ячеек) — не влезла коллекция из строки … | Сократите число или размер коллекций |
| LS6027 | Недопустимый аргумент «…» в … | Например, отрицательный размер в array.new |
| LS6028 | Исчерпан бюджет строк скрипта (…) — переиспользуйте строки вместо новых на каждом баре | Не собирайте новые строки на каждом баре |
| LS6029 | В таблице больше 2000 ячеек — это потолок панели | Уменьшите таблицу |
| LS6030 | Ячейка таблицы вне сетки: … | Номер столбца и строки — внутри размера таблицы |
| LS6031 | Встроенная функция «…» объявлена, но не реализована — это дефект сборки, сообщите о нём | Сообщите в поддержку |
| LS6032 | Хэндл не указывает на объект нужного вида — объект освобождён или хэндл из другого прогона | Не храните ссылки на удалённые объекты |
| LS6033 | Поле … вне объявления типа «…» — это дефект сборки, сообщите о нём | Сообщите в поддержку |
| LS6034 | Длина окна … больше потолка 100000 — такое окно не поместится в память | Уменьшите длину окна |
| LS6035 | Шаг цикла равен нулю — счётчик не двигается, и конец недостижим | by в цикле for не может быть нулём |
| LS6036 | Слой тепла … вне 0…3 | layer от 0 до 3 |
Коды, которые эта версия не выдаёт
Эти номера закреплены в языке, но текущая версия терминала их не показывает: LS1003, LS1007, LS1011, LS2016, LS3000, LS3001, LS3005, LS4003, LS4004, LS5007, LS6000, LS6006, LS6008, LS6022, LS6023. Например, объявление не первой строкой сейчас сообщается как LS1009, а деление на ноль не останавливает скрипт с LS6000.